rokechukwu45-create/threat-intelligence-dataset-builder

GitHub: rokechukwu45-create/threat-intelligence-dataset-builder

一个由 GitHub Actions 驱动的自动化 pipeline,定时从公共数据源采集并丰富域名信息,检测品牌仿冒与钓鱼威胁,输出结构化的威胁情报数据集。

Stars: 0 | Forks: 0

# 威胁情报数据集构建器 一个由 GitHub Actions 驱动的自动化 pipeline,从公共来源构建钓鱼 / 品牌仿冒威胁情报数据集:证书透明度日志、DNS、实时 TLS 证书和域名注册数据 (RDAP)。 本项目完全独立。它**不包含任何 Cloudflare 代码**,也不依赖于任何其他项目。 ## 功能说明 每 6 小时,该 pipeline 会: 1. 从 [crt.sh](https://crt.sh) **收集**与品牌监视列表匹配的新颁发的证书(`collectors/ct_logs.py`)。 2. 使用以下信息为每个候选域名进行**丰富**: - DNS 记录(`collectors/dns_collector.py`) - 实时 TLS 证书元数据(`collectors/ssl_collector.py`) - 结构/词法特征 + 通过 RDAP 获取的注册时长(`collectors/domain_analyzer.py`) 3. 通过与受保护品牌监视列表进行模糊字符串匹配来**检测**品牌仿冒(`engine/brand_detection.py`)。 4. 使用加权且可审计的规则集透明地**评估风险**(`engine/risk_score.py`)。 5. **去重**并与历史数据合并,保留 `first_seen` / `last_seen` 时间戳(`engine/deduplicator.py`)。 6. 在写入之前,根据所需的 schema **验证**输出。 7. **写入** `dataset/indicators.json`、`dataset/indicators.csv` 和 `dataset/indicators.parquet`。 8. 将更新后的数据集**提交**回代码库。 ## 项目结构 ``` threat-intelligence-dataset-builder/ ├── .github/workflows/update.yml # Scheduled automation (every 6 hours) ├── collectors/ │ ├── ct_logs.py # Certificate Transparency collector │ ├── dns_collector.py # DNS enrichment │ ├── ssl_collector.py # Live TLS certificate inspection │ └── domain_analyzer.py # Structural analysis + RDAP age lookup ├── engine/ │ ├── risk_score.py # Composite risk scoring │ ├── brand_detection.py # Brand impersonation detection │ └── deduplicator.py # History-aware deduplication ├── dataset/ │ ├── indicators.json │ ├── indicators.csv │ └── indicators.parquet ├── main.py # Orchestrator entry point ├── requirements.txt └── README.md ``` ## 数据集 schema 每个指标记录的格式如下: ``` { "indicator": "paypal-security-login.xyz", "indicator_type": "domain", "threat_type": "phishing", "target_brand": "PayPal", "brand_similarity": 94.0, "risk": { "score": 92, "confidence": 90, "reasons": ["brand impersonation", "new domain", "suspicious keyword"] }, "dns": { "a_record": true, "mx_record": false }, "ssl": { "certificate_found": true, "issuer": "Let's Encrypt" }, "domain_age_days": 3, "source": ["certificate_transparency"], "first_seen": "timestamp", "last_seen": "timestamp" } ``` `risk.reasons` 使每个评分都具有可审计性 —— 这里没有黑盒模型,只有透明、加权的规则(参见 `engine/risk_score.py`)。 ## 本地使用 ``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt python main.py ``` 输出将写入到 `dataset/`。 ## GitHub Actions 自动化 `.github/workflows/update.yml` 按照 `0 */6 * * * *` 的 cron 计划运行(每 6 小时一次),也可以通过 **Actions → Update Threat Intelligence Dataset → Run workflow** 手动触发。 该工作流: - 安装依赖项(带有 pip 缓存) - 运行 `python main.py` - 验证是否已生成全部三个数据集文件且文件不为空 - 打印摘要(指标总数) - 如果数据集文件发生更改,则提交并推送更新后的数据集文件 无需任何 secrets —— crt.sh 和 RDAP 都是无需身份验证的公共服务。如果您扩展了 collector 以使用需要密钥的 API,请将其添加为仓库 secret,并在工作流的 `env:` 块中通过 `${{ secrets.YOUR_SECRET_NAME }}` 进行引用。 ## 扩展品牌监视列表 在 `collectors/ct_logs.py` 中的 `DEFAULT_BRAND_KEYWORDS` 以及 `engine/brand_detection.py` 中的 `PROTECTED_BRANDS` 中添加条目。两者都使用简单的列表/字典,因此不需要重构代码。 ## 可靠性特性 - 对所有网络调用(crt.sh、RDAP、DNS、TLS)进行**带有退避机制的重试**。 - **防御性错误处理**,确保单个域名或 collector 出错永远不会导致整个运行终止。 - **schema 验证**会在格式错误的记录进入数据集之前将其拒绝。 - 通过 `first_seen` / `last_seen` 进行**历史追踪**,而不是在每次运行时覆盖数据。 - 在每个模块中进行**结构化日志记录**,以便在 Actions 日志中进行监控。 ## 商业用途 生成的数据集(指标、风险评分、品牌目标、支持性证据和时间戳)设计为可作为独立的威胁情报 feed 授权使用,或由下游的 API 层调用(参见独立的 `threat-intelligence-cloudflare-api` 项目,该项目特意与此项目解耦 —— 您可以将其指向任何数据源,而不仅仅是此 pipeline 的输出)。
标签:GitHub Actions, 代码示例, 品牌仿冒, 威胁情报, 安全数据集, 开发者工具, 数据分析, 自动化流水线, 自动笔记, 逆向工具, 钓鱼检测