爱好成工作,就好比心心念念的姑娘不停跳起来给你嘴巴子。
流量特征
心跳特征
被控端会向服务端发送心跳包。心跳包是一种延迟发送的数据包,默认间隔为 60 秒。
心跳包长度
心跳包长度固定(长度根据不同的会话或者 CS 版本来提取特征),如果是 http 隧道,则心跳包访问的 url 也是固定。
证书特征
Cobalt Strike 流量中 tls1.2 流量的证书特征。
HTTP 隧道通信过程分析
轮询GET请求获取指令
响应未指令
根据指令post数据

http 隧道
GET /cx 请求轮询指令
HTTP 200 OK响应附带指令
POST 提交指令响应数据

http 数据包
URL 是否存在特征使用正则表达式匹配?
不可见字符占比
老版本的 cobalt strike 中 user-agent 头是固定不变的,可以作为一个特征,新版本的 cobalt strike 中的 user-agent 头是会每次都变化的(同一个 ip 的 ua 一直变化)。
在使用 cobalt strike 下达指令时,会出现 post 请求 /sumbit.php?id=xxx 的特征,该特征可以判断cobalt strike。
即使 cobalt strike 进行了证书文件的魔改,可以消除数据包的部分特征,但仍有部分特征没有修改,例如修改了 cobalt strike 证书文件的数据包情况,但是遗留了 GET /cx 和 POST /q.cgi 这两个特征。
DNS 隧道
对比正常的 dns 流量,CS 的 dns 通信流量具有以下几个特征:
心跳包特征
间隔一定时间,均有通信,采用 A 记录查询的方式进行;
心跳包 1 和心跳包 2,由初始 A 记录的返回地址决定
域名
很明显的域名解析特征
指令特征
下发指令时,通过心跳包接收指令,这时,切换为 TXT 记录查询进行,甚至包含要加载的 dll 模块数据。
指令执行完后,client 端通过 A 记录查询发送 post 起始的域名信息返回结果数据。
不同指令,执行的时间间隔不一样,可以通过 TXT 记录查询和A记录查询发送的post信息的间隔进行判断。
https 隧道
JA3/JA3S
JA3s:15af977ce25de452b96affa2addb1036
JA3s:2253c82f03b621c5144709b393fde2c9
端口
Cobalt Strike 服务器的默认控制端口是 50050
参考文章
CobaltStrike 流量分析与入侵检测
cobalt strike特征隐藏|修改默认端口|去除证书特征|混淆配置
CobaltStrike流量特征分析
网络流量威胁-Cobalt Strike HTTP隧道通信
Cobalt Strike流量特征分析