Понимание и использование поэтапных и бесподготовительных полезных нагрузок в Metasploit

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

Введение

В мире тестирования на проникновение с использованием Metasploit Framework, полезная нагрузка (payload) — это код, который выполняется на целевой системе после успешной эксплуатации уязвимости. Понимание различных типов полезных нагрузок имеет решающее значение для успешного проведения тестирования. Две основные категории полезных нагрузок — это "staged" (поэтапные) и "stageless" (беспоэтапные).

Поэтапная полезная нагрузка отправляется в две части: небольшая начальная "stager" (загрузчик) и более крупная, финальная "stage" (этап). Задача загрузчика — установить соединение с машиной атакующего, а затем загрузить остальную часть полезной нагрузки. Беспоэтапная полезная нагрузка, напротив, представляет собой единый, самодостаточный пакет, который включает весь необходимый код для выполнения на цели.

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

Выбор эксплойта и поэтапной полезной нагрузки, такой как windows/meterpreter/reverse_tcp

На этом шаге вы запустите консоль Metasploit Framework и выберете универсальный обработчик эксплойтов. Затем вы настроите его для использования распространенной поэтапной полезной нагрузки. Мы используем модуль exploit/multi/handler, потому что это универсальный слушатель, идеально подходящий для демонстрации полезных нагрузок без необходимости наличия конкретной уязвимой цели.

Сначала откройте терминал и запустите консоль Metasploit. Мы будем использовать флаг -q (quiet) для пропуска стартового баннера.

msfconsole -q

Как только вы увидите приглашение Metasploit (msf6 >), вам нужно будет выбрать обработчик эксплойтов.

use exploit/multi/handler

Далее, давайте установим полезную нагрузку. Имя поэтапной полезной нагрузки обычно имеет формат platform/stage/stager. Например, windows/meterpreter/reverse_tcp означает, что платформа — Windows, финальная полезная нагрузка (stage) — Meterpreter, а начальный метод соединения (stager) — reverse TCP shell.

Установите поэтапную полезную нагрузку следующей командой:

set payload windows/meterpreter/reverse_tcp

Вы увидите подтверждающее сообщение payload => windows/meterpreter/reverse_tcp. Чтобы убедиться, вы можете просмотреть текущую конфигурацию.

show options

Вы увидите полезную нагрузку в списке опций. Нам не нужно устанавливать LHOST или LPORT, потому что мы на самом деле не запускаем эксплойт; мы просто изучаем свойства полезной нагрузки.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Наблюдение за малым размером поэтапной полезной нагрузки

На этом шаге вы используете команду info для проверки деталей выбранной вами поэтапной полезной нагрузки. Самая важная деталь, на которую стоит обратить внимание, — это ее размер.

Находясь все еще в консоли Metasploit с выбранной полезной нагрузкой windows/meterpreter/reverse_tcp, введите команду info:

info

Metasploit отобразит подробную информацию о полезной нагрузке, включая ее название, платформу, архитектуру и размер. Прокрутите вывод и найдите строку "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Stager
     Module: payload/windows/meterpreter/reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 354
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (staged).
  Listen for a connection from the stager and send the second stage.

Обратите внимание, что Total size (общий размер) очень мал (например, 354 байта). Это ключевая характеристика поэтапной полезной нагрузки. Этот небольшой фрагмент кода, загрузчик (stager), предназначен только для установления обратного соединения с вашей машиной и загрузки гораздо более крупного этапа Meterpreter. Этот малый размер делает его идеальным для соответствия жестким ограничениям памяти определенных эксплойтов.

Выбор того же эксплойта и бесподготовительной полезной нагрузки, такой как windows/meterpreter_reverse_tcp

Теперь давайте переключимся на бесподготовительную полезную нагрузку, чтобы увидеть разницу. Имя бесподготовительной полезной нагрузки обычно имеет формат platform/payload_type, используя подчеркивание _ вместо второго слеша /. Это соглашение об именовании помогает быстро их идентифицировать.

В той же сессии msfconsole снова используйте команду set payload, но на этот раз для бесподготовительной версии: windows/meterpreter_reverse_tcp.

set payload windows/meterpreter_reverse_tcp

Вы увидите подтверждение payload => windows/meterpreter_reverse_tcp. Обратите внимание на подчеркивание в имени. Эта единая полезная нагрузка содержит полный сервер Meterpreter и логику соединения в одном пакете.

