Powershell Exec, Windows shellcode stage, Reverse HTTPS Stager with Support for Custom Proxy - Metasploit


This page contains detailed information about how to use the payload/cmd/windows/powershell/custom/reverse_https_proxy metasploit module. For list of all metasploit modules, visit the Metasploit Module Library.

Module Overview


Name: Powershell Exec, Windows shellcode stage, Reverse HTTPS Stager with Support for Custom Proxy
Module: payload/cmd/windows/powershell/custom/reverse_https_proxy
Source code: modules/payloads/adapters/cmd/windows/powershell.rb
Disclosure date: -
Last modification time: 2022-05-27 16:41:25 +0000
Supported architecture(s): cmd
Supported platform(s): Windows
Target service / protocol: -
Target network port(s): -
List of CVEs: -

Execute an x86 payload from a command via PowerShell. Custom shellcode stage. Tunnel communication over HTTP using SSL with custom proxy support

Module Ranking and Traits


Module Ranking:

  • normal: The exploit is otherwise reliable, but depends on a specific version and can't (or doesn't) reliably autodetect. More information about ranking can be found here.

Basic Usage


msf > use payload/cmd/windows/powershell/custom/reverse_https_proxy
msf payload(reverse_https_proxy) > show options
    ... show and set options ...
msf payload(reverse_https_proxy) > generate

To learn how to generate payload/cmd/windows/powershell/custom/reverse_https_proxy with msfvenom, please read this.

Go back to menu.

Msfconsole Usage


Here is how the cmd/windows/powershell/custom/reverse_https_proxy payload module looks in the msfconsole:

msf6 > use payload/cmd/windows/powershell/custom/reverse_https_proxy

msf6 payload(cmd/windows/powershell/custom/reverse_https_proxy) > show info

[-] Error while running command show: wrong number of arguments (given 1, expected 0)

