umadhatri/Honeystack

GitHub: umadhatri/Honeystack

自托管的容器化蜜罐威胁情报平台,通过 SSH 和 HTTP 传感器采集攻击数据并自动丰富化、关联分析,在 SOC 仪表板中实时展示威胁态势。

Stars: 0 | Forks: 0

# Honeystack — 自动化 SOC 蜜罐与威胁情报平台 Honeystack 是一个自托管、模块化且容器化的威胁情报平台。它在隔离的容器环境中运行主动的 SSH 和 HTTP 传感器(蜜罐),收集真实的攻击元数据,通过威胁情报 API 对其进行丰富,识别协同攻击活动,并在现代网络安全 SOC(安全运营中心)仪表板中显示这些活动。 ## 系统架构 ``` graph TD Attacker([Attacker]) -->|Port 2222| SSH[SSH Sensor] Attacker -->|Port 8081| HTTP[HTTP Sensor] subgraph Isolated Ingest Network SSH -->|POST /api/v1/events| API[FastAPI Ingest & Query Backend] HTTP -->|POST /api/v1/events| API end subgraph Private Internal Network API -->|FOR UPDATE SKIP LOCKED| Worker[Async Enrichment Worker] API -->|Read/Write| DB[(PostgreSQL)] API -->|Read/Write| Cache[(Redis Cache)] Worker -->|Check Reputation| AbuseIPDB[AbuseIPDB API] Worker -->|Check GeoIP| GeoIP[ip-api.com] Worker -->|Cache Lookup| Cache Worker -->|Update profile & tags| DB Scheduler[Weekly Cron Scheduler] -->|POST /api/v1/reports/generate| API end subgraph Frontend User Access User([SOC Analyst]) -->|Browser Port 3000| Dash[React SOC Dashboard] Dash -->|Query API Port 8000| API end ``` ## 核心功能与强化 * **传感器**: * **SSH 传感器**:模拟虚假的 Ubuntu 交互式 shell,捕获登录凭据、客户端软件版本,并记录所有输入的命令(通过 `cap_drop` 丢弃权限以防止容器逃逸)。 * **HTTP 传感器**:提供逼真的陷阱页面(`/.env`, `/wp-login.php`, phpMyAdmin),并使用正则表达式签名匹配攻击 payload(SQLi、XSS、命令注入、目录遍历)。 * **采集隔离**:传感器通过专用的内部 Docker 网络(`ingest-net`,标记为 `internal: true`)进行通信,无法直接访问内部数据库或 Redis。 * **Worker 与丰富化**:异步 worker 使用线程安全的 `FOR UPDATE SKIP LOCKED` 查询轮询数据库,通过 `ip-api.com` 和 `AbuseIPDB` 丰富 IP 信息,对凭据进行分类,检测攻击活动(1 小时内有 3 个以上 IP 共享 UA/凭据),并使用 MITRE ATT&CK 技术 ID 标记事件。 * **PDF 报告与调度**:自动报告编译于每周一 UTC 时间 00:00 运行,包含 LLM 摘要生成(支持 OpenAI / Anthropic)和 Jinja2 回退机制,将报告作为 PDF 二进制文件直接导出到 Postgres 中。 ## 快速开始 ### 前置条件 * [Docker](https://www.docker.com/) 和 [Docker Compose](https://docs.docker.com/compose/) * [Python 3.12](https://www.python.org/)(可选,仅用于运行本地测试和数据填充脚本) ### 1. 配置设置 复制示例 env 文件并更新您的配置: ``` cp .env.example .env ``` *在 `.env` 文件中:* * 配置数据库凭据(`POSTGRES_USER`, `POSTGRES_PASSWORD`)。 * 可选地添加您的 `ABUSEIPDB_API_KEY`、`OPENAI_API_KEY` 或 `ANTHROPIC_API_KEY`(如果未提供,worker 将平滑回退到标准的地理查询和 Jinja2 报告)。 ### 2. 运行平台 使用 Docker Compose 启动整个模块化技术栈: ``` docker-compose up -d --build ``` 这将启动 8 个服务: 1. `honeystack-db`(PostgreSQL) 2. `honeystack-cache`(Redis) 3. `honeystack-api`(FastAPI 后端) 4. `honeystack-worker`(威胁情报 worker) 5. `honeystack-scheduler`(报告生成器) 6. `honeystack-ssh-sensor`(SSH 蜜罐端口 2222) 7. `honeystack-http-sensor`(HTTP Web 蜜罐端口 8081) 8. `honeystack-dashboard`(运行在端口 3000 的 SOC 前端) ### 3. 填充示例威胁数据 要立即使仪表板填充数据(无需等待真实的互联网扫描),请运行填充脚本: ``` # 激活 virtual environment source venv/bin/activate # 运行 seed exporter PYTHONPATH=api python scripts/export_sample_data.py ``` 这将清空所有表并注入 120 个示例安全事件,代表真实的 SSH 暴力破解、加密货币矿机部署和 Web 扫描。 ### 4. 打开仪表板 * **SOC 仪表板 UI**:[http://localhost:3000](http://localhost:3000) * **FastAPI Endpoint 文档**:[http://localhost:8000/docs](http://localhost:8000/docs) ## 验证代码正确性与测试 单元测试放置在各自的模块旁边,并通过 `pytest` 运行。 ``` # 运行 API endpoint 测试 PYTHONPATH=api ./venv/bin/pytest api/tests/ # 运行 HTTP sensor 测试 PYTHONPATH=http-sensor ./venv/bin/pytest http-sensor/ # 运行 SSH sensor 测试 PYTHONPATH=ssh-sensor ./venv/bin/pytest ssh-sensor/ # 运行 async worker 测试 PYTHONPATH=worker ./venv/bin/pytest worker/ ``` ## 作品集成功指标 * **性能**:API 采集限制为 1,000 次请求/分钟,以抵御大规模暴力破解攻击。 * **效率**:带有 24 小时 TTL 的 Redis 缓存层可防止 AbuseIPDB API 额度被重复消耗。 * **安全性**:异步 worker 使用 `FOR UPDATE SKIP LOCKED` 实现多副本安全查询,防止数据库竞态条件。
标签:AV绕过, CISA项目, Docker容器, FastAPI, React, Syscalls, 威胁情报, 安全运营中心, 开发者工具, 搜索引擎查询, 攻击面发现, 测试用例, 版权保护, 网络映射, 蜜罐系统, 请求拦截, 逆向工具