21Yeet21/SSH-honeypot

GitHub: 21Yeet21/SSH-honeypot

一个轻量级 SSH 蜜罐系统,通过模拟易受攻击的 SSH 服务捕获暴力破解尝试,并在实时威胁情报仪表板上进行可视化分析。

Stars: 0 | Forks: 0

# 🔐 SSH 蜜罐 — 实时威胁情报仪表板 一个轻量级、独立的蜜罐,用于捕获真实的 SSH 暴力破解尝试,并将其可视化在实时分析仪表板上。旨在模拟专业的 SOC 分析师工作流程。 ## 功能介绍 该项目运行一个**伪造的 SSH 服务器**(端口 8000),用于模拟易受攻击的 Linux 机器。当攻击者扫描或暴力破解该端口时,蜜罐会: 1. **拦截**他们的登录尝试(用户名 + 密码) 2. 将其连同元数据(IP、时间戳、SSH 客户端指纹)一起**记录**到 SQLite 数据库中 3. 在由 Flask 驱动的分析仪表板上将所有内容**可视化** 结果就是一个动态的威胁情报源 —— 正如您在生产环境的 SOC 仪表板上看到的那样。 ## 架构 ``` graph TB A[Attacker Scanning
Port 8000] -->|SSH Login Attempt| B[Honeypot Server] B -->|Logged Credentials| C[(attacks.db)] C -->|REST API| D[Flask Dashboard] D -->|Chart.js| E[Live Analytics UI] style B fill:#ff6b6b,color:#fff style C fill:#7000ff,color:#fff style D fill:#00f0ff,color:#0a0a0f ``` **数据流:** 蜜罐收集 → SQLite 持久化 → Flask 提供 → 图表渲染 ## 截图 ### 仪表板概览 ![仪表板概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ff471b6a91194407.png) ### 实时攻击源 ![实时攻击源](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/cf75aff37d194409.png) ## 技术栈 | 层级 | 技术 | 为什么使用 | |-------|-----------|-----| | **SSH 模拟** | [Paramiko](https://github.com/paramiko/paramiko) 3.x | 原生 Python 的 SSH-2 协议实现 | | **Web 后端** | Flask 3.x | 轻量级 REST API + 模板服务 | | **数据库** | SQLite 3 (Python stdlib) | 零配置、单文件持久化 | | **可视化** | Chart.js 4.x | 客户端柱状图/环形图/饼图 | | **UI 样式** | 自定义 CSS | 暗色赛博风仪表板 | ## 快速开始 ### 前置条件 - Python 3.11+ ### 安装说明 ``` cd honeypot pip install -r requirements.txt ``` ### 运行方式 **终端 1 — 启动蜜罐(捕获攻击):** ``` python honeypot.py # 监听端口 8000 ``` **终端 2 — 启动仪表板(查看分析数据):** ``` python dashboard.py # 打开 http://localhost:5000 ``` ### 测试蜜罐 从您的终端或 SSH 客户端连接到蜜罐: ``` ssh -p 8000 root@localhost # 或从另一台机器: ssh -p 8000 admin@192.168.1.XXX ``` 任何登录尝试 —— **无论密码正确与否** —— 都将被捕获并记录。 ![SSH 连接](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/33469544e8194410.png) ### 可选操作 — 模拟攻击数据 ``` python generate_mock_data.py # 生成具有地理分布的真实 brute-force 活动 ``` ## 仪表板功能 | 指标 | 显示内容 | SOC 应用场景 | |--------|--------------|-------------| | **总攻击次数** | 累计登录尝试 | 整体威胁等级 | | **独立 IP 数** | 不同的攻击者来源 | 攻击活动范围评估 | | **最受关注用户名** | 被针对最多的账户 | 优先安排账户强化 | | **每小时攻击次数** | 时间分布 | 识别攻击活动/时区 | | **热门用户名 (饼图)** | 按账户分类的攻击频率 | 了解目标针对模式 | | **热门密码 (柱状图)** | 最常尝试的凭证 | 为密码策略执行提供参考 | | **实时情报源** | 实时攻击日志 | 事件监控 | ## 项目结构 ``` honeypot/ ├── honeypot.py # SSH honeypot server (Paramiko) ├── dashboard.py # Flask API + web dashboard ├── database.py # SQLite data layer (6 custom query functions) ├── generate_mock_data.py # Realistic attack simulation ├── attacks.db # SQLite database (auto-created on startup) ├── requirements.txt # Python dependencies ├── host_keys/ # RSA + ECDSA SSH host keys ├── templates/ │ └── index.html # Dashboard UI (Jinja2 template) └── static/ ├── script.js # Chart.js charting + API polling └── style.css # Cyber-themed dashboard styling ``` ## 安全与设计决策 - **限制输入长度**(`username[:200]`、`password[:200]`)可防止过大的 payload 破坏数据库 - **参数化查询**(`?` 占位符)彻底消除了 SQL injection 风险 - **低交互蜜罐** —— 仅模拟 SSH 认证,绝不执行攻击者输入的内容 - 选择 **SQLite** 是为了实现零配置部署;在大规模场景下则需要使用 PostgreSQL - 实时情报源采用 **5秒轮询**(生产环境中会使用 WebSocket) ## 数据观察结果 真实的 SSH 蜜罐通常会捕获到: - **最受针对的账户:** `root`、`admin`、`ubuntu`、`test` - **最常尝试的密码:** `password`、`123456`、`admin`、`letmein` - **工具指纹识别:** `libssh_0.8.9`(自动化扫描器)对比 `OpenSSH_8.2p1`(人工操作者) ## 许可证 MIT *使用 paramiko、Flask、Chart.js 和 SQLite 构建 — 2026*
标签:Flask, SQLite, SSH, 威胁情报, 开发者工具, 蜜罐, 证书利用, 逆向工具