- 数据集
- 网络安全
【免费下载链接】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.parquet | 190,182 | 一行一条观测:何时、从哪台服务器下载到了 beacon,以及解析后的配置 |
| data/payloads.parquet | 56,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-corpusbeacons.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 条观测的协议占比:
| 协议 | 观测数 | 占比 | 独立 beacon | Team Server 数 |
|---|---|---|---|---|
| https | 102,231 | 53.75% | 29,278 | 19,121 |
| http | 69,033 | 36.30% | 21,015 | 13,672 |
| dns | 18,588 | 9.77% | 6,410 | 4,063 |
| 未解析 | 326 | 0.17% | 137 | 97 |
结论很清晰:HTTPS 是绝对主力,其次是裸 HTTP,DNS 通道约一成。再往下看 Top 10 端口,答案更加直接:
| 排名 | 端口 | 观测数 | 说明 |
|---|---|---|---|
| 1 | 443 | 108,712 | HTTPS,C2 第一大端口 |
| 2 | 80 | 63,771 | HTTP,第二大端口 |
| 3 | 53 | 15,838 | DNS 通道 |
| 4 | 8080 | 537 | 备选 Web 端口 |
| 5 | 9999 | 450 | 常见 C2 备选端口 |
| 6 | 8443 | 207 | 备选 HTTPS |
| 7 | 8888 | 194 | 备选端口 |
| 8 | 5555 | 102 | 常见 C2 端口 |
| 9 | 7777 | 62 | 备选端口 |
| 10 | 8088 | 59 | 备选端口 |
🎯防御启示:前 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 | 观测数 | 关联服务器数 |
|---|---|---|
| 0x0 | 31,776 | 4,922 |
| 0x12345678 | 28,892 | 4,361 |
| 0x3ade68b1 | 11,365 | 2,403 |
| 0x5109bf6d | 9,035 | 1,552 |
| 0x499602d2 | 8,574 | 1,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 提取):
- 按版本统计:
regexp_extract(version, '(\d+)\.(\d+)', 1)提取主/次版本号,按月做堆叠图 - 提取 C2 域名:
json_extract_string(config_json, '$.domains[*]') - 提取 XOR key 与公共密钥:
$.xorkey、$.settings.SETTING_PUBKEY - 地理分布:直接
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
相关推荐
15MB超轻量电视直播神器:让老旧安卓设备重获新生
15MB超轻量电视直播神器:让老旧安卓设备重获新生 你是否还在为家里那台卡顿的老旧安卓电视而烦恼?每次切换频道都要等待十几秒,内存不足导致应用频繁闪退,存储空间
数据集网络安全Decepticon Cobalt Strike Beacon 作战手册:Teamserver、Malleable C2 与 OPSEC 实战指南
Decepticon Cobalt Strike Beacon 作战手册:Teamserver、Malleable C2 与 OPSEC 实战指南 导读 本文档
Anthropic-Cybersecurity-Skills 实战:Cobalt Strike Beacon 配置提取与威胁分析
Anthropic Cybersecurity Skills 实战:Cobalt Strike Beacon 配置提取与威胁分析 本篇技术指南以 Anthrop
AI 技能网络安全人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考