互联网|COMPFun:利用HTTP状态码进行控制的木马


2019年10月 , 卡巴斯基研究人员分析了COMpfun的继任者Reductor通过被黑的TLS流量来感染文件 。 2019年11月 , 研究人员又发现了一个木马与COMpfun代码相似性非常高 。 进一步分析表明 , 该木马使用了COMpfun的部分代码 。
攻击活动概述
该攻击活动的主要目标是欧洲的外交机构 , 通过伪造的visa应用来进行传播 。 但是目前还不清楚恶意代码是如何传播到目标的 。 释放器中含有加密后的合法应用 , 还有下一阶段的32位和64位的恶意软件 。
互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图

感染链:HTTP状态码作为C2命令
研究人员发现其中C2通信协议使用HTTP/HTTPS状态码作为C2命令 。 客户端错误码HTTP状态码(422-429)表示运营人员给木马的命令 。 控制服务器发送了状态码“Payment Required” (402)后 , 所有之前接受的命令都会执行 。
作者在加密的配置数据中保存了RSA公钥和唯一的HTTP ETag 。 该标记可以用于过滤到C2的请求 。 与C2通信时 , 除了RSA公钥外 , 恶意软件还会生成一个自生成的AES-128密钥 。
木马功能
木马功能包括获取目标的地理位置、收集主机和网络相关的数据、键盘记录和截屏 。 换句话说 , 该木马可以将自己传播到不可移除的设备上 。

为了通过HTTP/HTTPS窃取目标数据 , 恶意软件使用了RSA加密 。 为了在本地隐藏数据 , 木马使用了LZNT1压缩和一字节异或加密 。
互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图

木马对不同的任务使用的加密和压缩
初始木马
第一阶段释放器来自于LAN贡献的目录 。 与visa应用进程相关的文件名都与目标外交机构实体完全对应 。 因为所有的模块代码类似 , 释放器首先动态解析所有需要的Windows API函数地址并将其放入结构中 。 然后从resource (.rsrc)分区解密下一阶段恶意软件 。 用来解密下一阶段的算法是key为“0x55”的一字节XOR运算 , 之后再进行LZNT1解压缩 。
下面的文件是释放到硬盘中的文件和恶意软件尝试模拟的应用:
释放器促使用户以管理员身份来运行文件 , 然后根据主机架构释放一个文件 , 并将该文件的时间戳设置为2013.12.20 22:31 。
释放器的能力并不局限于PE诱饵 , 这一阶段还可以用.doc和.pdf文件 。 在这类例子中 , 释放器会用open shell命令来打开文件 , 而非运行合法的伪造的可执行应用 。
主模块:基于HTTP状态的木马
互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图

下面的分析是对一个32位样本的分析 。 合法的ExplorerFrame.dll.mui是Windows Explorer使用的ExplorerFrame.dll文件的语言资源 。

互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图

多线程木马特征
初始化
在恶意软件代码中 , 有大量的短的独立的函数会返回可读的字符串 。 这是为了防止恶意软件被研究人员分析所造成的 。 该模块的准备阶段动态解析了所有需要的Windows API函数地址到对应的定制结构 。 之后 , 恶意软件只使用非直接的函数调用 。
模块中含有处理器架构和Windows操作系统版本 。 其中包含对虚拟机相关设备的反分析检查来避免恶意软件受控执行 。 还会检查系统中是否有安全产品运行 。
在与C2建立连接前 , 恶意软件都会检查是否有调试器、网络监控等程序运行 。 还坏检查互联网的连接性 , 如果没有联网就不会尝试通信 。
DLL文件还会检查一些可能注入的启动进程 。 以PaymentRequired为例 , 这可能是系统、安全产品或浏览器进程 。 恶意如那件就会构造对应的代码来释放文件、删除文件等等 。


推荐阅读