安全工具&CobalStrike免杀
字数 2031 2025-09-01 11:25:54
Cobalt Strike 4.5 二次开发与免杀技术详解
一、前期准备与环境配置
1.1 版本选择
- 推荐使用 CS 4.5 版本(双端 Java 实现)
- 4.7 及以上版本防破解机制增强,服务端二进制文件加大破解难度
1.2 基础配置修改
修改默认端口
- 编辑
teamserver文件 - 将默认 50050 端口修改为其他端口(如 37533)
- 修改示例:
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=37533 -Dcobaltstrike.server_bindto=0.0.0.0 ...
修改 HTTPS 特征证书
- 查看默认证书特征:
keytool -list -v -keystore cobaltstrike.store
- 生成自定义证书:
keytool -genkey -keystore Cobal.store -storepass Admin@123 -keypass Admin@123 -keyalg RSA -alias Xuan -dname "CN=China, OU=Hehu, O=Waou, L=Long, S=Serce, C=noind"
- 修改
teamserver文件中的证书配置:
-Djavax.net.ssl.keyStore=./Cobal.store -Djavax.net.ssl.keyStorePassword=Admin@123
二、Profile 文件定制
2.1 Profile 文件作用
- 修改流量特征
- 修改 Beacon 默认行为
- 使通信更加隐蔽
2.2 可修改特征
- GET/POST 请求内容
- 远程加载的 beacon.dll 特征
- 远程加载 beacon.dll 的 URI
- 进程注入细节
- 后渗透模块特征
2.3 测试 Profile
./c2lint jquery-c2.3.12.profile
2.4 启动时指定 Profile
teamserver xxx.xxx.xxx.xxx xuan xxx.profile
三、反编译与破解
3.1 反编译步骤
- 使用 Java 11 进行反编译:
java -cp "IDEA路径/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true cobaltstrike.jar cobal
- 创建 IDEA 项目:
- 项目名称:CobalStrike
- JDK 选择:1.8 Oracle OpenJDK version1.8.0_112
3.2 关键破解文件修改
BeaconData.java
// 保持 var1=true 或注释最后的 if 语句
Authorization.java
// 注释掉 cobaltstrike.auth 文件校验
// 给 var4 赋值破解密钥
Helper.java、Starter.java、Starter2.java
// 注释掉 class 文件调用,保证 var2=true
四、个性化定制
4.1 界面修改
- 修改标题(AggressorClient.java 79 行):
protected String title = "Cobalt Strike XUAN个人定制";
- 连接对话框修改(ConnectDialog.java):
this.options.addPage("New Profile", null, "Connection CS", ...);
4.2 资源文件修改
resources/about.html- 修改版本信息resources/credits.txt- 修改许可信息- 替换图标文件:
resources/armitage-icon.gif(32×32px)resources/armitage-logo.gif(256×256px)
4.3 主题风格修改
- 使用 FlatLaf 主题库
- 在
Aggressor.java中添加:
FlatIntelliJLaf.setup();
五、流量特征修改
5.1 CS 默认特征
- GET 请求地址为 4 字符长度
- POST 请求地址为 submit.php
- checksum8 算法特征:
- 64位=93
- 32位=92
5.2 修改 checksum8 算法
- 修改
WebServer.java和CommonUtils.java - 在
CommonUtils.java中强制返回自定义访问地址 - 示例修改(1384 行和 1399 行):
return "xxxx";
六、Stager 修改
6.1 Stager 特征
- 运行 EXE 后自动生成并访问特定 URL
- 远程下载 Stager 文件
- 杀软和 EDR 会检测下载的文件
6.2 修改 Beacon 混淆密钥
-
默认密钥:
- 3.x 版本:0x69
- 4.x 版本:0x2E
-
修改
BeaconPayload.java中的密钥值 -
使用 CrackSleeve 工具修改 sleeve 目录下的 DLL 文件:
- 下载地址:https://github.com/ca3tie1/CrackSleeve
- 4.5 版本专用:https://github.com/kyxiaxiang/CrackSleeve4.5
-
修改步骤:
- 使用 IDA 打开
sleeve/beacon.x64.dll - 搜索 0x2e 并修改为自定义密钥
- 使用 CrackSleeve 重新加密文件
- 使用 IDA 打开
七、PowerShell 模板修改
7.1 自定义 PowerShell 模板
-
准备文件:
AES-Encoder.ps1template.x64.ps1
-
修改
ResourceUtils.java:
public byte[] _buildPowerShellNoHint(byte[] var1, String var2) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder(
"powershell", "-ExecutionPolicy", "Bypass", "-Command",
"Import-Module .\\AES-Encoder.ps1; Invoke-AES-Encoder -InFile .\\template.x64.ps1 -OutFile x64.ps1 -Iterations 6"
);
pb.directory(new File("C:\\Users\\31062\\CobalStrike"));
// 其他处理逻辑...
}
八、免杀技术总结
8.1 关键免杀点
- 修改默认端口和证书
- 定制 Profile 文件
- 修改 checksum8 算法和流量特征
- 更改 Beacon 混淆密钥
- 定制 PowerShell 模板
- 修改 Stager 下载文件特征
8.2 注意事项
- 修改后需同时更新客户端和服务端
- 修改前备份原始文件
- 测试所有功能是否正常
- 不同版本可能需要不同的修改方式
附录:工具与资源
-
CrackSleeve 工具:
- https://github.com/ca3tie1/CrackSleeve
- 各版本专用工具在 kyxiaxiang 仓库
-
流量分析工具:
- Wireshark 过滤器:
http.request.method == "GET"
- Wireshark 过滤器:
-
Stager 分析脚本:
- Sentinel-One/CobaltStrikeParser
-
FlatLaf 主题库:
- Maven 仓库:https://mvnrepository.com/artifact/com.formdev/flatlaf/3.2