Cobalt Strike 4.7如何魔改特征和流量混淆实现高效隐蔽?

摘要:工具魔改 | Cobalt Strike 4.7 特征修改与流量混淆 本文记录了对 Cobalt Strike 4.7 的一些特征修改过程,包括证书替换、Malleable C2 Profile 流量伪装、Beacon 内存特征处理、异或密
工具魔改 | Cobalt Strike 4.7 特征修改与流量混淆 本文记录了对 Cobalt Strike 4.7 的一些特征修改过程,包括证书替换、Malleable C2 Profile 流量伪装、Beacon 内存特征处理、异或密钥修改等。不是什么教程,就是自己折腾的过程记录。 目录 证书替换 Malleable C2 Profile 流量混淆 修改服务端端口 CS 源码编译与个性化修改 水印修改 Checksum8 与 Stager 特征 异或密钥修改 PowerShell 混淆尝试 一、证书替换 CS 默认证书的特征非常明显,蓝队抓到 SSL 握手包直接就能识别,第一步先把证书换掉。 查看默认证书 keytool.exe 是 Java JRE 自带的证书管理工具,用它查看当前证书信息: keytool.exe -list -v -keystore cobaltstrike.store 默认密码可以在 teamserver.sh 里看到: -Djavax.net.ssl.keyStorePassword=123456 原本的证书信息长这样,特征很明显: 生成自定义证书 把证书伪装成 Microsoft 更新服务,运行以下命令: keytool -genkey -alias cobaltstrike -keyalg RSA -keysize 2048 \ -storetype JKS -keystore cobaltstrike.store -validity 3650 填写信息时模仿微软: 您的名字与姓氏是什么? → www.microsoft.com 您的组织单位名称是什么? → Microsoft Corporation 您的组织名称是什么? → Microsoft 您所在的城市或区域名称是什么? → Redmond 您所在的省/市/自治区名称是什么? → Washington 该单位的双字母国家/地区代码是什么? → US 密钥库口令 → 自己设一个,记住 生成完之后确认一下新证书信息: 修改启动脚本密码 打开 ./teamserver 启动脚本,把密码改成和新证书一致: -Djavax.net.ssl.keyStorePassword=123456 注意:修改后的文件需要同步到服务端。 启动方式: ./teamserver 172.16.250.128 kali # 格式:./teamserver [修改了密码的启动方式文件] [连接ip] [连接密码] 验证效果 客户端连接时会弹出证书指纹确认框: 这个指纹就是刚才生成证书时看到的 SHA256 值,完全一致,说明服务端用的就是自定义证书,默认的 CS 证书特征(CN=Major Cobalt Strike)已经没了。 二、Malleable C2 Profile 流量混淆 证书换了之后,CS 默认的心跳流量特征还是很明显,蓝队一抓包就能识别。Malleable C2 Profile 可以把 beacon 的流量伪装成正常的业务请求。 下载现成的 Profile git clone https://github.com/rsmudge/Malleable-C2-Profiles 里面有很多现成的,我用的是 amazon.profile,伪装成亚马逊购物流量。
阅读全文