文中所用的样本均由Cobalt Strike 3.6版生成,这里就不再详细介绍使用方法和样本的配置过程,想了解的可参考上一篇文章 《Cobalt strike3.0使用手册》。本文主要针对样本的通信流量特征进行分析。 样本来源 Cobalt Strike3.6样本类型TR.Crypt.XPACK.Gen7分析时间 2017-03-06运行环境控制端: 182.92.84.176 木马端: 192.168.86.192
- 使用DNS隧道传输
1.首先打开Cobalt Strike3.6设置好监听端口5555,并生成可执行文件EXE木马样本。
图1-设置监听端口
2.在主机192.168.86.192上运行木马样本,同时打开Wireshark抓取本机流量。运行样本后从流量中可发现主机产生大量DNS请求,直至在控制端上线后才停止DNS请求。如下图
图2-上线
3.来到控制端,发现主机已经上线。打开beacon管理器在控制端输入“mod dns-txt”,设置数据传输模式为dns-txt.如下图
图3-主机上线
4.设置好传输模式后,尝试对主机做一些简单操作,观察Wireshark中的数据流量特征。
执行远程主机文件目录查看操作:
图4-1远程主机文件目录查看
图4-2远程主机文件目录查看
从上图可发现此时控制端发送的命令和主机返回的目录信息数据都已经通过DNS-TXT隧道加密传输。
执行“net user”查看操作:
在beacon管理器中执行net user命令
图5-1执行net user命令
图5-2 执行net user命令
通过主机发送net user命令后抓到的数据包可以看出,命令和返回的信息也都已经被加密通过dns协议传输。
小结:通过DNS隧道传输隐蔽性较强不易被发现,但传输速度非常慢。
- 使用HTTP传输
分析过程:
操作步骤同上,在生成EXE木马选择payload时选择windows/beacin_http/reverse_http. 端口:6666
- 木马上线
图6-1木马上线
图6-2木马上线
通过抓取的上线数据包可以看出木马上线后会向控制端提交一个GET /JRLU 请求。
- 执行远程目录查看操作。如下图
图7-1远程目录查看
图7-2目录查看
从上图可以看出,控制端发出目录查看请求后主机首先向控制端GET /visit.js文件后再通过POST /submit.php?id=42612把主机文件目录信息发送给控制端。整个过程都走HTTP协议,全都采用明文传输。
- 使用HTTPS传输
操作步骤同上,在生成EXE木马选择payload时选择windows/beacin_https/reverse_https. 端口:9999如下图:
图8-监听设置
1.木马上线
图9-木马上线
通过HTTPS加密后传输的数据,看不出明显异常。
2.执行目录查看操作
图10-目录查看
3.执行文件上传、net user等操作
图11-1-文件上传
图11-2-文件上传成功
从图11-2可以看到名为“username”的文本文件已经成功上传到主机,接下来再看看这个过程抓取到的数据包。
图11-3-文件上传
从上图的数据流中可以看出,经过HTTPS加密后传输的数据看不出明显特征。
总结:
DNS_TXT隧道传输:控制端发送的对目标的操作命令被加密后通过DNS的TXT记录里,通过DNS隧道传输隐蔽性较强不易被发现,但传输速度非常慢。
HTTP协议传输:木马上线后会向主机发送一个GET /JRLU请求,根据控制端版本和环境不同请求的文件名可能不同。在控制端发出目录查看请求后主机首先向控制端GET /visit.js文件后再通过POST /submit.php?id=XXX把主机文件目录信息发送给控制端。整个过程都走HTTP协议,全都采用明文传输,传输速度快但隐蔽性不强,容易被检测发现。
HTTPS协议传输:通过HTTPS加密传输的数据隐蔽性极高,暂时看不出异常特征。
















