ju4700/APEX-IDS2026
GitHub: ju4700/APEX-IDS2026
一个基于真实生产网络蜜罐捕获构建的研究级网络入侵检测数据集,通过五层确定性标签架构提供高质量的流量标注,弥补传统合成数据集的不足。
Stars: 1 | Forks: 0
# APEX-IDS2026:研究级网络入侵检测数据集
**具有蜜罐验证真实标签的真实世界、确定性、持续收集的 NetFlow 数据**
## 摘要
APEX-IDS2026 是一个建立在实时生产网络基础设施上的研究级网络入侵检测数据集。现有的基准数据集(NSL-KDD、UNSW-NB15、CIC-IDS2017)依赖于在受控实验室环境中合成的攻击流量,而 APEX-IDS2026 与之不同,它通过集成了持续 NetFlow 收集管道的 MikroTik 路由器蜜罐,从实时互联网中捕获真实的威胁行为者行为。
该数据集的核心贡献在于其 **5 层确定性标签架构**,该架构利用蜜罐事件日志与 nfcapd 二进制捕获文件之间基于端口的相关性,生成具有数学保证的 0% 误报率(针对 Tier 1 蜜罐验证流量)的真实标签。这进一步得到了行为异常引擎和威胁情报集成(AbuseIPDB)的验证,使其成为第一个专为持续学术使用而设计的自维持纵向 IDS 数据集。
## 1. 动机与问题描述
网络安全领域的机器学习社区长期以来一直依赖于那些已无法代表当代威胁形势的数据集:
- **NSL-KDD** 源自 1999 年的 DARPA 数据集,其中包含的现代僵尸网络、勒索软件和大规模互联网扫描活动出现之前的模拟攻击。
- **UNSW-NB15** 是在封闭网络中使用 IXIA PerfectStorm 商业流量生成器在 31 小时内生成的——本质上属于合成数据。
- **CIC-IDS2017** 对 5 天的实验室流量使用基于 CICFlowMeter 的启发式标签,其中所谓的“攻击者”只是研究人员在隔离的虚拟机上执行脚本。
基于此类数据训练入侵检测模型会产生在实际部署中泛化能力很差的分类器。实时暴露于互联网的服务器上的网络流表现出一些结构特性——时间分布、标志组合、包字节比和端口扫描多样性——这些特性与模拟工具生成的特性在本质上截然不同。
APEX-IDS2026 通过捕获实时威胁行为者的流量并提供基于硬件级蜜罐证据而非统计启发式的标签,弥补了这一差距。
## 2. 5 层置信度架构
### 2.1 Tier 1 — 蜜罐验证(真实标签)
| 字段 | 值 |
|-------|-------|
| `label` | `Attack_Verified` |
| `confidence` | `honeypot-verified` |
| `evidence_source` | `honeypot:port-match` |
| **误报率** | **0%** |
如果一条流量的**源 IP** 在同一时间窗口内攻击了蜜罐,且其**目标端口**与蜜罐日志条目中记录的受攻击端口完全匹配,则将其划分为 Tier 1。该标签是硬件级日志记录的直接且确定性的结果。
### 2.2 Tier 2 — 攻击者关联(外围侦察)
| 字段 | 值 |
|-------|-------|
| `label` | `Attack_Associated` |
| `confidence` | `attacker-associated` |
| `evidence_source` | `honeypot:port-mismatch` |
如果一条流量的源 IP 是已确认的攻击者(在其他端口上满足了 Tier 1 标准),但其目标端口与蜜罐记录的端口不匹配,则该流量属于 Tier 2。这些流量代表了已确认的威胁行为者的横向侦察活动。
### 2.3 Tier 3 — 未验证(威胁情报标记或行为异常)
| 字段 | 值 |
|-------|-------|
| `label` | `Unverified` |
| `confidence` | `threat-intel-flagged` 或 `behavioral-anomaly` |
这些流量*未*命中蜜罐,但被以下方式标记:
1. **AbuseIPDB 威胁情报**(评分 >= 50)
2. **行为异常引擎**(单包 TCP 扫描、纯 SYN 探测、端口扫描或网络扫描)
该层级捕获了“隐蔽”扫描器和已知恶意 IP,否则它们会污染正常数据集。
### 2.4 Tier 4 — Benign_Verified(安全目标)
| 字段 | 值 |
|-------|-------|
| `label` | `Benign_Verified` |
| `confidence` | `destination-verified` |
针对已知安全的内部子网或特定服务(例如,内部 DNS、IPTV 流媒体)的流量,这些流量没有任何威胁情报标记和行为异常。
### 2.5 Tier 5 — Benign_Assumed(纯净基线)
| 字段 | 值 |
|-------|-------|
| `label` | `Benign_Assumed` |
| `confidence` | `no-threat-indicators` |
没有蜜罐交互、没有威胁情报标记、没有行为异常,但发往常规未验证 IP 空间的流量。
## 3. 数据集特征
| 属性 | 值 |
|----------|-------|
| 收集周期 | 2026 年 6 月 – 8 月(90 天,进行中) |
| 时间窗口分辨率 | 每个文件约 6 分钟 |
| 每个窗口的流量数(总计) | 465,000 – 660,000 |
| 每个窗口的 Tier 1 流量 | 700 – 1,200(已验证攻击) |
| 每个窗口的 Tier 2 流量 | 800 – 1,100(攻击者侦察) |
| 每个窗口的 Tier 3 流量 | 5,000(常规样本) |
| 总蜜罐命中数 | 87,545+ |
| 独立攻击者 IP | 5,375+ |
| 总带标签流量数 | 3,207,546+ 条流量 |
| 数据集类别分布 | 52% 恶意 / 48% 正常 |
| 观察到的攻击类型 | 300+ 种不同的端口扫描和服务探测类别 |
| 命名的攻击类型 | Telnet-Brute, SSH-Brute, RDP-Brute, HTTP-Probe, HTTPS-Probe, SMB-Probe, MySQL-Brute, Redis-Probe, MongoDB-Probe 及其他 15+ 种 |
| MITRE ATT&CK 覆盖范围 | T1046, T1110, T1110.001, T1190, T1021.002 |
| 每条流量的输出列数 | 33(包括国家代码和威胁情报) |
| 标签延迟 | 从流量捕获到生成带标签的 CSV 少于 6 分钟 |
## 4. 文件与目录结构
```
/data/flows/
|
|-- raw/
| |-- nfcapd.202606060110 (NetFlow binary, window 01:10-01:15)
| |-- nfcapd.202606060115 (NetFlow binary, window 01:15-01:21)
| `-- nfcapd.current (Active file, never processed)
|
|-- compressed/
| `-- nfcapd.202606060104.gz (Post-processed archive)
|
|-- metadata/
| |-- dataset_manifest.csv (Master time-window index)
| |-- honeypot_hits.csv (Parsed MikroTik honeypot events)
| |-- labeling_summary.csv (Per-file labeling statistics)
| |-- honeypot_parse_offset.txt (Byte-offset cursor for log parsing)
| |-- pipeline.log (Per-stage operational log)
| `-- pipeline_cron.log (Cron-level timing and skip log)
|
|-- labeled/
| `-- 2026-06-06/
| |-- nfcapd.202606060110_attacks.csv (Tier 1)
| |-- nfcapd.202606060110_suspicious.csv (Tier 2)
| `-- nfcapd.202606060110_normal.csv (Tier 3)
|
`-- scripts/
|-- pipeline_runner.sh (Master cron orchestrator)
|-- parse_honeypot.py (MikroTik log parser)
|-- manifest_update.sh (NetFlow file indexer)
|-- correlate_honeypot_flows.py (Core labeling engine)
`-- compress_flows.sh (Archival compressor)
```
## 5. 数据模式摘要
每个带标签的 CSV 包含 30 多个特征。完整的列参考请参见 [DATASET_SCHEMA.md](docs/DATASET_SCHEMA.md)。
**原始 NetFlow 字段:** `flow_start`, `duration_s`, `protocol`, `src_ip`, `src_port`, `dst_ip`, `dst_port`, `packets`, `bytes`, `tcp_flags`, `tos`
**计算得出的速率特征:** `bytes_per_sec`, `packets_per_sec`, `bytes_per_packet`
**二元 TCP 标志分解:** `flag_syn`, `flag_ack`, `flag_fin`, `flag_rst`, `flag_psh`, `flag_urg`
**分类特征:** `src_port_category`, `dst_port_category`, `flow_duration_class`
**验证层:** `threat_intel_score`, `country` (ISO 代码), `behavioral_flags`
**标签列:** `label`, `attack_type`, `attack_category`, `mitre_technique`, `mitre_tactic`, `confidence`, `evidence_source`, `flow_file`
## 6. 使用建议
**二元分类(攻击检测):**
将 Tier 1 (`_attacks.csv`) 作为正类,Tier 3 (`_normal.csv`) 作为负类进行组合。此配置提供了尽可能纯净的标签质量,且正类中的标签噪声为 0%。
**多类别攻击分类:**
使用 Tier 1 数据并将 `attack_type` 列作为目标变量。这支持对暴力破解、服务探测、Web 攻击和侦察类别进行细粒度分类。
**威胁狩猎与异常检测:**
使用所有层级的数据,并将 `label` 作为 5 分类目标。此配置训练模型去检测已确认的威胁行为者的攻击前侦察特征,并识别被行为规则捕获的隐蔽扫描器。
**地理空间分析:**
利用 `country` 列对比正常流量,映射已验证攻击的地理来源。
有关详细的特征工程建议、类别不平衡策略和基线基准测试,请参阅 [MACHINE_LEARNING_GUIDE.md](docs/MACHINE_LEARNING_GUIDE.md)。
## 7. 文档索引
| 文档 | 用途 |
|----------|---------|
| [DATASET_SCHEMA.md](docs/DATASET_SCHEMA.md) | 完整的列参考、MITRE ATT&CK 映射表以及与现有数据集的对比 |
| [PIPELINE_ARCHITECTURE.md](docs/PIPELINE_ARCHITECTURE.md) | 5 阶段自动化管道的技术规范 |
| [RESEARCH_JOURNAL.md](docs/RESEARCH_JOURNAL.md) | 涵盖假设、架构挑战和解决方案的按时间顺序的开发日志 |
| [MACHINE_LEARNING_GUIDE.md](docs/MACHINE_LEARNING_GUIDE.md) | 在 APEX-IDS2026 上训练和评估机器学习模型的指南 |
## 8. 基础设施说明
- **收集服务器:** `synapstream` (Linux, x86-64)
- **NetFlow 传感器:** 运行 RouterOS 的 MikroTik,将 NetFlow v5/v9 导出到 nfcapd
- **蜜罐日志来源:** `/var/log/honeypot_raw.log`(来自 MikroTik 防火墙的 syslog)
- **Cron 调度:** `*/6 * * * *`,带有基于 `flock` 的并发保护
- **压缩:** 确认标签后使用 `pigz`(并行 gzip)
- **处理时间预算:** 每个 cron 周期最多 240 秒,以防止任务重叠
标签:威胁情报, 应用安全, 开发者工具, 网络安全, 网络流量分析, 蜜罐, 证书利用, 逆向工具, 隐私保护