使用 LokiBot 的一个在野样本进行分析。
OLEDUMP
使用 oledump 工具可以看到 EncryptedPackage
内有很多数据:
在这种情况下,一般意味着工作簿中一个或多个 Sheet 被加密锁定保护。
可以使用 msoffcrypto-crack.py处理该文档:
我们可以使用 msoffcrypto-crack.py 破解密码并新建一个没有密码保护的同名文件:
也可以直接提取内容通过管道传递给 oledump.py。但在其中并未发现宏代码,而是发现了 eQUaTiON naTIvE
:
将对象的 eQUaTiON naTIvE
部分转存到另一个文件中,以便可以对其进行处理:
可以使用 XORSearch.exe在二进制文件中搜索 32 位 Shellcode 各种签名。可以看到在两处匹配到了 GetIP:
scDbg.exe
接着使用 Shellcode 模拟器 scDbg.exe 加载转存的二进制文件,并填入偏移位置以查看是否出现某种解码的 Shellcode:
深入查看转存的 oledump.unpack 文件的 402438 处,如下所示。使用工具 cut-bytes.py查看 oledump.unpack 可以发现字符串如 LoadLibraryW
、ExpandEnvironmentStringsW
、APPDATAvbc.exe
、http://frndgreen
等:
再次使用 scDbg.exe 剪切必要的部分:
使用 scDbg.exe 直接处理 oledump-cut.unpack 会遇到问题,除了 ExpandEnvironmentStringsW 什么都发现不了:
文章阐述了如何处理该问题。事实证明,scDbg.exe 不会 Hook 函数 ExpandEnvironmentStringsW
,但是会 Hook 函数 ExpandEnvironmentStringsA
。可以尝试使用 ExpandEnvironmentStringsA
代替 ExpandEnvironmentStringsW
,在保存更改后再使用 scDbg.exe 运行:
另一个选择是直接通过命令行覆写该字符。通过查看上面的十六进制,可以发现需要修改的位置在 0x77 处,可以用如下方式将其添加到 scDbg.exe 的起始点
这样我们就得到了很清晰的 ShellCode 内容。
参考来源
本文作者:, 转载请注明来自FreeBuf.COM