远控木马这个词说起来总觉得很有年代感,作为一枚安全行业菜鸟,最初的启蒙就是分析各类远控的被控端,从行为到流量去了解这一类恶意代码的发展变化。网上对于远控木马的分析比比皆是,因此本文从个人的角度出发,总结了一下对于远控木马的一些理解,可能有所欠缺,欢迎交流学习。

从控制端熟悉远控木马的功能

在最早接触到远控木马的时候,我大概使用过上百种远控软件的客户端,要了解一个远控木马的功能,最直接的方式就是使用一下,这里找了一个美化版的GH0ST来作为示例:

图片1.png

控制端的界面功能十分清晰,首先要做的就是生成一个被控端程序,通常可以设置上线IP/域名/URL等,选择是否免杀、加壳,选择进程注入、服务启动等驻留方式,有的远控可以设置密码对传输的数据进行加密,选择不同的图标等:

图片2.png

这里选择一台XP虚拟机来作为演示的被控端,在被控端运行生成的exe程序后,就能在界面看到主机。使用wireshark抓包可以看到被控端上线流量,GH0ST远控的特点就是在TCP流量中会包含Gh0st上线字符串,后面拼接Zlib压缩的主机信息数据:

微信截图_20190613171644.png

以下选取了一条snort针对Gh0st远控的规则:

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( msg:"MALWARE-CNC Win.Trojan.Gh0st variant outbound connection"; flow:to_server,established; content:"Gh0st",depth 5; content:"|00 00 00|",within 3,distance 1; content:"|00 00 78 9C|",within 4,distance 2; metadata:impact_flag red,policy balanced-ips drop,policy security-ips drop,ruleset community; reference:url,virustotal.com/en/file/a4fd37b8b9eabd0bfda7293acbb1b6c9f97f8cc3042f3f78ad2b11816e1f9a59/analysis/1425053730/; classtype:trojan-activity;    sid:27964; rev:5; )

Gh0st的流量具有非常典型的特征,很多远控其实都是通过Gh0st源码改的,所以大致的格式都差不都,一段标识码+Zlib压缩的数据(怎么知道是zlib呢?zlib压缩的头部表示是\x78\x9c),通过这个特性,可以在流量侧对这些远控进行检测或解析流量数据,这也是目前大多数IDS/态势感知产品所用到的方法之一。

在控制端可以看到上线主机,然后进行一系列操作,基本上可以在被控端上随心所欲了:

图片3.png

通过逆向了解远控木马

如果说通过使用能够直观的了解远控木马功能,那么逆向分析就是了解这些功能如何实现(当然,源码分析也是一种方法)。下面是最近捕获到的一枚远控DLL文件,简单分析了一下正好作为例子。这枚DLL文件被发现的时候是作为服务在运行:01.jpg

02.png

ServiceMain首先注册了一个窗口类“TOXHJ MYLOVE”,汗颜,这名字堂堂正正的告诉大家,我就是个木马:

图片4.png

随后创建线程,遍历进程查找杀软:

图片5.png

随后注册服务,也就是最开始排查时看到正在运行的服务程序:

微信截图_20190614103853.png

解密出C&C服务器的域名”as3421363.vicp.cc”,与该域名进行通信,其中所使用到的API都是动态获取地址的:

图片6.png

网络行为通常会用到的几个API,gethostbyname、connect、recv等:

图片7.png

获取主机信息,通常包括磁盘、cpu、网卡、系统版本、安装的安全软件等信息,在这个样本中,也是使用zlib压缩数据后进行发送的:

图片8.png

接收控制端指令,解析指令后执行对应的操作,粗略看了一下有文件操作、远程桌面、摄像头监控、键盘记录、音频记录、进程操作、远程CMD等远控木马所支持的操作:

图片9.png

如果要了解每种功能的具体实现,还可以再细致的分析,不过一般在野的样本捕获到以后,控制端已经失联了,动态调试运行不到对应的操作,如果有兴趣可以自己生成一个被控端,利用两台同网段的虚拟机来动态调试。

为了分析一下该远控木马的上线流量,这里修改了host文件,抓取了上线包,可以看到数据段的结构跟Gh0st十分相似,只不过标识改为了Xjjhj,然后拼接压缩的主机信息,并且心跳包也是直接使用了标识字符串:

微信截图_20190614154324.png

远控木马的发展

其实通过以上的简单分析可以看到,传统远控木马虽然功能丰富,但存在一些缺陷:

1.协议单一,通常使用TCP协议传输数据,没有加密或加密算法容易被解密;

2.系统驻留方式单一,自启动、服务启动等,容易被检测;

3.木马文件特征性强,且功能多导致文件大,容易被检测。

传统的远控木马在攻击中已经不够隐蔽了,因而现在衍生出很多新的木马技术,注入、无文件、反沙箱、强混淆、动态解密、反调试等手段层出不穷,在通信协议上也开始使用HTTPS、DNS隐蔽信道等方式传输数据,功能也趋于简单化,更有针对性,甚至可能不进行交互,数据传输频率极低等,已演变成混合型木马。

不过,无论技术手段如何发展,只要是通过网络传输数据,就一定会留下痕迹,还有很多未知的东西等待我们去发现。

*本文作者:深信服千里目安全实验室,转自FreeBuf