Cobalt Strike 安装与配置
环境准备
服务端 | 服务端环境 | GUI 客户端 |
---|---|---|
Ubuntu / CentOS | Oracle Java 11 / 1.8 | Windows / macOS / Kali Linux |
安装 Java11
sudo apt install openjdk-11-jdk
sudo yum install java-11-openjdk-devel
brew install java11
Windows
https://www.oracle.com/java/technologies/downloads/#java11-windows
下载安装 jdk-11.0.18_windows-x64_bin.exe
检查是否安装成功
➜ ~ 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 默认版本
sudo update-java-alternatives -s java-1.11.0-openjdk-amd64
文件说明
网络上CS的版本很多,官方版本、破解版本、各式各样的二次开发版本中文件结构也不尽相同,一些互联网公开版本的破解版或二次开发版本:
- https://www.ddosi.org/cobalt-strike-4-7/
- https://github.com/TryGOTry/CobaltStrike_Cat_4.5
- https://github.com/TryGOTry/DogCs4.4
这里仅以共性的基础文件作说明
├── 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
不再既是服务端也是客户端,新增下面两个文件:
├── cobaltstrike-client.jar [Cabalt Strike 客户端文件]
└── TeamServerImage [Cabalt Strike 服务端ELF文件]
Agscript
Cobalt Strike 4.8 版本默认没有提供 agscript 挂载脚本很不方便,直接复制其他版本的会报错
错误: 找不到或无法加载主类 aggressor.headless.Start
原因是 jar 包名字变化了,把以下命令保存为 agscript 即可:
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 检查
java -XX:ParallelGCThreads=4 -XX:+UseParallelGC -classpath ./cobaltstrike.jar c2profile.Lint $1
4.7 版本开始由于原核心文件分成单独的客户端和服务端文件,使用下面的脚本进行 profile 检查
print_section_header "Starting c2lint"
./TeamServerImage c2lint $*
服务端安装
为保证网络波动不影响服务端,推荐使用 screen 启动一个新窗口
screen -S cs
在新窗口运行命令启动 Teamserver
./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
提示 Permission denied
需要赋予执行权限
chmod +x teamserver
chmod +x TeamServerImage
按下组合键 ctrl+a+d
关闭当前 screen 窗口,运行下面的命令再次进入窗口
➜ ~ 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
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
保存后在资源库找到APP,右键显示简介,将cobaltstrike.icns
拖到图标处即可
效果:
Windows
Cobalt_Strike_CN.bat
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
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike-client.jar
连接服务端
运行客户端脚本后会弹出连接信息,输入服务端IP地址、端口(默认50050)以及账号密码连接:
检查指纹是否与服务端指纹一致(Hash256)
点击是,连接成功后进入客户端界面
汉化加载
汉化文件结构
├── CSAgent.jar [客户端加载汉化]
├── CSAgent.properties [客户端汉化配置文件]
├── patch.jar
├── resources
│ ├── bdetails.txt
│ ├── bhelp.txt
│ ├── ssh_details.txt
│ ├── ssh_help.txt
│ └── translation.txt
└── scripts
└── default.cna [服务端汉化]
带汉化Agent启动脚本:
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=CSAgent.properties -Duser.language=en -jar cobaltstrike.jar
配置信息【溯源反制】
连接成功后会在当前用户根目录生成 .aggressor.prop
文件,包含连接的配置信息
➜ ~ 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支持。
使用方法
将 patch.jar
放入 cobaltstrike 启动目录下
在 cobaltstrike 启动参数中加入 javaagent 启用补丁
-javaagent:patch.jar
启动 cobaltstrike 输出 Successfully Patched.
即为禁用成功
====== CVE-2022-39197 patch @burpheart ======
Successfully Patched.