新手科普 | 如何脫離Metasploit進行滲透測試
“努力!”是個傳統美德,也一直是我們生活的口號,不過大多數人顯然沒有真正理解它的含義,他們十有八九隻是在即時聊天時把努力掛在嘴邊,這顯得低幼且毫無幫助。同樣的,如果不使用Metasploit我們將如何進行滲透測試?我也可以說“努力!”。然後用一個虛情假意的熊貓表情包結束這篇文章,但是我不會那麼做。在這篇文章中,我會分享一些(可能)有幫助的,可操作的建議。如果你是個新手或正在為OSCP認證而學習,那麼這篇文章瞭解一下。
Metasploit以及其他類似工具在(不)著名的OSCP認證中受到嚴格限制。其背後有一個很好的理由:這樣可以迫使學習者從實際上了解漏洞利用是如何運作的。準備的時候覺得這樣很糟糕,但是最後會發現自己會的更多了,這也應該是你準備OSCP認證的目的,不是嗎?為了擺脫對Metasploit的依賴,我們需要替代方案並更深入地理解一些關鍵概念。
為什麼用Metasploit
在搞清楚如何才能不用Metasploit之前,得先搞清楚為什麼要用它。在OSCP lab的情況下,用Metasploit主要是以下用途:
找到exploit
自定義payload
提權
得到反向shell
為了不使用Metasploit,我們就需要找到替代的東西。
尋找exploit
最快捷,最簡單的方法是使用整合在Kali中的工具searchsploit。用上了這個工具,你會覺得每次敲擊鍵盤都優雅了不少。廢話不多說,其實Searchsploit只是在exploit-db資料庫中搜索你提供的關鍵字。它會返回可在Metasploit中使用的或是獨立的,用各種語言編寫的exploit。
語法很容易記住:
searchsploit 關鍵詞1 關鍵詞2 關鍵詞3 ...
輸出如下圖所示:
還沒完,所有的exploit已經儲存在kali中,可以通過以下命令將它們複製到當前目錄:
searchsploit -m [exploit database id]
例如,要複製圖上列表中的第一個exploit:
如果searchsploit中無法找到任何鮮美的exploit,請嘗試Google。 如果Google也沒有,那麼可能還不是一個公開的exploit。此時你就要“努力!”了。
虛情假意的熊貓表情包.gif
自定義payload
如果你對Metasploit很熟練,那麼你可能已經熟悉了payload的概念。使用Metasploit模組時設定的payload會定義exploit在成功利用後嘗試的實際操作。通常,都是開啟Meterpreter會話或反向shell,以便可以控制目標機器。
在Metasploit中選擇payload時,就相當於在漏洞利用程式碼中手動替換payload.因此,要在此處替換Metasploit,我們需要做的就是手動替換payload。 這通常意味著我們需要生成一些shellcode。怎麼做?繼續往下讀!
Msfvenom
謝天謝地,Msfvenom被允許用於OSCP認證。我們可以使用它來生成自定義payload,然後將其用於我們的exploit。需要注意的是:如果你正在進行OSCP認證,請堅持使用標準的反向shell payload,而不是Meterpreter。在OSCP認證中禁止使用Meterpreter。
建立shellcode的基本語法如下:
msfvenom -p [payload] -f [格式] LHOST=[你的ip] LPORT=[你的監聽埠]
一旦獲得了shellcode,我們只需將其複製-貼上到漏洞利用程式碼中,以替換exploit中的當前payload。
例如,如果我們正在處理開啟calc.exe(Windows漏洞中常見的PoC)的緩衝區溢位漏洞exploit,那就要編輯該漏洞的程式碼,用msfvenom生成的shellcode替換當前的calc.exe shellcode。
下圖為msfvenom的例項。在這個例子中,我使用的是一個unstaged的TCP反向shell,LHOST設定為1.2.3.4,LPORT設定為1234。
Staged和Unstaged Payload
你之前可能沒有注意到,使用的大多數payload都有一個非常相似的雙胞胎。例如,請注意“windows/shell_reverse_tcp”和“windows/shell/reverse_tcp”之間的細微差別。第一個是Unstaged的,而第二個是Staged的。 你會看到與許多其他payload相同的命名約定。
Staged和Unstaged有什麼區別?如果使用Unstaged的payload,則會在一次命中後傳送整個payload並在目標計算機上執行。這意味著你可以使用簡單的netcat listener捕獲shell,如果你用的是Staged payload,則需要使用Metasploit multi handler來捕獲shell(順便說一下,這在考試中是允許的!)。如果你嘗試使用netcat listener來捕獲shell,則會在建立連線後立即結束。staged payload初始是較小的payload,然後會從主機上的Metasploit handler下載完整payload。如果你沒有足夠的空間來利用,那麼它們就很棒。最後,你應該用哪個?隨你便。在緩衝區溢位的蜜汁世界中,有時一個會有用,而另一個則不會,所以最好同時擁有兩個!
其他MSFVenom選項
還有很多其他的選擇供你深入研究,但它們超出了本文的範圍,這裡有一些你可能會使用的最常見的清單,但尚未涵蓋所有:
-e 允許你選擇編碼,其中最常見的是x86\shikata_ga_nai。這對於避免特殊符號或繞過防毒軟體非常有用……雖然對後者已經不太管用了。 -b 允許你設定去除的字元。特定漏洞利用的指定字元通常在公共利用程式碼中公開。 –lists(兩個破折號) 將列出payload和格式,例如,如果要檢視所有可能的payload的列表,可以執行msfvenom –list payloads
提權
有時,使用Metasploit進行提權就像1,2,get_system一樣簡單。不幸的是,如果沒有Metasploit,就不那麼容易了。首先我要說的是,這是一個很大的話題。對於這篇不起眼的文章來說,寫不下,但我會在這裡提供一些入門知識。
首先,如果沒有參考傳說級的“ ofollow,noindex" target="_blank">FuzzySecurity Windows Privilege Escalation ”文章,就不能說Windows 提權是完整的。這篇文非常好地涵蓋了手動Windows 提權的基礎知識!
其次,Windows漏洞利用在Linux系統上進行編譯會很煩人。你可以從Github下載 預編譯的漏洞利用程式 。
再次,同一個repository附帶了很好的資料表,可以幫助你確定最有可能有用的漏洞。 你可以 點選這裡 下載。
捕獲反向shell
好訊息是,這個過程並沒有在OSCP中發生很大變化。主要區別在於無法使用Meterpreter。解決這個問題只需使用普通的反向shell payload。
最後我檢查過,你可以在Metasploit中使用exploit/multi/handler來捕獲shell。這比使用普通的舊netcat listener沒有太大的優勢,因為你無論如何都看不到Meterpreter或Metasploit的其他功能。唯一的例外是如果你使用的exploit payload限制了空間,在這種情況下,你可能需要使用staged payload。
再次提醒:staged payload不適用於netcat!你必須使用Metasploit的exploit/multi/handler模組。
最後,如果你決定使用Netcat方法,只需使用以下語法啟動listener即可。
nc -nvlp [埠號]
*參考來源: medium ,FB小編Covfefe編譯,轉載請註明來自FreeBuf.COM