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, 自定义脚本, 逆向工程平台