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


初始化的最后一步是解密和解压缩配置文件 。 解密是使用密钥为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命令无关 。


推荐阅读