导语:MS17-010漏洞模块的作者可能忘记了对Windows Embedded操作系统的支持,本文将讲述如何修补DoublePulsar以支持攻击Windows Embedded系统。
在我的一次渗透测试中,我发现了一些受MS17-010漏洞影响的Windows设备。其中一个设备引起了我的注意,因为以前我从未遇到过Windows Embedded操作系统。
由于存在MS17-010漏洞,我尝试了相关的Metasploit模块。但是他们都无法工作,并返回一个错误,说明目标操作系统不支持。
即使是最新的MS17-010利用模块(exploit / windows / smb / ms17_010_psexec)也不起作用。
这比较奇怪。也许无国界医生的辅助模块是误报。或者,漏洞模块的作者可能忘记了对Windows Embedded操作系统的支持。
为了验证目标是否真的易受攻击,我决定使用MS17-010的原始漏洞利用框架Fuzzbunch。所以我启动了Fuzzbunch,然后使用了SMBTouch。结果表明,目标实际上是存在MS17-010漏洞。
然后我使用了EternalBlue模块,并且漏洞利用成功,后门成功安装在目标上。所以我猜想MSF漏洞模块的作者忘记添加对Windows Embedded系统的支持。
由于后门已经安装完毕,为了获得一个shell,需要做的最后一件事就是使用DoublePulsar注入dll。首先,我生成一个dll文件。
然后我使用DoublePulsar将生成的DLL注入到目标主机。但是,它的错误消息是失败[-] ERROR unrecognized OS string。我想是因为MSF模块不支持Windows Embedded版本。
在渗透测试结束之前还有几个小时,我决定深入挖掘DoublePulsar。首先,我尝试使用DoublePulsar时搜索了我收到的错误消息。这个字符串在上面的.text部分找到0x0040376C。
为了更好地理解DoublePulsar如何结束该错误消息,我决定使用IDA的图形视图来跟踪程序的流程。
从图形视图中可以看出,如果目标机器正在运行Windows 7,它将采用左侧路径,然后继续检测其架构是x86还是x64。如果目标不是Windows 7,它将采用正确的路径并执行其他操作系统检查。由于没有检查Windows Embedded,程序最终输出错误消息[-] ERROR unrecognized OS string。
通过进一步分析——Windows 7操作系统检查,我观察到我可以通过修改指令来“强制”程序走左边的路径。jz short loc_403641jnz short loc_403641
为此,我去了Edit> Patch program> Change byte。
然后我将值74(JZ的操作码)更改为75(JNZ的操作码)。
这是修改跳转指令后的样子。
然后我通过File> Produce file> Create DIF file …创建了一个DIF文件。
然后使用@ stalkr_的脚本(https://stalkr.net/files/ida/idadif.py)来修补修改后的exe文件。
然后将修改后的Doublepulsar-1.3.1.exe移回原始位置。
使用修改的DoublePulsar,我能够将生成的DLL有效载荷注入到目标主机。
并获得了一个SYSTEM权限shell。