ScriptSynapse/HoneyWatch-SSH-Threat-Intelligence-Honeypot-

GitHub: ScriptSynapse/HoneyWatch-SSH-Threat-Intelligence-Honeypot-

一个生产级SSH蜜罐,提供状态化shell模拟、GeoIP enrichment、攻击模式检测、恶意软件捕获和实时Web仪表盘功能,用于捕获和分析SSH攻击行为。

Stars: 0 | Forks: 0

# 🍯 HoneyWatch v2 — SSH 蜜罐 + 威胁情报平台 一个生产级 SSH 蜜罐,具有状态化 shell 模拟、GeoIP enrichment、攻击模式检测、恶意软件捕获、实时 WebSocket 仪表盘以及攻击来源世界地图可视化功能。 ## 文件概览 ``` honeypot_v2/ ├── honeypot.py # SSH server — fake shell, tarpit, malware capture ├── fake_fs.py # Stateful virtual filesystem + canary credentials ├── threat_intel.py # GeoIP, AbuseIPDB, attack pattern detection, alerting ├── database.py # SQLite backend (replaces JSONL flat files) ├── ws_server.py # aiohttp API + WebSocket server (real-time push) ├── seed_logs.py # Generate 14 days of realistic demo data ├── dashboard.html # Full-featured browser dashboard (6 pages) ├── setup_and_run_v2.ps1 # Windows PowerShell launcher ├── setup_and_run_v2.bat # Windows Batch launcher └── logs/ └── honeypot.db # SQLite database (auto-created) ``` ## 快速开始 ### Windows(推荐) ``` Double-click setup_and_run_v2.bat ``` 或在 PowerShell 中: ``` powershell -ExecutionPolicy Bypass -File setup_and_run_v2.ps1 ``` ### Linux / macOS ``` pip install paramiko requests aiohttp python seed_logs.py # populate DB with 14 days of demo data python ws_server.py # start API + WS on :8080 # 在浏览器中打开 dashboard.html # 在第二个终端中: python honeypot.py # SSH honeypot on port 2222 ``` ## v2 新增功能 ### 🗄️ SQLite 数据库 所有事件存储在 `logs/honeypot.db` 中,并建立完整索引: - `sessions` — 连接元数据 + GeoIP 列 - `auth_attempts` — 凭据 + 攻击类型分类 - `commands` — 每个认证后命令及其基础令牌 - `suspicious_events` — 标记的高风险操作及严重程度 - `malware_captures` — 下载文件的元数据 + sha256 - `ip_reputation` — GeoIP + AbuseIPDB 缓存 ### 🌍 GeoIP Enrichment 每个攻击者 IP 通过 ip-api.com 自动解析: - 国家、城市、ISP、ASN - 用于世界地图的经纬度 - 结果在数据库中缓存 24 小时 ### 🛡️ AbuseIPDB 集成 在 `threat_intel.py` 中设置 `ABUSEIPDB_KEY` 即可自动获取信誉评分: - Abuse 置信度分数(0–100) - Tor 出口节点检测 - 6 小时缓存以保持在免费额度限制内 ### 🔍 攻击模式检测 每次认证尝试都会被分类: - **dictionary_attack** — 高频率,大量密码 - **targeted_bruteforce** — 一个用户名,大量密码 - **credential_stuffing** — 一个密码用于多个用户名 - **botnet_sweep** — 多个 IP 使用相同凭据 - **bruteforce** — 一般暴力破解 ### 🎣 诱饵 / 欺骗性凭据 假文件系统中植入了"有价值"的秘密: - `/root/.aws/credentials` — 伪造的 AWS 密钥 - `/root/.ssh/id_rsa` — 伪造的私钥 - `/root/.bash_history` — 显示有趣历史命令的 bash 历史 - `/root/.env` — 伪造的数据库 URL + Django 密钥 - `/var/www/html/wp-config.php` — 伪造的 MySQL 凭据 ### 🐌 蜜罐延迟 每次认证尝试在响应前等待 0.5–2.0 秒,浪费攻击者的暴力破解工具线程并显著减缓字典攻击。 ### 💾 真实恶意软件捕获 当攻击者对真实 URL 运行 `wget`/`curl` 时,蜜罐会实际获取载荷并将其保存到 `malware_captures/` 目录中,同时计算 sha256 哈希值。 ### ⚡ WebSocket 实时推送 仪表盘连接到 `ws://localhost:8080/ws` 并接收每个连接、认证尝试、命令和可疑事件的推送事件——无需轮询。 ### 📊 仪表盘页面 | 页面 | 内容 | |---|---| | **概览** | 统计条、14 天时间线、攻击类型环形图、热门凭据/命令、每小时热力图、实时事件推送 | | **世界地图** | Leaflet.js 地图,每个攻击者有大小和颜色不同的标记,GeoIP + abuse 评分表 | | **凭据** | 完整的用户名/密码排名,攻击模式条形图 + 环形图 | | **活动** | 带有国家标志的最近命令日志 | | **威胁** | 可疑事件表、严重程度分布、类型分类 | | **恶意软件** | 捕获日志,包含 URL、文件名、sha256 哈希值 | ## 配置 ### 启用 AbuseIPDB(免费:每日 1000 次查询) ``` # threat_intel.py ABUSEIPDB_KEY = "your_key_here" ``` ### 启用 Discord/Slack 告警 ``` # threat_intel.py DISCORD_WEBHOOK = "https://discord.com/api/webhooks/..." ``` ### 更改 SSH 端口(生产环境:端口 22) ``` # honeypot.py PORT = 22 # requires root or authbind ``` ### 在 Linux 上以非 root 用户运行端口 22 ``` sudo apt install authbind sudo touch /etc/authbind/byport/22 sudo chmod 500 /etc/authbind/byport/22 sudo chown $USER /etc/authbind/byport/22 authbind --deep python honeypot.py ``` ## 生产环境部署(systemd) ``` # /etc/systemd/system/honeywatch.service [Unit] Description=HoneyWatch SSH Honeypot After=network.target [Service] Type=simple User=honeypot WorkingDirectory=/opt/honeywatch ExecStart=/usr/bin/python3 honeypot.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` ``` sudo systemctl enable honeywatch sudo systemctl start honeywatch ``` ## 安全加固 ``` # 隔离 honeypot 主机 — 阻止除日志服务器外的所有出站流量 ufw default deny outgoing ufw default allow incoming ufw allow in 22/tcp ufw allow in 2222/tcp ufw allow out to port 9200 # 永远不要在运行真实数据或服务的机器上运行 # 使用专用 VPS 或隔离 VM ``` ## 日志模式(SQLite) ``` -- Every credential attempt SELECT timestamp, peer_ip, username, password, result, attack_type FROM auth_attempts ORDER BY timestamp DESC LIMIT 100; -- Most common passwords SELECT password, COUNT(*) as n FROM auth_attempts GROUP BY password ORDER BY n DESC LIMIT 20; -- Attackers by country SELECT r.country, COUNT(DISTINCT a.peer_ip) as ips, COUNT(*) as attempts FROM auth_attempts a JOIN ip_reputation r ON a.peer_ip=r.ip GROUP BY r.country ORDER BY attempts DESC; -- Critical suspicious events SELECT timestamp, peer_ip, suspicious_type, detail FROM suspicious_events WHERE severity='critical' ORDER BY timestamp DESC; -- Malware download URLs SELECT url, COUNT(*) as times, COUNT(DISTINCT peer_ip) as attackers FROM malware_captures GROUP BY url ORDER BY times DESC; ``` ## 法律声明 仅在您拥有或已获得明确授权用于安全研究的基础设施上部署。蜜罐流量属于合法收集范围;请确保遵守当地关于网络监控和数据保留的法律法规。
标签:AbuseIPDB, CISA项目, DAST, DNS 反向解析, DNS 解析, GeoIP定位, HTTP工具, PE 加载器, PFX证书, Python安全工具, SQLite数据库, SSH攻击分析, SSH蜜罐, Tarpit粘滞蜜罐, WebSocket实时监控, Web报告查看器, XXE攻击, 世界地图, 会话监控, 免杀技术, 内核监控, 命令审计, 威胁情报, 开发者工具, 恶意软件分析, 恶意软件捕获, 搜索语句(dork), 攻击检测, 攻击模式识别, 攻击溯源, 数据可视化, 无线安全, 暴力破解检测, 监控平台, 网络信息收集, 网络安全, 网络安全审计, 网络诱捕, 虚假文件系统, 诱饵凭证, 进程注入, 逆向工具, 隐私保护