| name | hunting-for-beaconing-with-frequency-analysis |
| description | 通过对网络流量应用统计频率分析、抖动计算和变异系数评分,识别命令与控制(C2)信标模式,检测被攻陷终端的周期性回调行为。 |
| domain | cybersecurity |
| subdomain | threat-hunting |
| tags | ["threat-hunting","beaconing","c2-detection","frequency-analysis","network-traffic","RITA","jitter-detection","mitre-t1071"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用频率分析狩猎信标(Beaconing)
适用场景
- 主动搜索回调 C2 基础设施的被攻陷终端时
- 威胁情报报告显示针对您所在行业的活跃 C2 框架时
- 网络日志显示向陌生目标的周期性出站连接时
- 紫队演练验证 C2 检测能力时
- 调查潜在入侵事件并需要识别活跃 C2 通道时
前置条件
- 带时间戳和目标数据的网络代理/防火墙日志(至少 24 小时)
- Zeek conn.log、dns.log 和 ssl.log 或等效的 NetFlow/IPFIX 数据
- 具备统计分析能力的 SIEM 平台(Splunk、Elastic、Microsoft Sentinel)
- 用于自动化信标分析的 RITA(Real Intelligence Threat Analytics)或 AC-Hunter
- 用于域名/IP 信誉丰富化的威胁情报 feeds
工作流程
- 定义信标参数:建立检测阈值——变异系数(CV)低于 0.20 表示强周期性,24 小时内最少 50 次连接,平均间隔在 30 秒到 24 小时之间。
- 收集网络遥测数据:将代理日志、DNS 查询、防火墙连接日志和 Zeek 元数据汇总到分析平台。
- 计算连接间隔:对每个源-目标对,计算连续连接之间的时间差,推导平均间隔、标准差和变异系数。
- 应用抖动分析:Cobalt Strike 等复杂 C2 框架会向信标间隔添加抖动(随机性)。Sunburst 后门每 15 分钟信标一次,前后偏差 90 秒。分析抖动模式以检测甚至是随机化的信标行为。
- 过滤合法的周期性流量:排除已知合法的信标来源,包括 Windows Update、防病毒定义更新、NTP 同步、SaaS 心跳服务和 CDN 健康检查。
- 分析数据量一致性:C2 心跳包通常具有一致的 payload 大小。计算每次连接传输字节的变异系数——低方差表明是自动化通信。
- 用威胁情报丰富:将识别出的信标目标与 VirusTotal、WHOIS 注册数据(标记 30 天内新域名)、证书透明度日志和被动 DNS 历史交叉验证。
- 与终端遥测关联:通过 DHCP 日志将信标来源 IP 映射到终端主机名,然后与进程创建事件(Sysmon 事件 ID 1、3)关联以识别责任进程。
- 评分并排序:根据变异系数、域名年龄、威胁情报匹配、数据量一致性和可疑端口使用分配风险评分。上报高置信度发现。
核心概念
| 概念 | 描述 |
|---|
| T1071.001 | 应用层协议:Web 协议——HTTP/HTTPS 信标 |
| T1071.004 | 应用层协议:DNS——基于 DNS 的 C2 隧道 |
| T1573 | 加密通道——TLS/SSL 加密的 C2 通信 |
| T1568.002 | 动态解析:域名生成算法(DGA) |
| 变异系数(CV) | 标准差除以均值;低于 0.20 表示周期性 |
| 抖动(Jitter) | 向信标间隔添加的随机变化,用于规避检测 |
| RITA 信标评分 | 综合连接规律性、数据量一致性和连接数的评分 |
| JA3/JA4 指纹 | TLS 客户端指纹,用于识别 C2 框架签名 |
| Fast-Flux DNS | 快速变化的 DNS 解析,用于保护 C2 基础设施 |
工具与系统
| 工具 | 用途 |
|---|
| RITA(Real Intelligence Threat Analytics) | 基于 Zeek 日志的自动化信标评分 |
| AC-Hunter | 带信标检测的商业威胁狩猎平台 |
| Splunk | 使用 streamstats 进行基于 SPL 的统计信标分析 |
| Elastic Security | 周期性网络行为的 ML 异常检测 |
| Zeek | 网络元数据收集(conn.log、dns.log、ssl.log) |
| Suricata | 带 JA3/JA4 TLS 指纹提取的网络 IDS |
| FLARE | C2 配置文件和信标模式检测 |
| VirusTotal | 域名和 IP 信誉丰富化 |
检测查询
Splunk——HTTP/S 信标频率分析
index=proxy OR index=firewall
| where NOT match(dest, "(?i)(microsoft|google|amazonaws|cloudflare|akamai)")
| bin _time span=1s
| stats count by src_ip dest _time
| streamstats current=f last(_time) as prev_time by src_ip dest
| eval interval=_time-prev_time
| stats count avg(interval) as avg_interval stdev(interval) as stdev_interval
min(interval) as min_interval max(interval) as max_interval by src_ip dest
| where count > 50
| eval cv=stdev_interval/avg_interval
| where cv < 0.20 AND avg_interval > 30 AND avg_interval < 86400
| sort cv
| table src_ip dest count avg_interval stdev_interval cv
KQL——Microsoft Sentinel 信标检测
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemoteIPType == "Public"
| summarize ConnectionTimes=make_list(Timestamp), Count=count() by DeviceName, RemoteIP, RemoteUrl
| where Count > 50
| extend Intervals = array_sort_asc(ConnectionTimes)
| mv-apply Intervals on (
extend NextTime = next(Intervals)
| where isnotempty(NextTime)
| extend IntervalSec = datetime_diff('second', NextTime, Intervals)
| summarize AvgInterval=avg(IntervalSec), StdDev=stdev(IntervalSec)
)
| extend CV = StdDev / AvgInterval
| where CV < 0.2 and AvgInterval > 30
| sort by CV asc
Sigma 规则——信标模式检测
title: Potential C2 Beaconing Pattern Detected
status: experimental
logsource:
category: proxy
detection:
selection:
dst_ip|cidr: '!10.0.0.0/8'
timeframe: 24h
condition: selection | count(dst) by src_ip > 50
level: medium
tags:
- attack.command_and_control
- attack.t1071.001
常见场景
- Cobalt Strike 信标:默认 60 秒间隔,通过 HTTPS 配置 0-50% 可调抖动。可延展 C2 配置文件可模拟合法流量模式。
- Sunburst/SUNSPOT:12-14 天休眠期,然后每 12-14 分钟信标一次,带随机化抖动,旨在规避频率分析。
- DNS 隧道 C2:通过 DNS TXT/CNAME 查询向攻击者控制的域名进行编码数据外泄,可通过高子域名熵和查询量检测。
- Sliver C2:支持 HTTPS、mTLS 和 WireGuard 协议的现代 C2 框架,具有内置抖动支持的可配置信标间隔。
- 合法服务滥用:通过 Slack、Discord、Telegram 或云存储 API 进行 C2 通信,使基于目标的过滤无效。
输出格式
Hunt ID: TH-BEACON-[DATE]-[SEQ]
Source IP: [内部 IP]
Source Host: [来自 DHCP/DNS 的主机名]
Destination: [域名/IP]
Protocol: [HTTP/HTTPS/DNS]
Beacon Interval: [平均秒数]
Jitter Estimate: [百分比]
Coefficient of Variation: [变异系数值]
Connection Count: [时间窗口内的总连接数]
Data Size CV: [Payload 一致性指标]
Domain Age: [注册以来的天数]
TI Match: [是/否——来源]
Risk Score: [0-100]
Risk Level: [Critical/High/Medium/Low]
Indicators: [触发的风险因素列表]