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, 代码示例, 品牌仿冒, 威胁情报, 安全数据集, 开发者工具, 数据分析, 自动化流水线, 自动笔记, 逆向工具, 钓鱼检测