修改DoublePulsar实现在Windows嵌入式系统上的EternalBlue漏洞利用

阅读量212033

|评论4

|

发布时间 : 2018-07-03 11:00:08

x
译文声明

本文是翻译文章,文章原作者 Capt. Meelo,文章来源:capt-meelo.github.io

原文地址:https://capt-meelo.github.io/pentest/2018/06/26/patching-doublepulsar.html

译文仅供参考,具体内容表达以及含义原文为准。

最近我发现了一些Windows设备受MS17-010漏洞的影响,其中一个设备引起了我的注意,因为我从没遇到过这种——一个Windows嵌入式操作系统。

由于它受到MS17-010的影响,我立即尝试了相关的Metasploit模块。但是没有成功,我只得到一个错误,说目标操作系统不支持。

甚至最新的MS17-010模块(exploit/windows/smb/ms17_010_psexec)也无效。

这很奇怪。也许MSF的辅助模块给了我一个假象,或者开发模块的作者忘记了包含对Windows嵌入式系统的支持。

为了验证目标是否真的易受攻击,我决定使用MS17-010的原始漏洞攻击。于是我启动了FuzzBunch,然后使用SMBTouch。结果表明,目标实际上是易受EternalBlue攻击的。

然后我使用了EternalBlue模块,结果是成功的,后门成功地安装在目标上。因此,我猜MSF利用模块的作者只是忘记添加对Windows嵌入式版本的支持。

由于后门已经安装,要完成利用并获得shell,最后需要做的事情就是使用DoublePulsar。首先,我生成了一个DLL格式的shell。

然后,我使用DoublePulsar将生成的DLL注入目标主机。但是,失败了,错误消息为[-] ERROR unrecognized OS string。我猜MSF模块是没问题的,但Windows嵌入式版本是不受支持的。

我决定更深入地挖掘并研究DoublePulsar。首先,我搜索了在尝试使用DoublePulsar时得到的错误消息。这个字符串是在0x0040376C的.text部分找到的。

为了更好地理解DoublePulsar的错误消息是如何产生的,我决定使用IDA的图形视图跟踪程序的流程。

从图形视图中可以看出,如果目标计算机正在运行Windows 7,它将走左边的路径,然后继续检测其结构是x86还是x64。如果目标不是Windows 7,它将采取正确的路径并执行其他OS检查。由于没有检查Windows Embedded,程序最终输出错误消息[-] ERROR unrecognized OS string。

通过进一步分析“Windows 7 OS Check”,我观察到我可以通过将指令jz short loc_403641修改为jnz short loc_403641来强制程序走左边的路径。

为此,我转到 Edit > Patch program > Change byte。

然后,我将值74(JZ的操作码)更改为75(JNZ的操作码)。

这是修改跳转指令后的样子。

然后我通过“File > Produce file > Create DIF file…”创建了一个dif文件。。

然后使用@stalkr_的脚本(https:/stalkr.net/file/ida/idadif.py)来修补修改过的exe文件。

然后将修改后的DoublePulsar-1.3.1.exe移回原来的位置。

使用修改后的DoublePulsar,我能够将生成的DLL注入目标主机。

并得到了一个SYSTEM shell。

审核人:yiwang    编辑:边边

本文翻译自capt-meelo.github.io 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
秋真平
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66