用 Yara 对红队工具 打标(四)——cobaltstrike 生成马浅析(二)
字数 925 2025-08-06 18:08:01
CobaltStrike生成马浅析(二) - Yara规则打标技术详解
一、前言
本文是"CobaltStrike生成马浅析"系列的第二部分,重点补充前文中未涵盖的技术细节,特别是关于使用Yara规则对CobaltStrike生成的恶意软件进行检测和标记的技术。
二、CobaltStrike生成马的关键特征
2.1 内存加载技术特征
CobaltStrike生成的恶意软件通常采用以下内存加载技术:
- 反射式DLL注入:通过反射加载器将DLL直接加载到内存中
- 进程镂空(Process Hollowing):创建合法进程后替换其内存内容
- 模块不落地:避免将恶意模块写入磁盘
2.2 通信协议特征
- 默认使用SSL/TLS加密通信
- 自定义C2协议:基于HTTP/HTTPS的定制协议
- 心跳包特征:固定间隔的通信模式
三、Yara规则设计要点
3.1 基础检测规则
rule CobaltStrike_Loader {
meta:
description = "Detects CobaltStrike loader components"
author = "Your Name"
date = "2022-12-30"
strings:
$reflective_loader = { 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 }
$cobaltstrike_sig = "cobaltstrike" nocase
$beacon_sig = "beacon" nocase
condition:
any of them
}
3.2 高级检测规则
针对不同版本的检测规则:
rule CobaltStrike_Beacon_4_x {
meta:
description = "Detects CobaltStrike Beacon 4.x"
strings:
$version_4 = "Beacon 4." wide
$sleep_mask = { 8B ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? }
condition:
all of them
}
四、特定版本检测技术
4.1 针对CobaltStrike 4.x的检测
- 字符串特征:特定格式的版本字符串
- API调用模式:独特的API调用序列
- 内存分配模式:特定的内存分配大小和频率
4.2 针对混淆技术的应对
rule CobaltStrike_Obfuscated {
meta:
description = "Detects obfuscated CobaltStrike payloads"
strings:
$xor_pattern = { 31 [1-4] 31 [1-4] 31 [1-4] 31 [1-4] }
$base64_pattern = /[A-Za-z0-9+\/]{50,}=?=?/
condition:
any of them and filesize < 500KB
}
五、实战检测技巧
5.1 内存转储分析
- 使用工具如
Volatility或Rekall进行内存转储 - 应用Yara规则扫描内存中的恶意代码片段
- 重点关注以下内存区域:
- 进程环境块(PEB)
- 堆内存分配
- 反射加载的模块
5.2 网络流量关联分析
结合Yara规则与网络流量特征:
- HTTP头部特定字段
- SSL证书特征
- 通信间隔模式
六、规则优化建议
- 减少误报:通过增加条件限制,如文件大小、熵值等
- 提高检测率:结合多个特征点,使用"all of"而非"any of"
- 定期更新:跟踪CobaltStrike新版本的变更
七、附录:完整规则示例
rule CobaltStrike_Beacon_Complete {
meta:
description = "Comprehensive detection for CobaltStrike Beacon"
author = "Your Name"
reference = "https://example.com"
strings:
$mz_header = "MZ"
$beacon_str = "beacon" nocase wide ascii
$sleep_pattern = { 8B ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? }
$xor_loop = { 31 [1-4] 31 [1-4] 31 [1-4] 31 [1-4] }
$https_c2 = /https?:\/\/[a-z0-9.-]{5,}\.(com|net|org|info|biz)\/[a-z0-9]{8}/ nocase
condition:
(uint16(0) == 0x5A4D) and
(any of ($beacon_str, $sleep_pattern)) and
(filesize < 2MB and entropy > 6.5)
}
八、总结
通过深入分析CobaltStrike生成恶意软件的特征,我们可以设计出高效的Yara检测规则。关键在于:
- 准确识别版本特定特征
- 应对各种混淆技术
- 结合静态和动态分析技术
- 持续更新规则以适应新变种
建议在实际应用中结合多种检测方法,形成纵深防御体系。