Давайте снова проверим опции, чтобы подтвердить изменение.

show options

Вывод теперь будет отражать недавно выбранную бесподготовительную полезную нагрузку.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter_reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port

...

Теперь вы успешно переключились с поэтапной на бесподготовительную полезную нагрузку.

Наблюдение за большим размером бесподготовительной полезной нагрузки

На этом шаге вы проверите выбранную вами бесподготовительную полезную нагрузку и сравните ее размер с поэтапной полезной нагрузкой из Шага 2.

Как и прежде, используйте команду info для получения сведений о текущей полезной нагрузке.

info

Изучите вывод и найдите строку "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Inline
     Module: payload/windows/meterpreter_reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 999335
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (inline).
  This payload is a single executable and does not need to download a
  second stage.

Как вы можете видеть, Total size (общий размер) значительно больше (например, 999335 байт или почти 1 МБ) по сравнению с размером поэтапной полезной нагрузки в несколько сотен байт. Это связано с тем, что бесподготовительная полезная нагрузка содержит всю функциональность Meterpreter. Ей не нужно ничего загружать после выполнения.

Теперь, когда вы увидели основное различие, вы можете выйти из консоли Metasploit.

exit

Обсуждение преимуществ и недостатков каждого типа полезной нагрузки

На этом заключительном этапе мы обобщим преимущества и недостатки как поэтапных, так и бесподготовительных полезных нагрузок. Понимание этих компромиссов является ключом к выбору правильного инструмента для конкретного сценария. На этом этапе нет команд для выполнения; он предназначен для концептуального понимания.

Поэтапные полезные нагрузки (например, windows/meterpreter/reverse_tcp)

Преимущества:

  • Малый размер: Начальный загрузчик (stager) очень мал. Это значительное преимущество, когда эксплойт имеет очень ограниченный размер буфера или объем памяти для полезной нагрузки.
  • Скрытность (начальный этап): Малый загрузчик с меньшей вероятностью будет обнаружен простыми антивирусными решениями на основе сигнатур по сравнению с большой, многофункциональной полезной нагрузкой.

Недостатки:

  • Множественные соединения: Требуется второе соединение для загрузки основной части. Это создает больший сетевой трафик и предоставляет дополнительную возможность для межсетевых экранов, систем обнаружения вторжений (IDS) или сетевых администраторов обнаружить и заблокировать атаку.
  • Меньшая стабильность: Соединение может быть хрупким. Если соединение прервется во время загрузки второй части, эксплойт завершится неудачно.
  • Проблемы с обратным вызовом (callback): Целевая машина должна иметь возможность связаться с машиной атакующего по сети для загрузки части, что может быть проблемой в сильно ограниченных сетях.

Бесподготовительные полезные нагрузки (например, windows/meterpreter_reverse_tcp)

Преимущества:

  • Надежность и стабильность: Поскольку все находится в одном пакете, полезная нагрузка более самодостаточна и стабильна. Ей нужно установить только одно соединение, и после запуска она не зависит от загрузки дополнительных компонентов.
  • Работает в ограниченных средах: После доставки полезной нагрузки на цель она может быть выполнена без необходимости загрузки чего-либо еще, что полезно, если цель имеет ограниченный или отсутствующий исходящий доступ в Интернет.

Недостатки:

  • Большой размер: Их большой размер является их главным недостатком. Они могут не поместиться в допустимый размер памяти многих эксплойтов, что делает их непригодными в таких случаях.
  • Легче обнаружить: Большой, единый исполняемый файл часто легче анализировать антивирусным и системам безопасности и помечать как вредоносный на основе его размера и сигнатур.

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

Резюме

В этой лабораторной работе вы изучили фундаментальное различие между поэтапными и бесподготовительными полезными нагрузками в рамках Metasploit Framework.

Вы начали с запуска msfconsole и выбора поэтапной полезной нагрузки windows/meterpreter/reverse_tcp. Вы отметили ее очень малый размер, который предназначен для легкого загрузчика (stager). Затем вы переключились на ее бесподготовительный аналог windows/meterpreter_reverse_tcp и отметили ее значительно больший размер, поскольку она содержит всю полезную нагрузку в одном пакете.

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