yannisduvignau/ssh-bruteforce

GitHub: yannisduvignau/ssh-bruteforce

基于 Paramiko 的轻量级 SSH 凭证填充脚本,用于教育目的和授权安全测试场景下的口令强度验证。

Stars: 0 | Forks: 0

# 🔐 ssh-bruteforce ## ⚠️ 法律免责声明 ## 📋 描述 **ssh-bruteforce** 是一个针对 SSH 服务执行 **凭证填充** 攻击的 Python 脚本。它从 CSV 文件 (`passwords.csv`) 中读取用户名/密码组合列表,并尝试使用 **Paramiko** 库对目标 SSH 服务器进行身份验证。 该项目非常适合用于: - 理解 SSH 暴力破解攻击在实际中是如何工作的 - 测试你自己 SSH 服务器凭证的强度 - 学习 Python 中的 Paramiko SSH 库 - 在隔离的实验室环境中进行练习(CTF 环境、虚拟机、HackTheBox、TryHackMe 等) ## 🗂️ 项目结构 ``` ssh-bruteforce/ ├── main.py # Core script — SSH connection attempts & result reporting ├── passwords.csv # Credential wordlist (username, password pairs) ├── requirements.txt # Python dependencies └── README.md ``` ## 🛠️ 技术栈 | 层级 | 技术 | |-------|-----------| | 语言 | Python 3.x | | SSH 库 | [Paramiko](https://www.paramiko.org/) | | 字典格式 | CSV (`username,password`) | | 环境 | Python virtual environment (`venv`) | ## 🚀 快速开始 ### 前置条件 - 已安装 Python 3.x - `pip` 包管理器 - 拥有目标 SSH 服务器的网络访问权限(仅限已授权情况) ### 1. 克隆仓库 ``` git clone https://github.com/yannisduvignau/ssh-bruteforce.git cd ssh-bruteforce ``` ### 2. 创建虚拟环境 ``` # Windows python -m venv venv_ssh # macOS / Linux python3 -m venv venv_ssh ``` ### 3. 激活虚拟环境 ``` # macOS / Linux source venv_ssh/bin/activate # Windows venv_ssh\Scripts\activate ``` ### 4. 安装依赖 ``` pip install -r requirements.txt ``` ### 5. 配置目标 编辑 `main.py` 以设置 **目标主机**、**端口** 和 **超时** 值: ``` HOST = "192.168.1.100" # Target IP or hostname PORT = 22 # SSH port (default: 22) TIMEOUT = 5 # Connection timeout in seconds ``` ### 6. 准备字典 编辑 `passwords.csv` —— 每行一组 `username,password`: ``` root,toor admin,admin admin,password root,123456 ubuntu,ubuntu pi,raspberry ``` ### 7. 运行脚本 ``` python main.py ``` ### 8. 完成后停用 ``` deactivate ``` ## ⚙️ 工作原理 ``` passwords.csv (username, password pairs) │ │ read line by line ▼ main.py │ │ Paramiko SSH connect(host, port, username, password) ▼ SSH Server Response │ ├─ Auth success → ✅ Valid credentials found! Print & stop └─ Auth failure → ❌ Try next pair ``` 1. 脚本从 `passwords.csv` 读取每一组 `username,password` 2. 对于每一组凭证,它使用 Paramiko 的 `SSHClient` 尝试建立 **SSH 连接** 3. 如果身份验证成功,它会打印出有效凭证并停止运行 4. 如果失败(`AuthenticationException`),它会继续尝试下一对 5. 网络错误(超时、连接被拒绝)会被捕获并优雅地报告 ## 📄 字典格式 `passwords.csv` 使用简单的双列 CSV 格式: ``` username,password root,toor admin,admin123 root,password ubuntu,ubuntu ``` 你可以用任何凭证列表替换此文件。常用的测试来源: | 资源 | 描述 | |----------|-------------| | [SecLists](https://github.com/danielmiessler/SecLists/tree/master/Passwords) | 全面的安全字典集 | | `rockyou.txt` | 1400 万+ 常用密码(Kali Linux 路径:`/usr/share/wordlists/`) | | 默认凭证 | 路由器、IoT 设备、服务器的厂商默认 SSH 凭证 | ## 📦 依赖项 | 包 | 用途 | |---------|---------| | `paramiko` | Python 的 SSH2 协议实现 —— 负责处理连接和身份验证 | 如需手动安装: ``` pip install paramiko ``` ## 🧪 安全测试环境 **仅在你拥有或已获得明确授权的系统上进行测试。** 推荐环境: | 平台 | 描述 | |----------|-------------| | 本地虚拟机 | 启动一个启用了 SSH 的 Ubuntu/Debian 虚拟机 | | [HackTheBox](https://www.hackthebox.com/) | 拥有 SSH 服务的合法 CTF 机器 | | [TryHackMe](https://tryhackme.com/) | 包含 SSH 暴力破解挑战的引导式房间 | | [VulnHub](https://www.vulnhub.com/) | 可下载的本地练习用易受攻击虚拟机 | | [PentesterLab](https://pentesterlab.com/) | Web 和系统安全练习 | ## 🛡️ 防御对策 理解此攻击有助于你加固 SSH 服务器: | 防御措施 | 实施 | |---------|---------------| | **禁用密码认证** | 在 `sshd_config` 中设置 `PasswordAuthentication no` → 仅使用 SSH 密钥 | | **更改默认端口** | 将 SSH 从 22 端口移开以减少自动化扫描 | | **Fail2ban** | 在 N 次登录失败后自动封禁 IP | | **速率限制** | 使用 `iptables` 或 `ufw` 限制 SSH 连接尝试频率 | | **AllowUsers / AllowGroups** | 限制可以通过 SSH 进行身份验证的用户 | | **MFA** | 为 SSH 登录添加第二因素(例如 Google Authenticator) | | **IP 白名单** | 仅允许来自已知可信 IP 范围的 SSH 连接 | **示例:加固 `sshd_config`** ``` # /etc/ssh/sshd_config PasswordAuthentication no PermitRootLogin no MaxAuthTries 3 LoginGraceTime 20 AllowUsers youruser ``` ## 🧠 涉及概念 | 主题 | 描述 | |-------|-------------| | SSH 协议 | SSH 身份验证握手的工作原理 | | Paramiko API | `SSHClient`, `AutoAddPolicy`, `connect()`, `AuthenticationException` | | 凭证填充 | 系统性地测试已知的用户名/密码对 | | 异常处理 | 优雅地捕获身份验证失败和网络错误 | | 虚拟环境 | 隔离每个项目的 Python 依赖 | ## 👤 作者 **Yannis Duvignau** [GitHub](https://github.com/yannisduvignau) ## 📚 资源 - 📖 [Paramiko 文档](https://docs.paramiko.org/) - 🛡️ [OWASP — 凭证填充](https://owasp.org/www-community/attacks/Credential_stuffing) - 🔐 [SSH 加固指南](https://www.ssh.com/academy/ssh/sshd_config) - 📋 [SecLists — 字典](https://github.com/danielmiessler/SecLists) - 🔒 [Fail2ban 文档](https://www.fail2ban.org/wiki/index.php/Main_Page) ## 📄 许可证 本项目基于开源许可证分发。有关更多详细信息,请参阅 `LICENSE` 文件。
标签:CTF工具, Paramiko, PoC, Python安全工具, SSH服务, VEH, 凭证验证, 字典攻击, 密码枚举, 撞库攻击, 攻击路径可视化, 数字取证, 暴力破解, 渗透测试框架, 漏洞搜索, 登录测试, 网络安全, 自动化脚本, 防御, 隐私保护, 黑客工具