导语:在过去的几个月里,有各种各样的攻击者使用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)
动图展示