土豆家族提权原理
一、核心原理:令牌模拟和特权滥用
所有“土豆家族”提权方法都围绕着以下两个关键机制:
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
的账户开始 - 核心步骤:
- 攻击者作为低权限用户(拥有
SeImpersonatePrivilege
)创建一个 本地 RPC 服务器(通常是通过命名管道实现) - 攻击者通过 DCOM/COM 机制(尤其是利用
BITS
服务中的特定 COM 对象,如IBackgroundCopyQMgr
),强制一个NT AUTHORITY\SYSTEM
身份的服务进程连接并认证到攻击者创建的本地 RPC 服务器 - 在这个认证过程中,攻击者截获了来自
SYSTEM
服务的 NTLM Challenge/Response 流量 - 最关键的一步,攻击者利用 RPCSS 服务(通常运行为
SYSTEM
)的一个漏洞,在本地 RPC 连接上调用ImpersonateNamedPipeClient
API,成功获取一个SYSTEM
用户的 模拟令牌 - 最后,攻击者利用
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
账户的认证,并获得 模拟令牌,最终实现提权