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, 凭据记录, 协议模拟, 多协议蜜罐, 威胁情报, 威胁评分, 实时监控仪表盘, 底层编程, 开发者工具, 攻击模式分析, 攻击者画像, 欺诈感知, 网络安全, 蜜罐, 计算机取证, 证书利用, 诱捕技术, 逆向工具, 隐私保护, 高级威胁防护