Camishire/MIST
GitHub: Camishire/MIST
为 SOC 分析员设计的 MISP 批量威胁情报提交工具,简化 IOC 上报流程并支持自动丰富。
Stars: 0 | Forks: 0
# 🔍 MIST - MISP 情报提交工具
一个基于 Web 的工具,用于快速创建和提交威胁情报事件到 MISP(恶意软件信息共享平台)。专为需要批量提交 IOCs 而无需反复点击 MISP 用户界面的 SOC 分析员而设计。
## ✨ 它能做什么?
MIST 让你可以:
- **批量上传** 来自粘贴板/CSV 的属性,并在一个美观的表格中编辑它们
- **自动丰富 IOCs**,使用 OpenCTI 和 AbuseIPDB 数据
- **打标签与分类**,使用星系(galaxies)和 MISP 分类法对事件进行分类
- **多用户支持** - 每个分析员都可以使用自己的 MISP API 密钥
- **一键提交到 MISP** 并直接跳转到创建的事件页面
非常适合当你从安全告警中获得 50 个 IP 地址,而又不想手动创建 50 个 MISP 属性时。
## 🚀 快速开始
### 先决条件
- Python 3.8+
- 具有 API 访问权限的 MISP 实例
- (可选)用于基于会话的身份验证的 OpenCTI 实例
- (可选)用于 IP 丰富的 AbuseIPDB API 密钥
### 安装
```
# 克隆仓库
git clone https://github.com/Camishire/MIST.git
cd MIST
# 安装依赖
pip install -r requirements.txt
# 设置你的 .env 文件
cp .env.example .env
# 使用实际的 API 密钥编辑 .env
```
### 配置
使用你的凭据编辑 `.env` 文件:
```
# MISP 配置
MISP_URL=https://your-misp-instance.com
# MISP API 密钥(每位分析师/用户一个)
MISP_WORKER1_API_KEY=your_worker1_key_here
MISP_WORKER2_API_KEY=your_worker2_key_here
MISP_WORKER3_API_KEY=your_worker3_key_here
# AbuseIPDB(可选 - 用于 IP 丰富化)
ABUSEIPDB_API_KEY=your_abuseipdb_key
# OpenCTI(可选 - 用于威胁情报丰富化)
OPENCTI_URL=https://your-opencti-instance.com
OPENCTI_API_KEY=your_opencti_key
# MIST API 密钥(用于保护 Web 界面)
API_KEY=your_random_secure_key_here
```
### 运行
#### 本地开发
```
# 设置为本地环境(使用模拟身份验证)
export MIST_ENV=local
uvicorn app.main:app --reload --host 0.0.0.0 --port 8001
```
然后在浏览器中访问 `http://localhost:8001`。
#### 生产部署
**选项 1:独立(直接访问)**
```
# 设置为生产环境(使用 OpenCTI 身份验证)
export MIST_ENV=production
uvicorn app.main:app --host 0.0.0.0 --port 8001
```
**选项 2:通过 Apache 反向代理(推荐)**
MIST 在与 OpenCTI 一同部署并使用 Apache 作为反向代理时效果最佳。这允许基于会话的身份验证和 SSL 终止。
1. **更新 Apache VirtualHost**(例如 `/etc/apache2/sites-available/your-domain.conf`):
```
ServerName your-domain.com
# SSL configuration (use your existing certs)
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
# MIST proxy configuration (order matters!)
ProxyPass /auth http://127.0.0.1:8001/auth
ProxyPassReverse /auth http://127.0.0.1:8001/auth
ProxyPass /api http://127.0.0.1:8001/api
ProxyPassReverse /api http://127.0.0.1:8001/api
ProxyPass /events http://127.0.0.1:8001/events
ProxyPassReverse /events http://127.0.0.1:8001/events
ProxyPass /mist/static http://127.0.0.1:8001/static
ProxyPassReverse /mist/static http://127.0.0.1:8001/static
ProxyPass http://127.0.0.1:8001
ProxyPassReverse http://127.0.0.1:8001
ProxyPreserveHost On
ProxyPassReverseCookiePath / /mist
# Your existing OpenCTI proxy (keep last!)
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
```
2. **创建 systemd 服务**(`/etc/systemd/system/mist.service`):
```
[Unit]
Description=MIST FastAPI App
After=network.target
[Service]
User=www-data
WorkingDirectory=/opt/MIST
Environment="MIST_ENV=production"
ExecStart=/opt/MIST/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8001
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
```
3. **启用并启动**:
```
systemctl daemon-reload
systemctl enable mist.service
systemctl start mist.service
systemctl reload apache2
```
4. **访问**:`https://your-domain.com/mist/`
**认证:**
- 生产模式需要有效的 OpenCTI 会话(`opencti_session` Cookie)
- 用户必须先登录 OpenCTI,然后导航到 `/mist`
- 本地模式使用模拟身份验证用于开发
## 🔐 认证模式
MIST 通过 `MIST_ENV` 环境变量支持两种认证模式:
- **`MIST_ENV=production`**:基于 OpenCTI 会话的真实身份验证(生产部署)
- **`MIST_ENV=local`**(或未设置):用于本地测试的模拟身份验证
在你的 systemd 服务、`.env` 文件或运行 uvicorn 之前设置此变量。
## 📡 API 端点
### 核心端点
- `GET /` - 主网页界面
- `POST /events/create` - 创建包含属性、标签、星系的完整 MISP 事件
- `POST /events` - 简单事件创建(向后兼容)
- `GET /api/creators` - 获取可用的 MISP API 密钥选项
### 丰富服务
- `GET /api/enrich/{ip}` - 使用 OpenCTI 和 AbuseIPDB 数据丰富 IP
- `GET /api/check-opencti/{ip}` - 获取 IP 的 OpenCTI 威胁情报
- `GET /api/check-abuseipdb/{ip}` - 获取 IP 的 AbuseIPDB 信誉数据
### 元数据
- `GET /api/categories` - 获取可用的 MISP 属性类别
- `GET /api/categories/{category}/types` - 获取类别的有效类型
- `GET /api/tags/categories` - 获取按类别分组的 MISP 标签
- `GET /api/galaxies/categories` - 获取按类别分组的 MISP 星系集群
### 认证
- `GET /auth/status` - 检查认证状态
- `GET /auth/login` - 重定向到 OpenCTI 登录(生产模式)
## 🛠️ 技术栈
**后端:**
- FastAPI(Python Web 框架)
- PyMISP(MISP API 客户端)
- Pydantic(数据验证)
**前端:**
- 原生 JavaScript(无框架臃肿)
- 自定义 CSS(粉色的 Y2K 怪兽高中美学)
- 用于批量属性管理的自定义表格编辑器
**集成:**
- MISP(威胁情报平台)
- OpenCTI(会话身份验证 + 威胁情报丰富)
- AbuseIPDB(IP 信誉)
## 🎯 详细功能
### 批量属性上传
从任何地方粘贴 IOC(CSV、文本、Excel),MIST 会将它们解析为可编辑的表格。在提交之前更改类别、类型、添加评论。
### 智能下拉菜单
类别和类型下拉菜单会根据你的 MISP 实例动态填充。选择一个类别后,类型下拉菜单会自动过滤以仅显示有效选项。
### 创建者选择
多个分析员可以使用同一个 MIST 实例。每个人选择自己的身份(Worker 1/2/3),事件将在他们的 MISP API 密钥下创建。
### 标签与星系搜索
使用自动完成搜索数千个 MISP 标签和星系集群。添加归属、威胁行为者、TTP - 任何适合你事件的内容。
### 丰富集成
点击以丰富 IP 地址:
- **OpenCTI**:获取相关的威胁情报、指标、可观察对象
- **AbuseIPDB**:检查 IP 信誉和滥用报告
结果会自动格式化到评论字段中,以便轻松提交。
## 📝 开发说明
### 项目结构
```
MIST/
├── app/
│ ├── services/ # Business logic (MISP, OpenCTI, AbuseIPDB)
│ ├── config.py # Settings & environment variables
│ ├── constants.py # MISP constants (distributions, threat levels)
│ ├── models.py # Pydantic models
│ ├── opencti_auth.py # Production OpenCTI authentication
│ └── opencti_auth_local.py # Mock authentication for local dev
├── static/
│ ├── scripts/ # Frontend JavaScript modules
│ ├── style.css # Pink Y2K aesthetic
│ └── index.html # Main interface
├── main.py # FastAPI app entry point (deprecated, use app/main.py)
└── requirements.txt # Python dependencies
```
### 添加新的 MISP Worker
编辑 `.env` 并添加更多密钥:
```
MISP_WORKER4_API_KEY=another_key_here
```
然后更新 `app/constants.py`:
```
def get_creator_options():
return {
"worker1": settings.misp_worker1_api_key,
"worker2": settings.misp_worker2_api_key,
"worker3": settings.misp_worker3_api_key,
"worker4": settings.misp_worker4_api_key, # Add this
}
```
## 🔒 安全注意事项
- **永远不要提交 `.env`** - 它包含敏感的 API 密钥
- 使用提供的 `.env.example` 作为模板
- 设置一个强 `API_KEY` 来保护 Web 界面
- 生产模式需要 OpenCTI 身份验证
- 在生产中通过 HTTPS 运行(建议使用 Apache 反向代理)
## 📄 许可证
MIT 许可证 - 可以随意使用。
## 🙏 感谢
由于对 MISP 批量导入工作流程的挫败感而构建。非常感谢 PyMISP 维护者使 API 实际上可用。
**有问题?** 提交问题或查看代码 - 这非常简单明了。
标签:AbuseIPDB, API密钥, AV绕过, CSV上传, .env配置, FastAPI, Galaxy标签, IOC导入, IOC管理, IP信誉, masscan, MISP taxonomy, OpenCTI, Python, SOC Prime, Uvicorn, Web工具, Web界面, 一键提交, 事件分类, 多用户支持, 威胁情报, 威胁情报平台, 安全分析师工具, 安全运营, 开发工具, 开发者工具, 开源安全工具, 扫描框架, 批量处理, 批量提交, 数据可视化, 无后门, 自动化 enrichment, 自定义脚本, 逆向工程平台