Metasploit multi/handler 模块高级选项解析
multi/handler 是 Metasploit 框架中至关重要的模块,主要用于监听目标机的连接并处理来自目标的反向 shell 或会话。它可以灵活地适应不同渗透测试场景,提供高度的自定义选项以优化监听器的行为。
在 Metasploit msf6 框架中,当使用 exploit/multi/handler 模块时,可以通过输入 advanced 命令查看该模块的高级选项。高级选项允许用户精确调整监听器的设置,以便更好地适应各种渗透测试环境。例如,用户可以选择是否在会话建立后退出监听、是否启用详细日志、是否启用多线程等。

1. multi/handler 高级选项解析
以下是 multi/handler 模块的高级选项及其详细说明:
| 参数 | 当前值 | 必需 | 描述 |
|---|---|---|---|
ContextInformationFile | 空 | 否 | 指定包含上下文信息的文件(用于记录或调试) |
DisablePayloadHandler | false | 否 | 是否禁用 Payload 处理器(默认不禁用) |
EnableContextEncoding | false | 否 | 是否启用 Payload 的瞬态上下文编码(通常不启用) |
ExitOnSession | true | 是 | 会话创建后是否退出监听器 |
ListenerTimeout | 0 | 否 | 最大等待会话连接的时间(0 表示无限等待) |
VERBOSE | false | 否 | 是否启用详细日志输出 |
WORKSPACE | 空 | 否 | 指定 Metasploit 工作空间 |
WfsDelay | 2 | 否 | 会话创建后额外等待的秒数(默认为 2 秒) |
关键参数解释
-
ExitOnSession- 设为
true:会话建立后,multi/handler会自动退出。适用于一次性监听场景。 - 设为
false:即使会话建立,监听器继续保持运行,适用于需要持续监听的场景。
- 设为
-
ListenerTimeout- 设为
0:表示无限等待目标机连接。 - 设为具体秒数(如
60):表示超过指定时间后,监听会自动停止。
- 设为
-
WfsDelay- 设置为
2:等待 2 秒以确保会话的稳定性。 - 在某些情况下,增加该值可以有效避免会话连接不稳定的问题。
- 设置为
2. Payload 高级选项解析
对于不同的 Payload(如 generic/shell_reverse_tcp),Metasploit 提供了多个高级选项以调整其行为:
| 参数 | 当前值 | 必需 | 描述 |
|---|---|---|---|
ARCH | 空 | 否 | 指定目标架构(如 x86、x64) |
PLATFORM | 空 | 否 | 指定目标操作系统(如 Windows、Linux) |
ReverseAllowProxy | false | 是 | 是否允许绕过代理直接连接 LHOST |
ReverseListenerBindAddress | 空 | 否 | 指定本地监听 IP 地址 |
ReverseListenerBindPort | 空 | 否 | 指定本地监听端口(与 LPORT 不同) |
ReverseListenerComm | 空 | 否 | 指定监听的通信通道 |
ReverseListenerThreaded | false | 是 | 是否为每个连接启动独立线程 |
StagerRetryCount | 10 | 否 | Stager 失败时的最大重试次数 |
StagerRetryWait | 5 | 否 | Stager 失败后的重试等待时间(秒) |
VERBOSE | false | 否 | 是否启用详细日志 |
WORKSPACE | 空 | 否 | 指定 Metasploit 工作空间 |
关键参数解释
-
ReverseAllowProxy- 设为
true:允许目标机通过代理直接访问LHOST,但不经过代理。 - 设为
false:默认设置,不使用代理。
- 设为
-
ReverseListenerBindAddress和ReverseListenerBindPortReverseListenerBindAddress:用于指定监听的特定 IP 地址,默认为0.0.0.0(所有接口监听)。ReverseListenerBindPort:指定监听端口,与LPORT不同。
-
ReverseListenerThreaded- 设为
true:为每个反向连接创建独立的线程,适用于高并发环境。 - 设为
false:默认设置,单线程处理连接。
- 设为
-
StagerRetryCount&StagerRetryWaitStagerRetryCount:失败时最多重试 10 次。StagerRetryWait:每次失败后等待 5 秒后重试。
3. 高级选项最佳实践
① 持续监听多个连接
如果希望 multi/handler 持续监听多个连接,即使某些会话已经建立,可以设置:
set ExitOnSession false
这样,multi/handler 在处理一个会话后仍会保持运行,等待更多目标连接。
② 设置监听超时
如果希望监听器在一定时间后自动停止(例如 5 分钟),可以设置:
set ListenerTimeout 300
这样,如果 5 分钟内没有新会话建立,监听器会自动退出。
③ 避免监听端口冲突
如果监听端口可能会被占用,可以手动指定一个新的端口:
set ReverseListenerBindPort 4445
这样,multi/handler 会在 4445 端口监听,而非默认的 LPORT。
④ 提高 Stager 的连接稳定性
如果网络环境不稳定,可以增加 StagerRetryCount 和 StagerRetryWait,例如:
set StagerRetryCount 20
set StagerRetryWait 10
这将使 Stager 在失败时最多重试 20 次,每次等待 10 秒。
总结
multi/handler的高级选项 能够根据需求优化监听行为,如设置是否持续监听、监听超时、会话延迟等。- Payload 的高级选项 提供了更多的控制,如反向连接的行为设置、是否启用代理、线程管理以及 Stager 的重试策略等。
- 通过合理调整这些选项,可以显著提高渗透测试的效率和稳定性,确保成功率最大化。
希望这篇文章能为你在渗透测试过程中提供一些新的思路和技巧。
番外:msfvenom 生成的普通 Shell 交互性为何更强?
在近期的靶机渗透中,我发现 msfvenom 生成的普通 shell 交互性显著提升,甚至能够直接运行 Mimikatz。相比于传统的 shell 会话,如 cmd.exe 或 powershell.exe,现在的 payload 在 控制、交互、管理 方面都有了质的飞跃,同时 可变性更强、兼容性更好、Handler 监听稳定。
以下是 msfvenom 生成的普通 Shell 提升的几个方面(AI生成,仅供参考):
1 进程继承与权限优化
- 传统的
cmd.exeshell 受限于父进程权限,许多高权限操作(如mimikatz)无法执行,必须手动提权或迁移进程。 - 现在,
msfvenom生成的 payload 采用 进程继承优化,当cmd.exe运行时,它会继承父进程权限,使得 session 的权限与被攻击进程一致。 - 结果: 只要目标进程本身是 SYSTEM 权限或管理员权限,那么
shell也能直接调用mimikatz、whoami /priv等敏感命令,而不需要getsystem之类的额外操作。
2 Shell I/O 交互性增强
- 以往 shell 由于
stty、pty机制的缺失,导致tab补全、交互式命令(如pythonshell)使用困难。 - 现在的
msfvenompayload 通过改进stdin/stdout传输方式,使得 命令回显更流畅、交互式工具兼容性更好,基本不需要额外调整stty raw -echo之类的参数。 - 结果: 可以直接运行
powershell.exe、cmd.exe,甚至交互式 Python shell,无需像过去那样进行python -c "import pty; pty.spawn('/bin/bash')"这样的调整。
3 传输层改进,抗杀软能力提升
- 现代杀软(EDR)对于
meterpreter监测非常敏感,而传统 shell 由于没有复杂的 C2 通信协议,存活率更高。 msfvenom生成的reverse_tcpshell 更贴近合法流量,不像meterpreter那样会暴露stdapi、priv等模块,从而大大降低了被查杀的可能性。- 结果: 反向 shell 更稳定,EDR 误报率降低,不容易被发现。
4 兼容性更强,支持更多目标环境
msfvenom的 payload 现在可以兼容 更多平台,比如 Windows、Linux、MacOS,甚至 IoT 设备。- 可以灵活生成
EXE、DLL、PS1、BAT、ELF、Python等格式的 payload,适配不同目标系统。 - 结果: 可以针对不同目标快速生成合适的 payload,适用范围更广。
相关文章:
Metasploit multi/handler 模块高级选项解析
multi/handler 是 Metasploit 框架中至关重要的模块,主要用于监听目标机的连接并处理来自目标的反向 shell 或会话。它可以灵活地适应不同渗透测试场景,提供高度的自定义选项以优化监听器的行为。 在 Metasploit msf6 框架中,当使用 exploit…...
WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中
WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中 一、前言二、部署与发布基础概念2.1 部署的定义与目的2.2 发布的方式与渠道2.3 部署与发布的关键要素 三、WPF 应用程序打包3.1 使用 Visual Studio 自带的打包工具3.2 使用第三方打包工具 四、发布到不同…...
Spring MVC 程序开发(1)
目录 1、什么是 SpringMVC2、返回数据2.1、返回 JSON 对象2.2、请求转发2.3、请求重定向2.4、自定义返回的内容 1、什么是 SpringMVC 1、Tomcat 和 Servlet 分别是什么?有什么关系? Servlet 是 java 官方定义的 web 开发的标准规范;Tomcat 是…...
JavaWeb后端基础(6)
主键返回 例子: /** * 新增员工数据 */ Options(useGeneratedKeys true, keyProperty "id") Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time) " "value…...
C# Unity 唐老狮 No.4 模拟面试题
本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…...
集群、分布式与微服务架构 区别
集群、分布式与微服务架构:概念解析与核心差异 在构建现代软件系统时,集群架构、分布式系统和微服务架构是三种常见的技术方案。它们常被混淆,但各自解决的问题、设计理念和应用场景截然不同。本文将从基础概念出发,深入分析三者…...
Protocol Buffers在MCU上的nanopb介绍及使用详解
在嵌入式系统和资源受限的环境中,传统的Protocol Buffers 可能显得过于庞大。因此,nanopb 应运而生,它是一个轻量级的 Protocol Buffers 生成器,专为嵌入式系统设计c语言设计。本文将介绍如何安装和使用 nanopb,以及通…...
【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。
以下是对 Elasticsearch 官方教程《Customize built-in ILM policies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。 --- Elasticsearch 教程:自定义内置 ILM 策略 1.背景…...
测试工程师Ai应用实战指南简例prompt
以下是一个真实具体的案例,展示测试工程师如何在不同阶段结合DeepSeek提升效率。案例基于电商平台"订单超时自动关闭"功能测试: 案例背景 项目名称:电商平台订单系统V2.3 测试目标:验证"用户下单后30分钟未支付,订单自动关闭并释放库存"功能 技术栈:…...
(十 二)趣学设计模式 之 享元模式!
目录 一、 啥是享元模式?二、 为什么要用享元模式?三、 享元模式的实现方式四、 享元模式的优缺点五、 享元模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…...
Trae:国内首款AI原生IDE,编程效率大提升
今年一月,在新闻上看到字节跳动面向海外市场推出了一款名为Trae的AI集成开发环境(IDE)。起初,我并未给予过多关注,因为市面上已有不少IDE集成了AI插件,功能也非常全面,而字节跳动自家的MarsCode…...
深入解析 Vue Router 的 beforeEach:功能、用法与实践指南
什么是 beforeEach?基本语法与参数解析next() 的 4 种调用方式常见使用场景与代码示例动态路由加载的实践技巧常见陷阱与避坑指南总结 1. 什么是 beforeEach? beforeEach 是 Vue Router 提供的 全局前置守卫(Global Before Guards࿰…...
RocketMQ定时/延时消息实现机制
RocketMQ 的延迟消息是其核心特性之一,允许消息在指定延迟时间后才被消费者消费。 定时消息生命周期 一、延迟消息的核心机制 RocketMQ(5.0之前) 不支持任意时间精度的延迟,而是通过预定义的 延迟级别(Delay Level&a…...
基于SpringBoot的校园二手交易平台(源码+论文+部署教程)
运行环境 校园二手交易平台运行环境如下: • 前端:Vue • 后端:Java • IDE工具:IntelliJ IDEA(可自行更换) • 技术栈:SpringBoot Vue MySQL 主要功能 校园二手交易平台主要包含前台和…...
如何快速写出国内外现状的内容并且引用对应的参考文献(近三年的论文)
解决方法: 1.首先从知网或者谷歌学术中搜索相关关键字的论文根据时间排列(最新的在前面)。然后多选选中自己想要引用的论文(一般近三年的论文要占2/3),然后导出参考文献 [19] Lu L, Jin P, Karniadakis G E. DeepONet: Learning nonlinear operators for identifying dif…...
SQL的select语句完整的执行顺序
SQL的SELECT语句的执行顺序可以用"做菜流程"来类比理解。虽然我们写SQL时按SELECT…FROM…WHERE…顺序写,但数据库执行顺序完全不同。以下是通俗易懂的讲解(附流程图和示例): 🔧 执行顺序流程图:…...
开源操作系统纷争:CentOS停服后的新战场
开源操作系统纷争:CentOS停服后的新战场 引言 2020年12月,Red Hat宣布将停止维护CentOS Linux,转而专注于CentOS Stream。这一决策在开源社区掀起轩然大波,尤其是那些依赖CentOS作为生产环境操作系统的企业和开发者们࿰…...
【知识】torchrun 与 torch.multiprocessing.spawn 的对比
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 来自ChatGPT、DeepSeek 有点干,可仅做了解。 torchrun 和 torch.multiprocessing.spawn 都是在 PyTorch 中用于并行化和分布式训练的工具&a…...
利用 LangChain 和一个大语言模型(LLM)构建一个链条,自动从用户输入的问题中提取相关的 SQL 表信息,再生成对应的 SQL 查询
示例代码: from langchain_core.runnables import RunnablePassthrough from langchain.chains import create_sql_query_chain from operator import itemgetter from langchain.chains.openai_tools import create_extraction_chain_pydantic# 系统消息ÿ…...
力扣hot 100之矩阵四题解法总结
本期总结hot100 中二维矩阵的题,时空复杂度就不分析了 1.矩阵置零 原地标记,用第一行和第一列作为当前行列是否为0的标记,同时用两个标签分别记录0行、0列的标记空间中原本是否有0 class Solution:def setZeroes(self, matrix: List[List[…...
使用python运行网格世界环境下 TD算法
一、概述 本代码实现了在网格世界环境中使用 TD (0)(Temporal Difference (0))算法进行策略评估,并对评估结果进行可视化展示。通过模拟智能体在网格世界中的移动,不断更新状态值函数,最终得到每个状态的价值估计。 二…...
在Linux上使用APT安装Sniffnet的详细步骤
一、引言 Sniffnet 是一款开源的网络流量监控工具,适用于多种Linux发行版。如果你的Linux系统使用APT(Advanced Package Tool)作为包管理器,以下是如何通过APT安装Sniffnet的详细步骤。 二、系统要求 在开始安装之前࿰…...
zookeeper-docker版
Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…...
StableDiffusion本地部署 3 整合包猜想
本地部署和整合包制作猜测 文章目录 本地部署和整合包制作猜测官方部署第一种第二种 StabilityMatrix下载整合包制作流程猜测 写了这么多python打包和本地部署的文章,目的是向做一个小整合包出来,不要求有图形界面,只是希望一键就能运行。 但…...
数据结构(初阶)(七)----树和二叉树(前中后序遍历)
实现链式结构的二叉树 实现链式结构的二叉树遍历前序遍历中序遍历后序遍历 节点个数叶子节点个数⼆叉树第k层结点个数⼆叉树的深度/⾼度查找值为X的节点二叉树的销毁 层序遍历判断二叉树是否为完全二叉树 ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常…...
SOME/IP 教程知识点总结
总结关于SOME/IP的教程,首先通读整个文件,理解各个部分的内容。看起来这个教程从介绍开始,讲到了为什么在车辆中使用以太网,然后详细讲解了SOME/IP的概念、序列化、消息传递、服务发现(SOME/IP-SD)、发布/订阅机制以及支持情况。 首先,我需要确认每个章节的主要知识点。…...
安装 Windows Docker Desktop - WSL问题
一、关联文章: 1、Docker Desktop 安装使用教程 2、家庭版 Windows 安装 Docker 没有 Hyper-V 问题 3、打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题 二、问题解析 打开 Docker Desktop 出现问题,如下: Docker Desktop - WSL update failed An error o…...
科技赋能筑未来 中建海龙MiC建筑技术打造保障房建设新标杆
近日,深圳梅林路6号保障房项目顺利封顶,标志着国内装配式建筑领域又一里程碑式突破。中建海龙科技有限公司(以下简称“中建海龙”)以模块化集成建筑(MiC)技术为核心,通过科技创新与工业化建造深…...
json介绍、python数据和json数据的相互转换
目录 一 json介绍 json是什么? 用处 Json 和 XML 对比 各语言对Json的支持情况 Json规范详解 二 python数据和json数据的相互转换 dumps() : 转换成json loads(): 转换成python数据 总结 一 json介绍 json是什么? 实质上是一条字符串 是一种…...
关于学习一门新的编程语言的策略
实践 实践 实践 那么如何实践呢 ,very easy,测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测…...
