haghfizzuddin/ti-aggregator
GitHub: haghfizzuddin/ti-aggregator
威胁情报聚合器,规范化多源 IOC 并以概率或然法统一置信度,解决数据重复与评分不一致问题。
Stars: 0 | Forks: 0
# TI Feed Aggregator
从开放威胁情报源拉取 IOC,将其规范化为通用模式,跨来源去重,并使用概率或然法重新计算置信度。
## 支持的源
| 源 | IOC 类型 | 是否需要 API 密钥 |
|------------|------------------------------|-------------------|
| URLhaus | URL、域名 | 否 |
| AbuseIPDB | IP | 是(免费层级) |
| OTX | IP、域名、URL、Hash、电子邮件 | 是(免费账户) |
## 通用 IOC 模式
每个源的 IOC 都会被规范化为:
```
{
"value": "http://malicious.tk/payload",
"ioc_type": "url",
"source": "urlhaus",
"first_seen": "2024-01-15T10:22:00+00:00",
"tags": ["malware", "emotet"],
"confidence": 0.850,
"threat_type": "malware",
"reference_url": "https://urlhaus.abuse.ch/url/12345/"
}
```
当同一 IOC 出现在多个源时,来源会被合并,并使用概率或然法重新计算置信度,以确保评分不超过 1.0。
## 快速开始
```
pip install -r requirements.txt
# URLhaus — no key needed
python cli.py run --feeds urlhaus --output iocs.json
# Multiple feeds (set env vars first)
export ABUSEIPDB_API_KEY=your_key
export OTX_API_KEY=your_key
python cli.py run --feeds urlhaus abuseipdb otx --output iocs.csv
# Filter by confidence
python cli.py run --feeds urlhaus --min-confidence 0.8
# List available feeds and their env vars
python cli.py feeds
```
## 置信度评分
各源的基础置信度(根据数据质量设定):
| 源 | 基础置信度 |
|------------|------------|
| URLhaus | 0.85 |
| AbuseIPDB | 分数 / 100 |
| OTX | 0.70 |
多源置信度使用概率或然法计算:`P = 1 - ∏(1 - Pᵢ)`
示例:URLhaus (0.85) + OTX (0.70) → `1 - (0.15 × 0.30)` = **0.955**
## 添加新源
1. 创建 `feeds/myfeed.py`,并实现 `fetch(limit=500) -> list[IOC]` 函数
2. 将该源的字段映射到 `schema.py` 中的 `IOC` 数据类
3. 在 `cli.py` 的 `AVAILABLE_FEEDS` 中添加对应条目
标签:AbuseIPDB, IOCs归一化, IOC聚合, masscan, OTX, Python, REST API, URLhaus, 内存取证对抗, 去重, 命令行接口, 多源关联, 威胁情报, 威胁情报平台, 威胁情报馈送, 威胁类型, 安全数据标准化, 开发者工具, 情报可信度, 情报归一化, 数据来源合并, 文档结构分析, 无后门, 概率校正, 置信度评分, 逆向工具