回归最本质的信息安全

使用Volatility检测DoublePulsar

2017年10月9日发布

34,081
0
4

导语:在过去的几个月里,有各种各样的攻击者使用FuzzBunch框架来破坏系统。在最近的一次事件中,我分析一个内存转储,花了一段时间来确定感叹载体是否是EternalBlue。

在过去的几个月里,有各种各样的攻击者使用FuzzBunch框架来破坏系统。在最近的一次事件中,我分析一个内存转储,花了一段时间来确定感叹载体是否是EternalBlue。一旦我发现ring 0 shellcode(与DoublePulsar相关),我能够更容易地接近分析。为了加快此过程的未来分析,我开发了一个虚拟插件,以便于找到这种植入物。

该插件不基于Yara规则。它只是从srv.sys驱动程序中转储函数数组SrvTransaction2DispatchTable,并检查它们是否指向二进制地址空间(请查看Zerosum0x0分析)。请注意,虽然插件转储整个表, 但实际上只需要验证SrvTransactionNotImplemented符号指向正确的位置。

这个插件通过从调试目录部分获取.pdb路径并从http://msdl.microsoft.com/download/symbols(或您使用SYMBOLS选项提供的服务器)下载SrvTransaction2DispatchTable来解析SrvTransaction2DispatchTable。一旦获得符号偏移量,它只会转储指针数组。如果SrvTransactionNotImplemented(条目14)指向“未知”位置,那么您可能正在处理DoublePulsar。这样的话,volshell和dis()会清除任何疑问。

让我们看一个例子。以下图片是被EternalBlue + DoublePulsar攻击的Windows 7 SP1 x64主机:

通过检查“UNKNOWN”位置的代码,我们可以验证我们正在处理DoublePulsar。注意操作码0x23(ping),0xc8(exec),0x77(kill)。

在以前的情况下,符号文件已从Microsoft下载。如果您的主机没有Internet连接,您可以通过PDB_FILE选项提供pdb文件。我通常使用Radare来获得这个。

要运行插件请确保有以下的依赖

· construct: (pip install construct==2.5.5-reupload)
· pdbparse: (pip install pdbparse)
· pefile: (pip install pefile)
· requests: (pip install requests)
· cabextract: (apt-get install cabextract)

动图展示

1503026534107160.gif

插件地址:
 https://github.com/BorjaMerino/DoublePulsar-Volatility
如若转载,请注明原文地址: http://www.4hou.com/system/7321.html

点赞 4
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

愣娃

愣娃

这个人很懒,什么也没留下

发私信

发表评论