最近国内又发布了一份关于APT32攻击活动总结的报告,里面的信息量很大值得仔细阅读并扩展研究来积累检测与分析经验。在本文中我就关注到了插件化木马功能的实现,根据报告的描述,插件的使用位于APT32组织利用Golang编写的隧道木马,该样本一般会注入到系统进程中不落地,因此属于无文件攻击技巧。无文件攻击主要是为了避免落地文件被扫描检测被暴露而常驻内存中增强隐蔽性,而插件化或者模块化也是攻击者为了尽量减少攻击痕迹而采取的措施,做到用完即毁不留内存痕迹。经过简单的分析得知并未进行混淆或者加密操作而是直接实现相关功能后退出,所以也就用不上加密或者反取证的应用了。对于无文件木马的了解得知FinSpy间谍木马在这方面实现比较极致,既能实现插件化功能实现也能实现代码执行完后内存直接加密,执行时解密等反取证的能力,因此发现它的概率也降低了。
经过对列举的三个md5哈希的搜索,目前只能搜到一个插件木马(4B2DF0098372485369E8088EEB4CD554),其余恶意文件均为报告发布者私有样本,外部并未公开。对于恶意代码逆向分析人员来说,恶意样本是非常重要的,没有样本可能无法开展研究并进行检测落地,而往往一些比较有价值的恶意样本案例都是私有样本,外部人员无法获取,自然无法分析。
插件为64位木马,动态调试中发现使用NetUserAdd函数来创建用户DefaultAccount2,设置密码为!2345^Abc。
然后将用户DefaultAccount2加入Administrator管理员组,如下。
接着打开注册表键值”SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System”,设置键值”LocalAccountTokenFilterPolicy”的type为1,作用是禁用UAC功能。
根据官方文档中的方法,可以使用如下命令,修改主机的注册表键值:LocalAccountTokenFilterPolicy 为1,即在主机A执行以下命令即可禁用远程UAC限制机制。
reg.exe ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
因此插件确实实现了添加用户并禁用UAC远程限制的功能,且执行完成后将会退出,退出后系统将回收相关的内存空间。
在取证检测这一块,针对插件的内存扫描可能意义不大,因为插件木马执行完成后已退出,残留的痕迹很可能已被覆盖。而落地文件扫描检测则也不可能,因此本次的隧道木马属于内存驻留并未产生落地文件,因此检测的重点会放置到母体木马中。在针对注册表的取证中着重观察注册表键值LocalAccountTokenFilterPolicy是否为1,当然前提是需要考虑到是否为用户正常开启,避免误报。
参考链接
https://mp.weixin.qq.com/s/pd6fUs5TLdBtwUHauclDOQ
原文始发于微信公众号(OnionSec):APT32使用的插件化木马分析