使用 LokiBot 的一个在野样本进行分析。
使用oledump工具可以看到
EncryptedPackage
内有很多数据:
在这种情况下,一般意味着工作簿中一个或多个 Sheet 被加密锁定保护。
可以使用 msoffcrypto-crack.py处理该文档:
我们可以使用 msoffcrypto-crack.py 破解密码并新建一个没有密码保护的同名文件:
也可以直接提取内容通过管道传递给 oledump.py。但在其中并未发现宏代码,而是发现了 eQUaTiON naTIvE
:
将对象的 eQUaTiON naTIvE
部分转存到另一个文件中,以便可以对其进行处理:
可以使用 XORSearch.exe在二进制文件中搜索 32 位 Shellcode 各种签名。可以看到在两处匹配到了 GetIP:
接着使用 Shellcode 模拟器 scDbg.exe 加载转存的二进制文件,并填入偏移位置以查看是否出现某种解码的 Shellcode:
深入查看转存的 oledump.unpack 文件的 402438 处,如下所示。
使用工具cut-bytes.py查看oledump.unpack可以发现字符串如
LoadLibraryW
ExpandEnvironmentStringsW
APPDATA\vbc.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 内容。
参考来源:
https://clickallthethings.wordpress.com/2020/03/31/lokibot-getting-equation-editor-shellcode/