TIEESUN/Hokage-Intel
GitHub: TIEESUN/Hokage-Intel
一个轻量级、本地优先的开源网络威胁情报平台,以单一 FastAPI 进程和 SQLite 替代复杂的 Docker 技术栈,为安全分析师提供开箱即用的情报聚合与 IOC 调查能力。
Stars: 5 | Forks: 1
# Hokage Intel
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://www.python.org/downloads/)
[](#)
[](#)
[](scripts/smoke.py)
## 为什么选择 Hokage Intel?
商业威胁情报平台的起价通常在 3 万美元/年以上,并且需要专门的运维团队。像 MISP 和 OpenCTI 这样的开源 TIP 虽然可用,但需要依赖 Docker 技术栈、Elasticsearch、消息队列和专用的数据库。Hokage Intel 采取了截然相反的方法:**所有功能都在一个以 SQLite 为后端的单一 FastAPI 进程中运行,采用粗野主义风格的红/黑/白 UI,只需一个批处理文件即可启动**。
您只需提供网络连接。平台将为您提供:
- 30+ 个预置的威胁情报源,支持幂等摄取
- 实时勒索软件受害者地理地图(按国家/地区显示受损组织的热力图)
- 涵盖 24 个基础家族的 Infostealer 百科全书,可通过 Malpedia/ThreatFox 进行扩展
- 基于完整的 MITRE ATT&CK 组织目录 + Malpedia + Maltrail + OTX 构建的威胁行为者百科全书
- 包含 CISA KEV + NVD 2.0 富化数据的 CVE 百科全书,并在有证据时自动关联到攻击者
- 统一的 C2 清单,聚合了 ThreatFox(海量数据流)、Feodo Tracker、窃密木马 IOC 和攻击者 IOC
- AI 驱动的行动生成器,按攻击者或国家/地区提出命名行动建议,并附上您的本地 IOC 作为证据
- 15 个富化后端,其中大多数无需 API 密钥即可使用
- Diamond 模型视图、Pivot 矩阵、Pivots 标签页,以及针对每个 IOC 的 Admiralty 代码评级
- 无需电话号码、API 密钥或会话字符串即可进行 Telegram 频道监控
## 快速开始
### Windows
```
git clone https://github.com/yourname/hokage-intel.git
cd hokage-intel
scripts\start.bat
```
批处理脚本将创建虚拟环境,安装依赖项,运行数据库迁移,并在 `http://localhost:8000` 上启动服务器。
### Linux / macOS
```
git clone https://github.com/yourname/hokage-intel.git
cd hokage-intel
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m hokage_intel
```
首次启动将摄取 RSS 源,初始化 24 个 Infostealer 家族,在 `data/platform.db` 下设置 SQLite 数据库,并启动调度程序。随后的启动将从您上次中断的地方继续。
## 开箱即用的功能
### 页面(共 17 个)
| 路径 | 功能 |
|---|---|
| `/` | Dashboard — 源计数、IOC 计数、C2 计数、活跃源、勒索软件受害者、行动、IOC 严重性分布、ATT&CK 热力图 |
| `/feeds` | RSS + Telegram 源浏览器,可按严重性/来源/日期/IOC 是否存在进行筛选 |
| `/iocs` | 提取的 IOC 表,带有类型/严重性过滤器和 Admiralty 评级 |
| `/enrich` | 通过 15 个富化后端运行 IOC,提供针对各后端格式化的结果 + Pivot 矩阵 + Pivots 标签页 |
| `/cert` | 证书透明度实时流 (CertStream),带有关键词高亮显示 |
| `/recon` | OSINT 工具包 — WHOIS、DNS、GitHub 泄露模板等 |
| `/actors` | 威胁行为者百科全书 — MITRE + Malpedia + Maltrail + OTX 导入器 |
| `/actors/{id}` | 单个攻击者画像:Diamond 模型、IOC、别名、行业、参考链接、**关联 CVE 面板** |
| `/stealers` | Infostealer 百科全书 — 包含 24 个家族,支持 ThreatFox/Maltrail IOC 摄取 |
| `/stealers/{id}` | 单个家族详情及 IOC 表 |
| `/c2` | 跨越 ThreatFox 数据流、Feodo、actor_iocs、stealer_iocs 的聚合 C2 清单 |
| `/campaigns` | 行动浏览器 + **AI 行动生成器**(按 APT 或按国家/地区) |
| `/campaigns/{id}` | 单个行动详情及关联的 IOC |
| `/cves` | **CVE 百科全书** — CISA KEV + NVD 富化 + 自动攻击者映射 |
| `/extras` | Defang/Refang、IOC 提取、哈希生成器 |
| `/sources` | 管理源:添加、停用、标记为活跃 |
| `/settings` | API 密钥、AI 提供商配置、abuse.ch Auth-Key、OTX 密钥、VT 密钥等 |
### 威胁行为者百科全书 (`/actors`)
四个互相叠加的摄取路径:
1. **MITRE ATT&CK** — 完整的 Groups 目录(约 150 个攻击者),包含别名、描述、动机、目标行业、TTPs、使用的软件、外部参考
2. **Malpedia** — 使用供应商描述 + 恶意软件家族归属 + 参考链接来丰富现有的攻击者;将不在 MITRE 中的新攻击者添加进来
3. **Maltrail** — 遍历 [stamparm/maltrail](https://github.com/stamparm/maltrail) 仓库中的每个 `apt_*.txt` 文件。通过名称/别名将每个 trail 文件匹配到现有的攻击者。如果不存在匹配项,则**自动创建一个骨架攻击者画像**,以便 IOC 总是有归宿。稍后重新运行 MITRE/Malpedia 会丰富这些骨架内容。
4. **OTX (AlienVault)** — 通过 SSE 流式传输提取每个攻击者的 pulse IOC,并显示每个攻击者的进度。公平队列轮换(现有 OTX IOC 最少的攻击者优先),每个攻击者超时时间为 60 秒,10 个攻击者为一批。“为所有攻击者拉取”会在客户端循环分批,直到覆盖所有人。
每个攻击者页面都会将 **Diamond 模型**(对手 / 能力 / 基础设施 / 受害者)显示为带有中心事件标记的真正的二维菱形。
### CVE 百科全书 (`/cves`)
三个摄取来源 + 自动攻击者映射:
| 来源 | 覆盖范围 | API 密钥 |
|---|---|---|
| **CISA KEV** | 约 1300 个已知被利用的漏洞 | 无 |
| **NVD 2.0** | 任何 CVE 的描述 / CVSS / CPE | 可选(有密钥速度快 10 倍) |
| **Feed 正则表达式** | 扫描您的源历史记录以查找 `CVE-YYYY-NNNN` ID | 无 |
**自动链接到威胁行为者**通过四个信号发生,每个信号都有自己的置信度得分:
- `source='feed'` — 源条目同时提到了已知的攻击者和 CVE-ID(置信度 35)
- `source='cisa_kev'` — CISA 的 `shortDescription` 或 `notes` 提到了某个攻击者(置信度 60)
- `source='nvd'` — NVD 描述指名了某个攻击者(置信度 65)
- `source='otx'` — OTX pulse 同时标记了敌手和 CVE-ID(置信度 70)
UI 中会对针对同一 (CVE, actor) 对的多行证据进行去重 — 您会看到一个包含聚合来源(`feed,otx,cisa_kev`)和证据计数的条目。统计面板按来源细分链接计数,以便您一眼就能诊断出是哪个导入路径产生了什么结果。
### C2 清单 (`/c2`)
将**四个来源**聚合到一个统一的、可筛选的主机列表中:
- **ThreatFox 海量数据流** — 通过 `get_iocs?days=N` 拉取所有恶意软件家族(不仅仅是初始化的 24 个)的最新 C2 IOC。持久化到 `c2_inventory` 表中。
- **Feodo Tracker** — 完整的活跃 C2 黑名单(约 200-500 个银行木马 C2),持久化到 `c2_inventory`。
- **stealer_iocs** — 每个窃密木马家族通过 Maltrail/ThreatFox 导入的任何内容
- **actor_iocs** — 每个 APT 通过 MITRE/Malpedia/Maltrail/OTX 导入的任何内容
跨来源的相同主机:端口会折叠成一行,并显示所有的源标签。可按恶意软件家族、国家/地区、来源、托管公司进行筛选。每个主机都链接到一键富化功能。
### 行动生成器(AI 驱动)
在 `/campaigns` 页面点击 **⚡ Generate**:
- **按 APT 名称** — 输入 "Lazarus",LLM 会提出命名的行动建议(如 Contagious Interview、AppleJeus、Operation Dream Job 等)
- **按国家/地区** — 输入 "United States",LLM 会提出跨越不同攻击者针对美国的行动建议
每个建议都包含归属、行业、国家/地区、日期窗口、置信度评级和引用 URL。平台会附加本地证据:攻击者 IOC、家族 IOC、源提及。您可以审查这些卡片,取消勾选不需要的内容并接受 — 提交的建议将变成链接了 IOC 的真实行动。
通过 litellm 实现与提供商无关的配置。在 `/settings → AI providers` 中进行配置:
- Anthropic (Claude Haiku 4.5)
- OpenAI (GPT-4o-mini)
- Google Gemini (2.5 Flash — 最佳的免费层级)
- Groq (Llama 3.3 70B)
- xAI (Grok 4)
- OpenRouter(任何模型)
- Ollama(本地)
- Custom(任何兼容 OpenAI 的端点)
### 富化 (`/enrich`)
由 IOC 类型自动选择的 15 个后端。具有缓存感知能力(不会对过去 24 小时内已富化过的 IOC 重新请求 API)。针对各后端格式化的输出 — 不再有原始 JSON 转储:
| 后端 | 覆盖范围 | API 密钥 |
|---|---|---|
| VirusTotal | IP / domain / URL / hash | 必需 |
| AbuseIPDB | IP | 必需 |
| AlienVault OTX | IP / domain / URL / hash / CVE | 可选 |
| Shodan InternetDB | IP | 无 |
| IPinfo Lite | IP | 可选 |
| IP Detective | IP | 无 |
| crt.sh | Domain | 无 |
| URLhaus | URL / domain / IP / hash | 可选 |
| URLscan | URL / domain / IP | 可选 |
| Malware Bazaar | Hash | 可选 |
| ThreatFox | 所有类型 | 可选(共享 abuse.ch 密钥) |
| YARAify | Hash | 可选 |
| Feodo Tracker | IP(自动批量) | 无 |
| Ransomware.live | Domain / org | 无 |
| SSL Labs | Domain | 无 |
每个后端的结果卡片都会展示真正有用的字段(带有红绿灯颜色的 VT 检出率、AbuseIPDB 置信度 + 报告、Shodan 端口 + CVE、OTX pulses + 敌手等)。只需点击一下即可展开查看原始 JSON。
### Pivot 矩阵 + Pivots 标签页
每次富化后都会出现两个互补的面板:
- **Pivot 矩阵** — “我下一步该做什么?” 根据发现的内容以及您的平台已知的信息,提供个性化的调查步骤。操作按钮可以运行新的 pivot 或打开相关页面。
- **Pivots 标签页** — “我们提取了哪些指纹和相关工件?” 每一行都是一个可 pivot 的工件:来自 crt.sh 的 SAN 主机名、来自 URLscan 的相关域名、来自 Malware Bazaar 的伴随哈希、来自 VirusTotal 的 ASN。“→ Pivot” 在平台内打开一个新的富化窗口;“↗ Open” 在外部进行跟进。
对功能范围保持诚实:没有 JARM/JA4(因为我们不运行互联网扫描器),没有“100 万个主机共享此指纹”的计数(因为我们没有 Censys 级别的数据)。没有包含的内容会在“此处未包含的内容”展开框中进行解释。
### NATO Admiralty 代码评级
每个 IOC 都按照 [NATO Admiralty System](https://en.wikipedia.org/wiki/Admiralty_code) 的 6×6 可靠性 × 可信度量表进行评级。来源类型是上限(MITRE = A,abuse.ch = B,OSINT = C,社交 = D),工件类型是基线(CVE/SHA256 = 最高,IP = 上限为 D,因为 IP 会轮换)。显示的评级是这两者中的较小值 — 因此来自 MITRE 的 IP 显示为 D4(因为 IP 轮换很快,上限设为 D),而不是 A1。
### Telegram 监控
通过网络抓取订阅公开的 Telegram 频道(不需要 Bot API 密钥,不需要电话,也不需要 MTProto 会话字符串)。内置 5 个默认频道。可以通过 `/sources` 添加/删除。
## 架构
```
Single FastAPI process
├── SQLite DB (data/platform.db, ~600 KB after bootstrap)
├── APScheduler — runs ingestion jobs every N minutes
├── CertStream WebSocket — live cert log monitoring
├── 15 enrichment backends (lazy-loaded)
└── 17 server-rendered Jinja2 pages
```
没有 Docker。没有 Redis。没有 Postgres。没有 Elasticsearch。没有微服务。没有消息队列。
### 关键设计决策
- **所有摄取都是幂等的。** 每次插入都是带有 SHA-256 组合主键的 `INSERT OR IGNORE`。重新运行导入器会合并新数据,而不是产生重复。
- **获取前先缓存。** 富化结果缓存 24 小时,GitHub 目录列表缓存 7 天,NVD 记录一旦富化就永远缓存。
- **缓慢导入使用 SSE。** OTX、Maltrail 和 CVE 富化都通过 Server-Sent Events 流式传输每条记录的进度。在长达数分钟的任务中不会发生浏览器超时。
- **公平的队列轮换。** OTX 导入按 `(从未尝试, 现有 IOC 最少, 尝试时间戳最早)` 排序,这样处于停滞状态的攻击者就不会让新的攻击者处于等待状态。
- **自动创建优于静默失败。** 当 Maltrail 包含我们没有的 APT 的 trail 文件时,我们会创建一个带有 `source_dataset='maltrail'` 的骨架攻击者,以便 IOC 有归宿。稍后运行 MITRE/Malpedia 会丰富该骨架。
- **脆弱 API 的后备阶梯。** Maltrail 文件发现:GitHub Contents API → Trees API → 磁盘缓存 → 陈旧的缓存 → 硬编码的初始化列表。每个层级的成功都会报告给用户,以便他们知道是哪条路径胜出。
## API 密钥管理
所有密钥都存储在本地 `api_keys` 表中(SQLite,而不是环境变量)。在 `/settings` → Enrichment keys 中保存它们。不需要重启。
| 设置 | 解锁内容 |
|---|---|
| `virustotal` | VT 富化 |
| `abuseipdb` | AbuseIPDB 富化 |
| `shodan` | Shodan 主机查询(Shodan InternetDB 保持免费,无需密钥) |
| `urlscan` | URLscan 提交 + 私有扫描 |
| `alienvault_otx` | OTX pulse 富化 + 每个攻击者的 IOC 导入 |
| `ipinfo` | IPinfo Lite ASN/国家/地区 |
| `abusech` | ThreatFox + URLhaus + MalwareBazaar + YARAify 共享的 Auth-Key |
| `nvd` | 10 倍快的 NVD 富化(每 30 秒从 5 个请求增加到 50 个) |
| (AI 提供商) | 在 `/settings` 的 AI 标签页中选择提供商 + 模型 + 粘贴密钥 |
大多数功能在没有密钥的情况下也能工作 — Hokage Intel 会优雅地回退到无需密钥的来源(Shodan InternetDB、IP Detective、Feodo、crt.sh、ransomware.live、ssl_labs、CISA KEV、NVD 免费层级)。
## 数据源(30+ 个摄取流水线)
**RSS 源**(每 30 分钟自动获取):The Hacker News、Bleeping Computer、Krebs on Security、SANS ISC、Securelist、CrowdStrike Adversary Universe、Mandiant 博客、Microsoft Threat Intelligence、Google Threat Intelligence、Recorded Future Insikt、Unit 42、Proofpoint、Trustwave SpiderLabs、Cisco Talos、Trend Micro、ESET WeLiveSecurity、Symantec、Sophos、Check Point、FortiGuard、Lookout、ReversingLabs、Intezer、nao_sec、HACKMAGEDDON、abuse.ch 博客、GreyNoise、CISA Alerts、政府 CERT 警报。
**Telegram 频道**(网络抓取):与 BreachForums 相邻的频道、勒索软件追踪、泄露监控。
**威胁行为者数据**:MITRE ATT&CK、Malpedia、Maltrail(75+ 个 APT 文件)、AlienVault OTX。
**恶意软件/C2/IOC 数据**:ThreatFox(按家族 + 海量数据流)、Feodo Tracker、URLhaus、Malware Bazaar、YARAify、Maltrail(窃密木马 + APT)。
**漏洞数据**:NVD 2.0、CISA 已知被利用的漏洞 (KEV)。
**勒索软件**:ransomware.live(受害者数据流 + 地理地图)。
**证书透明度**:CertStream WebSocket(实时)。
## 冒烟测试
```
python -m scripts.smoke
```
擦除数据库,全新引导,然后测试每个页面、每个 API 端点、每个摄取路径以及每个去重/聚合行为。截稿前共有 **137 项检查**,涵盖:
- 全部 17 个页面均可渲染
- `/ai` 和 `/alerts` 正确返回 404(在此构建中已移除)
- 所有 API 端点均返回正确的数据结构
- C2 聚合去重(跨来源的主机:端口)
- Maltrail 自动创建 + source_dataset 标记
- Maltrail 强制刷新 kwarg 线程
- Maltrail SSE 流式传输端点
- OTX SSE 流式传输 + 无密钥错误路径
- Pivots 标签页指纹提取(证书 SAN、相关主机、ASN、伴随哈希)
- 使用模拟 LLM 的 AI 行动生成器(如果未安装 litellm 则跳过)
- 容错 JSON 解析器恢复被截断的 LLM 响应(已在记录中途截断的情况下测试)
- Admiralty 评级(IP 基线上限设为 D,哈希基线为 B,CVE 为 A,来源类型上限)
- CVE 百科全书:从源初始化可发现攻击者-CVE 对
- CVE 详情针对不同的证据来源对攻击者进行去重
- `actor_id` 过滤器针对不同的证据来源对 CVE 进行去重
- 统计报告显示唯一对数与原始证据行数的对比 + 按来源细分
- 跨越所有 8 个提供商的 AI 配置 CRUD
成功时返回退出代码 0,任何失败则返回 1。用作打包发布前的最后关卡。
## 项目结构
```
hokage_intel/
├── app.py FastAPI app + routes + middleware
├── c2.py C2 listing aggregator
├── c2_ingest.py ThreatFox bulk + Feodo persist
├── campaigns_generator.py LLM-driven campaign proposals
├── cves.py NVD + CISA KEV + CVE-actor linking
├── config.py Defaults
├── actors/
│ ├── mitre.py MITRE ATT&CK importer
│ ├── malpedia.py Malpedia enrichment
│ ├── maltrail.py Maltrail apt_*.txt walker w/ auto-create
│ ├── otx.py AlienVault OTX SSE importer
│ └── browse.py Actor list/detail queries
├── ai/
│ └── providers.py Provider-agnostic config (8 providers)
├── api/ All FastAPI routers
├── cert/
│ └── certstream.py CertStream WebSocket
├── db/
│ ├── schema.py All CREATE TABLE statements
│ ├── connection.py Singleton conn + migrations
│ └── bootstrap.py First-boot seeders
├── enrichment/ 15 backends, all subclass EnrichmentBackend
├── feeds/ RSS + Telegram fetchers
├── ransomware/ ransomware.live ingester
├── stealers/
│ ├── seed.py 24 baseline families
│ ├── threatfox.py Per-family ThreatFox queries
│ ├── maltrail.py Per-family Maltrail trail walker
│ └── browse.py
├── utils/
│ ├── admiralty.py NATO grading
│ ├── dynamic_pivots.py Pivot Matrix
│ ├── pivots_tab.py Pivots Tab fingerprint extractor
│ ├── iocs.py IOC regex + extraction + defang
│ ├── http.py httpx wrapper w/ rate limiting + caching
│ ├── keys.py api_keys table helpers
│ └── timing.py ISO timestamps + sha256_id helper
templates/ Jinja2 templates (17 pages + base + macros)
static/ CSS, JS helpers (H namespace), SVG icons
data/ SQLite DB + cached files (gitignored)
scripts/
├── start.bat Windows launcher
├── start.sh Unix launcher
├── smoke.py 137-check test suite
└── ...
```
## 路线图(比较宽松,未完全承诺)
- 更多的攻击者导入器(Mandiant APT 报告 PDF、Recorded Future 分类法)
- STIX 2.1 导出,用于向上游共享 IOC
- Sigma + YARA 规则库,可选择从 Git 仓库同步
- 通过 SQLCipher 实现加密的 SQLite(将 `data/platform.db` 替换为 `.db.enc`)
## 许可证
AGPL-3.0。详见 `LICENSE`。如果您将修改后的版本作为网络服务运行,您必须根据 AGPL 发布修改后的源代码。
## 鸣谢
如果没有以下各方的努力,这一切都将不复存在:
- MITRE ATT&CK 团队,提供了攻击者 + 技术目录
- [Malpedia](https://malpedia.caad.fkie.fraunhofer.de/) (Fraunhofer FKIE) 提供了恶意软件家族归属
- [Maltrail](https://github.com/stamparm/maltrail) (Miroslav Stampar) 提供了精心整理的 APT IOC trail 文件
- [abuse.ch](https://abuse.ch/) 提供了 ThreatFox、URLhaus、Feodo Tracker、Malware Bazaar、YARAify — 整个 abuse.ch 家族是社区 CTI 的脊梁
- AlienVault OTX 提供了基于 pulse 的 IOC 共享
- [ransomware.live](https://www.ransomware.live/) 提供了受害者数据流
- CISA 提供了已知被利用的漏洞目录
- NIST NVD 提供了 CVE 注册表
- Calidog Security 提供了 CertStream 中继
如果您觉得 Hokage Intel 有用,请先支持这些上游项目 — 它们才是这一切的源泉。
标签:AV绕过, FastAPI, IP 地址批量处理, Python, SQLite, XSS, 域名收集, 威胁情报, 开发者工具, 插件系统, 攻防知识库, 无后门, 漏洞情报, 网络信息收集, 逆向工具