Cybaze-Yoroi ZLab研究人员1月份调查了APT28的一起最新活动。样本最早是意大利安全研究人员发现的,随后在infoSec安全社区共享了该样本。
Cybaze-Yoroi ZLab安全研究人员根据该样本进行了进一步分析。
技术分析
攻击向量还不明确,APT28一般使用含有VB宏的诱饵office文档。但分析的样本假装模仿微软的serviceTray组件。
乍一看,可执行文件是用UPX v3.0压缩器压缩的,这是一种压缩PE文件大小的常用工具。
图1. 恶意PE信息
有趣的是,可执行文件的resource部分是典型的AutoIt v3编译的脚本二进制文件模式:AUT3!签名。
图2. 表示AutoIt v3 header的十六进制数据
反编译和提取脚本后,研究人员发现该脚本并想象的要简单一些:因为没有使用混淆和反分析技术。
使用AutoIt语言是最近Zepakab下载器版本的新特征,与早期的Zepakab版本相比:行为和脚本结构非常相似,但新样本使用了不同的C2服务器和文件名。
图3. 部分反编译的AutoIt脚本
在设置了C2 url和payload路径等变量后,脚本会调用计算32个字符随机ID的argv函数。
图4. 伪造32个字符的随机ID的函数
然后运行Zepakab 的核心main函数。恶意软件应用了recon函数,会提取计算机的信息,并每分钟截屏一次。
图5. AutoIt脚本的main函数
然后把所有信息都base64编码,并通过connect函数建立的SSL加密的HTTP信道将信息发送给C2服务器。在发送信息前,恶意软件会加入随机的字符防止对信息的自动化反编码,最终的请求如下图所示:
图6. 发送给C2的POST请求
发送给C2的机器信息是通过info函数收集的,该函数会调用_computergetoss路径。最后的代码段好像是从AutoIT库脚本CompInfo.au3中直接复制过来的。CompInfo.au3是访问Windows Management Instrumentation框架数据的AutoIt接口。
图7. 提取受害者机器信息的函数
对代码进一步分析的结果发现脚本中还有重用的代码:恶意样本中加入了AutoIT WinHttp wrapper来确保网络通信是系统系统代理。
图8. 论坛用户共享base64脚本的博客
在建立了通信信道后,C2会分析受害者的登记信息,如果被入侵的机器是目标,就发送最终的payload。
Payload会保存在C:\ProgramData\Windows\Microsoft\Settings\srhost.exe并在函数crocodile中执行。
图9. 用来启动final payload的crocodile函数
如果final payload正确启动,函数就会设置$call变量为False,并且终止脚本的main循环。
但C2无法访问了,所以无法提取final payload进行深入分析。
结论
AutoIt Zepakab恶意软件虽然有很多破坏性的功能,但让人吃惊的是它竟然没有使用反分析技术而且非常简单。Sofacy组织甚至直接从公开的恶意脚本中直接复制代码,以构建一个物美价廉但有效的能够绕过传统反病毒软件的信息窃取器恶意软件。