ahmxdniazi/ioc-threat-intel-mapper
GitHub: ahmxdniazi/ioc-threat-intel-mapper
一个自动化威胁情报 IOC 提取管道,从安全报告中解析 SHA256/IP/域名并通过 VirusTotal API 进行富化判定和报告生成。
Stars: 0 | Forks: 0
## 🔎 概述
**IOC Threat Intel Mapper** 是一个自动化网络安全 pipeline,可从真实威胁情报报告中提取 **失陷标志物 (IOCs)**,使用 **VirusTotal API** 对其进行丰富,并生成专业的 **HTML 威胁情报报告** —— 完美模拟 SOC 分析师和威胁情报团队在企业环境中的实际工作流程。
## ⚙️ 工作流程
| 阶段 | 脚本 | 描述 |
|---|---|---|
| 1️⃣ 输入 | `sample_reports/*.txt` | 真实威胁情报报告 (Unit42, Cisco Talos, Sophos) |
| 2️⃣ 提取 | `ioc_extractor.py` | 基于 Regex 的 IOC 提取,带有误报白名单过滤 |
| 3️⃣ 丰富 | `vt_enricher.py` | 通过 VirusTotal API 进行丰富,并给出恶意/干净的判定 |
| 4️⃣ 输出 | `output/iocs_enriched.json` | 包含各杀毒引擎检测计数的结构化 JSON |
| 5️⃣ 报告 | `report_generator.py` | 包含摘要统计信息的专业暗色主题 HTML 报告 |
## 🏆 结果
| 指标 | 值 |
|---|---|
| 提取的 SHA256 哈希数 | **18** |
| 通过 VirusTotal 丰富的哈希数 | **5** |
| 确认为恶意 | **5 / 5 (100%)** |
| 最大引擎检测数 | **60 / 72 引擎** |
| 过滤的误报 | **6 (社交媒体 URL)** |
## 📸 截图
### 第一步 — IOC 提取 (发现 18 个 SHA256 哈希)
### 第二步 — 应用白名单过滤 (移除误报)
### 第三步 — 正在运行 VirusTotal 丰富
### 第四步 — JSON 结果 (全部为恶意)
### 第五步 — 最终 HTML 威胁情报报告
## 🧰 工具与技术
| 工具 | 用途 |
|---|---|
| **Python 3** | 核心脚本语言 |
| **re (regex)** | IOC 模式提取 |
| **requests** | VirusTotal API 调用 |
| **json** | 结构化数据输出 |
| **VirusTotal API v3** | 哈希 / IP / 域名丰富 |
| **HTML/CSS** | 专业报告生成 |
## 📂 项目结构
```
ioc-threat-intel-mapper/
│
├── 📜 ioc_extractor.py # Stage 1: Extracts IOCs via regex
├── 📜 vt_enricher.py # Stage 2: Enriches via VirusTotal API
├── 📜 report_generator.py # Stage 3: Generates HTML report
│
├── 📁 sample_reports/
│ ├── report1.txt # Akira Ransomware - Palo Alto Unit42
│ ├── report2.txt # Akira Ransomware - Cisco Talos
│ └── report3.txt # Akira Followup - Sophos Labs
│
├── 📁 output/
│ ├── iocs_raw.json # Extracted IOCs (pre-enrichment)
│ ├── iocs_enriched.json # Enriched IOCs with VT verdicts
│ └── ioc_report.html # Final HTML threat intel report
│
├── 📁 screenshots/ # Step-by-step execution screenshots
├── 📁 assets/ # Banner and workflow diagrams
└── 📄 README.md
```
## 🚀 如何运行
### 前置条件
```
pip install requests
```
### 第一步 — 提取 IOC
```
python ioc_extractor.py
# 输出:iocs_raw.json
```
### 第二步 — 通过 VirusTotal 丰富
```
# 将你的免费 API key 添加到 vt_enricher.py 第 5 行
python vt_enricher.py
# 输出:iocs_enriched.json
```
### 第三步 — 生成报告
```
python report_generator.py
# 输出:ioc_report.html(在浏览器中打开)
```
## 🧠 展示的关键概念
- **IOC 提取** — 使用 regex 模式从原始文本中识别 IP、域名、SHA256/MD5 哈希、URL 和电子邮件
- **误报过滤** — 基于白名单的域名过滤,以减少噪音
- **威胁情报丰富** — 程序化集成 VirusTotal API v3
- **自动化报告** — 从结构化 JSON 数据生成专业的 HTML 报告
- **SOC 工作流程模拟** — 完整的分析师分诊 pipeline,从原始报告到最终判定
## 📊 示例 IOC 输出
```
{
"ioc": "99c1cd740fa749a163ce8cdf93722191c4ba5d97de81576623a8bbcb622473d6",
"type": "Hash",
"malicious": 60,
"suspicious": 0,
"harmless": 0,
"verdict": "MALICIOUS"
}
```
## 🔗 威胁情报来源
| 来源 | 报告 | 恶意软件家族 |
|---|---|---|
| [Palo Alto Unit42](https://github.com/PaloAltoNetworks/Unit42-timely-threat-intel) | Akira 勒索软件 IOC | 勒索软件 |
| [Cisco Talos](https://github.com/Cisco-Talos/IOCs) | Akira 勒索软件演变 | 勒索软件 |
| [Sophos Labs](https://github.com/sophoslabs/IoCs) | Akira 后续分析 | 勒索软件 |
## 👤 作者
**Muhammad Ahmad**
网络安全硕士 | SOC 分析师 | 云安全 | Azure
[](https://linkedin.com)
[](https://github.com)
## ⚠️ 免责声明
本项目仅使用来自受信任安全供应商的公开可用 IOC 数据,且**仅用于防御和教育目的**。未执行任何恶意软件样本。所有哈希均来源于已发布的威胁情报报告。
作为实战网络安全作品集的一部分而构建 — 恶意软件分析、DFIR 与威胁情报方向
标签:Homebrew安装, IOC提取, Python, 威胁情报, 字符串匹配, 安全, 开发者工具, 无后门, 网络调试, 自动化, 调试辅助, 超时处理