botinaround/IOCHunter

GitHub: botinaround/IOCHunter

一款利用 Claude AI 从威胁情报文章中自动提取、分类 IOC 并输出标准化格式的命令行与 Web 工具。

Stars: 0 | Forks: 0

# IOC Hunter — AI 驱动的威胁情报抓取器 IOC Hunter 是一款命令行工具,用于抓取威胁情报页面(博客文章、安全公告、报告),并使用 Claude AI 提取和分类入侵威胁指标 (IOC),以用于威胁狩猎操作。 ## 功能特性 - **无头浏览器抓取** — 使用 Playwright/Chromium 渲染重度依赖 JavaScript 的页面,提取完整页面内容,包括威胁报告中常见的代码块和 `
` 标签。
- **正则预提取** — 在调用 Claude 之前,工具运行正则模式识别 15 种以上类型的 IOC 候选,减少漏报。
- **AI 驱动深度分析** — 将抓取的内容和正则候选发送给 Claude (Opus 4.6),进行智能 IOC 分类并附带置信度评分。
- **Defang/Refang 支持** — 自动还原经过脱敏处理的 IOC(例如 `hxxps://`、`1[.]2[.]3[.]4`)为标准形式。
- **多种输出格式** — 打印到终端,导出为 JSON、CSV 或两者兼有。
- **适配 SIEM/TIP 的 CSV** — 扁平化 CSV 导出包含威胁行为者、恶意软件家族、源 URL 和时间戳,可直接导入。

## 提取的 IOC 类型

| 类别 | 类型 |

|---|---|

| **Network** | IPv4, IPv6, Domains, URLs |

| **File Hashes** | MD5, SHA1, SHA256, SHA512 |

| **Endpoint** | Registry keys, File paths, Mutexes, User agents |

| **Identity** | Email addresses |

| **Vulnerability** | CVEs |

| **Threat Intel** | MITRE ATT&CK techniques, YARA rules |

| **Financial** | Bitcoin addresses, Monero addresses |

| **Metadata** | Threat actor, Malware families, Campaigns, Targeted sectors/countries, TLP, Source reliability |

## 环境要求

- Python 3.8+
- Anthropic API key

### Python 依赖


```
anthropic

playwright
```


安装依赖:


```
pip install -r requirements.txt
```


安装 Playwright 后,安装 Chromium 浏览器:


```
playwright install chromium
```


### API Key 设置

IOC Hunter 需要 Anthropic API key。运行前请将其设置为环境变量:

**Linux / macOS:**


```
export ANTHROPIC_API_KEY="sk-ant-..."
```


**Windows (Command Prompt):**


```
set ANTHROPIC_API_KEY=sk-ant-...
```


**Windows (PowerShell):**


```
$env:ANTHROPIC_API_KEY="sk-ant-..."
```


## Web 界面 (Streamlit)

IOC Hunter 包含一个 Streamlit Web UI 作为 CLI 的替代方案。


```
streamlit run app.py
```


这将在 `http://localhost:8501` 打开浏览器,功能包括:

- 侧边栏 URL 输入、可选上下文字段和输出格式复选框
- 抓取和分析期间的实时状态更新
- 结果显示在 **Summary / IOCs / MITRE ATT&CK / Raw JSON** 标签页中
- 一键 **Download JSON / CSV / Markdown** 按钮

## CLI 使用方法

### 基础用法 — 抓取 URL 并将报告打印到终端


```
python scraper_bot.py https://example.com/threat-report
```


### 保存输出为 JSON


```
python scraper_bot.py https://example.com/threat-report --output iocs.json
```


### 保存输出为 CSV


```
python scraper_bot.py https://example.com/threat-report --output iocs.csv --format csv
```


### 同时保存 JSON 和 CSV


```
python scraper_bot.py https://example.com/threat-report --output iocs --format both
```


### 保存为 Markdown


```
python scraper_bot.py https://example.com/threat-report --output iocs --format markdown
```


### 保存所有格式 (JSON + CSV + Markdown)


```
python scraper_bot.py https://example.com/threat-report --output iocs --format all
```


### 添加威胁狩猎上下文(改善 Claude 的分析)


```
python scraper_bot.py https://example.com/threat-report --context "Lazarus Group campaign targeting finance sector"
```


### 省略 `https://` — 将自动补全


```
python scraper_bot.py example.com/threat-report
```


## 命令行参数

| 参数 | 简写 | 描述 | 默认值 |

|---|---|---|---|

| `url` | — | 要抓取的威胁情报 URL *(必填)* | — |

