kaurswaan100-tech/Smart-honeypot-dashboard

GitHub: kaurswaan100-tech/Smart-honeypot-dashboard

一个低交互蜜罐系统,通过模拟易受攻击的服务捕获攻击行为,结合GeoIP和启发式威胁评分在实时仪表板上进行可视化展示。

Stars: 1 | Forks: 0

# 智能蜜罐与实时威胁情报仪表板 一个防御性安全项目,部署逼真的**虚假易受攻击服务** (SSH、FTP、Telnet、HTTP 管理面板),捕获针对它们的每一次攻击尝试, 通过 **GeoIP 定位 + 启发式威胁评分**丰富数据, 并在**实时、深色控制台 SOC 风格仪表板**上可视化所有内容 — 支持导出 CSV/PDF 以用于报告或学术提交。 ## 1. 包含内容 ``` smart-honeypot-dashboard/ ├── app.py # Flask app: dashboard + REST/SSE API ├── run_honeypot.py # Standalone honeypot-only runner ├── requirements.txt ├── honeypot/ │ ├── database.py # SQLite storage + aggregation queries │ ├── services.py # Fake SSH/FTP/Telnet/HTTP servers (real honeypot) │ ├── threat_intel.py # GeoIP lookup + heuristic threat scoring │ ├── demo_generator.py # Simulated attack traffic generator (safe demo mode) │ └── report_generator.py # CSV + PDF report builder ├── templates/dashboard.html ├── static/css/style.css ├── static/js/dashboard.js └── data/honeypot.db # created automatically on first run ``` ## 2. 工作原理 **蜜罐 (`honeypot/services.py`)** 会开启伪装成真实服务的虚假 TCP 监听器: - **SSH**(通过 `paramiko`)— 呈现真实的 SSH 握手,记录攻击者尝试的每一个用户名/密码,并始终拒绝认证。 - **FTP** — 像 `vsFTPd` 一样响应,捕获 `USER`/`PASS` 命令。 - **Telnet** — 显示虚假的 Ubuntu 登录提示,捕获凭据。 - **HTTP** — 提供虚假的“路由器管理登录”页面,捕获 POST 提交的凭据、user-agent 和请求路径(可捕获探测 `/wp-login.php`、`/.env` 等路径的扫描器)。 绝不会授予真实登录权限 — 这些服务只负责*监听和记录*。 **威胁情报 (`honeypot/threat_intel.py`)**: - GeoIP:通过 `ip-api.com` 进行免费查询(无需密钥),按 IP 缓存。 - 威胁评分 (0–100):根据目标服务、凭据是否匹配常见的攻击字典、该 IP 之前攻击蜜罐的次数,以及 payload 是否包含命令注入/扫描特征(`wget`、`curl | sh`、`UNION SELECT` 等)进行加权计算。 - 等级:**低 / 中 / 高 / 严重**。 **模拟数据生成器 (`honeypot/demo_generator.py`)**:由于将真实端口暴露到互联网上吸引流量需要时间,该生成器会生成逼真的模拟攻击(伪造的地理位置、常见的凭据列表),确保你的仪表板永远不会是空的 — 非常适合用于实时演示或答辩。数据库中的每一行模拟数据都标记为 `is_demo=1`,因此始终能与真实捕获的数据区分开来。 **仪表板**:实时更新(Server-Sent Events)的攻击订阅源,攻击者发源地世界地图(Leaflet + OpenStreetMap,无需密钥),服务分布 / 威胁等级分布 / 随时间变化的攻击量图表,以及顶级攻击者 / 顶级凭据表格。 ## 3. 安装说明 ``` cd smart-honeypot-dashboard python3 -m venv venv source venv/bin/activate # venv\Scripts\activate on Windows pip install -r requirements.txt ``` ## 4. 运行方式 **选项 A — 安全演示模式(推荐用于演示/评分):** 不开启真实端口,无需暴露到互联网。 ``` python app.py --demo --seed 150 ``` 打开 **http://localhost:5000** — 你将立即看到实时模拟攻击流涌入,外加 150 条预置的模拟历史事件。 **选项 B — 真实蜜罐 + 仪表板同时运行:** ``` python app.py --with-honeypot ``` 这将在非特权端口上开启真实的监听器: `SSH→2222, FTP→2121, Telnet→2323, HTTP→8080`。 你可以在另一个终端中自行测试: ``` nc localhost 2323 # telnet honeypot curl http://localhost:8080/login -d "username=admin&password=admin" ``` 你会看到该尝试立即显示在仪表板上。 **选项 C — 两者同时运行(真实数据 + 模拟数据填充):** ``` python app.py --with-honeypot --demo ``` **如果要监听真实的默认端口 (22/21/23/80)** — 需要 root 权限,或者更好的方法是,使用 iptables 进行端口转发,这样应用程序本身就不需要 root 权限: ``` sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222 sudo iptables -t nat -A PREROUTING -p tcp --dport 21 -j REDIRECT --to-port 2121 sudo iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2323 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 ``` ⚠️ 仅在你拥有/控制的机器上执行此操作,最好是隔离的 VPS — 千万不要在你的个人或工作网络中运行。 ## 5. 仪表板控件 | 控件 | 效果 | |---|---| | ▶ 开启/停止模拟数据 | 实时切换模拟攻击生成器 | | ⚡ 注入样本数据 | 立即插入 150 条历史模拟事件 | | ⬇ 导出 → CSV | 下载完整的原始攻击日志 | | ⬇ 导出 → PDF | 下载格式化的威胁情报报告(包含汇总统计、热门 IP、热门凭据、威胁等级分布、国家/地区分布以及近期日志附录)— 可直接附在你的项目提交中 | | 清空数据库 | 擦除所有捕获的数据(不可逆) | ## 6. 为什么这样设计(有利于你的答辩/报告) - **低交互蜜罐设计**:服务的响应程度刚好足以让自动化扫描器/凭据填充机器人相信,但绝不会执行任何操作或授予任何权限 — 这是标准且安全的做法(相比之下,像 Cowrie 这样具有完整 shell 模拟的高交互蜜罐会带来更多操作风险)。 - 采用**启发式威胁评分**而非黑盒 ML 模型 — 每个评分都是可解释的,这对于安全工具和你的答辩至关重要:你可以确切地指出是哪些因素提高了特定的评分。 - **SQLite** 使项目的依赖保持轻量,方便学生部署;如果你后续进行扩展,其 schema 可以直接无缝替换为 Postgres/MySQL。 - 使用 **Server-Sent Events** 而非 WebSockets 进行实时更新 — 逻辑更简单,且对于单向实时数据流来说已经足够。 ## 7. 扩展此项目(获取额外加分的想法) - 将 `ip-api.com` 替换为本地的 MaxMind GeoLite2 数据库以实现离线地理查询。 - 添加 AbuseIPDB 集成(`threat_intel.py` 已经读取了 `ABUSEIPDB_KEY` 环境变量 — 你只需扩展 `score_event`/`enrich_event` 去调用它即可)。 - 捕获到 `critical`(严重)威胁时添加邮件/Slack 报警。 - 使用 Docker Compose 进行容器化(蜜罐 + 仪表板 + Nginx 反向代理)。 - 添加第二个高交互 SSH 蜜罐(例如集成 Cowrie),并对比两者之间的攻击者行为。 ## 8. 安全注意事项 本项目仅用于**授权的防御性安全研究和教育**。仅在你拥有或获得明确授权监视的基础设施上部署真实的蜜罐监听器。切勿将其指向不受你控制的系统,并且在将“看似存在漏洞”的服务暴露给互联网时,请注意托管服务提供商的滥用政策。 "# Smart-honeypot-dashboard" "# Smart-honeypot-dashboard"
标签:Flask, Mutation, Python, 可视化, 威胁情报, 安全, 开发者工具, 无后门, 蜜罐, 证书利用, 超时处理, 逆向工具