AlexMatei1/honey-strike
GitHub: AlexMatei1/honey-strike
一款集多协议蜜罐捕获、威胁情报富化与游戏化攻防教学于一体的安全运营平台。
Stars: 0 | Forks: 0
# 🐝 HoneyStrike
### *一个内置学习游戏的多协议蜜罐平台。*
跨 **SSH / HTTP / FTP / RDP / TLS / Telnet / SMTP / Redis** 捕获真实攻击者,通过 **Geo-IP + 滥用信誉 + 工具指纹 + MITRE ATT&CK 归因 + 威胁评分** 富化每一个会话,发送警报,生成 PDF 报告,并让你的操作员**通过输入真实代码学习攻防** —— 所有这些只需一个 `docker compose up -d`。
[](https://honeystrike.icelegends.cloud)
[](https://github.com/AlexMatei1/honey-strike/actions/workflows/ci.yml)








## 目录
- [开发初衷](#why)
- [核心功能](#whats-inside)
- [实时截图 —— 仪表盘导览](#live-screenshots--the-dashboard-tour)
- [架构](#architecture)
- [数据流 —— 当攻击者连接时会发生什么](#data-flow--what-happens-when-an-attacker-connects)
- [技术栈](#tech-stack)
- [快速开始(开发环境)](#quick-start-development)
- [生产环境部署](#production-deploy)
- [项目布局](#project-layout)
- [API 接口概览](#api-surface)
- [`honeystrike` CLI](#honeystrike-cli)
- [学习平台(Phase 7)](#the-learning-platform-phase-7)
- [多人对战(Phase 6)](#multiplayer-phase-6)
- [测试](#testing)
- [路线图与阶段](#roadmap--phases)
- [安全](#security)
- [致谢](#acknowledgements)
## 为什么
大多数蜜罐仅仅停留在“记录字节”的层面。HoneyStrike 基于一个不同的理念构建:**你捕获的数据只有在几秒钟内能够阅读、评分并采取行动时才有用。**
因此,该平台是端到端的:
1. **逼真的**伪造服务,其响应足以让真实的扫描器 + 暴力破解工具保持会话。
2. **情报富化流水线**,在 <2 秒内将原始事件转化为经过排名和归因的会话。
3. **操作级 UI**:实时攻击地图、带有回放进度条的会话详情、PDF 报告、用于 SIEM 的 STIX 2.1 / TAXII 2.1 数据流。
4. **游戏化层**:亲手*输入*过 Hydra 暴力破解循环的操作员,在仪表盘上一眼就能认出它。
最终成果是一个单一代码库,既可以作为生产级蜜罐、SOC 培训平台,也可以作为在运行各自实例的朋友之间进行的攻防竞技游戏。
## 核心功能
| ### 🎣 捕获层 - **8 个蜜罐监听器** (SSH, HTTP, FTP, RDP, TLS-sniffer, Telnet, SMTP, Redis) - 逼真的预设响应 + **3 个 CTF 风格的 canary token** (虚假 AWS 密钥、虚假 /etc/passwd 条目、虚假管理员 token) - 基于 IP 的速率限制;SSH 上实行 N 次尝试后授权策略 ### 🔬 情报流水线 - **Geo-IP + AbuseIPDB** 查询,缓存在 Redis 中 - **7 条工具签名规则** (Hydra, sqlmap, Nikto, Masscan, …) - **7 条 MITRE ATT&CK 规则** (T1110.001 / T1110.004 / T1190 / T1083 / T1592 / T1595.001 / T1078) - **威胁评分公式** (滥用度 40% + 工具 30% + TTPs 50% + 特权加分) - **ML 异常评分** (Isolation Forest, sklearn),用于异常值检测 - **STIX 2.1 bundle** + **TAXII 2.1 root**,用于 SIEM 摄取 ### 📣 输出层 - **警报**发送至 Telegram、Slack、邮件、Discord,以及结构化日志 - 每个会话的 **PDF / HTML 报告** - **REST API + WebSocket 实时数据流** (`/api/ws/live`) | ### 🖥 操作员仪表盘 - 实时世界攻击地图 采用严重程度颜色区分的标记 - 会话列表 + 筛选器(服务、严重程度、时间) - 单个会话详情页,包含时间线、payload 预览、TTPs、警报 - **🎬 回放影院** — 捕获会话的动画播放 - **📡 War Room** — 用于演示的全屏接管视图 - 👤 **个人资料** 包含排名、XP、**15 个徽章**、课程进度、活动日志 ### 🎮 学习平台 - **5 个以上的打字课程**,引导你编写真实的攻击运行器或检测规则 - 每次按键时的动画**吉祥物反应**(正确 / 错误 / 休眠) - 防御者课程针对固件运行参考规则,并**为你的猜测评分** - **实弹发射按钮**:将你刚刚输入的攻击发射到你自己的蜜罐 - **命令面板 (⌘K)**:可跳转到任意位置、触发任何场景、打开任何会话 - **Honey-warm + 网络终端主题**,带有悬浮程序坞、蜂巢六边形背景、实时威胁等级视口边框 ### 🤝 多人游戏与 PvP - **应用内决斗** — 向另一名成员发起限时的 1 对 1 挑战;攻击者发射 场景波次,防御者逐一标记以进行拦截,胜者获得 XP (`/play/duel`) - **开放 PvP 竞技场** — Lead 开启一个窗口;任何人发起攻击,所有人竞相 标记共享的数据流;实时记分板 (`/play/arena`) - **跨实例大厅** (FastAPI + SQLite) — 从一台 VPS 向另一台 VPS 发起 `honeystrike challenge bob`;正确的标记会拦截攻击者的 IP;Discord 汇总 - **账户与角色** — 自助注册,🛡 SOC Lead vs 🔍 Analyst,邮箱验证,管理员 + 自助密码重置 |
Paramiko · :22"]:::honeypot HTTP["http-honeypot
FastAPI · :80"]:::honeypot FTP["ftp-honeypot
pyftpdlib · :21"]:::honeypot RDP["rdp-honeypot
asyncio · :3389"]:::honeypot TLS["tls-sniffer
JA3 · :443"]:::honeypot end subgraph Stores["internal-net (no egress)"] Redis[("Redis 7
streams + cache + blocklist")]:::store Postgres[("Postgres 16
events · fingerprints
ttp_matches · alerts · reports")]:::store end subgraph Workers["intel-net (egress to enrichment APIs)"] FP["FingerprintWorker
(consumer-group: intel)"]:::worker ALERT["AlertingWorker"]:::worker REPORT["ReportWorker"]:::worker end subgraph APIs["api-net"] API["dashboard-api
FastAPI · :8001"]:::api LOBBY["lobby-api
FastAPI · :8002"]:::api end subgraph EXT["External"] MM["MaxMind GeoLite2"]:::ext AB["AbuseIPDB"]:::ext TG["Telegram / Slack /
Email / Discord"]:::ext DASH["Browser / SIEM"]:::ext end Attacker --> SSH & HTTP & FTP & RDP & TLS SSH -.->|XADD events| Redis HTTP -.-> Redis FTP -.-> Redis RDP -.-> Redis TLS -.-> Redis Redis -->|XREADGROUP intel| FP FP -->|GeoLite2| MM FP -->|abuse score| AB FP -->|fingerprint+ttps| Postgres Postgres --> ALERT ALERT --> TG Postgres --> REPORT REPORT --> Postgres Postgres <--> API Redis <-->|blocklist| API LOBBY <-->|HTTPS| DASH API <-->|HTTPS + WS| DASH API -->|is_blocked?| Redis Redis -.->|drop connection| SSH & HTTP & FTP & RDP & TLS ``` 三个 Docker 网络隔离了各个关注点: | 网络 | 成员 | 是否允许出站? | |---|---|---| | `honeypot-net` | 5 个监听器 + Redis (仅可达 Redis,而非其数据 — 仅限 XADD) | ❌ | | `intel-net` | Workers + Redis + Postgres + MaxMind/AbuseIPDB 调用 | ✅ 仅限这两个 API | | `internal-net` | Postgres + Redis + workers + dashboard-api | ❌ | | `api-net` | dashboard-api, lobby-api, Caddy reverse proxy | ✅ (操作员通过 TLS 访问) | 查看 [`docs/architecture.md`](docs/architecture.md) 获取完整的 Mermaid 图表(组件 / 时序 / 网络隔离),以及 [`docs/11_Infrastructure_Topology.md`](docs/11_Infrastructure_Topology.md) 了解文字描述版本。 ## 数据流 —— 当攻击者连接时会发生什么 ``` attacker listener Redis FingerprintWorker Postgres AlertingWorker │ │ │ │ │ │ 1. TCP connect ───────────► │ │ │ │ │ │ is_blocked(ip)? ─►│ │ │ │ │ ◄── 0 (proceed) ── │ │ │ │ │ SESSION_OPEN event ─► XADD │ │ │ 2. SSH brute-force loop ───► │ │ │ │ │ │ 7× SSH_AUTH_ATTEMPT ─► XADD │ │ │ │ │ ── XREADGROUP ──────►│ │ │ │ │ │ + GeoLite2 lookup │ │ │ │ │ + AbuseIPDB call │ │ │ │ │ + 7 tool sigs │ │ │ │ │ + 7 MITRE rules │ │ │ │ │ + threat score │ │ │ │ │ INSERT fingerprint ──►│ │ │ │ │ INSERT ttp_matches ──►│ │ │ SSH_COMMAND (whoami)─► XADD │ │ │ │ │ │ │ trigger alert? │ │ │ │ │ ──── poll ────────────►│ │ │ │ │ │ │ SESSION_CLOSE │ │ │ │ POST Telegram/Slack │ │ │ │ │ POST Discord webhook │ │ │ │ ◄── dispatch_alert ────│ browser /api/ws/live ◄────┴─────────────────────┴─── new session msg ───┴────────────────────────┘ │ │ defender clicks 🚫 Block on /sessions/
| 层级 | 技术栈 |
|---|---|
| 蜜罐监听器 | Python 3.13 · asyncio · Paramiko (SSH) · FastAPI (HTTP) · pyftpdlib (FTP) · 原生 asyncio (RDP TPKT/X.224) · 自定义 TLS sniffer (JA3) |
| Workers | Python 3.13 · Redis-streams 消费组 · scikit-learn (Isolation Forest) · WeasyPrint (PDF) · structlog · prometheus-client |
| 持久化 | PostgreSQL 16 (TIMESTAMPTZ, JSONB, inet) · Redis 7 (streams + + blocklist) · SQLite (仅大厅使用,单实例) |
| API + UI | FastAPI (async, OpenAPI 3.1) · SQLAlchemy 2.0 async · Pydantic v2 · WebSocket · Jinja2 模板 · 原生 JS · Leaflet 地图 · Chart.js · Google Fonts (Space Grotesk + Inter + JetBrains Mono) |
| 情报 | MaxMind GeoLite2 · AbuseIPDB · MITRE ATT&CK v15 STIX 2.1 bundle · JA3 client-hello 指纹 · 自定义工具签名规则引擎 |
| 输出 | STIX 2.1 bundles + TAXII 2.1 collections · Telegram / Slack / Discord / SMTP 警报通道 · PDF + HTML 报告 |
| CLI | Typer + Rich · 单一 `honeystrike` 入口点,包含 `attack`, `defend`, `lobby`, `login` 子应用 |
| 基础设施 | Docker Compose v2 · Caddy 反向代理 (ACME) · Alembic 迁移 · GitHub Actions CI (质量 + 单元 + 集成 + 迁移 + 依赖审计 + 容器扫描) |
| 可观测性 | structlog JSON 日志 · Prometheus metrics endpoint · 预置的 Grafana 仪表盘 JSON |
**专为 SOC 培训、CTF、友谊赛以及捕获真实威胁而生。**
`docker compose up -d` 然后打开 `http://localhost:8001/login`。
标签:AV绕过, CISA项目, Docker, FastAPI, PE 加载器, Python, TGT, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 搜索引擎查询, 攻防演练, 无后门, 测试用例, 蜜罐, 证书利用, 请求拦截, 逆向工具