| `--output` | `-o` | 输出文件路径(例如 `iocs.json`、`iocs.csv`,或仅 `iocs` 表示两者) | None (仅打印) |

| `--format` | `-f` | 输出格式:`json`、`csv`、`markdown`、`both` (json+csv) 或 `all` (json+csv+markdown) | `json` |

| `--context` | `-c` | 自由文本形式的威胁狩猎上下文,用于指导 Claude 的分析 | *(空)* |

## 输出

### 终端报告

终端报告以结构化格式打印:


```
======================================================================

  IOC THREAT INTELLIGENCE REPORT

  Source : https://example.com/report

  Generated: 2026-03-12 14:00 UTC

======================================================================



SUMMARY

  Lazarus Group deployed a new RAT targeting financial institutions...



THREAT ACTOR

  Lazarus Group



MALWARE FAMILIES

  BlindingCan, COPPERHEDGE



TARGETED SECTORS

  Financial Services, Banking



CVEs (1)

  [HIGH  ] CVE-2024-12345        Exploited for initial access



MITRE ATT&CK TECHNIQUES (3)

  T1566.001    Spearphishing Attachment         Used in initial intrusion

  T1055        Process Injection                Evades AV detection

  T1071.001    Web Protocols                    C2 communication



IPv4 ADDRESSES (2)

  [HIGH  ] 192.0.2.1              C2 server

  [MEDIUM] 198.51.100.4           Staging server



SHA256 HASHES (1)

  [HIGH  ] a1b2c3d4...            Dropper binary



TLP         : AMBER

Reliability : high

======================================================================
```


### JSON 输出

JSON 文件包含完整的结构化结果,包括所有 IOC 列表及其 value、context 和 confidence 字段,以及 `threat_actor`、`malware_families`、`mitre_techniques`、`tlp` 和 `source_reliability` 等元数据字段。

### CSV 输出

CSV 是一个扁平表格,包含以下列:

| 列名 | 描述 |

|---|---|

| `type` | IOC 类型(例如 `ipv4`、`sha256`、`domain`、`mitre_technique`) |

| `value` | IOC 值 |

| `context` | IOC 在报告中的使用或描述方式 |

| `confidence` | `high`、`medium` 或 `low` |

| `threat_actor` | 归属的威胁行为者(如有) |

| `malware_family` | 关联的恶意软件家族 |

| `source_url` | 提取该 IOC 的 URL |

| `extracted_at` | ISO 8601 时间戳 |

## 工作原理

1. **抓取** — Playwright 启动无头 Chromium 浏览器,导航至 URL,等待页面完全加载,提取可见文本内容以及任何 code/pre 块。移除 Scripts、styles 和 SVG。内容上限为 60,000 个字符。
2. **正则预提取** — 对抓取的文本运行 15 个正则模式以识别 IOC 候选。过滤掉私有/环回 IP。结果作为提示传递给 Claude。
3. **Claude 分析** — 完整页面文本和正则候选发送至 `claude-opus-4-6`(启用 extended thinking)。Claude 对脱敏的 IOC 进行还原 (refang),分配置信度,并返回结构化 JSON 响应。
4. **输出** — 结果打印到终端,并可选保存为 JSON 和/或 CSV。

## 注意事项

- **脱敏的 IOC (Defanged IOCs)** — 工具自动还原常见的混淆模式:`[.]` → `.`、`[:]` → `:`、`hxxp://` → `http://`、`hxxps://` → `https://`。
- **私有 IP** — RFC 1918 地址 (10.x.x.x, 172.16–31.x.x, 192.168.x.x) 和环回地址从 IPv4 结果中排除。
- **内容限制** — 页面在 60,000 个字符处截断,以保持在模型上下文限制内。
- **API 成本** — 每次运行调用一次 `claude-opus-4-6`,最多 8,096 个输出 token。IOC 较多的较长页面将使用更多 token。
- **TLP 处理** — Claude 根据报告自身声明的分类分配 Traffic Light Protocol (TLP) 级别,如果未指定则默认为 WHITE。
标签:AI安全工具, Claude AI, Cloudflare, CVE识别, DAST, Defang/Refang, DLL 劫持, DNS信息、DNS暴力破解, IOC提取, Kubernetes, MITRE ATT&CK, nuclei, Playwright, Python, SIEM集成, TIP, YARA规则, 大语言模型, 失陷指标, 威胁情报, 密码管理, 开发者工具, 恶意软件分析, 数据泄露, 数据清洗, 无后门, 无头浏览器, 特征检测, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 隐私保护