perrywinkle2004/Threat-Intelligence-Aggregator
GitHub: perrywinkle2004/Threat-Intelligence-Aggregator
实时聚合多源威胁情报,自动提取并关联IOC,通过风险评分生成可操作封禁列表的交互式分析系统。
Stars: 0 | Forks: 0
# 🛡️ 威胁情报聚合器 (TIA)
### 实时 IOC 关联与网络威胁分析系统
## 📋 概述
**威胁情报聚合器**是一款生产级网络安全工具,可从多个来源聚合威胁情报,自动提取和规范化妥协指标 (IOC),跨情报源关联重复威胁,根据风险严重程度进行评分,并通过交互式 Streamlit 仪表板生成可操作的封禁列表。
## 🚀 设置与安装
### 前置条件
- Python 3.9 或更高版本
- pip
### 安装依赖
```
pip install -r requirements.txt
```
### 运行应用程序
```
streamlit run app.py
```
应用在 [threat-intel-aggregator](https://threat-intel-aggregator.streamlit.app/) 打开
## ✨ 功能
| 功能 | 描述 |
|--------|-------------|
| 🔍 **多格式解析** | 支持 CSV、JSON、TXT 和 URL 情报源 |
| 🧩 **IOC 提取** | 基于正则表达式提取 IP、域名、URL、MD5/SHA256 哈希、邮箱 |
| 🔗 **关联引擎** | 识别跨多个情报源出现的 IOC |
| 📊 **风险评分** | 动态 0–100 评分 → 高/中/低严重程度 |
| 🚫 **封禁列表生成器** | 按类型导出 TXT、CSV、JSON 格式的封禁列表 |
| 📈 **5 种可视化** | 柱状图、饼图、热力图、时间线、散点图 — 全部深色主题 |
| 💾 **持久化分析** | 将 IOC 元数据存储在 JSON 中(不存储原始情报内容)|
| 📄 **情报报告** | 可下载的人类可读威胁摘要 |
## 🏗️ 架构
```
Threat Feed (CSV / JSON / TXT / URL)
│
▼
┌─────────────┐
│ IOC Parser │ ← Regex extraction + IP validation
└──────┬──────┘
│
▼
┌────────────────┐
│ Normalizer │ ← Unified schema {type, value, source, timestamp}
└───────┬────────┘
│
▼
┌─────────────────┐
│ Correlation Eng │ ← Groups by (value, type), counts cross-feed hits
└───────┬─────────┘
│
▼
┌─────────────────┐
│ Risk Scorer │ ← base_type + freq_bonus + correlation_bonus → score
└───────┬─────────┘
│
┌─────┴──────┐
▼ ▼
┌──────────┐ ┌──────────┐
│Blocklist │ │Analytics │ ← Metadata → threat_history.json
│Generator │ │Tracker │
└────┬─────┘ └────┬─────┘
│ │
▼ ▼
Export Dashboard
TXT/CSV/JSON 5 Charts
```
## 🔬 支持的 IOC 类型
| 类型 | 示例 | 检测方法 |
|------|---------|-----------------|
| **IP 地址** | `185.220.101.47` | 正则表达式 + `ipaddress` 库(仅公共 IP)|
| **域名** | `malware-c2.xyz` | TLD 感知正则表达式,支持 30+ TLD |
| **URL** | `http://evil.com/payload` | HTTP/HTTPS 模式 |
| **MD5 哈希** | `44d88612...` | 32 字符十六进制 |
| **SHA256 哈希** | `3395856c...` | 64 字符十六进制 |
| **邮箱** | `phish@evil.com` | RFC-5322 模式 |
## 📊 风险评分公式
```
risk_score = base_type_score
+ (frequency / max_frequency) × 30 ← frequency bonus
+ 10 if correlated across feeds ← cross-feed bonus
Capped at 100.
Severity mapping:
≥ 70 → HIGH (🔴)
≥ 40 → MEDIUM (🟠)
< 40 → LOW (🟢)
```
**各类型基础评分:**
| 类型 | 基础评分 |
|------|-----------|
| hash | 50 |
| url | 45 |
| ip | 40 |
| domain | 35 |
| email | 25 |
## 📁 项目结构
```
tia/
├── app.py ← Streamlit application (2 pages)
├── requirements.txt
├── README.md
│
├── modules/
│ ├── __init__.py
│ ├── ioc_parser.py ← Multi-format IOC extraction
│ ├── normalizer.py ← Unified schema conversion
│ ├── correlator.py ← Cross-feed correlation
│ ├── risk_scoring.py ← Severity scoring engine
│ └── blocklist_generator.py ← TXT/CSV/JSON export
│
├── analytics/
│ ├── __init__.py
│ ├── tracker.py ← JSON metadata persistence
│ ├── charts.py ← matplotlib/seaborn chart builders
│ └── visualizer.py ← Chart orchestration
│
├── utils/
│ ├── __init__.py
│ ├── helpers.py ← Format detection, report generation
│ └── validators.py ← URL/IP/hash validation
│
├── data/
│ └── threat_history.json ← Persistent analytics store
│
└── sample_inputs/
├── malicious_ips.txt ← Botnet C2 IP feed
├── malicious_domains.txt ← Phishing/malware domain feed
├── mixed_ioc_feed.csv ← Multi-type CSV feed
└── apt_threat_report.json ← APT intelligence JSON feed
```
## 🎯 使用方法
### 页面 1 — 威胁处理
1. **上传文件**(CSV、JSON、TXT)——或——**输入 URL**——或——**粘贴原始文本**
2. 可选:命名您的情报源(例如 `botnet-c2-list`)
3. 点击 **⚡ 处理威胁情报**
4. 查看:
- IOC 总数及风险分布
- 完整指标表(按风险着色)
- 高风险指标面板
- 关联指标(在多个情报源中出现的)
- 按类型封禁列表下载(TXT / CSV / JSON)
- 可下载的情报报告
### 页面 2 — 分析仪表板
- 全时间范围的情报处理统计
- 5 个交互式图表(基于当前或历史数据生成)
- 情报处理历史表
- 完整历史 IOC 导出(JSON)
## 📦 示例输入
`sample_inputs/` 目录下提供了三个示例情报源:
### 恶意_ips.txt
纯文本形式的僵尸网络 C2 和勒索软件基础设施 IP 列表。
类别:Emotet、Cobalt Strike、REvil、APT29、钓鱼主机。
```
185.220.101.47
91.109.204.91
45.153.160.140
...
```
### 恶意_domains.txt
钓鱼域名、恶意软件 C2、DGA 样本、勒索软件门户。
```
secure-paypa1-login.com
update-flash-player.net
emotetc2panel.xyz
...
```
### 混合_ioc_feed.csv
多列 CSV,包含多个威胁类别中的 IP、域名、URL、哈希和邮箱。
```
type,indicator,threat_category,confidence,source_feed
ip,185.220.101.47,botnet_c2,high,abuse_ch
url,http://malware-delivery.xyz/payload/dropper.exe,malware_download,high,urlhaus
hash,44d88612fea8a8f36de82e1278abb02f,eicar_test,low,virustotal
...
```
### apt_威胁_report.json
结构化 JSON APT 报告,涵盖 APT29、Lazarus Group 和 REvil,包含 IP、域名、哈希、URL 和邮箱。
## 🎨 颜色映射
### 风险等级
| 等级 | 颜色 |
|-------|-------|
| 高 | 🔴 `#E74C3C` |
| 中 | 🟠 `#F39C12` |
| 低 | 🟢 `#27AE60` |
### IOC 类型
| 类型 | 颜色 |
|------|-------|
| IP | 🔵 蓝色 `#2980B9` |
| 域名 | 🟣 紫色 `#8E44AD` |
| URL | 🩵 青色 `#00BCD4` |
| 哈希 | ⚪ 灰色 `#95A5A6` |
| 邮箱 | 🟡 黄色 `#F1C40F` |
## 🔒 安全与隐私
- **不存储原始情报内容** — 仅存储 IOC 元数据(值、类型、评分、频率、时间戳)
- 私有 IP 范围(RFC1918:10.x、172.16.x、192.168.x、127.x)自动排除
- 所有处理均在本地进行 — 分析期间不向外部服务发送数据
- URL 获取是唯一的网络操作(由用户发起)
## 🧠 演示的网络安全概念
| 概念 | 实现方式 |
|---------|---------------|
| **威胁情报** | 多源情报聚合与规范化 |
| **僵尸网络基础设施** | 跨 Emotet、TrickBot、Cobalt Strike 情报源的 IP 关联 |
| **钓鱼检测** | 域名 typosquatting 模式匹配 |
| **APT 归因** | 按攻击者分组的 IOC 结构化 JSON 报告 |
| **恶意软件分析** | MD5/SHA256 哈希提取与去重 |
| **防御安全** | 自动化封禁列表生成,用于防火墙/IDS 部署 |
| **OSINT** | 从开放威胁情报源获取 URL 情报 |
| **风险优先级** | 频率加权评分,用于分诊 |
## 📜 许可证
MIT 许可证 — 教育/研究使用。示例 IOC 数据仅供说明。
*为网络安全黑客马拉松、学术演示和威胁情报研究而构建。*
标签:AMSI绕过, APT分析, C2通信, DAST, ESC4, Homebrew安装, IOC, IP情报, Kubernetes, masscan, OSINT, Python, Streamlit, URL情报, 僵尸网络, 关联分析, 可视化分析, 哈希分析, 块列表, 域名情报, 妥协指标, 威胁情报, 威胁情报平台, 威胁检测, 安全运营, 实时分析, 开发者工具, 恶意域名, 恶意软件分析, 扫描框架, 数据库接管, 数据聚合, 无后门, 暗网情报, 热力图分析, 网络安全, 访问控制, 逆向工具, 邮件情报, 隐私保护, 风险评分