有效载荷发生器
有效负载生成器使您能够创建格式化正确的可执行文件,您可以使用该文件将shellcode交付给目标系统,而不使用任何漏洞。载荷生成器提供了一个引导接口,引导您完成生成动态载荷或经典载荷的过程。根据您选择构建的有效负载的类型,它将显示可用于定制有效负载的适用选项。
当您需要构建一个独立的二进制文件来提供定制的有效负载时,可以使用有效负载生成器。二进制文件,例如. exe
和箱子
文件通常通过客户端漏洞(如钓鱼电子邮件或社会工程攻击)传递,这意味着您可能需要能够绕过反病毒检测,才能在目标系统上执行外壳代码。为了帮助减少反病毒检测,负载生成器允许您对负载进行编码并使用动态可执行文件。
有效载荷是在项目上下文之外全局生成的。这意味着有效负载是动态生成的,只能下载一次,并且不会绑定到特定项目。当您需要为一次使用快速生成可执行负载时,它们非常有用。
访问有效负载生成器
你可以从全球工具web界面区域。要访问有效负载生成器,请转到项目列表。找到全局工具区域并单击负载生成器小部件来启动它。
构建动态载荷
有效负载生成器使您能够构建一个Windows可执行文件,该文件使用完全用C代码编写的动态stager。动态stager不使用可执行模板或外壳代码,这使得它的行为类似于标准的Windows应用程序。每次生成的可执行文件都不同,因此防病毒软件无法将stager识别为Metasploit外壳代码。
Metasploit Pro仅为Windows平台提供动态有效负载。这些有效负载与任何Windows x86和x86_64系统兼容。
动态载荷选项
有效载荷类型
这是exploit将交付给目标的有效载荷类型。选择下列载荷类型之一:
- 命令—命令执行有效负载,使您能够在远程机器上执行命令。
- 流量计-一种高级有效负载,它提供了一个命令行,使您能够动态地传递命令和注入扩展。
经验丰富的人
阶段是有效负载用来在目标计算机和Metasploit服务器上运行的有效负载处理程序之间建立网络连接的工具。stager使您能够使用更小的负载来加载和注入更大、更复杂的负载,称为stage。
选择以下阶段之一:
- 反向TCP—通过TCP创建一个从目标计算机到Metasploit服务器的连接。
- 绑定TCP—将命令提示符绑定到目标机器的侦听端口,以便Metasploit服务器可以连接到该端口。
- 反向HTTP—通过HTTP创建从目标计算机到Metasploit服务器的连接。
- 反向HTTPS-通过HTTPS创建从目标计算机到Metasploit服务器的连接。
阶段
指定stager交付的有效负载。
洛斯特
定义有效负载连接回的IP地址。(仅限反向连接)
港口
定义负载连接回的端口。
罗斯特
定义侦听器绑定到的端口。(仅限绑定连接)
生成动态有效载荷
- 从项目page,启动负载生成器.
- 选择动态载荷选项
- 单击经验丰富的人下拉列表并选择以下选项之一:反向TCP、绑定TCP、反向HTTP或反向HTTPS。
- 单击阶段下拉菜单,选择你想要下载的舞台。
该列表将显示所选阶段的适用阶段。
- 中输入要连接回的有效负载的IP地址洛斯特字段。(反向连接)
- 中输入希望负载连接回的端口港口字段。
- 属性中输入希望侦听器绑定到的端口罗斯特字段。(仅绑定连接)
- 点击生成.
如果有效负载生成时没有出现错误,则会出现一个窗口,提醒您该有效负载已生成,可以下载。点击立即下载自动下载可执行文件。
如果您的浏览器未配置为自动下载文件,则会出现一个对话框窗口,提示您保存或运行文件。您需要将可执行文件保存到计算机中。
构建经典有效载荷
一个经典的有效载荷是用传统的方法建造的——从零开始。当您需要以各种格式构建有效负载并使用不同的编码器模块对其进行编码时,有效负载生成器特别有用。您可以基于特定主机所需的操作系统、体系结构、连接类型和输出格式构建各种有效负载。
经典的载荷选项
以下是经典有效载荷的最常见选项:
平台
指定的平台。
支持的平台包括:AIX、Android、BSD、BSDi、Firefox、Java、Linux、Netware、NodeJS、OSX、PHP、Platform、Python、Ruby、Solaris、Unix、Windows。
建筑学
指定处理器架构。
载荷生成器向您显示了您所选择的体系结构可用的选项。
支持以下体系结构:
- AIX
- 安卓
- BSD sparc和x86
- BSDi
- 火狐
- JAVA
- Linux armle, cbea, cbea64, java, mipsbe, mipsle, ppc, ppc64, x86和x86_64
- 网络软件
- NodeJS
- OSX armle、java、ppc、x86和x86_64
- PHP armbe、armle、cbea。cbea64、cmd、dalvik、firefox、java、mips、mipsbe、mipsle、nodejs、php、ppc、ppc64、python、ruby、sparc、x86和x86_64
- Solaris java、sparc和x86
- Unix cmd, java和tty
- Windows cmd、java、x86和x86_64
有效载荷
指定利用漏洞将传递给目标的有效负载类型。
有效负载生成器向您显示您选择的平台可用的有效负载。
经验丰富的人
指定有效负载用于在目标计算机和Metasploit服务器上运行的有效负载处理程序之间建立网络连接的阶段类型。
stager使您能够使用更小的负载来加载和注入更大、更复杂的负载,称为stage。
可用的stager列表将根据您选择的平台和体系结构而有所不同。
退出函数
指定当有效负载完成时要调用的函数,以便它可以安全退出线程。
选择下列退出功能之一:
- 线程-调用ExitThreadAPI函数。
- 过程-调用ExitProcess API函数。
- 塞赫—当发生错误时重新启动线程。
- 没有一个-允许线程继续执行,以便您可以串行地运行多个有效负载一起。
侦听器主机
定义希望目标主机重新连接到的IP地址。
侦听器端口
定义要用于反向连接的端口。
添加Shellcode
允许您在外壳代码文件中指定一个附加的线程,该文件将在主线程执行负载时在单独的并行线程中运行。
NOP滑橇的尺寸
定义要预加载到有效负载的NOP底座的长度。
添加到有效负载的每个NOP都会向总有效负载大小添加1个字节。
有效载荷的可用选项根据其体系结构、平台而有所不同。和有效载荷类型。
生成PowerShell的有效载荷
PowerShell有效负载使您能够在受损系统上执行PowerShell脚本。要生成PowerShell有效负载,请生成经典有效负载并取消选择stager选项。
至少,有效负载应该使用以下设置:
- 平台-窗户
- 有效载荷-windows/bind\u shell\u tcp
- 输出类型——可执行文件
- 格式—psh、psh-net、psh-reflection或psh-cmd
psh、psh-net和psh-reflection格式生成的有效负载有.ps1
扩展名,并且为psh cmd格式生成的有效负载具有.cmd
分机。
对有效载荷进行编码
编码器使您能够从有效负载中消除不好的字符,以便您可以将其用于特定的利用。一个字符被认为是坏的,如果某些方面的利用使它不可能使用。例如,许多应用程序将空字节解释为字符串的结尾。如果它出现在负载中的任何地方,shellcode将在它完成之前终止,并导致负载失败。在这种特殊情况下,您可以应用一个编码器从有效负载中删除空字节。
编码器不保证有效负载将逃避反病毒检测,但它将确保有效负载不包含可能导致漏洞利用问题或产生意外结果的坏字符。
以下是常见错误字符的示例:
- 空间
- 回车
- 换行
- 标签
- 空字节
Metasploit框架中有许多不同的编码器,可用于各种情况。例如,一些编码器,例如alpha_mixed
和下阿尔法
,可用于将字符替换为所有字母数字字符,这对于仅接受基于文本的字符作为输入的应用程序非常有用。其他编码器,如非常可靠和高排名的shikata_ga_nai
,是多态异或编码器,使用异或加密方案,以帮助逃避检测。
编码选项仅适用于以下平台:
- AIX
- BSD sparc
- BSD x86
- BSDi
- Linux-mipsbe
- Linux-mipsle
- Linux ppc
- Linux x86
- Linux x86_64
- 网络软件
- OSX ppc
- OSXx86
- OSX x86_64
- PHP
- 平台式sparc
- x86平台
- 平台x86_64
- Python命令
- Solaris sparc
- Solaris x86
- unixcmd
- Windows cmd
- Windows x86
- Windows x86_64
编码选项
您可以使用以下选项对有效负载进行编码:
编码器
设置用于对有效负载进行编码的编码器。
载荷生成器只显示适用于您所选择的平台和体系结构的编码器。
的迭代次数
指定希望对有效负载进行编码的次数。
对有效载荷进行编码的次数越多,有效载荷就越大。如果迭代次数导致有效负载超过最大有效负载大小,则可能需要修改迭代次数。
有效载荷的最大尺寸
以字节为单位定义生成的有效负载的最大大小。
最大大小优先于编码迭代。如果编码器导致有效负载超过您指定的最大大小,则有效负载生成器将显示错误消息。
要修复错误,您可以选择一个新的编码器、修改迭代次数或设置不同的最大有效负载大小。
坏角色
指定不希望出现在有效负载中的字符列表,例如空格、回车、换行符、制表符和空字节。
必须以十六进制输入值。
您可以将十六进制字符复制并粘贴到文本框中。文本编辑器将尝试格式化十六进制
输出选项
可以使用以下选项创建二进制文件:
输出类型
指定有效负载的输出类型。
从以下类型中选择:可执行、原始字节或shellcode缓冲区。
格式
指定用于输出有效负载的格式。
选择以下格式:asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war。
保留可执行文件的原始功能
允许您将有效负载注入到现有的可执行文件中,并保留原始可执行文件的原始功能。生成的可执行文件的功能与原始文件类似。
只有当您上传了模板文件时,才应该启用此选项。
模板文件
指定要用于在主线程中运行的可执行模板。例如,可以将有效负载嵌入可执行文件中,如calc.exe。当可执行文件运行时,它会为在后台运行的有效负载创建一个单独的线程,并继续在主线程中运行calc.exe。
生成经典有效载荷
经典有效负载的配置将根据您所选择的平台、体系结构、有效负载、阶段和阶段而变化。以下说明将概述生成经典有效负载(例如Linux Meterpreter Reverse TCP有效负载)所需执行的步骤。
- 从项目page,启动负载生成器.
- 选择经典有效载荷选项
- 单击平台下拉按钮并选择一个可用平台。
有关受支持平台的列表,请参见有效载荷选项.
- 单击建筑学下拉按钮,并选择一个可用的处理器架构类型。
体系结构类型的列表会根据您所选择的平台而有所不同。有些平台,如Android和AIX,将没有平台。
从这一点开始,步骤将根据所选择的平台、体系结构和负载而有所不同。通常,您需要指定有效负载使用的LHOST(反向)、LPORT和RHOST(绑定),以及可执行文件的输出选项。你也可以对有效载荷进行编码。
当您准备构建有效负载时,单击生成按钮。的生成如果配置了有效负载所需的所有选项,则按钮将激活。
如果有效负载生成时没有出现错误,则会出现一个窗口,提醒您该有效负载已生成,可以下载。点击立即下载自动启动下载过程。
如果您的浏览器没有配置为自动下载文件,将出现一个对话框窗口,并提示您保存或运行文件。您将需要将有效载荷保存到您的计算机中。