Cobalt Strike、metasploit流量分析
对于cobalt strike的分析
cs流量架构
- cobalt的流量架构是怎么样的?
- 作为teamserver,有一个攻击端服务器c2,然后使用c2服务器作为中转服务器向beacon受害主机发送请求。
stage下载
- stager在可执行文件artifact.exe运行后会有一个payload下载过程,使用各种协议从指定的服务器下载stage。
- 其中http请求路径不唯一,但是都符合一个checksum8规则,路径的ascii之和与256取余计算为92。
beacon上线
------->如果有stage模式
- 在这个阶段里面,beacon会按照设定的频率,向c2服务器发送心跳请求,通过cookie携带靶机信息。
- 命令下发,如果有命令要下发,那么就会放入http心跳请求返回包中。
- 结果回传,beacon处理结束后,会通过post方法回传数据。
- https-beacon 在 http-beacon的基础上加入了tls流量加密,其他的过程类似。
-------->如果使用了stageless模式
- 与staging阶段不同,stagless不需要额外加载stage。
- 运行dns-beacon.exe后,beacon端向发起一个A记录查询,查询内容为16进制字符串地址,表示靶机已上线。
- c2服务器收到请求后回复0.0.0.0表示确认消息。
- 这种模式需要激活beacon,客户端控制台输入checkin或其他指令激活窗口,dns-beacon服务器支持A、TXT、AAAA三种方式下发payload,激活后默认使用TXT记录,流量中表现为0.0.0.243,除此之外还可以通过mode指令切换为A、AAAA记录,流量中表现为0.0.0.241、0.0.0.245,随后beacon端发起以www为首的A记录请求,向c2服务器传递靶机基础信息。
- 命令下发,beacon准备接收c2任务,先发送以api开头的A记录请求告知c2服务器可以开始下发任务,随后发起以api开头的txt记录等待c2服务器返回数据。
- 结果回传,beacon执行完命令后,再次向c2服务器发起post开头的A记录查询回传执行结果。
特征提取
- 如果使用默认的cobalt strike,那么这样的话会有很多的特征流量。黑客可以修改默认的配置文件,来进行混淆,从而绕过部分的检测。
- http-beacon:默认使用get方法,向/dpixel,/__utm.gif,/pixel.gif等地址发起请求,同时请求头存在cookie字段并且值为base64编码后的非对称算法加密数据。
- https-beacon通信中,默认使用空证书建立加密通道,流量中可以看见这一过程。
- dns异常返回值,默认使用cdn、www6、api、www、post为开头发起dns请求,并且查询结果伴随0.0.0.0、0.0.0.80、0.0.0.241等非常规的ip。
- 强特征
-
checksum8地址:staging模式的pe文件会向这个地址请求下载stage,及时改变profile文件,依然会对checksum8地址做出回应。
-
ja3/ja3s:ja3和ja3s分别代表tls握手阶段的client-hello、server-hello的数据集合计算出的哈希值(md5),相同版本相同系统下指纹相同,该特征与操作系统、cobaltstrike版本有关,profile文件无法对其修改。不同的操作系统有独特的ja3/ja3s指纹:
-
win10-https-beacon-ja3指纹:72a589da586844d7f0818ce684948eea
-
centos-cs4.4-ja3s指纹:fd4bc6cea4877646ccd62f0792ec0b62
-
-
对msf的分析
架构分析
-
metasploit的V4架构是什么样子的
-
模块是通过 Metasploit 框架所装载、集成并对外提供的最核心的渗透测试功能实现代码。
-
分为辅助模块(Auxiliary)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)以及 V5 版本新增免杀模块(Evasion)。
流量分析
- 没有加密之前,是使用cmd shell进行运行的,并且呢,使用明文进行传输。
- 在bind_tcp中,是一个高级的shell,虽然命令执行已经进行了加密处理,但是观察到每一个数据都包含着MZ标头和DOS模式异常。