互联网|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为例 , 这可能是系统、安全产品或浏览器进程 。 恶意如那件就会构造对应的代码来释放文件、删除文件等等 。分页标题
初始化的最后一步是解密和解压缩配置文件 。 解密是使用密钥为0xAA的一字节XOR来完成的 , 然后用LZNT1算法解压缩 。 从配置来看 , 恶意软件会分析RSA公钥、ETag和 IP地址来与控制服务器通信 。
解密的配置数据中含有RAS公钥来加密窃取的数据、C2 IP地址和唯一的ETag标记 。

互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图
基于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端口进行 。

互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图
样本中解码的配置内容
第一个发送的GET请求中含有一个ETag “If-Match” header , 使用的是来自解密的配置的数据 。 ETags主要是web服务器用来缓存的 。 ETags的实现表明C2可能会忽略一些不满足特定条件的请求 。
【互联网|COMPFun:利用HTTP状态码进行控制的木马】
互联网|COMPFun:利用HTTP状态码进行控制的木马
本文插图
可移除的设备传播模块
初始化成功后 , 恶意软件会开启至少一个线程来分割Windows消息、寻找与WM_DEVICECHANGE事件相关的可移除设备 。 该模块在USB设备从主机插入或拔出后会运行自己的handler 。
其他监听模块
恶意软件中还有其他的监听模块 , 包括键盘输入记录、截屏工具等等 。 用户的活动是用hook来进行监控的 。 这些模块会收集目标的数据 。 键盘记录是用配置数据中的RSA公钥加密的 , 每隔2秒或每512字节发送一次 。 这512字节数据包括鼠标左键点击和Windows标题栏文本 。 对剪贴板的内容 , 该模块会计算一个md5哈希值 , 然后用RSA公钥加密 , 最后发送 。
在另一个单独的线程中 , 木马会用GDIPlus库进行截屏 , 用LZNT1算法进行压缩 , 然后用配置数据中的密钥加密 , 最后发送到控制服务器 。 截屏和发送操作与C2命令无关 。