安全工具&CobalStrike免杀
字数 2031 2025-09-01 11:25:54

Cobalt Strike 4.5 二次开发与免杀技术详解

一、前期准备与环境配置

1.1 版本选择

  • 推荐使用 CS 4.5 版本(双端 Java 实现)
  • 4.7 及以上版本防破解机制增强,服务端二进制文件加大破解难度

1.2 基础配置修改

修改默认端口

  1. 编辑 teamserver 文件
  2. 将默认 50050 端口修改为其他端口(如 37533)
  3. 修改示例:
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=37533 -Dcobaltstrike.server_bindto=0.0.0.0 ...

修改 HTTPS 特征证书

  1. 查看默认证书特征:
keytool -list -v -keystore cobaltstrike.store
  1. 生成自定义证书:
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"
  1. 修改 teamserver 文件中的证书配置:
-Djavax.net.ssl.keyStore=./Cobal.store -Djavax.net.ssl.keyStorePassword=Admin@123

二、Profile 文件定制

2.1 Profile 文件作用

  • 修改流量特征
  • 修改 Beacon 默认行为
  • 使通信更加隐蔽

2.2 可修改特征

  1. GET/POST 请求内容
  2. 远程加载的 beacon.dll 特征
  3. 远程加载 beacon.dll 的 URI
  4. 进程注入细节
  5. 后渗透模块特征

2.3 测试 Profile

./c2lint jquery-c2.3.12.profile

2.4 启动时指定 Profile

teamserver xxx.xxx.xxx.xxx xuan xxx.profile

三、反编译与破解

3.1 反编译步骤

  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
  1. 创建 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 界面修改

  1. 修改标题(AggressorClient.java 79 行):
protected String title = "Cobalt Strike XUAN个人定制";
  1. 连接对话框修改(ConnectDialog.java):
this.options.addPage("New Profile", null, "Connection CS", ...);

4.2 资源文件修改

  1. resources/about.html - 修改版本信息
  2. resources/credits.txt - 修改许可信息
  3. 替换图标文件:
    • resources/armitage-icon.gif (32×32px)
    • resources/armitage-logo.gif (256×256px)

4.3 主题风格修改

  1. 使用 FlatLaf 主题库
  2. Aggressor.java 中添加:
FlatIntelliJLaf.setup();

五、流量特征修改

5.1 CS 默认特征

  1. GET 请求地址为 4 字符长度
  2. POST 请求地址为 submit.php
  3. checksum8 算法特征:
    • 64位=93
    • 32位=92

5.2 修改 checksum8 算法

  1. 修改 WebServer.javaCommonUtils.java
  2. CommonUtils.java 中强制返回自定义访问地址
  3. 示例修改(1384 行和 1399 行):
return "xxxx";

六、Stager 修改

6.1 Stager 特征

  1. 运行 EXE 后自动生成并访问特定 URL
  2. 远程下载 Stager 文件
  3. 杀软和 EDR 会检测下载的文件

6.2 修改 Beacon 混淆密钥

  1. 默认密钥:

    • 3.x 版本:0x69
    • 4.x 版本:0x2E
  2. 修改 BeaconPayload.java 中的密钥值

  3. 使用 CrackSleeve 工具修改 sleeve 目录下的 DLL 文件:

    • 下载地址:https://github.com/ca3tie1/CrackSleeve
    • 4.5 版本专用:https://github.com/kyxiaxiang/CrackSleeve4.5
  4. 修改步骤:

    • 使用 IDA 打开 sleeve/beacon.x64.dll
    • 搜索 0x2e 并修改为自定义密钥
    • 使用 CrackSleeve 重新加密文件

七、PowerShell 模板修改

7.1 自定义 PowerShell 模板

  1. 准备文件:

    • AES-Encoder.ps1
    • template.x64.ps1
  2. 修改 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 关键免杀点

  1. 修改默认端口和证书
  2. 定制 Profile 文件
  3. 修改 checksum8 算法和流量特征
  4. 更改 Beacon 混淆密钥
  5. 定制 PowerShell 模板
  6. 修改 Stager 下载文件特征

8.2 注意事项

  1. 修改后需同时更新客户端和服务端
  2. 修改前备份原始文件
  3. 测试所有功能是否正常
  4. 不同版本可能需要不同的修改方式

附录:工具与资源

  1. CrackSleeve 工具:

    • https://github.com/ca3tie1/CrackSleeve
    • 各版本专用工具在 kyxiaxiang 仓库
  2. 流量分析工具:

    • Wireshark 过滤器:http.request.method == "GET"
  3. Stager 分析脚本:

    • Sentinel-One/CobaltStrikeParser
  4. FlatLaf 主题库:

    • Maven 仓库:https://mvnrepository.com/artifact/com.formdev/flatlaf/3.2
Cobalt Strike 4.5 二次开发与免杀技术详解 一、前期准备与环境配置 1.1 版本选择 推荐使用 CS 4.5 版本(双端 Java 实现) 4.7 及以上版本防破解机制增强,服务端二进制文件加大破解难度 1.2 基础配置修改 修改默认端口 编辑 teamserver 文件 将默认 50050 端口修改为其他端口(如 37533) 修改示例: 修改 HTTPS 特征证书 查看默认证书特征: 生成自定义证书: 修改 teamserver 文件中的证书配置: 二、Profile 文件定制 2.1 Profile 文件作用 修改流量特征 修改 Beacon 默认行为 使通信更加隐蔽 2.2 可修改特征 GET/POST 请求内容 远程加载的 beacon.dll 特征 远程加载 beacon.dll 的 URI 进程注入细节 后渗透模块特征 2.3 测试 Profile 2.4 启动时指定 Profile 三、反编译与破解 3.1 反编译步骤 使用 Java 11 进行反编译: 创建 IDEA 项目: 项目名称:CobalStrike JDK 选择:1.8 Oracle OpenJDK version1.8.0_ 112 3.2 关键破解文件修改 BeaconData.java Authorization.java Helper.java、Starter.java、Starter2.java 四、个性化定制 4.1 界面修改 修改标题(AggressorClient.java 79 行): 连接对话框修改(ConnectDialog.java): 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 中添加: 五、流量特征修改 5.1 CS 默认特征 GET 请求地址为 4 字符长度 POST 请求地址为 submit.php checksum8 算法特征: 64位=93 32位=92 5.2 修改 checksum8 算法 修改 WebServer.java 和 CommonUtils.java 在 CommonUtils.java 中强制返回自定义访问地址 示例修改(1384 行和 1399 行): 六、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 重新加密文件 七、PowerShell 模板修改 7.1 自定义 PowerShell 模板 准备文件: AES-Encoder.ps1 template.x64.ps1 修改 ResourceUtils.java : 八、免杀技术总结 8.1 关键免杀点 修改默认端口和证书 定制 Profile 文件 修改 checksum8 算法和流量特征 更改 Beacon 混淆密钥 定制 PowerShell 模板 修改 Stager 下载文件特征 8.2 注意事项 修改后需同时更新客户端和服务端 修改前备份原始文件 测试所有功能是否正常 不同版本可能需要不同的修改方式 附录:工具与资源 CrackSleeve 工具: https://github.com/ca3tie1/CrackSleeve 各版本专用工具在 kyxiaxiang 仓库 流量分析工具: Wireshark 过滤器: http.request.method == "GET" Stager 分析脚本: Sentinel-One/CobaltStrikeParser FlatLaf 主题库: Maven 仓库:https://mvnrepository.com/artifact/com.formdev/flatlaf/3.2