Skip to content
导航栏

Cobalt Strike 安装与配置

环境准备

服务端服务端环境GUI 客户端
Ubuntu / CentOSOracle Java 11 / 1.8Windows / macOS / Kali Linux

安装 Java11

bash
sudo apt install openjdk-11-jdk
bash
sudo yum install java-11-openjdk-devel
bash
brew install java11

Windows

https://www.oracle.com/java/technologies/downloads/#java11-windows

下载安装 jdk-11.0.18_windows-x64_bin.exe

检查是否安装成功

bash
  ~ java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)

指定 Java11为 bash 默认版本

bash
sudo update-java-alternatives -s java-1.11.0-openjdk-amd64

文件说明

网络上CS的版本很多,官方版本、破解版本、各式各样的二次开发版本中文件结构也不尽相同,一些互联网公开版本的破解版或二次开发版本:

这里仅以共性的基础文件作说明

bash
├── Cobalt_Strike_CN.bat					[Windows客户端启动程序(中文)]
├── cobaltstrike.auth						[Cabalt Strike 认证文件]
├── cobaltstrike.bat						[Cabalt Strike Windows客户端启动程序]
├── cobaltstrike.jar						[Cabalt Strike 主体程序]
├── cobaltstrike.store						[Cabalt Strike 生成的默认证书]
├── agscript								[运行测试cna脚本]
├── c2lint									[检查Profile语法和预览数据包]
├── peclone									[从dll中提取PE头]
├── third-party								[第三方工具]
│   ├── README.winvnc.txt					[vnc服务说明]
│   ├── winvnc.x64.dll						[x64版本VNC服务端DLL]
│   └── winvnc.x86.dll						[x86版本VNC服务端DLL]
└── teamserver								[Cabalt Strike 服务端启动程序]

核心文件

Cobalt Strike 4.7 版本后 cobaltstrike.jar 不再既是服务端也是客户端,新增下面两个文件:

bash
├── cobaltstrike-client.jar					[Cabalt Strike 客户端文件]
└── TeamServerImage							[Cabalt Strike 服务端ELF文件]

Agscript

Cobalt Strike 4.8 版本默认没有提供 agscript 挂载脚本很不方便,直接复制其他版本的会报错

bash
错误: 找不到或无法加载主类 aggressor.headless.Start

原因是 jar 包名字变化了,把以下命令保存为 agscript 即可:

bash
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:uHook.jar -classpath ./cobaltstrike-client.jar aggressor.headless.Start $*

C2lint

Cobalt Strike 4.7 版本之前使用 cobaltstrike.jar 中的类进行 profile 检查

bash
java -XX:ParallelGCThreads=4 -XX:+UseParallelGC -classpath ./cobaltstrike.jar c2profile.Lint $1

4.7 版本开始由于原核心文件分成单独的客户端和服务端文件,使用下面的脚本进行 profile 检查

bash
print_section_header "Starting c2lint"
./TeamServerImage c2lint $*

服务端安装

为保证网络波动不影响服务端,推荐使用 screen 启动一个新窗口

bash
screen -S cs

在新窗口运行命令启动 Teamserver

bash
./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

        <host> is the (default) IP address of this Cobalt Strike team server
        <password> is the shared password to connect to this server
        [/path/to/c2.profile] is your Malleable C2 profile
        [YYYY-MM-DD] is a kill date for Beacon payloads run from this server

image-20230329155314806

提示 Permission denied 需要赋予执行权限

bash
chmod +x teamserver
chmod +x TeamServerImage

按下组合键 ctrl+a+d 关闭当前 screen 窗口,运行下面的命令再次进入窗口

bash
  ~ screen -ls   
There is a screen on:
        43250.cs       (07/06/2023 07:20:46 PM)        (Detached)
1 Socket in /run/screen/S-root.

  ~ screen -r cs

客户端配置

Java 参数

  • -Dfile.encoding=UTF-8 --- 防止中文乱码
  • -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1088 --- 走Socks代理连接服务端
  • -Xdock:icon=cobaltstrike.icns --- 任务栏图标显示
  • -javaagent:xx.jar --- 加载外部jar包

macOS

macOS下可以使用自动操作封装APP

bash
cd /Users/Tools/CobaltStrike/ && java -Xdock:icon=cobaltstrike.icns -Dfile.encoding=UTF-8 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1088 -javaagent:patch.jar -jar cobaltstrike.jar

image-20230327203105884

保存后在资源库找到APP,右键显示简介,将cobaltstrike.icns 拖到图标处即可

效果:

image-20230327203853219

Windows

Cobalt_Strike_CN.bat

bash
java -Dfile.encoding=UTF-8 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=CSAgent.properties -Duser.language=en -jar cobaltstrike-client.jar %*

Linux

start.sh

bash
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike-client.jar

连接服务端

运行客户端脚本后会弹出连接信息,输入服务端IP地址、端口(默认50050)以及账号密码连接:

image-20230329155628776

检查指纹是否与服务端指纹一致(Hash256)

image-20230329160007798

点击是,连接成功后进入客户端界面

image-20230329162251707

汉化加载

汉化文件结构

bash
├── CSAgent.jar						[客户端加载汉化]
├── CSAgent.properties				[客户端汉化配置文件]
├── patch.jar
├── resources
│   ├── bdetails.txt
│   ├── bhelp.txt
│   ├── ssh_details.txt
│   ├── ssh_help.txt
│   └── translation.txt
└── scripts
    └── default.cna					[服务端汉化]

带汉化Agent启动脚本:

bash
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=CSAgent.properties -Duser.language=en -jar cobaltstrike.jar

配置信息【溯源反制】

连接成功后会在当前用户根目录生成 .aggressor.prop 文件,包含连接的配置信息

bash
  ~ cat .aggressor.prop
#Cobalt Strike (Aggressor) Configuration
#Wed Mar 29 16:04:00 CST 2023
connection.profiles=172.16.46.143
graph.clear_selection.shortcut=pressed ESCAPE
......
connection.profiles.172.16.46.143.password=123456
......

修复补丁

CVE-2022-39197 漏洞可以在捕获攻击者的 Beacon 后向 Teamserver 发送包含 XSS 的数据,经过反射后最终在攻击者的 Client 上执行 RCE,是一个可遇不可求的反制黑客的神洞。补丁通过 hook javax.swing.plaf.basic.BasicHTML的isHTMLString 方法来禁用swing的html支持。

地址:https://github.com/burpheart/CVE-2022-39197-patch

使用方法

patch.jar 放入 cobaltstrike 启动目录下

在 cobaltstrike 启动参数中加入 javaagent 启用补丁

bash
-javaagent:patch.jar

启动 cobaltstrike 输出 Successfully Patched. 即为禁用成功

bash
====== CVE-2022-39197 patch @burpheart ======
Successfully Patched.

Released under the MIT License.