MS17-010
本仓库用于公开我在 MS17-010 上的工作。我没有计划提供任何支持。所有支持问题都不会得到我的回应。
文件
- BUG.txt MS17-010 漏洞详情及部分分析
- checker.py 用于查找可访问命名管道的脚本
- eternalblue_exploit7.py 针对 Windows 7/2008 的 Eternalblue 漏洞利用
- eternalblue_exploit8.py 针对 Windows 8/2012 x64 的 Eternalblue 漏洞利用
- eternalblue_poc.py 针对缓冲区溢出漏洞的 Eternalblue PoC
- eternalblue_kshellcode_x64.asm 用于我的 Eternalblue 漏洞利用的 x64 内核 shellcode。该 shellcode 应适用于 Windows Vista 及更高版本
- eternalblue_kshellcode_x86.asm 用于我的 Eternalblue 漏洞利用的 x86 内核 shellcode。该 shellcode 应适用于 Windows Vista 及更高版本
- eternalblue_sc_merge.py 用于合并 Eternalblue x86 和 x64 shellcode 的脚本。支持 x86 和 x64 的 Eternalblue 漏洞利用在合并 shellcode 后无需检测目标架构
- eternalchampion_leak.py 用于信息泄露部分的 Eternalchampion PoC
- eternalchampion_poc.py 用于控制 RIP 的 Eternalchampion PoC
- eternalchampion_poc2.py 用于获得代码执行的 Eternalchampion PoC
- eternalromance_leak.py 用于信息泄露部分的 Eternalromance PoC
- eternalromance_poc.py 用于越界写入的 Eternalromance PoC
- eternalromance_poc2.py 用于控制事务从而实现任意读/写的 Eternalromance PoC
- eternalsynergy_leak.py 用于信息泄露部分的 Eternalsynergy PoC
- eternalsynergy_poc.py 用于演示使用大型分页池进行堆喷射的 Eternalsynergy PoC
- infoleak_uninit.py 用于从未初始化的事务数据缓冲区泄露信息的 PoC
- mysmb.py 扩展的 Impacket SMB 类,用于更轻松地利用 MS17-010 漏洞
- npp_control.py 用于通过会话设置命令控制非分页池分配的 PoC
- zzz_exploit.py 适用于 Windows 2000 及更高版本的漏洞利用(需要访问命名管道)
匿名用户
匿名用户(空会话)在新版 Windows 的默认设置下受到更多限制。要在无需身份验证的情况下利用 Windows SMB,应注意以下行为。
- 自 Windows Vista 起,默认设置不允许匿名用户访问任何命名管道
- 自 Windows 8 起,默认设置不允许匿名用户访问 IPC$ 共享(IPC$ 可能可访问,但可做的事情很少)
关于 NSA 漏洞利用
- Eternalblue 只需访问 IPC$ 即可利用目标,而其他漏洞利用还需要访问命名管道。因此,该漏洞利用在 Windows < 8 的所有配置下(只要 tcp 445 端口可访问)始终有效。然而,Eternalblue 导致目标崩溃的概率高于其他漏洞利用。
- Eternalchampion 需要访问命名管道。该漏洞利用没有导致目标崩溃的可能。
- Eternalromance 需要访问命名管道。该漏洞利用可针对 Windows < 8,因为信息泄露的漏洞在 Windows 8 中已修复。该漏洞利用导致目标崩溃的概率应低于 Eternalblue。我从未测试过该漏洞利用的可靠性。
- Eternalsynergy 需要访问命名管道。我认为该漏洞利用是从 Eternalromance 修改而来,以针对 Windows 8 及更高版本。Eternalsynergy 使用另一个信息泄露漏洞,并采用了一些技巧来查找可执行内存(我不知道其具体工作原理,因为我只阅读了输出日志和 pcap 文件)。