Add files via upload
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
### 土豆家族提权原理
|
||||||
|
|
||||||
|
**一、核心原理:令牌模拟和特权滥用**
|
||||||
|
|
||||||
|
所有“土豆家族”提权方法都围绕着以下两个关键机制:
|
||||||
|
|
||||||
|
**1. `SeImpersonatePrivilege` 滥用**
|
||||||
|
|
||||||
|
- **`SeImpersonatePrivilege`** (模拟客户端权限) 允许一个线程模拟另一个用户(客户端)的安全上下文。当一个进程(例如一个服务)接受了一个来自另一个进程的连接并验证了其身份后,它可以暂时切换到该连接客户端的身份来执行操作
|
||||||
|
- 在土豆攻击中,一个低权限用户(拥有该权限)首先会诱导一个**高权限服务进程**(通常运行为 `SYSTEM` 或 `NETWORK SERVICE`)向攻击者控制的 **本地** 服务发起认证请求(例如 NTLM 认证)
|
||||||
|
- 攻击者截获这个高权限的 **NTLM 认证** 流量,并利用 Windows API 中的 **`ImpersonateNamedPipeClient`** 或 **DCOM/RPCSS** 相关的函数,**获取** 一个代表该高权限账户(如 `NETWORK SERVICE` 或 `SYSTEM`)的 **模拟令牌**(Impersonation Token)
|
||||||
|
- 然而,一个模拟令牌不足以创建一个新进程,它只能用于线程级的操作。要实现完全提权,需要将模拟令牌**升级**为一个 **主令牌**(Primary Token)
|
||||||
|
|
||||||
|
**2. 令牌升级**
|
||||||
|
|
||||||
|
- 获得 **模拟令牌** 后,攻击者需要将其转换为一个可以启动新进程的 **主令牌**
|
||||||
|
- 通常会利用 Windows API 中的 **`CreateProcessWithTokenW`** 或其他相关函数,通过将模拟令牌传递给它,尝试创建一个以 **`SYSTEM`** 身份运行的新进程(如一个新的 `cmd.exe` 命令行)
|
||||||
|
- 对于像 **Rotten Potato** 这样的技术,利用了 **DCOM** 和 **RPC** 的特定设计缺陷,来强制获取一个高权限的 **模拟令牌** 并进行升级
|
||||||
|
|
||||||
|
**二、经典土豆家族提权技术详解**
|
||||||
|
|
||||||
|
**1. Rotten Potato (烂土豆)**
|
||||||
|
|
||||||
|
这是土豆家族的鼻祖,利用了 **Windows DCOM/RPC** 的一个缺陷
|
||||||
|
|
||||||
|
- **目标账户:** 通常从 **`SERVICE`** 或拥有 `SeImpersonatePrivilege` 的账户开始
|
||||||
|
- **核心步骤:**
|
||||||
|
1. 攻击者作为低权限用户(拥有 `SeImpersonatePrivilege`)创建一个 **本地 RPC 服务器**(通常是通过命名管道实现)
|
||||||
|
2. 攻击者通过 **DCOM/COM** 机制(尤其是利用 **`BITS`** 服务中的特定 COM 对象,如 **`IBackgroundCopyQMgr`**),强制一个 **`NT AUTHORITY\SYSTEM`** 身份的服务进程连接并认证到攻击者创建的本地 RPC 服务器
|
||||||
|
3. 在这个认证过程中,攻击者截获了来自 `SYSTEM` 服务的 **NTLM Challenge/Response** 流量
|
||||||
|
4. 最关键的一步,攻击者利用 **RPCSS 服务**(通常运行为 `SYSTEM`)的一个漏洞,在本地 RPC 连接上调用 **`ImpersonateNamedPipeClient`** API,成功获取一个 **`SYSTEM`** 用户的 **模拟令牌**
|
||||||
|
5. 最后,攻击者利用 **`CreateProcessAsUser`** 或类似函数,使用这个 `SYSTEM` 模拟令牌启动一个新的、拥有 **`SYSTEM` 主令牌** 的进程
|
||||||
|
|
||||||
|
**2. Juicy Potato (多汁土豆)**
|
||||||
|
|
||||||
|
Rotten Potato 在 Windows 新版本中受到限制,Juicy Potato 是其改进版
|
||||||
|
|
||||||
|
- **目标账户:** 同样是从拥有 `SeImpersonatePrivilege` 的账户开始
|
||||||
|
- **核心改进:** Juicy Potato 放弃了依赖特定的 BITS COM 对象,而是利用了 **DCOM 本地激活** 的灵活性。它允许攻击者指定任何一个可以被 `NETWORK SERVICE` 或 `SYSTEM` 账户激活的 **COM 对象**(通过其 **CLSID**),并强制该对象触发到攻击者控制的 **本地 TCP 监听器** 或 **命名管道** 的 NTLM 认证
|
||||||
|
- 攻击者可以通过查找机器上可用的 **CLSID** 列表,找到一个能够在低权限下触发高权限认证的 COM 对象,绕过了 Rotten Potato 对 BITS 服务的限制
|
||||||
|
- **提权机制** 的核心仍是 **DCOM 强制认证** → **获取 SYSTEM 模拟令牌** → **升级为 SYSTEM 主令牌**
|
||||||
|
|
||||||
|
**3. RoguePotato (流氓土豆)**
|
||||||
|
|
||||||
|
随着 Windows 补丁(如 2018 年对 DCOM 本地激活的限制),Juicy Potato 逐渐失效。RoguePotato 引入了 **Oxid Resolver** 滥用
|
||||||
|
|
||||||
|
- **核心改进:** RoguePotato 侧重于滥用 **DCOM 的远程协议**(MS-DCOM/MS-RPC)中的 **OXID 解析器**(Oxid Resolver)机制
|
||||||
|
- 它强制一个高权限 COM 服务器(运行为 `SYSTEM`)去连接一个由攻击者控制的 **虚假/恶意 OXID 解析器**
|
||||||
|
- 通过精巧地构造 **RPC 绑定字符串**,攻击者可以使高权限进程在进行远程 OXID 解析时,被迫回退到 **本地** 的 **命名管道**(Named Pipe)认证
|
||||||
|
- 通过这种方式,攻击者可以再次捕获 `SYSTEM` 账户的认证,并获得 **模拟令牌**,最终实现提权
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
### UAC 怎么绕过
|
||||||
|
|
||||||
|
大多数 UAC 绕过技术都利用了 Windows 设计中的一个安全机制:**自动提升**
|
||||||
|
|
||||||
|
Windows 允许一些特定的、微软签名的、位于安全目录(如 `C:\Windows\System32`)下的可执行文件在启动时 **自动提升** 到高完整性级别,而**不触发 UAC 提示框**
|
||||||
|
|
||||||
|
UAC Bypass 的核心思想就是 **劫持(Hijack)** 这些被信任的自动提升程序的执行流程,让它们在启动时去执行攻击者控制的恶意代码或命令。常见的劫持方法包括:
|
||||||
|
|
||||||
|
**1. 自动提升程序的执行劫持**
|
||||||
|
|
||||||
|
攻击者通过修改系统配置,使自动提升程序在执行过程中“无意中”调用攻击者的代码:
|
||||||
|
|
||||||
|
- **注册表劫持(Registry Key Manipulation)** 这是最常见和有效的技术之一。许多自动提升的程序在启动时会检查特定的**注册表路径**来加载其配置或执行的命令。如果这些注册表项位于 **`HKCU` (HKEY_CURRENT_USER)** 下,而该键值在用户登录后才会被加载,那么中等完整性级别的用户就可以修改它
|
||||||
|
- **经典案例:`FodHelper.exe` 和 `EventVwr.exe`** 攻击者修改特定 `HKCU` 注册表键值,将命令注入到 **`ms-settings`** 或 **`mscfile`** 协议的处理程序中。当 `FodHelper.exe`(Windows 10 的功能)或 `EventVwr.exe`(事件查看器)自动提升执行时,它会读取这些被修改的键值,从而以高完整性级别执行攻击者的命令
|
||||||
|
- **DLL 劫持(DLL Hijacking)** 一个自动提升的程序在启动时会尝试加载其依赖的 **DLL 文件**。如果攻击者发现:
|
||||||
|
1. 该程序在搜索 DLL 时,会先检查一个**中等完整性用户可写入**的目录(例如 `AppData` 或其他非 System32 路径)
|
||||||
|
2. 或者,该程序尝试加载一个**不存在(Missing DLL)**的 DLL。 攻击者就可以将恶意 DLL 放到该程序首先搜索的路径,程序在自动提升后加载这个恶意 DLL,从而执行高权限代码
|
||||||
|
- **COM 接口劫持(COM Handler Hijack)** 一些自动提升的程序会调用特定的 **COM 接口** 来完成其功能。攻击者可以修改与这些 COM 对象相关的注册表键值,将 **InProcServer32**(即 COM 对象的实现 DLL)指向攻击者自己的恶意 DLL。当高权限进程调用该 COM 接口时,就会加载并执行恶意 DLL
|
||||||
|
|
||||||
|
**2. 白名单程序或配置文件滥用**
|
||||||
|
|
||||||
|
- **`sdclt.exe` (备份和还原)** 这个程序在 Windows 7/8/10 上可以自动提升。它在执行时会检查用户配置文件中一个特定的 XML 配置文件,攻击者可以通过修改这个配置文件来插入并执行任意命令
|
||||||
Reference in New Issue
Block a user