用 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
    • InMemoryModule
    • MyDelegateType
    • [IntPtr]::size -eq 8

规则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 规则优化建议

  1. 通配符使用

    • 对于会变化的数组位置(如byte_1E3020),使用通配符替换
    • 示例:80 B0 [4] ?? 40
  2. 关键常量保留

    • 加密密钥0x2E等关键常量应保留,除非其他版本会变化
  3. 特征选择

    • 优先选择逻辑上与周围不协调的代码段
    • 如自定义hash算法、特殊加密逻辑等

4.2 免杀对抗思路

  1. 修改关键常量

    • 如修改加密密钥0x2E为其他值
  2. 重构命令处理函数

    • 重写switch-case结构,改变跳转数量或方式
  3. 混淆加密逻辑

    • 修改或重写解码器循环结构

五、总结与防御建议

5.1 检测要点总结

  1. 命令处理函数

    • 大量命令跳转(如104个cases)是强特征
  2. 内存操作模式

    • 特定的内存分配、解密模式
  3. PowerShell特征

    • 特定的PowerShell字符串和内存加载方式

5.2 防御建议

  1. 部署Yara规则

    • 使用Google提供的规则集进行检测
    • 定期更新规则以应对新变种
  2. 行为监控

    • 监控异常的内存分配和代码执行
    • 关注可疑的PowerShell活动
  3. 深度分析

    • 对可疑样本进行逆向分析
    • 关注文中提到的关键特征点

六、参考资源

  1. Google开源YARA规则集
  2. MSYS2安装工具
  3. 相关技术博客
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 InMemoryModule MyDelegateType [IntPtr]::size -eq 8 规则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 函数 函数未被直接引用 包含循环加密/解密逻辑: 缓冲区大小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活动 深度分析 : 对可疑样本进行逆向分析 关注文中提到的关键特征点 六、参考资源 Google开源YARA规则集 MSYS2安装工具 相关技术博客