maidennless/OTX-IOC-Dashboard
GitHub: maidennless/OTX-IOC-Dashboard
一个从AlienVault OTX获取IOC并自动生成多类检测规则的威胁情报仪表板。
Stars: 0 | Forks: 0
# 🛡️ IOC 威胁情报仪表板
一个网络安全数据库项目,用于从 AlienVault OTX 获取 **入侵指标(IOCs)**,将其转换为 **STIX 2.1** 格式,存储在全规范化的 **SQLite** 数据库中,检测威胁关系,并自动为 SOC 环境生成检测规则。
## 📋 目录
- [功能](#features)
- [获取您的 OTX API 密钥](#getting-your-otx-api-key)
- [安装说明](#installation)
- [运行应用](#running-the-app)
- [文件结构](#file-structure)
- [数据库模式](#database-schema)
- [如何使用](#how-to-use)
- [许可证](#license)
## ✨ 功能
| 功能 | 描述 |
|---|---|
| **OTX 获取** | 从 AlienVault OTX 获取实时威胁情报脉冲 |
| **STIX 2.1 转换** | 将所有 IOC 转换为结构化的 STIX 指标 + Bundle 对象 |
| **SQLite 数据库** | 10 表规范化模式,零 NULL 值,带索引视图 |
| **IOC 探索器** | 可搜索、可过滤的表格,带有可展开的详情面板 |
| **关系引擎** | 检测 IP↔恶意软件关联、ASN 集群、哈希重用、时间突发 |
| **图形可视化** | 交互式 NetworkX + PyVis 关系图 |
| **检测规则生成器** | 自动生成 Sigma、YARA、Suricata 和 Snort 规则 |
| **轻量仪表板** | 干净的单页应用,带有图表和实时数据库查询 |
## 🔑 获取您的 OTX API 密钥
AlienVault OTX (Open Threat Exchange) 是一个免费的威胁情报平台。您需要一个账户来获取 API 密钥。
### 步骤 1 — 创建免费账户
前往 [https://otx.alienvault.com](https://otx.alienvault.com) 并点击 **Sign Up**。这是完全免费的。
### 步骤 2 — 查找您的 API 密钥
1. 登录 OTX
2. 点击右上角的 **个人资料图标**
3. 点击 **Settings**
4. 您的 API 密钥列在 **OTX Key** 部分下
5. 点击 **Copy** 复制它
### 步骤 3 — 在仪表板中使用
1. 在 `http://localhost:5000` 打开仪表板
2. 点击左侧边栏中的 **Sync / Ingest**
3. 将您的密钥粘贴到 **OTX API Key** 字段中
4. 设置您希望获取的 **Days Back**(默认:30)
5. 点击 **Sync from OTX**
## ⚙️ 安装说明
### 前置条件
- Python 3.9 或更高版本
- pip
### 步骤 1 — 克隆代码库
```
git clone https://github.com/yourusername/ioc-dashboard.git
cd ioc-dashboard
```
### 步骤 2 — 创建虚拟环境(推荐)
```
python -m venv venv
# 在 Windows 上
venv\Scripts\activate
# 在 macOS/Linux 上
source venv/bin/activate
```
### 步骤 3 — 安装依赖项
```
pip install -r requirements.txt
```
### 步骤 4 — 验证安装
```
python -c "import flask, stix2, networkx, pyvis; print('All dependencies OK')"
```
## ▶️ 运行应用
```
python app.py
```
然后打开浏览器并访问:
```
http://localhost:5000
```
数据库 (`ioc_data.db`) 在首次运行时会自动创建 — 无需额外设置。
## 📁 文件结构
```
ioc-dashboard/
│
├── app.py # Flask web app — all API routes
├── requirements.txt # Python dependencies
├── README.md # This file
├── .gitignore # Excludes db, cache, graphs
│
├── modules/ # Core backend logic
│ ├── __init__.py
│ ├── database.py # SQLite schema, CRUD, views, stats
│ ├── otx_fetcher.py # OTX API client + STIX 2.1 converter
│ ├── relationship_engine.py # NetworkX graph + cluster detection
│ └── rule_generator.py # Sigma/YARA/Suricata/Snort generator
│
├── templates/
│ └── index.html # Single-page app shell
│
├── static/
│ ├── css/
│ │ └── dashboard.css # Full light theme stylesheet
│ ├── js/
│ │ └── dashboard.js # All frontend logic and API calls
│ └── graphs/
│ └── .gitkeep # Placeholder — graphs generated at runtime
│
└── lib/ # Vendored JS libraries (PyVis dependencies)
├── bindings/
│ └── utils.js
├── tom-select/
│ ├── tom-select.complete.min.js
│ └── tom-select.css
└── vis-9.1.2/
├── vis-network.min.js
└── vis-network.css
```
## 🗄️ 数据库模式
10 张表,全部强制执行零 NULL 值:
```
pulses — OTX threat campaigns / reports
iocs — Individual indicators (IP, domain, hash, URL, email...)
ioc_enrichment — GeoIP, WHOIS, ASN, file metadata (1:1 with iocs)
ioc_relationships — Pairwise links between related IOCs
relationship_clusters — Detected threat patterns and clusters
detection_rules — Generated Sigma/YARA/Suricata/Snort rules
stix_bundles — Full STIX 2.1 bundle JSON per pulse
sync_log — History of all ingest operations
Views:
v_ioc_summary — Joined iocs + pulses for fast dashboard queries
v_stats — Aggregated counters for the dashboard overview
```
## 🖥️ 如何使用
### 加载数据
- **演示数据** → Sync / Ingest → Load Demo Data
- **实时 OTX 数据** → Sync / Ingest → 粘贴 API 密钥 → Sync from OTX
### 探索 IOC
- 前往 **IOC Explorer**
- 按类型(IPv4、域名、哈希、URL 等)过滤
- 按指标值、恶意软件家族或国家/地区搜索
- **点击任何行** 打开详情面板,查看富集信息、关系、规则和 STIX JSON
### 检测关系
- 前往 **Relationships**
- 点击 **Run Detectors** — 扫描数据库中的模式
- 点击 **Build Graph** — 生成交互式可视化
- 点击任何集群卡片查看其特定的子图
### 生成检测规则
- 前往 **Detection Rules**
- 点击 **Generate All Rules** — 为每个 IOC 创建 Sigma、YARA、Suricata、Snort 规则
- 使用选项卡按规则类型过滤
- 点击任何规则卡片展开并复制规则内容
### 查看 STIX bundles
- 前往 **STIX Bundles**
- 在任何 bundle 上点击 **View JSON** 查看完整的 STIX 2.1 结构化输出
## 📦 依赖项
| 库 | 用途 |
|---|---|
| `flask` | Web 框架和 API 服务器 |
| `flask-cors` | 跨域请求处理 |
| `stix2` | STIX 2.1 对象和 bundle 创建 |
| `networkx` | 图构建和分析 |
| `pyvis` | 交互式 HTML 图形可视化 |
| `requests` | OTX API HTTP 调用 |
| `python-dateutil` | 日期解析和规范化 |
## 📄 许可证
MIT 许可证
版权所有 (c) 2025
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处理软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及允许向其提供软件的人员这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或使用软件或其他交易而产生的任何索赔、损害或其他责任负责,无论是在合同、侵权诉讼或其他诉讼中。
## ⚠️ 免责声明
本工具旨在用于教育和研究目的。所有威胁情报数据均来自公共 AlienVault OTX 源。请勿将此工具用于任何非法或未经授权的活动。
标签:DNS信息、DNS暴力破解, OTX平台, Sigma规则, Snort规则, SQLite数据库, STIX格式, Suricata规则, YARA规则, 信息收集自动化, 入侵指标, 内核监控, 只读文件系统, 图形可视化, 威胁关系分析, 威胁情报, 威胁情报仪表板, 安全信息和事件管理, 安全运营中心, 开发者工具, 数据库管理, 检测规则生成, 特权检测, 目标导入, 网络威胁分析, 网络安全, 网络映射, 自动化规则生成, 逆向工具, 隐私保护