一、前言
- 本文只用于授权渗透测试、攻防演练、课程教学、实验靶场(如 Metasploitable、DVWA 等)。
- 不提供针对真实第三方系统的逐步利用步骤;出现示例一律以占位符与靶场为前提。
- 操作前请获得书面授权、做好记录与回滚计划,遵守所在国家/地区法律法规与公司制度。
二、Metasploit 是什么:框架、组件与生态
Metasploit 是业界最常用的开源渗透测试平台,核心是 Metasploit Framework(MSF)。它提供了统一的模块化框架、控制台(msfconsole)、Payload 体系(含 Meterpreter)、数据库与 API,帮助你完成漏洞验证、信息收集、后渗透验证与报告支撑等工作。官方还提供商业版 Metasploit Pro 的图形界面与项目管理能力。(docs.rapid7.com)
最常用的交互界面是 MSFconsole,可在其中搜索模块、配置参数、执行与收集数据。(docs.rapid7.com)
模块类型一览(MSF 的基础抽象):
- exploit:利用模块
- auxiliary:扫描器、嗅探、模糊测试等非利用类
- post:后渗透操作(仅限授权环境)
- payload:目标侧执行的有效负载(shell、Meterpreter 等)
- encoder:编码器
- nop:NOP 生成器
这些类型在官方 API 文档中有标准定义。(docs.rapid7.com)
三、安装与环境建议(Kali / Linux / Windows / 容器)
- Kali Linux:预集成 Metasploit,适合快速上手。首次使用建议遵循 Kali 文档,启动 PostgreSQL、初始化数据库、启动 msfconsole。(Kali Linux)
- 其他 Linux 或 Windows:可用官方夜构安装器或源码构建。若启用数据库,请确保 PostgreSQL 服务与 MSF 连接配置正确(见下文)。(docs.rapid7.com)
- 网络与权限:建议在隔离网络/虚拟化环境中操作;所有用于“利用”的演示务必面向靶场。
四、msfconsole 快速上手:从 0 到能跑
在终端输入:
核心操作范式(以占位符呈现,不指向真实第三方系统):
- # 1) 查找模块
- msf6 > search <keyword>
- # 2) 查看模块文档与参数
- msf6 > info <module_name>
- msf6 > show options
- msf6 > show targets
- # 3) 选择模块与设置参数
- msf6 > use <module_name>
- msf6 > set RHOSTS <target_or_scope>
- msf6 > set RPORT <port_if_needed>
- msf6 > set PAYLOAD <payload_name> # 若该模块需要/支持
- # 4) 运行与观察
- msf6 > run
- # 或
- msf6 > exploit
- # 5) 会话与任务
- msf6 > sessions -l
- msf6 > sessions -i <id>
- msf6 > jobs -l / jobs -k <id>
- # 6) 全局变量(跨模块复用)
- msf6 > setg <key> <value>
- msf6 > unsetg <key>
复制代码
提示:使用 help 查看命令帮助;info -d 可生成 Web 版模块文档页面,便于阅读与分享。(Rapid7, AdFoster)
五、模块体系详解
- Exploit:负责触发具体漏洞,通常与 Payload 配合形成会话。
- Auxiliary:端口扫描、协议探测、服务爆破、信息收集、嗅探/中间人等。
- Post:在已有会话基础上进行信息收集、持久化、取证留痕验证等(仅限授权环境)。
- Payload / Encoder / NOP:见下一节。
官方文档同时提供“模块总览”与“中级/高级主题”(如数据库支持、绕过 AV、Pivoting 等)。(Rapid7)
六、Payload 深入理解:reverse / bind、staged / stageless
七、Meterpreter 基础与会话管理(仅限靶场与授权)
Meterpreter 是 Metasploit 的高级后渗透 Payload,支持扩展加载、内存驻留、跨平台实现(C/Java/Python/PHP 等)。你可以在会话内进行文件/进程/网络/凭据等操作——这些只应在授权测试中用于验证风险、取证可见性与安全策略有效性。(Rapid7)
提示:不要在生产环境冒然尝试提权等高风险操作。官方文档展示了提权技术原理(如命名管道模拟)供研究学习,实验请仅限可回滚的靶场。(docs.rapid7.com)
会话管理常见命令
- msf6 > sessions -l # 列表
- msf6 > sessions -i <id> # 交互
- meterpreter > background # 回到 msfconsole
- msf6 > session -K <id> # 终止会话(谨慎)
复制代码
八、资产管理与数据库:Workspace、主机/服务/凭据、与 Nmap 集成
Metasploit 使用 PostgreSQL 作为后端数据库,存储主机、端口/服务、凭据、loot 与利用结果等,命令多以 db_ 前缀出现。你可以在 Workspace 中隔离不同项目的数据,支持直接导入/关联 Nmap 结果。(docs.rapid7.com, offsec.com)
Kali 官方文档提供了在 Kali 上启用 PostgreSQL 与初始化 MSF 数据库的最新步骤与注意事项。(Kali Linux)
九、横向与转发(Pivoting)概念与常见工作法(高层次)
当目标网络被分割为多个子网时,测试者常在已获得会话的前提下,通过转发/代理将工具流量“穿”到内网,再进行资产验证与风险确认。MSF 提供了路由与代理等能力,官方“Pivoting in Metasploit”给出了概念与方法架构。(Rapid7)
出于合规与安全,本文不提供可用于未授权环境的逐步横向命令,只给出高层提示:
- 在授权靶场中,你可以在 msfconsole 中为会话添加路由、或基于会话建立 SOCKS 代理,再配合经授权的工具(如 Nmap)做内网资产验证。
- 严格控制扫描范围与速率,记录操作、事先变更窗口、随时可回滚。
- 横向只是验证风险存在与影响,不是“攻破越多越好”。
十、自动化与二次开发:Resource Script、RPC/Web Service
安全建议:RPC/Web Service 一律在隔离网络下使用,设置强口令、访问控制与审计;生产环境仅在演练/验证窗口内临时启用,完毕即清理。
十一、自定义模块开发入门(安全骨架)
MSF 提供了模块开发指引与“利用可靠性分级”,你可以从辅助模块(auxiliary)开始练手,不涉及对目标的破坏性动作。(docs.metasploit.com, AdFoster)
最小辅助模块骨架(示例,仅打印信息):
- # modules/auxiliary/example/hello_world.rb
- require 'msf/core'
- class MetasploitModule < Msf::Auxiliary
- Rank = NormalRanking
- def initialize(info = {})
- super(update_info(info,
- 'Name' => 'Hello World (Safe Example)',
- 'Description' => %q{
- 安全示例:演示 auxiliary 模块骨架,不对外部系统执行任何操作。
- },
- 'Author' => [ 'you' ],
- 'License' => MSF_LICENSE
- ))
- register_options([
- OptString.new('MESSAGE', [ true, 'Message to show', 'Hello, Metasploit!' ])
- ])
- end
- def run
- print_good datastore['MESSAGE']
- end
- end
复制代码
放入本地 modules/ 后,reload_all 即可在 msfconsole 中加载测试。
开发 Exploit/Post 等更复杂模块前,务必在靶场演练并遵循官方代码规范与伦理边界。
十二、常见排错与“坏味道”
- 数据库不可用:确认 PostgreSQL 已启动、初始化成功、凭据匹配;Kali 上优先按官方流程初始化(msfdb/msfconsole)。(Kali Linux)
- 模块过旧或不稳定:参考Exploit Ranking,在授权测试中优先选择可靠等级更高的模块。(AdFoster)
- 网络被 EDR/IPS 拦截:切换到更安全的验证策略(PoC 级轻量验证/指纹级验证),不要执意投 Payload。
- 长期开启 RPC/Web Service:高风险做法;请在隔离环境中临时启用,用完即停并变更密码。(Rapid7, docs.rapid7.com)
十三、安全基线与蓝队视角:如何用 Metasploit 反向验证防护
- 用模块与 Payload(在靶场)模拟攻击面,验证 IDS/IPS/EDR/日志是否能及时发现与阻断。
- 使用数据库与工作区沉淀资产与弱点基线,对比多轮扫描/演练结果,追踪修复闭环。(docs.rapid7.com)
- 通过 Resource Script 与 Web Service 把“验证性检查”纳入 CI 安全闸或红队演练编排。(docs.rapid7.com, Rapid7)
十四、命令速查表(Cheat Sheet)
以下命令均为通用模板与靶场环境示例,请替换为授权范围内的参数。
- # 基础
- help # 帮助
- version # 版本
- search <keyword> # 搜索模块
- info <module> # 模块详情(info -d 生成 Web 文档)
- use <module> # 选择模块
- show options/targets # 查看参数/目标
- set/unset/setg/unsetg # 设置(全局)参数
- run / exploit # 执行
- jobs -l / -k <id> # 后台任务
- sessions -l / -i <id> # 会话管理
- # 数据库与资产
- workspace -a/-d/-s <name> # 工作区
- db_import <file> # 导入 Nmap/XML 等扫描结果
- hosts / services / vulns # 资产视图
- creds # 凭据视图
- # 自动化
- resource <file.rc> # 运行资源脚本
- load msgrpc # 启动 RPC(仅隔离网络、临时使用)
复制代码
(更多细节与示例请参考官方“Running modules / Module documentation / How payloads work / Using databases”等页面。)(Rapid7, AdFoster, docs.rapid7.com)
十五、参考资料(强烈推荐)
- Metasploit 官方文档(Rapid7):总览、入门、模块与数据库、进阶主题。(docs.rapid7.com, Rapid7)
- How payloads work / Staged vs. Stageless:理解 Payload 组合与通信模型。(Rapid7)
- Kali 文档:在 Kali 上启动与初始化 MSF 数据库。(Kali Linux)
- OffSec Metasploit Unleashed:msfvenom、数据库使用、Payload 类型等经典教程。(offsec.com)
- Pivoting in Metasploit(官方)与相关资料:仅用于靶场与授权环境。(Rapid7)
- RPC & Web Service:msgrpc、msfrpcd 与 Web Service(REST)。(docs.rapid7.com, Rapid7)
- Exploit Ranking:模块可靠性分级,用于选择更稳妥的验证方法。(AdFoster)
十六、结语
如果你把 Metasploit 当作 “验证平台” 而不是“攻击工具”,你会更容易建立一套可复现、可审计、可回滚 的安全测试方法论:
- 用 模块化 与 工作区+数据库 管理资产与证据链;
- 用 staged / stageless 与 reverse / bind 的正确取舍控制风险;
- 用 Resource Script / RPC / Web Service 把合规验证纳入自动化;
- 全程以靶场与授权为前提,保障测试对象与业务安全。