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, 凭证验证, 字典攻击, 密码枚举, 撞库攻击, 攻击路径可视化, 数字取证, 暴力破解, 渗透测试框架, 漏洞搜索, 登录测试, 网络安全, 自动化脚本, 防御, 隐私保护, 黑客工具