COMPFun:利用HTTP状态码进行控制的木马
2020-07-14 12:15:00 Author: www.4hou.com(查看原文) 阅读量:270 收藏

2019年10月,卡巴斯基研究人员分析了COMpfun的继任者Reductor通过被黑的TLS流量来感染文件。2019年11月,研究人员又发现了一个木马与COMpfun代码相似性非常高。进一步分析表明,该木马使用了COMpfun的部分代码。

攻击活动概述

该攻击活动的主要目标是欧洲的外交机构,通过伪造的visa应用来进行传播。但是目前还不清楚恶意代码是如何传播到目标的。释放器中含有加密后的合法应用,还有下一阶段的32位和64位的恶意软件。

感染链:HTTP状态码作为C2命令

研究人员发现其中C2通信协议使用HTTP/HTTPS状态码作为C2命令。客户端错误码HTTP状态码(422-429)表示运营人员给木马的命令。控制服务器发送了状态码“Payment Required” (402)后,所有之前接受的命令都会执行。

作者在加密的配置数据中保存了RSA公钥和唯一的HTTP ETag。该标记可以用于过滤到C2的请求。与C2通信时,除了RSA公钥外,恶意软件还会生成一个自生成的AES-128密钥。

木马功能

木马功能包括获取目标的地理位置、收集主机和网络相关的数据、键盘记录和截屏。换句话说,该木马可以将自己传播到不可移除的设备上。

为了通过HTTP/HTTPS窃取目标数据,恶意软件使用了RSA加密。为了在本地隐藏数据,木马使用了LZNT1压缩和一字节异或加密。

image.png

木马对不同的任务使用的加密和压缩

初始木马

第一阶段释放器来自于LAN贡献的目录。与visa应用进程相关的文件名都与目标外交机构实体完全对应。因为所有的模块代码类似,释放器首先动态解析所有需要的Windows API函数地址并将其放入结构中。然后从resource (.rsrc)分区解密下一阶段恶意软件。用来解密下一阶段的算法是key为“0x55”的一字节XOR运算,之后再进行LZNT1解压缩。

下面的文件是释放到硬盘中的文件和恶意软件尝试模拟的应用:

image.png

释放器促使用户以管理员身份来运行文件,然后根据主机架构释放一个文件,并将该文件的时间戳设置为2013.12.20 22:31。

释放器的能力并不局限于PE诱饵,这一阶段还可以用.doc和.pdf文件。在这类例子中,释放器会用open shell命令来打开文件,而非运行合法的伪造的可执行应用。

主模块:基于HTTP状态的木马

image.png

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

多线程木马特征

初始化

在恶意软件代码中,有大量的短的独立的函数会返回可读的字符串。这是为了防止恶意软件被研究人员分析所造成的。该模块的准备阶段动态解析了所有需要的Windows API函数地址到对应的定制结构。之后,恶意软件只使用非直接的函数调用。

模块中含有处理器架构和Windows操作系统版本。其中包含对虚拟机相关设备的反分析检查来避免恶意软件受控执行。还会检查系统中是否有安全产品运行。

在与C2建立连接前,恶意软件都会检查是否有调试器、网络监控等程序运行。还坏检查互联网的连接性,如果没有联网就不会尝试通信。

DLL文件还会检查一些可能注入的启动进程。以PaymentRequired为例,这可能是系统、安全产品或浏览器进程。恶意如那件就会构造对应的代码来释放文件、删除文件等等。

初始化的最后一步是解密和解压缩配置文件。解密是使用密钥为0xAA的一字节XOR来完成的,然后用LZNT1算法解压缩。从配置来看,恶意软件会分析RSA公钥、ETag和 IP地址来与控制服务器通信。

解密的配置数据中含有RAS公钥来加密窃取的数据、C2 IP地址和唯一的ETag标记。

基于HTTP状态的通信模块

首先,模块会生成以下内容:

· HTTP GET/POST 参数和HTTP 状态码 427中使用的AES-128加密密钥;

· 基于主机网络适配器、CPU和第一个固定的逻辑驱动序列号的4字节唯一硬件ID(HWID)。

然后,该模块选择一个进程来注入代码,选择的优先顺序从高到底依次为Windows (cmd.exe, smss.exe)、安全相关的应用(Symantec’s nis.exe, Dr.Web’s spideragent.exe) 和浏览器(IE, Opera, Firefox, Yandex browser, Chrome)。

主线程会检查C2的配置中是否支持TLS。如果支持,通信就通过HTTPS和443端口进行;如果不支持,通信就通过HTTP协议和80端口进行。

image.png

样本中解码的配置内容

第一个发送的GET请求中含有一个ETag “If-Match” header,使用的是来自解密的配置的数据。ETags主要是web服务器用来缓存的。ETags的实现表明C2可能会忽略一些不满足特定条件的请求。

image.png

可移除的设备传播模块

初始化成功后,恶意软件会开启至少一个线程来分割Windows消息、寻找与WM_DEVICECHANGE事件相关的可移除设备。该模块在USB设备从主机插入或拔出后会运行自己的handler。

其他监听模块

恶意软件中还有其他的监听模块,包括键盘输入记录、截屏工具等等。用户的活动是用hook来进行监控的。这些模块会收集目标的数据。键盘记录是用配置数据中的RSA公钥加密的,每隔2秒或每512字节发送一次。这512字节数据包括鼠标左键点击和Windows标题栏文本。对剪贴板的内容,该模块会计算一个md5哈希值,然后用RSA公钥加密,最后发送。

在另一个单独的线程中,木马会用GDIPlus库进行截屏,用LZNT1算法进行压缩,然后用配置数据中的密钥加密,最后发送到控制服务器。截屏和发送操作与C2命令无关。

本文翻译自:https://securelist.com/compfun-http-status-based-trojan/96874/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/OqgG
如有侵权请联系:admin#unsafe.sh