ipanalytics/DNS-Threat-Intelligence-dataset

GitHub: ipanalytics/DNS-Threat-Intelligence-dataset

一个开源的 DNS 威胁情报流水线项目,用于收集、标准化、丰富、评分并发布可操作的 DNS 安全指标数据集。

Stars: 1 | Forks: 0

DNS Threat Intelligence Dataset

# DNS-Threat-Intelligence-dataset DNS-Threat-Intelligence-dataset 是一个开源的 DNS 威胁情报 pipeline,用于收集公开指标,将其标准化为类型化记录, 丰富基础设施上下文,对证据进行评分,并为 DNS 过滤、SIEM 摄取、分析和研究工作流发布可操作的 artifacts。

CI GitHub Pages Release Dataset Python License

仪表盘 · 发布 · 模式 · 编写 Adapter · DNS 安全

## 概述 该项目将异构的公共 DNS/安全情报转化为 具有来源归属和基础设施上下文的可重现数据集。 Adapter 收集公开的 OSINT 订阅源和来自报告的指标,标准化层负责对 domain、URL 和 IP 进行规范化,enrichment 模块添加 DNS/IP/ASN/RDAP/CT 上下文,而 exporter 为下游系统发布列表和结构化文件。 生产工作流从不需要凭据的实时公开订阅源中收集数据。Fixture 模式保留用于测试、本地冒烟检查和 Adapter 开发;Fixture 的输出并不旨在代表威胁情报的覆盖范围。 ## 系统行为 ``` public feeds / reports / CT / user data | v source adapters -> Evidence[] | v normalization -> domains / URLs / IPs | v enrichment -> DNS snapshots / ASN / prefix / RDAP / CT / OSINT links | v scoring -> confidence / reason codes / recommended action | v artifacts -> DNS lists / JSONL / CSV / reports / dashboard / releases ``` 该 pipeline 围绕明确的证据而非不透明的 blocklist 成员身份进行设计。每个指标都可以携带来源元数据、类别标签、 时间戳、置信度以及建议的操作。 ## 功能 | 领域 | 能力 | |---|---| | 订阅源摄取 | URLhaus, ThreatFox, MalwareBazaar metadata, FeodoTracker, PhishTank, OpenPhish, MISP 风格的订阅源, CERT 风格的订阅源 | | 标准化 | URL 解析,domain 提取,IDN/punycode 处理,eTLD+1 估算,IP 验证,defang/refang 支持 | | Enrichment | 安全的 DNS 解析器,TTL 捕获,domain-IP 链接,ASN/prefix/Geo/RDAP fixtures,共享基础设施检测 | | 检测上下文 | DGA 词法评分,NRD 风险信号,CT 可疑模式检测,流行度基准,fast-flux 评分 | | 解析器情报 | 从已配置/合法的来源处理开放解析器和 DNS 放大风险订阅源 | | OSINT/报告解析 | 为 domain、URL、IP、hash、CVE、malware 家族、活动以及简短的证据片段提取公开的 IOC | | 发布 | 普通 DNS 列表,AdGuard DNS 过滤器,JSONL,CSV,Markdown 报告,仪表盘 JSON,GitHub Releases | | 自动化 | CI,计划内的数据集构建,GitHub Pages 部署,带有附件 artifacts 的发布工作流 | ## 数据集统计 _生成时间:`2026-06-18T14:00:51.416563+00:00`_ | 数据集指标 | 数量 | |---|---:| | 恶意 domain | 3 | | 网络钓鱼 domain | 2 | | Malware domain | 3 | | C2 domain | 1 | | 恶意 URL | 3 | | AdGuard DNS 规则 | 5 | | 确认的 DGA domain | 1 | | 疑似的 DGA domain | 1 | | Fast-flux domain | 1 | | Double-flux domain | 1 | | 开放解析器 | 1 | | DNS 放大风险解析器 | 1 | | 规范化的 domain 记录 | 3 | | 规范化的 URL 记录 | 3 | | Enriched 文件 | 13 | | 报告 | 13 | 统计区块由 `scripts/update_stats.py` 管理,并由 数据集/发布工作流刷新。 ## 快速开始 ``` git clone https://github.com/ipanalytics/DNS-Threat-Intelligence-dataset.git cd DNS-Threat-Intelligence-dataset uv sync --all-groups uv run python -m dnsintel.cli config validate uv run python scripts/update_feeds.py --live --output data uv run python scripts/update_stats.py --data-dir data --readme README.md uv run python -m dnsintel.cli dashboard build --data-dir data --output docs/dashboard ``` 运行验证套件: ``` uv run ruff format --check . uv run ruff check . uv run pytest uv run python -m compileall dnsintel scripts ``` ## 安装说明 该项目使用 [`uv`](https://github.com/astral-sh/uv) 进行依赖 管理。 ``` uv sync --all-groups ``` 对于不依赖 console-script 安装的本地 CLI 使用: ``` uv run python -m dnsintel.cli --help uv run python -m dnsintel.cli config validate ``` ## 使用示例 从实时公开订阅源收集: ``` uv run python scripts/update_feeds.py --live --output data ``` 生成基于小型 fixture 的开发快照: ``` uv run python scripts/update_feeds.py --sample --output data ``` 重新生成派生的列表文件: ``` uv run python scripts/generate_lists.py --input data --output data ``` 更新 README/仪表盘统计数据: ``` uv run python scripts/update_stats.py --data-dir data --readme README.md ``` 在本地构建发布资产: ``` uv run python scripts/build_release_assets.py --data-dir data --output dist/release ``` 构建静态仪表盘: ``` uv run python -m dnsintel.cli dashboard build \ --data-dir data \ --output docs/dashboard ``` ## 输出与 Artifacts | 路径 | 用途 | |---|---| | `data/lists/malicious-domains.txt` | 普通 domain blocklist | | `data/lists/phishing-domains.txt` | 网络钓鱼 domain 列表 | | `data/lists/malware-domains.txt` | 关联 malware 的 domain 列表 | | `data/lists/c2-domains.txt` | C2 domain 列表 | | `data/lists/malicious-urls.txt` | 恶意 URL 列表 | | `data/lists/adguard-dns-filter.txt` | AdGuard DNS 过滤规则 | | `data/normalized/domains.jsonl` | 规范化的 domain 指标 | | `data/normalized/urls.jsonl` | 规范化的 URL 指标 | | `data/enriched/*.csv` | 用于 DNS/IP/ASN/CT/flux/resolver/OSINT 数据的 enrichment 表 | | `data/reports/*.md` | 人类可读的更新和风险报告 | | `data/dashboard/*.json` | 仪表盘指标和数据集统计信息 | | `docs/dashboard/index.html` | 通过 GitHub Pages 发布的静态仪表盘 | | `dist/release/*` | 本地生成的 release payload | 每个数据集发布版本都包含 `adguard-dns-filter.txt`、纯文本列表、 规范化的 JSONL 记录、数据集统计信息以及压缩的列表/enrichment 捆绑包。 ## 数据格式 核心记录由 `dnsintel.models` 下的 Pydantic 模型表示。 ### Domain 指标 ``` { "domain": "c2-control.evil", "etld1": "c2-control.evil", "category": ["c2", "malware"], "sources": ["threatfox"], "confidence": "critical", "score": 95.0, "recommended_action": "block_domain", "evidence": [ { "source_name": "threatfox", "indicator_type": "domain", "value": "c2-control.evil", "category": ["c2", "malware"], "confidence": 95.0 } ] } ``` ### 建议操作 | 操作 | 含义 | |---|---| | `monitor` | 追踪该指标;置信度不足以进行拦截 | | `block_domain` | 适用于 DNS/domain 拦截工作流 | | `block_url` | 首选 URL 级别的拦截 | | `block_ip` | 对于特定的证据上下文,IP 级别的操作是可以接受的 | | `do_not_block_shared_infra` | 指标位于共享基础设施上;避免广泛的 IP/ASN 拦截 | | `needs_review` | 需要分析师审查的微弱或上下文信号 | ## 操作说明 - 实时集成应根据 `configs/sources.yml` 中的来源进行启用。 - CI 使用确定性测试;数据集、Pages 和发布工作流默认使用实时 公开订阅源。 - 主动 DNS 逻辑仅限于具有超时、重试和 速率限制控制的有限 DNS 查询。 - CT、NRD、类 DGA 词法信号和公开代码提及被视为 上下文,除非有更强的证据支持。 - 共享基础设施检测防止对 CDN、云、Pages 和常见托管模式提出广泛的拦截建议。 ## GitHub Actions | 工作流 | 触发器 | 用途 | |---|---|---| | `test` | push, pull request | Ruff, pytest, 编译检查 | | `build-dataset-artifacts` | 手动,计划内 | 重建数据 artifacts 并上传工作流 artifact | | `pages` | 推送到 `main`,手动 | 构建并部署静态仪表盘 | | `dataset-release` | 手动,计划内 | 构建数据集发布资产并创建 GitHub Release | 要发布新的数据集版本: ``` gh workflow run dataset-release -f tag=dataset-YYYYMMDD ``` 如果省略 `tag`,工作流将创建一个带有 UTC 时间戳的数据集标签。 ## 部署 GitHub Pages 使用生成的 `docs/dashboard` 目录从 `pages` 工作流进行部署。 所需的仓库设置: | 设置 | 值 | |---|---| | Pages 来源 | GitHub Actions | | 默认分支 | `main` | | Actions 权限 | 发布工作流的读/写权限 | 实时仪表盘可在以下地址访问: ``` https://ipanalytics.github.io/DNS-Threat-Intelligence-dataset/ ``` ## 项目范围 此仓库适用于: - DNS 过滤和解析器策略 pipeline - SOC/SIEM enrichment 工作流 - 威胁情报研究 - 滥用台和基础设施风险报告 - 欺诈/风险指标分析 - 基于公共安全订阅源的数据工程 该项目专注于公开、可归属、可重现的情报。来源 Adapter 旨在在摄取时使来源和置信度可见, 而不是在最终的 blocklist 中隐藏该上下文。 ## 目录结构 ``` . ├── configs/ # source, scoring, allowlist, and brand configuration ├── data/ # generated lists, normalized records, enrichment, reports ├── dnsintel/ # Python package │ ├── sources/ # source adapters │ ├── normalize/ # domain, URL, IP normalization │ ├── dns/ # safe DNS resolver and snapshot utilities │ ├── enrich/ # ASN, Geo, RDAP, shared infrastructure context │ ├── ct/ # certificate transparency candidate logic │ ├── dga/ # lexical DGA scoring │ ├── flux/ # fast-flux feature extraction and scoring │ ├── osint/ # public-code/report IOC extraction │ ├── scoring/ # confidence and action recommendation logic │ ├── storage/ # JSONL, CSV, DuckDB, Parquet helpers │ └── dashboard/ # static dashboard generator ├── docs/ # operational docs and generated dashboard ├── scripts/ # dataset, stats, and release asset commands └── tests/ # fixture-backed test suite ```
维护者命令 ``` # 重建示例数据和 dashboard uv run python scripts/update_feeds.py --sample --output data uv run python scripts/update_stats.py --data-dir data --readme README.md uv run python -m dnsintel.cli dashboard build --data-dir data --output docs/dashboard # 构建本地 release payloads uv run python scripts/build_release_assets.py --data-dir data --output dist/release # 运行检查 uv run ruff format --check . uv run ruff check . uv run pytest uv run python -m compileall dnsintel scripts ```
## 局限性 - 在显式配置实时来源之前,已检入的数据集由 fixture 支持。 - 某些商业或注册受限的来源表示为禁用的 Adapter 或可选的集成点。 - 公开订阅源 schema 可能会发生变化;Adapter 应针对 fixtures 进行测试,并 在启用生产摄取之前进行审查。 ## 许可证 MIT。请参阅 [LICENSE](./LICENSE)。 ## 免责声明 该项目从公开 或用户授权的来源发布防御性的 DNS 威胁情报 artifacts。操作员有责任验证来源 条款、调整误报策略,并在 生产环境强制执行之前审查拦截决定。
标签:DNS, ESC4, IP 地址批量处理, OSINT, 威胁情报, 安全数据管道, 开发者工具