用 Yara 对红队工具 打标(四)——cobaltstrike 生成马浅析(四)
字数 1871 2025-08-06 18:08:01
Cobalt Strike 生成马分析与Yara规则检测教学文档
一、环境准备与工具介绍
1.1 所需工具
- Cobalt Strike 4.7:红队常用的渗透测试框架
- Google开源的YARA规则集:GCTI/YARA/CobaltStrike
- 分析工具:IDA Pro、调试器等
1.2 Cobalt Strike生成马类型
Cobalt Strike可以生成两种主要类型的Payload:
Windows Stager Payload
- 包含stager的落地木马
- 三种类型:
- EXE:直接点击执行
- Windows Service EXE:需加载为服务运行(使用sc命令或MSF的PsExec模块)
- DLL:提供名为"StarW"的导出函数,可使用rundll32加载
Windows Stageless Payload
- 无分段的stager,即stager与所请求数据的集合体
- 生成的是完整的beacon
- 额外类型:
- PowerShell
- Raw类型
二、Yara规则匹配结果分析
2.1 匹配概况
- 共6个匹配结果
- 仅匹配stageless类的beacon
- stager类的artifact未被匹配到
2.2 匹配的Yara规则分析
规则1:CobaltStrike_Sleeve_BeaconLoader_VA_x64_o_v4_3_v4_4_v4_5_and_v4_6
- 匹配payload64_process.bin
- 特征字符串:
$core_sig:包含"VirtualAlloc"字符串构建$deobfuscator:反混淆器代码片段
规则2:CobaltStrike_Resources_Template_x64_Ps1_v3_0_to_v4_x_excluding_3_12_3_13
- 匹配stageless中的beacon_powershell类型
- 特征字符串:
- PowerShell特定字符串如
[AppDomain]::CurrentDomain.DefineDynamicAssembly InMemoryModuleMyDelegateType[IntPtr]::size -eq 8
- PowerShell特定字符串如
规则3:CobaltStrike_Sleeve_Beacon_Dll_v4_7_suspected
- 匹配beacon_raw32.bin
- 特征字符串:
$version_sig:包含switch 104 cases的命令处理函数$decoder:解码器循环代码
三、beacon_raw32.exe (stageless)深度分析
3.1 version_sig规则分析
- 定位到
sub_7F8988函数 - 该函数未被直接引用,属于动态调用的beacon命令处理函数
- 包含104个命令跳转(switch 104 cases)
- 特征性极强:恶意样本很少会有103个命令处理的跳转
3.2 decoder规则分析
- 定位到
sub_7FAD62函数 - 函数未被直接引用
- 包含循环加密/解密逻辑:
80 B0 [5] xor byte_10033020[eax], 2Eh 40 inc eax 3D 00 10 00 00 cmp eax, 1000h 7C F1 jl short loc_1000ADA1 - 缓冲区大小4KB(0x1000)
- 加密密钥0x2E
四、规则提取技巧与优化建议
4.1 规则优化建议
-
通配符使用:
- 对于会变化的数组位置(如byte_1E3020),使用通配符替换
- 示例:
80 B0 [4] ?? 40
-
关键常量保留:
- 加密密钥0x2E等关键常量应保留,除非其他版本会变化
-
特征选择:
- 优先选择逻辑上与周围不协调的代码段
- 如自定义hash算法、特殊加密逻辑等
4.2 免杀对抗思路
-
修改关键常量:
- 如修改加密密钥0x2E为其他值
-
重构命令处理函数:
- 重写switch-case结构,改变跳转数量或方式
-
混淆加密逻辑:
- 修改或重写解码器循环结构
五、总结与防御建议
5.1 检测要点总结
-
命令处理函数:
- 大量命令跳转(如104个cases)是强特征
-
内存操作模式:
- 特定的内存分配、解密模式
-
PowerShell特征:
- 特定的PowerShell字符串和内存加载方式
5.2 防御建议
-
部署Yara规则:
- 使用Google提供的规则集进行检测
- 定期更新规则以应对新变种
-
行为监控:
- 监控异常的内存分配和代码执行
- 关注可疑的PowerShell活动
-
深度分析:
- 对可疑样本进行逆向分析
- 关注文中提到的关键特征点