Call stack:
/opt/metasploit-framework/embedded/framework/modules/payloads/stagers/windows/reverse_https_proxy.rb:73:in `generate'
/opt/metasploit-framework/embedded/framework/modules/payloads/adapters/cmd/windows/powershell.rb:39:in `generate'
/opt/metasploit-framework/embedded/framework/lib/msf/core/payload.rb:194:in `size'
/opt/metasploit-framework/embedded/framework/lib/msf/base/serializer/readable_text.rb:472:in `dump_payload_module'
/opt/metasploit-framework/embedded/framework/lib/msf/base/serializer/readable_text.rb:26:in `dump_module'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/command_dispatcher/modules.rb:130:in `print_module_info'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/command_dispatcher/modules.rb:153:in `cmd_info'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/command_dispatcher/modules.rb:592:in `block in cmd_show'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/command_dispatcher/modules.rb:565:in `each'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/command_dispatcher/modules.rb:565:in `cmd_show'
/opt/metasploit-framework/embedded/framework/lib/rex/ui/text/dispatcher_shell.rb:581:in `run_command'
/opt/metasploit-framework/embedded/framework/lib/rex/ui/text/dispatcher_shell.rb:530:in `block in run_single'
/opt/metasploit-framework/embedded/framework/lib/rex/ui/text/dispatcher_shell.rb:524:in `each'
/opt/metasploit-framework/embedded/framework/lib/rex/ui/text/dispatcher_shell.rb:524:in `run_single'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/driver.rb:205:in `block in initialize'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/driver.rb:204:in `each'
/opt/metasploit-framework/embedded/framework/lib/msf/ui/console/driver.rb:204:in `initialize'
/opt/metasploit-framework/embedded/framework/lib/metasploit/framework/command/console.rb:60:in `new'
/opt/metasploit-framework/embedded/framework/lib/metasploit/framework/command/console.rb:60:in `driver'
/opt/metasploit-framework/embedded/framework/lib/metasploit/framework/command/console.rb:48:in `start'
/opt/metasploit-framework/embedded/framework/lib/metasploit/framework/command/base.rb:82:in `start'
/opt/metasploit-framework/bin/../embedded/framework/msfconsole:23:in `<main>'

Module Options


This is a complete list of options available in the cmd/windows/powershell/custom/reverse_https_proxy payload:

msf6 payload(cmd/windows/powershell/custom/reverse_https_proxy) > show options

Module options (payload/cmd/windows/powershell/custom/reverse_https_proxy):

   Name            Current Setting  Required  Description
   ----            ---------------  --------  -----------
   EXITFUNC        process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   HttpProxyHost                    no        An optional proxy server IP address or hostname
   HttpProxyPass                    no        An optional proxy server password Max parameter length: 63 characters
   HttpProxyPort                    no        An optional proxy server port
   HttpProxyType   HTTP             yes       The type of HTTP proxy (Accepted: HTTP, SOCKS)
   HttpProxyUser                    no        An optional proxy server username Max parameter length: 63 characters
   LHOST           127.0.0.1        no        The local listener hostname
   LPORT           8443             no        The local listener port
   LURI                             no        The HTTP Path
   SHELLCODE_FILE                   no        Shellcode bin to launch

Advanced Options


Here is a complete list of advanced options supported by the cmd/windows/powershell/custom/reverse_https_proxy payload:

msf6 payload(cmd/windows/powershell/custom/reverse_https_proxy) > show advanced

Module advanced options (payload/cmd/windows/powershell/custom/reverse_https_proxy):

   Name                                Current Setting                     Required  Description
   ----                                ---------------                     --------  -----------
   EnableStageEncoding                 false                               no        Encode the second stage payload
   HttpServerName                      Apache                              no        The server header that the handler will send in response to
                                                                                     requests
   HttpUnknownRequestResponse          <html><body><h1>It works!</h1></bo  no        The returned HTML response body when the handler receives a
                                       dy></html>                                    request that is not from a payload
   HttpUserAgent                       Mozilla/5.0 (Macintosh; Intel Mac   no        The user-agent that the payload should use for communication
                                       OS X 12_2_1) AppleWebKit/537.36 (K             Max parameter length: 255 characters
                                       HTML, like Gecko) Chrome/98.0.4758
                                       .81 Safari/537.36
   IgnoreUnknownPayloads               false                               no        Whether to drop connections from payloads using unknown UUID
                                                                                     s
   OverrideLHOST                                                           no        When OverrideRequestHost is set, use this value as the host
                                                                                     name for secondary requests
   OverrideLPORT                                                           no        When OverrideRequestHost is set, use this value as the port
                                                                                     number for secondary requests
   OverrideRequestHost                 false                               no        Forces a specific host and port instead of using what the cl
                                                                                     ient requests, defaults to LHOST:LPORT
   OverrideScheme                                                          no        When OverrideRequestHost is set, use this value as the schem
                                                                                     e for secondary requests, e.g http or https
   PayloadUUIDName                                                         no        A human-friendly name to reference this unique payload (requ
                                                                                     ires tracking)
   PayloadUUIDRaw                                                          no        A hex string representing the raw 8-byte PUID value for the
                                                                                     UUID
   PayloadUUIDSeed                                                         no        A string to use when generating the payload UUID (determinis
                                                                                     tic)
   PayloadUUIDTracking                 false                               yes       Whether or not to automatically register generated UUIDs
   PingbackRetries                     0                                   yes       How many additional successful pingbacks
   PingbackSleep                       30                                  yes       Time (in seconds) to sleep between pingbacks
   Powershell::encode_final_payload    false                               yes       Encode final payload for -EncodedCommand
   Powershell::encode_inner_payload    false                               yes       Encode inner payload for -EncodedCommand
   Powershell::exec_in_place           false                               yes       Produce PSH without executable wrapper
   Powershell::exec_rc4                false                               yes       Encrypt PSH with RC4
   Powershell::method                  reflection                          yes       Payload delivery method (Accepted: net, reflection, old, msi
                                                                                     l)
   Powershell::no_equals               false                               yes       Pad base64 until no "=" remains
   Powershell::noninteractive          true                                yes       Execute powershell without interaction
   Powershell::persist                 false                               yes       Run the payload in a loop
   Powershell::prepend_protections_by  auto                                yes       Prepend AMSI/SBL bypass (Accepted: auto, true, false)
   pass
   Powershell::prepend_sleep                                               no        Prepend seconds of sleep
   Powershell::remove_comspec          false                               yes       Produce script calling powershell directly
   Powershell::strip_comments          true                                yes       Strip comments
   Powershell::strip_whitespace        false                               yes       Strip whitespace
   Powershell::sub_funcs               false                               yes       Substitute function names
   Powershell::sub_vars                true                                yes       Substitute variable names
   Powershell::wrap_double_quotes      true                                yes       Wraps the -Command argument in single quotes
   PrependMigrate                      false                               yes       Spawns and runs shellcode in new process
   PrependMigrateProc                                                      no        Process to spawn and run shellcode in
   ReverseAllowProxy                   false                               yes       Allow reverse tcp even with Proxies specified. Connect back
                                                                                     will NOT go through proxy but directly to LHOST
   ReverseListenerBindAddress                                              no        The specific IP address to bind to on the local system
   ReverseListenerBindPort                                                 no        The port to bind to on the local system if different from LP
                                                                                     ORT
   ReverseListenerComm                                                     no        The specific communication channel to use for this listener
   StageEncoder                                                            no        Encoder to use if EnableStageEncoding is set
   StageEncoderSaveRegisters                                               no        Additional registers to preserve in the staged payload if En
                                                                                     ableStageEncoding is set
   StageEncodingFallback               true                                no        Fallback to no encoding if the selected StageEncoder is not
                                                                                     compatible
   VERBOSE                             false                               no        Enable detailed status messages
   WORKSPACE                                                               no        Specify the workspace for this module

Go back to menu.


Go back to menu.

See Also


Check also the following modules related to this module:

Authors


  • Spencer McIntyre
  • bwatters-r7
  • hdm
  • corelanc0d3r <peter.ve[at]corelan.be>
  • amaloteaux

Version


This page has been produced using Metasploit Framework version 6.2.29-dev. For more modules, visit the Metasploit Module Library.

Go back to menu.