CobaltStrike checklist

Posted by 3thernet on February 21, 2025

一、安装

Cobalt Strike 4.9.1 Cracked 破解版下载 - 🔰雨苁ℒ🔰

听说有些知识星球版本的Cobalt Strike4.9.1在cmd中植入后门,因此一定要在虚拟机中使用

安装nginx

1
2
3
4
5
yum update -y
yum install -y epel-release
yum install -y nginx
systemctl start nginx
systemctl enable nginx #开机自启动

客户端安装

客户端安装java环境后直接点击cmd结尾的文件

Cobalt Strike 安装与配置 - XSTARK 公司

JDK安装教程,Win11环境_win11如何看本机jdk-CSDN博客

服务端安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
yum install java-11-openjdk-devel
java -version
update-java-alternatives -s
java-1.11.0-openjdk-amd64
#安装wget和unrar:
yum install wget
wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
tar xf rarlinux-x64-6.0.2.tar.gz -C /usr/local/
ln -s /usr/local/rar/rar /usr/local/bin/rar
ln -s /usr/local/rar/unrar
/usr/local/bin/unrar
unrar -v
#把cs压缩包传上去
unrar x -pwww.ddosi.org
CobaltSrike_4.9.1.rar
mv CobaltSrike_4.9.1_Cracked_www.ddosi.org CS
cd CS/Server
chmod +x teamserver
chmod +x TeamServerImage

二、隐藏特征

在启动前必须隐藏特征并修改端口,否则长时间启动后会被威胁情报标记,然后listener会连接大量虚假sessions

修改端口号

vi teamserver

修改最底下的50050为指定端口(比如12345)和密码

1
./TeamServerImage -Dcobaltstrike.server_port=12345 -Dcobaltstrike.server_bindto=0.0.0.0 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=test123456 teamserver $*

密码是cobaltstrike.store解密密码,如果没有该文件,teamserver启动时会生成一个,默认密码0123456

教你修改cobalt strike的50050端口 - 3HACK

更换CS证书

不要使用默认的cobaltstrike.store,删除原本的cobaltstrike.store文件

1
2
3
4
5
keytool -keystore cobaltstrike.store -storepass test123456 -keypass test123456 -genkey -keyalg RSA -alias blackcat -dname "CN=Chen,OU=MOPR,O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"

keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12

keytool -list -v -keystore cobaltstrike.store -storepass test123456

域前置

购买域名并更改ns为cloudflare后,设置cloudflare ssl为完全(严格),添加A记录,然后源站点生成证书,创建服务器证书server.pem和私钥server.key

cloudflare还要配置”缓存规则“,这里设置的是对”所有传入请求“”绕过缓存“。

以下假设我购买的C2域名为:example.com

1
2
3
openssl pkcs12 -export -in server.pem -inkey server.key -out example.p12 -name example.com -passout pass:test123456

keytool -importkeystore -deststorepass test123456 -destkeypass test123456 -destkeystore example.store -srckeystore example.p12 -srcstoretype PKCS12 -srcstorepass test123456 -alias example.com

上述命令导入密钥到了example.store

确保c2.profile中包含:

1
2
3
4
https-certificate {
    set keystore "example.store";
    set password "test123456";
}

CobaltStrike特征修改-安全客 - 安全资讯平台

https://xz.aliyun.com/t/9616

c2隐藏&流量加密 - 小新07 - 博客园

Cobalt Strike去特征:配置Nginx反向代理、CDN与Cloudflare Worker - MYZXCG

配置完cdn后,会发现机器能上线,但是执行命令无回显。这个问题困扰了好半天,一直以为是cloudlflare缓存配置问题,然而禁用缓存后问题依旧存在。最后逐步定位到是cs配置文件的问题。

这里用的是jquery-c2.4.0.profile配置文件。它设置header "Content-Type" "application/javascript; charset=utf-8";为响应头。修改所有响应头为:header "Content-Type" "application/*; charset=utf-8";即可正常执行命令回显。

这里的mime-type如果为application/javascript、text/html等,机器执行命令就无法回显。猜测是cdn会检测响应头content-type的值,如果是一些静态文件的mime-type可能就导致这个问题。

Cobalt Strike特征隐藏与流量分析 - ol4three

