andradelucascq/tpot2misp

GitHub: andradelucascq/tpot2misp

实现T-Pot蜜罐数据到MISP平台的自动化采集、增强与事件创建,支持批量和实时两种模式。

Stars: 12 | Forks: 2

# T-Pot 到 MISP 集成 [![pt-BR](https://img.shields.io/badge/lang-pt--BR-blue.svg)](readme.pt-br.md)

Python Version License Docker

T-Pot 蜜罐平台与恶意软件信息共享平台(MISP)之间的可扩展集成,旨在支持不同威胁情报成熟度水平的组织。 ## 📋 目录 - [概述](#-overview) - [主要功能](#-key-features) - [简化架构](#️-simplified-architecture) - [需求](#-requirements) - [安装](#-installation) - [Docker 方法(推荐)](#docker-method-recommended) - [传统方法](#traditional-method) - [配置](#️-configuration) - [使用方法](#-how-to-use) - [监控和验证](#-monitoring-and-validation) - [故障排除](#-troubleshooting) - [技术文档](#-technical-documentation) - [许可证](#-license) ## 🔍 概述 该应用程序自动从 T-Pot 蜜罐收集攻击数据,对其进行(可选)增强,然后将其发送到 MISP 实例,从而创建结构化事件以进行威胁情报分析和共享。 **运行模式:** - **批量模式:** 定期从 T-Pot 的 Elasticsearch 收集数据。 - **实时模式:** 通过 HPFEEDS 实时收集数据。 ## ✨ 主要功能 - **灵活收集:** 支持批量(Elasticsearch)和实时(HPFEEDS)模式。 - **智能分组:** 为每种蜜罐类型创建每日 MISP 事件,避免重复。 - **可选增强:** 与 VirusTotal、AbuseIPDB 和 GreyNoise 集成(带缓存)。 - **轻松审核:** 默认创建未发布的事件(可配置自动发布)。 - **监控:** 可选的 Prometheus 指标和结构化日志。 - **验证报告:** 自动生成报告(TXT/JSON),便于验证发送到 MISP 的数据。 - **容错能力:** 强大的错误处理机制。 ## 🏗️ 简化架构 系统包含收集器(Elasticsearch、HPFEEDS)、处理器(增强、MISP)和工具(日志、指标、验证等),由 `main.py` 协调。 ``` --- config: look: handDrawn theme: redux layout: fixed --- flowchart LR subgraph Collectors["Collectors"] Elastic["Elastic Collector"] HPFeeds["HPFeeds Collector"] end subgraph Processors["Processors"] Enrich["Enrichment"] MISPProc["MISP Processor"] end subgraph TPOT2MISP["TPOT2MISP Application"] Collectors MainProc["Main Processor"] Processors end TPOT(("T-POT/Elastic")) --> Elastic & HPFeeds Elastic --> MainProc HPFeeds --> MainProc MainProc --> Enrich Enrich --> MISPProc MISPProc --> MISPInstance[("MISP Instance")] Elastic:::collector HPFeeds:::collector Enrich:::enrichment MISPProc:::mispProcessor MainProc:::main TPOT:::external MISPInstance:::external classDef external fill:#f8e8ff,stroke:#8a56ac,stroke-width:1px,color:#000 classDef collector fill:#e0f7fa,stroke:#00796b,stroke-width:1px,color:#000 classDef main fill:#c8e6c9,stroke:#388e3c,stroke-width:1px,color:#000 classDef enrichment fill:#e3f2fd,stroke:#1565c0,stroke-width:1px,color:#000 classDef mispProcessor fill:#ffe0b2,stroke:#d84315,stroke-width:1px,color:#000 ``` *有关架构和文件结构的详细视图,请参阅[技术文档](docs/project.md#architecture)。* ## 📋 需求 - Python 3.8+ - 已安装并配置好的 T-Pot(启用 Elasticsearch 或 HPFEEDS) - 可访问的 MISP 实例及 API 密钥 - (可选)增强服务的 API 密钥 - (可选)Docker 和 Docker Compose ## 🚀 安装 ### Docker 方法(推荐) 1. 克隆仓库:`git clone https://github.com/andradelucascq/tpot2misp.git && cd tpot2misp` 2. 复制并编辑 `.env` 文件:`cp .env.example .env && nano .env` 3. 运行:`chmod +x scripts/start-tpot2misp.sh && ./scripts/start-tpot2misp.sh` **常用命令:** - 日志:`docker-compose logs -f` - 停止:`docker-compose down` - 重启:`docker-compose restart` - 重新构建:`docker-compose build && docker-compose up -d` ### 传统方法 1. 克隆仓库并进入目录。 2. 创建虚拟环境:`python -m venv venv && source venv/bin/activate`(或在 Windows 上使用 `venv\Scripts\activate`) 3. 安装依赖:`pip install -r requirements.txt` 4. 配置 `.env`:`cp .env.example .env && nano .env` ## ⚙️ 配置 主要配置通过 `.env` 文件完成。将 `.env.example` 复制到 `.env` 并调整变量: - **`COLLECTION_MODE`**:`batch` 或 `realtime`。 - **MISP 设置**:`MISP_URL`、`MISP_KEY`、`MISP_VERIFY_SSL`、`AUTO_PUBLISH`、`PUBLISH_DELAY`。 - **批量设置(Elasticsearch)**:`ELASTICSEARCH_URL`、`ELASTICSEARCH_USER`、`ELASTICSEARCH_PASSWORD`、`TPOT_HONEYPOTS`、`LOOKBACK_DAYS`。 - **实时设置(HPFEEDS)**:`HPFEEDS_HOST`、`HPFEEDS_PORT`、`HPFEEDS_IDENT`、`HPFEEDS_SECRET`、`HPFEEDS_CHANNELS`。 - **增强设置**:`ENRICHMENT_ENABLED`、`CACHE_DURATION`、API 密钥(`VIRUSTOTAL_API_KEY` 等)。 - **日志设置**:`LOG_LEVEL`、`LOG_FILE_ENABLED`、`LOG_FILE_PATH`、`LOG_FORMAT`。 - **验证报告**:`VALIDATION_REPORT_ENABLED`、`VALIDATION_REPORT_DIR`、`VALIDATION_REPORT_FORMAT`。 - **Prometheus 指标**:`PROMETHEUS_ENABLED`、`PROMETHEUS_PORT`。 *有关每个配置变量的详细信息,请参阅[技术文档](docs/project.md#configuration)。* ## 📝 使用方法 安装和配置完成后: - **批量模式(单次或定期执行):** - 如果 `.env` 中 `BATCH_INTERVAL_HOURS` > 0,将定期运行。 - 如果 `BATCH_INTERVAL_HOURS` = 0 或未定义,将运行一次后退出。 - 运行:`python main.py`(或通过 Docker)。 - 如果不使用 `BATCH_INTERVAL_HOURS`,可使用 `cron` 或 Windows 任务计划程序进行调度。Cron 示例:`0 * * * * cd /path/to/tpot2misp && ./venv/bin/python main.py` - **实时模式:** - 运行:`python main.py`(或通过 Docker)。 - 在生产环境中使用进程管理器(systemd、supervisor)持续运行。 ## 📊 监控和验证 - **日志:** 检查控制台或 `LOG_FILE_PATH` 中配置的文件。 - **验证报告:** 批量模式执行后在 `VALIDATION_REPORT_DIR` 目录中生成的 TXT/JSON 文件。供分析师验证发送的数据。 - **Prometheus 指标:** 如果启用,访问 `http://:/metrics`。 *有关指标和日志/报告格式的详细信息,请参阅[技术文档](docs/project.md#monitoring-and-diagnostics)。* ## 🚑 故障排除 - **`media_type_header_exception` 错误(Elasticsearch):** 通常由 T-Pot 的 Nginx 代理引起。本项目中的自定义客户端(`utils/elasticsearch_client.py`)已处理此问题。验证您的凭据和 URL(`https://:64297/es/` - 尾部斜杠很重要)。 - **401 错误(Elasticsearch/MISP):** 检查 `.env` 文件中的凭据(`ELASTICSEARCH_USER`/`PASSWORD` 或 `MISP_KEY`)。 - **未收集到事件:** 检查 `TPOT_HONEYPOTS`、`LOOKBACK_DAYS`(批量)或 `HPFEEDS_CHANNELS`(实时)配置。确保 T-Pot 正在生成事件。 - **使用测试脚本:** - `python scripts/test_elasticsearch_connection.py` - `python scripts/test_misp_connection.py` ## 📚 技术文档 有关架构、处理流程、组件详情、扩展指南等深入信息,请参阅文档: ➡️ **[`docs/project.md`](docs/project.md)** ## 📜 许可证 本项目基于 MIT 许可证授权。详见 `LICENSE` 文件。
标签:AbuseIPDB, Ask搜索, Docker, Elasticsearch, GreyNoise, HPFEEDS, PFX证书, Python, VirusTotal, XSS, 事件管理, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 恶意软件信息共享平台, 情报共享, 扫描框架, 批量处理, 攻击检测, 数据 enrichment, 数据集成, 无后门, 漏洞情报, 监控, 网络安全, 自动化收集, 自定义请求头, 蜜罐, 证书利用, 请求拦截, 逆向工具, 隐私保护