pyciu1/vnc-honeypot

GitHub: pyciu1/vnc-honeypot

高保真 VNC 蜜罐,通过模拟完整 RFB 协议栈实时捕获攻击者凭据、指纹和漏洞利用行为,为威胁情报和安全研究提供遥测数据。

Stars: 0 | Forks: 0

# VNC 蜜罐 一个高保真的 VNC 蜜罐,专为威胁情报和安全研究设计。实时捕获 VNC 挑战-响应哈希、纯认证凭据、客户端指纹以及攻击者遥测数据。 它是开源 **Honeypot Suite** (RDP + VNC + SSH) 的一部分,带有统一的中央仪表板。 ## 功能 ### 协议 - **完整 RFB 栈** — 3.3 / 3.7 / 3.8 / Apple / 4.x / 5.x - **双重捕获** — 在同一会话中捕获挑战-响应 (Type 2) + RAW 安全数据 - **Plain Auth** — 从 SecurityType 18 (VeNCrypt Plain) 中提取用户名和密码 - **HTTP 蜜罐** — 在端口 5800 捕获 noVNC 和 Guacamole 扫描器 ### 情报 - **客户端指纹识别** — 识别 12 种以上的 VNC 客户端 (RealVNC, TightVNC, TigerVNC, UltraVNC, LibVNC...) - **CVE 检测** — 检测 4 种已知的漏洞利用模式 (CVE-2006-2369, CVE-2014-8242, CVE-2019-15680, CVE-2019-8287) - **行为评分** — 根据标签 (bruteforce, scanner, multi_port_scan...) 为每个 IP 提供 0–100 的风险评分 - **角色引擎** — 为每个攻击者 IP 提供一致的虚假服务器身份 (careless_admin, developer, db_admin, security_analyst) - **反情报** — 为每个攻击者 IP 追踪 token ### 基础设施 - **GeoIP** — MaxMind GeoLite2 (可选),带有离线前缀表后备 - **SQLite WAL** — 崩溃时零数据丢失,异步批量写入器 - **限流器** — 双层:TokenBucket + SlidingWindow - **告警** — Telegram + 电子邮件 (与 RDP 和 SSH 蜜罐共享) - **80 个单元测试** ### 仪表板 端口 49100 上的独立 Web UI — 7 个标签页,每 15 秒自动刷新。 ``` python3 vnc_dashboard.py --db vnc_honeypot.db # 打开: http://YOUR_VPS_IP:49100 ``` | 标签页 | 内容 | |-----|---------| | Overview | 汇总统计信息,热门客户端,热门国家,风险分布 | | Live Feed | 最近 100 个事件 — 连接、捕获、CVE 告警、纯认证 | | Attackers | 按风险评分排列的顶级 IP 及行为标签 | | Captures | 挑战-响应 + 纯认证凭据 | | Timeline | 每小时的连接和捕获 (最近 24 小时) | | Geo | 攻击者的地理分布 | | CVE Alerts | 检测到的漏洞利用尝试 | ## 快速开始 ``` # 安装可选 dependencies pip install -r requirements.txt # 自测 python3 vnc_honeypot.py --self-test # 启动 (ports < 1024 需要 root 权限) sudo python3 vnc_honeypot.py # 完整选项 sudo python3 vnc_honeypot.py \ --ports 5900-5910 \ --http-port 5800 \ --db /data/vnc_honeypot.db \ --geoip-db /data/GeoLite2-City.mmdb \ --telegram-token "TOKEN" \ --telegram-chat-id "CHAT_ID" # 启动 dashboard (独立终端) python3 vnc_dashboard.py --db /data/vnc_honeypot.db ``` ## Docker ``` cp .env.example .env # 使用你的设置编辑 .env docker compose up -d docker compose logs -f ``` ## 架构 ``` vnc_config.py ← CONFIG + protocol constants vnc_db.py ← SQLiteConnectionPool + init_db + DBWriter vnc_rate.py ← TokenBucket + SlidingWindow + RateLimiter vnc_geo.py ← GeoIP lookup + bot signature classification vnc_protocol.py ← Unified VNC handshake + Plain Auth decoder vnc_fingerprint.py ← Client fingerprinting + CVE detection vnc_intel.py ← PersonaEngine + BehaviorModel + CounterIntel vnc_scenario.py ← ScenarioManager + GridManager vnc_handler.py ← ConnectionHandler (VNC + HTTP) vnc_honeypot.py ← main() + argparse + graceful shutdown vnc_dashboard.py ← Standalone dashboard server (port 49100) ``` ## API 端点 仪表板在端口 49100 上公开了一个 REST API: | 端点 | 描述 | |----------|-------------| | `GET /api/status` | 健康检查 (无需认证) | | `GET /api/overview` | 汇总统计信息 | | `GET /api/live` | 最近 100 个事件 | | `GET /api/attackers` | 按风险评分排列的顶级攻击者 IP | | `GET /api/captures` | 凭据 (分页) | | `GET /api/timeline` | 每小时活动数据 (最近 24 小时) | | `GET /api/geo` | 地理分布 | | `GET /api/cve` | CVE 漏洞利用尝试 | 通过 `X-API-Key` 请求头进行可选的身份验证: ``` python3 vnc_dashboard.py --api-key your-secret-key curl -H "X-API-Key: your-secret-key" http://localhost:49100/api/overview ``` ## GeoIP 设置 (可选) 1. 注册一个免费的 MaxMind 账户:https://dev.maxmind.com 2. 下载 `GeoLite2-City.mmdb` 3. 传递给蜜罐:`--geoip-db /path/to/GeoLite2-City.mmdb` 如果没有 GeoIP,蜜罐也可以完全工作 — 国家/城市/ISP 字段将为空。 ## 与其他蜜罐的集成 套件中的所有三个蜜罐共享相同的 `alerts.py` 用于 Telegram 和电子邮件通知。如果来自 RDP 蜜罐的 `alerts.py` 位于同一目录或位于 `../rdp-honeypot-v54/`,则 VNC 蜜罐会自动导入它。 一个聚合 RDP + VNC + SSH 数据的中央仪表板计划在 v1.1.0 版本中推出。 ## 测试 ``` pytest tests/ -v # 80 个测试, ~2 秒 ``` ## 法律声明 本软件旨在用于您拥有或已获得明确书面许可进行监控的系统上。 ## 许可证 MIT — 详情请参阅 `LICENSE`。
标签:PE 加载器, Python, SQLite, VNC, XXE攻击, 威胁情报, 开发者工具, 无后门, 蜜罐, 证书利用, 请求拦截, 逆向工具