关于 hunting-for-beaconing-with-frequency-analysis
面向威胁狩猎人员的网络信标分析技能,通过连接间隔、抖动和数据量等特征发现潜在的 C2 通信,并结合威胁情报与终端遥测进行研判。
主要功能
- 01计算连接间隔与变异系数
- 02分析信标抖动和传输数据量
- 03过滤常见合法周期性流量
- 04结合威胁情报丰富目的地信息
- 05关联端点遥测并评估风险
适用场景
- 01排查终端对陌生目的地的周期连接
- 02分析带随机抖动的潜在 C2 流量
- 03调查 DNS 隧道和加密信标通信
- 04在紫队演练中验证 C2 检测
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill hunting-for-beaconing-with-frequency-analysis安装后在 Claude Code 中输入/hunting-for-beaconing-with-frequency-analysis确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用频率分析狩猎 Beaconing
何时使用
- 当主动搜索回连 C2 基础设施的受感染端点时
- 当威胁情报报告表明有针对你所在行业的活跃 C2 框架时
- 当网络日志显示存在到陌生目标的周期性出站连接时
- 在紫队演练中验证 C2 检测能力时
- 当调查潜在入侵并需要识别活跃 C2 通道时
前置条件
- 带时间戳和目标数据的网络代理/防火墙日志(至少 24 小时)
- Zeek conn.log、dns.log 和 ssl.log,或等效的 NetFlow/IPFIX 数据
- 具备统计分析能力的 SIEM 平台(Splunk、Elastic、Microsoft Sentinel)
- 用于自动化 beacon 分析的 RITA(Real Intelligence Threat Analytics)或 AC-Hunter
- 用于域名/IP 信誉富化的威胁情报源
工作流
- 定义 Beacon 参数:建立检测阈值——变异系数(CV)低于 0.20 表示强周期性,24 小时内最少 50 次连接,平均间隔在 30 秒到 24 小时之间。
- 收集网络遥测数据:将代理日志、DNS 查询、防火墙连接日志和 Zeek 元数据聚合到分析平台中。
- 计算连接间隔:对每个源-目标对,计算连续连接之间的时间差,并得出平均间隔、标准差和 CV。
- 应用抖动分析:像 Cobalt Strike 这样复杂的 C2 框架会为 beacon 间隔添加抖动(随机性)。Sunburst 后门每 15 分钟加/减 90 秒进行一次 beacon。分析抖动模式,以检测即使经过随机化的 beaconing。
- 过滤合法周期性流量:排除已知良好的 beaconing 来源,包括 Windows Update、防病毒定义更新、NTP 同步、SaaS 心跳服务和 CDN 健康检查。
- 分析数据大小一致性:C2 心跳数据包通常具有一致的载荷大小。计算每次连接传输字节数的 CV——低方差表明存在自动化通信。
- 使用威胁情报富化:将识别出的 beaconing 目标与 VirusTotal、WHOIS 注册数据(标记注册不足 30 天的域名)、证书透明度日志和被动 DNS 历史进行比对。
- 与端点遥测数据关联:通过 DHCP 日志将 beaconing 源 IP 映射到端点主机名,然后与进程创建事件(Sysmon 事件 ID 1、3)关联,以识别相关进程。
- 评分并排序优先级:根据 CV 值、域名年龄、TI 匹配、数据大小一致性和可疑端口使用情况分配风险评分。升级高置信度发现。
关键概念
| 概念 | 描述 |
|---|---|
| T1071.001 | 应用层协议:Web 协议——HTTP/HTTPS beaconing |
| T1071.004 | 应用层协议:DNS——基于 DNS 的 C2 隧道 |
| T1573 | 加密通道——TLS/SSL 加密的 C2 通信 |
| T1568.002 | 动态解析:域名生成算法 |
| 变异系数 | 标准差除以平均值;低于 0.20 的值表示周期性 |
| 抖动 | 为 beacon 间隔添加的随机变化,用于规避检测 |
| RITA Beacon 评分 | 由连接规律性、数据大小一致性和连接数组成的综合评分 |
| JA3/JA4 指纹识别 | 用于识别 C2 框架特征的 TLS 客户端指纹识别 |
| Fast-Flux DNS | 用于保护 C2 基础设施的快速变化 DNS 解析 |
工具与系统
| 工具 | 用途 |
|---|---|
| RITA (Real Intelligence Threat Analytics) | 基于 Zeek 日志的自动化信标评分 |
| AC-Hunter | 具备信标检测功能的商业威胁狩猎平台 |
| Splunk | 基于 SPL 的使用 streamstats 的统计信标分析 |
| 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 Beacon:默认 60 秒间隔,通过 HTTPS 传输,抖动可配置为 0-50%。Malleable C2 配置文件可以模仿合法流量模式。
- Sunburst/SUNSPOT:12-14 天的休眠期,然后每 12-14 分钟发送一次信标,带有随机抖动,旨在规避频率分析。
- DNS 隧道 C2:通过向攻击者控制的域名发送 DNS TXT/CNAME 查询来外泄编码数据,可通过高子域名熵值和查询量进行检测。
- Sliver C2:现代 C2 框架,支持 HTTPS、mTLS 和 WireGuard 协议,可配置信标间隔并内置抖动支持。
- 合法服务滥用:通过 Slack、Discord、Telegram 或云存储 API 进行 C2 通信,使基于目的地的过滤失效。
输出格式
Hunt ID: TH-BEACON-[DATE]-[SEQ]
Source IP: [Internal IP]
Source Host: [Hostname from DHCP/DNS]
Destination: [Domain/IP]
Protocol: [HTTP/HTTPS/DNS]
Beacon Interval: [Average seconds]
Jitter Estimate: [Percentage]
Coefficient of Variation: [CV value]
Connection Count: [Total connections in window]
Data Size CV: [Payload consistency metric]
Domain Age: [Days since registration]
TI Match: [Yes/No -- source]
Risk Score: [0-100]
Risk Level: [Critical/High/Medium/Low]
Indicators: [List of triggered risk factors]
评论
支持 Markdown