rayketcham/shadowtrap
GitHub: rayketcham/shadowtrap
多协议网络蜜罐系统,通过模拟 21 种常见服务捕获攻击行为、收集威胁情报并分析攻击模式。
Stars: 0 | Forks: 0
# ShadowTrap
用于威胁情报和攻击模式分析的多协议网络蜜罐。监听常见服务端口,捕获 Payload,记录凭据,并提供用于监控攻击者行为的实时仪表板。
## 功能特性
- **21 种协议模拟器** — SSH, HTTP/HTTPS, FTP, Telnet, SMTP, DNS, MySQL, PostgreSQL, MSSQL, Redis, MongoDB, Elasticsearch, Memcached, RDP, VNC, SMB, LDAP, SNMP, SIP, Docker API
- **交互式 Shell** — 动态伪造文件系统(在 SSH/Telnet/FTP 间共享),支持管道,sudo 提权模拟,wget/curl URL 捕获
- **Honeytokens** — 植入伪造的 AWS 密钥、SSH 密钥、`.env` 文件、`.git-credentials`,在被访问时触发告警
- **丰富的伪造数据** — MySQL 包含 7 个数据库和用户表,Redis 包含 16 个预置键,Elasticsearch 包含可搜索索引
- **Payload 捕获** — 完整的会话 Payload 转储,附带 SHA-256 哈希,用于取证分析
- **GeoIP 解析** — 自动对攻击者 IP 进行地理定位并缓存
- **威胁评分** — 针对不同攻击行为(暴力破解、漏洞利用尝试、数据窃取)的可配置权重
- **告警通知** — 支持 Webhook(带 HMAC 签名)和 syslog(RFC 5424)进行外部通知
- **HTTPS 仪表板** — 实时监控,支持 SSE 实时流、攻击地图、时间线图表、攻击者画像
- **GitHub 集成** — 直接从仪表板报告 Issue
## 快速开始
```
# 克隆并安装
git clone https://github.com/rayketcham/shadowtrap.git
cd shadowtrap
pip install -r requirements.txt
# 运行(特权端口需要 root 权限,或使用 port forwarding)
sudo python3 honeypot.py
```
仪表板访问地址为 `https://localhost:8443`(默认凭据:`admin`/`changeme`)。
## 配置说明
所有设置均位于 `config.py` 中,并可通过环境变量覆盖:
| 变量 | 默认值 | 描述 |
|---|---|---|
| `HONEYPOT_SERVICES` | *(all)* | 逗号分隔的服务启动白名单 |
| `HONEYPOT_ENABLE_` | `true` | 启用/禁用单个服务 |
| `HONEYPOT_PORT_` | *(standard)* | 覆盖服务的端口 |
| `WEB_PORT` | `8443` | 仪表板 HTTPS 端口 |
| `WEB_ALLOWED_IPS` | *(empty)* | 仪表板访问 IP 白名单(逗号分隔) |
| `ALERT_WEBHOOK_URL` | *(empty)* | 用于告警通知的 Webhook URL |
| `ALERT_SYSLOG_HOST` | *(empty)* | 用于转发告警的 Syslog 服务器 |
| `CAPTURE_ENABLED` | `true` | 启用 Payload 捕获 |
| `RETENTION_DAYS` | `90` | 连接数据保留天数 |
| `LOG_LEVEL` | `INFO` | 日志详细程度 |
### 仅运行特定服务
```
HONEYPOT_SERVICES=ssh,http,mysql sudo python3 honeypot.py
```
### 自定义端口
```
HONEYPOT_PORT_SSH=2222 HONEYPOT_PORT_HTTP=8080 sudo python3 honeypot.py
```
## 生产环境部署
内含 systemd 服务文件和部署脚本:
```
# 安装为 systemd 服务
sudo bash install.sh
# 或部署到 VPS
sudo bash deploy-vps.sh
```
Systemd 单元在安全加固环境下运行:`NoNewPrivileges`, `ProtectSystem=strict`, `PrivateTmp`,以及 `CAP_NET_BIND_SERVICE`(用于在非完全 root 权限下绑定特权端口)。
## 仪表板
Web 仪表板提供以下功能:
- **概览** — 事件总数、唯一攻击者数、活动服务、威胁分布
- **实时动态** — 通过 Server-Sent Events 实现实时事件流
- **攻击地图** — 攻击者来源的地理位置可视化
- **时间线** — 可配置的攻击活动时间序列图表
- **攻击者画像** — 单个 IP 的详细视图:事件、尝试的凭据、会话、威胁评估
- **凭据** — 最常被尝试的用户名/密码组合
- **告警** — 未确认的高严重性事件
## 测试
```
pip install -r requirements-dev.txt
python -m pytest tests/ -v
```
包含 93 个测试,覆盖数据库操作、身份验证、加密、网络工具、Payload 捕获、文件系统模拟和服务行为。
## 架构
```
honeypot.py Main orchestrator — starts services, dashboard, geo resolver
services/
base.py BaseService — connection handling, event recording, alerting
fakefs.py Shared fake filesystem for interactive shells
ssh.py SSH with interactive shell, pipes, sudo, honeytokens
http.py HTTP/HTTPS with login forms, SQL injection detection
mysql.py MySQL with 7 databases, user tables, API keys
redis.py Redis with 16 pre-seeded keys
... (21 services total)
web/
server.py Pure asyncio HTTPS server with SSE
api.py REST API endpoints
auth.py Session-based authentication
templates/ Dashboard SPA
utils/
alerting.py Webhook + syslog alert dispatch
capture.py Payload capture with SHA-256
crypto.py TLS certificate generation
network.py Rate limiting, connection tracking
database.py SQLite with WAL mode
geo_lookup.py GeoIP resolution with background worker
config.py Centralized configuration
```
## 设计原则
- **被动观察** — 监听、记录,绝不主动介入或反击
- **捕获一切** — 完整的 Payload 转储以用于事后分析
- **最小指纹** — 服务仅模拟真实软件足以诱使攻击者行为的程度
- **安全隔离** — 绝不桥接到真实服务或网络
- **安全至上** — 不包含真实凭据,所有数据均为伪造诱饵
## 许可证
MIT
标签:minikerberos, _payload捕获, PE 加载器, Python安全工具, StruQ, 凭据记录, 协议模拟, 多协议蜜罐, 威胁情报, 威胁评分, 实时监控仪表盘, 底层编程, 开发者工具, 攻击模式分析, 攻击者画像, 欺诈感知, 网络安全, 蜜罐, 计算机取证, 证书利用, 诱捕技术, 逆向工具, 隐私保护, 高级威胁防护