☰
8年19万条beacon数据大揭秘:Cobalt Strike Beacon Corpus协议、端口与C2基础设施分布分析教程
2026/10/23 4:42:28 网站建设 项目流程
  • 数据集
  • 网络安全

【免费下载链接】cobaltstrike-beacon-corpus

项目地址:https://ai.gitcode.com/hf_mirrors/fox-srt/cobaltstrike-beacon-corpus
点击查看免费下载

Fox-IT 开源数据集Cobalt Strike Beacon Corpus汇集了 2018 年 7 月至 2026 年 9 月间,从互联网可直达的 Cobalt Strike Team Server 上直接下载的190,182 条 beacon 观测记录(sightings)和56,843 个去重后的 beacon 原始载荷,并附带dissect.cobaltstrike解析出的完整配置。这是目前公开可查的规模最大、时间跨度最长的 Cobalt Strike C2 基础设施语料库,适合威胁情报分析、安全研究和防御方狩猎(threat hunting)的新手快速上手。

📊 一、数据集整体规模一览

先记住这几个核心数字,后面分析全靠它们:

指标数值
独立 beacon(原始载荷)56,843
观测记录(sightings)190,182
独立 IP:Port(Team Server)36,652
独立 IP 地址30,313
成功解析配置的记录189,882
最早观测时间2018-07-04
最近观测时间2026-09-29

💡 一个 beacon 会被部署在多个 Team Server 上,因此"观测记录"远多于"独立 beacon"——这正是分析 C2 基础设施分布的基础。

📁 二、仓库结构与数据文件

项目结构非常精简,两个 Parquet 文件就是核心数据,另有一份现成的分析 Notebook:

文件行数内容
data/beacons.parquet190,182一行一条观测:何时、从哪台服务器下载到了 beacon,以及解析后的配置
data/payloads.parquet56,843一行一个独立 beacon:CaRT 封装的原始载荷
beacon_research.ipynb—官方配套分析 Notebook(DuckDB + pandas + matplotlib)

大部分研究只需要 beacons.parquet;只有需要重新解析 beacon 或排查解析失败样本时,才需要下载约 10 GB 的 payloads.parquet。两个文件在仓库中通过 Git LFS 管理,首次克隆建议带上 LFS 大文件:

git clone https://gitcode.com/hf_mirrors/fox-srt/cobaltstrike-beacon-corpus

beacons.parquet的完整字段说明见 README.md 的 Schema 章节,核心列包括:

  • sha256:beacon 载荷哈希,可关联 payloads 表
  • collected_from_ip/collected_from_port:Team Server 的地址与端口(53 表示 DNS 监听)
  • protocol:监听协议(http/https/dns等)
  • watermark/version:beacon 水印与 Cobalt Strike 版本
  • config_json:完整解析配置(域名、XOR key、stage 混淆方式、Guardrails 等)
  • tls_subject/tls_issuer/tls_fingerprint_sha256:服务器 TLS 证书指纹,用于聚类同一基础设施
  • geo_asn/geo_as_org/geo_country:Team Server IP 的归属与地理位置

🌐 三、协议与端口分布:C2 基础设施藏在哪里

这是本数据集最有价值的部分。统计全部 190,182 条观测的协议占比:

协议观测数占比独立 beaconTeam Server 数
https102,23153.75%29,27819,121
http69,03336.30%21,01513,672
dns18,5889.77%6,4104,063
未解析3260.17%13797

结论很清晰:HTTPS 是绝对主力,其次是裸 HTTP,DNS 通道约一成。再往下看 Top 10 端口,答案更加直接:

排名端口观测数说明
1443108,712HTTPS,C2 第一大端口
28063,771HTTP,第二大端口
35315,838DNS 通道
48080537备选 Web 端口
59999450常见 C2 备选端口
68443207备选 HTTPS
78888194备选端口
85555102常见 C2 端口
9777762备选端口
10808859备选端口

🎯防御启示:前 3 个端口贡献了 99% 以上的流量。如果你的检测规则聚焦在"高信誉 Web 端口上的 beacon 行为"(如固定间隔请求、checksum8 校验 URI、TLS 证书异常),基本覆盖了绝大多数现实威胁;而 DNS 通道虽然量小,却是绕过传统出站过滤的典型手段,值得单独建规则(数据集中甚至能看到攻击者使用 DoH 伪装 User-Agent 的配置,如SETTING_DNS_DOH_USERAGENT)。

📈 四、趋势观察:Team Server 数量与版本演进

官方 Notebook beacon_research.ipynb 中内置了 43 个月的独立扫描指纹数据,勾勒出 C2 基础设施的整体走势:

  • 2023 年 8 月前后是峰值:单月指纹化 Team Server 约 1,790 个
  • 之后持续回落:2025 年初约 720 个,到 2026 年 9 月已降至 338 个左右

与此同时,版本分布显示攻击者工具链仍在快速迭代:2025 年末 4.9/4.11 版本占主导,2025 年 11 月发布的4.12和 2026 年 6 月发布的4.13上线后迅速占据大量新增 beacon——说明攻击者更新工具的周期很短,基于旧版本特征(如水印、配置布局)的检测规则会很快过时。

