狩猎命令与控制信标
适用场景
- 主动狩猎网络中的失陷系统时
- 威胁情报显示针对所在行业的 C2 框架活动时
- 调查向可疑域名发出的周期性出站连接时
- 事件响应期间识别活跃 C2 通道时
- DNS 查询日志显示特定域名的异常访问模式时
前置条件
- 包含完整 URL 和时序数据的网络代理/防火墙日志
- DNS 查询日志(被动 DNS、DNS 服务器日志或 Sysmon 事件 ID 22)
- Zeek/Bro 网络连接日志或 NetFlow 数据
- 具备统计分析能力的 SIEM(Splunk、Elastic)
- 用于域名/IP 信誉查询的威胁情报 feeds
工作流程
- 识别信标特征:定义信标的判断标准(规律的间隔、小型负载、一致的目标地址、抖动模式)。
- 收集网络遥测数据:汇聚代理日志、DNS 查询和连接元数据进行分析。
- 应用频率分析:使用统计方法(标准差、变异系数)识别具有规律间隔的连接。
- 过滤已知正常流量:排除合法的周期性流量(Windows Update、杀毒软件更新、心跳服务、NTP)。
- 分析域名/IP 信誉:针对威胁情报、WHOIS 数据和证书透明度日志核查已识别的信标目标。
- 调查终端上下文:将信标活动与源终端上的进程创建、用户上下文及文件系统变更进行关联。
- 确认并响应:验证 C2 活动、阻断通信并启动事件响应。
核心概念
| 概念 | 描述 |
|---|---|
| T1071 | 应用层协议(HTTP/HTTPS/DNS C2) |
| T1071.001 | Web 协议(HTTP/S 信标) |
| T1071.004 | DNS(DNS 隧道 C2) |
| T1573 | 加密通道 |
| T1572 | 协议隧道 |
| T1568 | 动态解析(DGA、fast-flux) |
| T1132 | C2 数据编码 |
| T1095 | 非应用层协议 |
| 信标间隔 | C2 回连之间的时间间隔 |
| 抖动 | 信标间隔中的随机变化量 |
| DGA | 域名生成算法(Domain Generation Algorithm) |
| Fast-Flux | 快速变化的 DNS 解析记录 |
工具与系统
| 工具 | 用途 |
|---|---|
| RITA(Real Intelligence Threat Analytics) | 自动检测 Zeek 日志中的信标 |
| Splunk | 使用 SPL 进行统计信标分析 |
| Elastic Security | 基于机器学习的信标异常检测 |
| Zeek/Bro | 网络连接元数据采集 |
| Suricata | 支持 JA3/JA4 指纹的网络 IDS |
| VirusTotal | 域名和 IP 信誉查询 |
| PassiveDNS | 历史 DNS 解析数据 |
| Flare | C2 配置文件检测 |
常见场景
- Cobalt Strike 信标:通过可延展 C2 配置文件实现 HTTP/HTTPS 信标,支持可配置的休眠时间和抖动。
- DNS 隧道 C2:通过向攻击者控制域名发送编码的 DNS TXT/CNAME 查询实现数据外泄和命令接收。
- HTTPS 上的 Sliver C2:使用 HTTPS 的现代 C2 框架,支持可配置的信标间隔和域前置(domain fronting)。
- 基于 DGA 的 C2:恶意软件每日生成随机域名,攻击者预先注册即将使用的域名用于 C2。
- 滥用合法服务:通过合法云服务(Azure、AWS、Slack、Discord、Telegram)进行 C2 通信。
输出格式
狩猎 ID:TH-C2-[日期]-[序号]
源 IP:[内网 IP]
源主机:[主机名]
目标:[域名/IP]
协议:[HTTP/HTTPS/DNS/自定义]
信标间隔:[平均秒数]
抖动:[百分比]
连接次数:[总连接数]
数据量:[发送/接收字节数]
首次发现:[时间戳]
最后发现:[时间戳]
域名存在时间:[天数]
威胁情报匹配:[是/否 - 来源]
风险等级:[严重/高/中/低]