nginx

网上有些域前置攻略没有配置nginx转发请求,我经过测试发现这样往往无法回连

先将pem和key复制到另一个目录

/etc/nginx/nginx.conf包含以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    server {
        listen       80;
        listen       [::]:80;
        server_name  example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  _;
        root         /usr/share/nginx/html;

        ssl_certificate "/opt/zs/server.pem";
        ssl_certificate_key "/opt/zs/server.key";

        location / {
            proxy_pass          https://127.0.0.1:8777;
        }
    }

这里proxy_pass转发的端口就是我们设置监听器的bindto端口(C2端口为443)

配置防火墙,防止被监听端口被nmap扫描

注意iptables需要先删除规则:

5 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

1
2
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8777 -j ACCEPT
iptables -A INPUT -p tcp --dport 8777 -j DROP

nginx设置指定useragent:

1
2
3
4
5
6
location / {
        if ($http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") {
        return 302 $REDIRECT_DOMAIN$request_uri;
        }
        proxy_pass          https://127.0.0.1:8777;
}

三、Malleable C2 Profile

Malleable C2 Profile是一个可以控制CobaltStrike流量特征的文件,可以通过修改配置文件来改变流量特征,从而躲避各种流量检测设备及防病毒系统

通过修改框架内的各种默认值,操作者可以修改Beacon的内存占用,更改其检入的频率,甚至可以修改 Beacon的网络流量。所有这些功能都是由Malleable C2配置文件控制,该配置文件在启动团队服务器时选择。

Cobalt Strike特征消除第二篇:配置C2 profile规避流量检测

Cobalt Strike特征隐藏与流量分析 - ol4three

threatexpress/malleable-c2: Cobalt Strike Malleable C2 Design and Reference Guide

malleable-c2/MalleableExplained.md 在 master ·威胁快递/可塑性 C2

深入研究cobalt strike malleable C2配置文件 - 先知社区

rsmudge/Malleable-C2-Profiles: Malleable C2 is a domain specific language to redefine indicators in Beacon’s communication. This repository is a collection of Malleable C2 profiles that you may use. These profiles work with Cobalt Strike 3.x.

我的这里c2.profile是从上面github复制的jquery-c2.4.9.profile进行修改

检测语法是否有问题:

./c2lint c2.profile

关闭stager payload

set host_stage “false”;

大海捞“帧”:Cobalt Strike服务器识别与staging beacon扫描_cobalt strike服务器扫描-CSDN博客

  • 服务器去特征:修改默认配置

  • 服务器去特征:域前置

  • 流量去特征:Malleable C2 Profile

  • Beacon staging server去特征:修改stager异或密钥

Bypass cobaltstrike beacon config scan-腾讯云开发者社区-腾讯云

尽量使用stageless payload

四、使用

基础

启动关闭:

nohup ./teamserver [ip地址] [密码] c2.profile &

pkill -f teamserver

乱码解决:

客户端打开cmd复制java启动内容添加选项-Dfile.encoding=utf-8

界面功能介绍 - Cobalt Strike

Cobalt_Strike_wiki/第一节[环境搭建与基本功能].md at master ·阿伦兹/Cobalt_Strike_wiki

监听器和后门

cobaltstrike之创建监听器与生成后门_cobaltstrike windows executable windows executable-CSDN博客

CobaltStrike之后门生成_生成hta(payloads -> html application)与exe (payloads -CSDN博客

经验教训

奇安信攻防社区-反制Cobaltstrike的那些手段

记对cobalt strike的反制思路研究 - 先知社区

【攻防演练】记一次攻防演练被某部委安全团队拷打全过程 - CN-SEC 中文网

五、插件

尽量从客户端加载cna文件,服务器端也可以加载,但我这里失败了

lintstar/LSTAR: LSTAR - CobaltStrike 综合后渗透插件 略旧,2022年的

lintstar/CS-AutoPostChain: 基于 OPSEC 的 CobaltStrike 后渗透自动化链

k8gege/Aggressor: Ladon 911 for Cobalt Strike

OLa 一款cobalt strike后渗透模块插件 - 🔰雨苁ℒ🔰

Cobalt Strike Aggressor Script - f_carey - 博客园