一个容易被忽略的发现是Team Server 的生命周期非常短:按ip:port身份统计,36,589 个服务器中位存活期仅15 天(p90 也只有 158 天),最长一个存活了 2,072 天。这意味着 IP 情报的时效性很关键——今天恶意的主机,半年后可能早已换人。

🔑 五、水印(Watermark):追踪同一威胁行为者的指纹

Cobalt Strike 的每个 build 都带一个 32 位水印值,同一运营者往往重复使用同一个水印。按水印聚合观测数,Top 几名如下(来自官方示例查询结果):

watermark观测数关联服务器数
0x031,7764,922
0x1234567828,8924,361
0x3ade68b111,3652,403
0x5109bf6d9,0351,552
0x499602d28,5741,542

⚠️ 注意:0x0和0x12345678这类"默认/示例值"使用面极大,只能作为弱线索;真正做归因要结合pubkey_sha256、C2 域名、TLS 指纹共同判断。另外红队也会使用 Cobalt Strike,不能仅凭语料库就断定某个 IP 或水印"一定是恶意的"。

🐝 六、发现被"改造"的恶意 Beacon

数据集最有意思的玩法之一:找那些刻意修改配置块来对抗解析器的 beacon。官方统计显示,在 19 万条观测中:

  • 约63,368 条同时命中"复用水印 + 修改过的 jar 签名"
  • 约21,109 条命中"修改过的 jar 签名"
  • 仅约33,970 条属于完全"正常"样本

这类对抗手段在config_json里有直接痕迹:

  • modifications键:例如remapped_types——攻击者把TYPE_SHORT/TYPE_INT/TYPE_PTR重映射成 65535/65534/65533,导致朴素解析器直接失败(dissect.cobaltstrike会自动纠正)
  • layout键:记录设置项的 index/type/size 布局,可用来发现被"洗牌"过的配置块
  • guardrails键:使用了 Guardrails 商业加固的 beacon,含独立的 XOR key 与GUARD_COMPUTER等保护项

🛠 七、DuckDB 一键上手:不加载数据的分析方法

Parquet 文件可以像数据库表一样直接查询,无需导入。官方推荐用 DuckDB 远程查询 Hugging Face 上的原始文件(本地文件同理替换路径即可):

SELECT protocol, count(*) AS sightings, count(DISTINCT collected_from_ip) AS servers, min(collected_on) AS first_seen, max(collected_on) AS last_seen FROM 'hf://datasets/fox-srt/cobaltstrike-beacon-corpus/data/beacons.parquet' GROUP BY protocol ORDER BY sightings DESC;

常用新手查询思路(都基于config_json的 JSON 提取):

  1. 按版本统计:regexp_extract(version, '(\d+)\.(\d+)', 1)提取主/次版本号,按月做堆叠图
  2. 提取 C2 域名:json_extract_string(config_json, '$.domains[*]')
  3. 提取 XOR key 与公共密钥:$.xorkey、$.settings.SETTING_PUBKEY
  4. 地理分布:直接GROUP BY geo_country, geo_as_org看 C2 主机在哪些国家/ISP

完整的查询套路与图表代码都写在 beacon_research.ipynb 里,包括 Team Server 月度趋势、协议占比、版本演进、水印聚类、生命周期曲线等,是现成的学习模板。

⚠️ 八、安全使用与数据局限

安全红线(必读):

  • payloads.parquet 中的 beacon 是活跃的恶意 stager,可能包含真实可用的 C2 地址。原始载荷被 CaRT 格式封装,目的是防止杀毒软件在下载阶段触发告警/隔离——不要在非隔离环境中解包运行
  • 语料库不包含任何能运行或破解 Cobalt Strike 的内容

数据局限性(官方声明,分析结论时须考虑):

  • 覆盖偏重 80/443/53 端口的服务器,其他端口不具备整体代表性
  • 禁用 staging、使用重定向器或 domain fronting 的服务器覆盖不足
  • 部分月份存在采集空窗,低数值应视为采集缺口而非使用量下降
  • IP 和域名会回收再分配,观测只反映采集当日的状态

元数据与解析配置采用CC BY 4.0许可;引用数据时可参考 README.md 末尾的 BibTeX 文献信息。

✅ 小结

Cobalt Strike Beacon Corpus 用 8 年、19 万条真实 beacon 数据回答了一个核心问题:Cobalt Strike 的 C2 基础设施长什么样。答案是——HTTPS 443 为主战场(约 54% 流量)、HTTP 80 紧随其后、DNS 53 约占一成;Team Server 生命周期中位数仅 15 天;大量 beacon 经过水印复用与配置改造来对抗检测。无论是一行 DuckDB 查询还是完整的 Notebook 复现,这个数据集都能帮你快速建立对 Cobalt Strike 威胁画像的量化认知。

  • 数据集
  • 网络安全

【免费下载链接】cobaltstrike-beacon-corpus

项目地址:https://ai.gitcode.com/hf_mirrors/fox-srt/cobaltstrike-beacon-corpus
点击查看免费下载
上一篇:如何用 3 步免费查看 .brd PCB 文件?OpenBoardView 新手完整指南
下一篇:OpenSpeedy免费游戏变速使用指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询