爱好成工作,就好比心心念念的姑娘不停跳起来给你嘴巴子。

流量特征

心跳特征

  被控端会向服务端发送心跳包。心跳包是一种延迟发送的数据包,默认间隔为 60 秒。

心跳包长度

  心跳包长度固定(长度根据不同的会话或者 CS 版本来提取特征),如果是 http 隧道,则心跳包访问的 url 也是固定。

证书特征

  Cobalt Strike 流量中 tls1.2 流量的证书特征。

HTTP 隧道通信过程分析

  轮询GET请求获取指令
  响应未指令
  根据指令post数据

http 隧道
http 隧道

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

http 数据包
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流量特征分析