Try   HackMD

MSK Department

Enumeration

Сканируем сеть и ищем рабочие хосты:

nmap -sn --min-parallelism 300 --min-rate 200 10.10.0.0/16 

Server Front (10.10.1.100)

В результате сканирования замечаем подозрительный HTTP-порт 80/tcp на узле 10.10.1.100. На данном узле обнаруживается кастомный сервис для хранения файлов.

Поле, принимающее путь в сети интернет до файла, уязвимо для SSRF.

Так как мы находимся в одной сети с HTTP-приложением, имеется возможность "попросить" приложение пройти NTLM-авторизацию.

Хорошо, к нам пришёл NetNTLMv2-хеш машинной учетной записи. Сделать downgrade-атаку не удаётся, провести brute-force атаку на хеш машинной учетной записи невозможно, поэтому пробуем Relay-атаку с последующей эксплуатацией Resource Based Constrained Delegation (RBCD) на узле Front. Для эксплуатации RBCD нужно иметь свою машинную учетную запись в домене, поэтому первым шагом добавим её в домен с помощью Relay-атаки.
Запускаем инструмент ntlmrelayx и вынуждаем приложение обратиться к нам по протоколу HTTP.

Теперь у нас есть своя машина в домене - "test$".
Далее проведем эксплуатацию RBCD с использованием машины "test$".

Теперь от машины "test" мы можем запросить TGS-билет для узла Front от пользователя "Administrator" через механизмы S4U2Self и S4U2Proxy.

Далее загружаем в переменную KRB5CCNAME полученный билет и извлекаем NTLM-хеш пароля машинной учетной записи на узле Front.

Мы захватили сервер Front, можем читать флаг.

Server FileSRV (10.10.1.101)

Используя учетную запись в домене, проводим сбор информации. С помощью скрипта findDelegation.py из Impacket обнаруживаем, что с сервера Front на сервер FileSRV задана ограниченная Kerberos-делегация (any auth).

Имея доступ к NTLM-хешу машинной учетной записи сервера Front можно сразу выписать TGS-билет на сервер FileSRV от пользователя "Admiinistrator" через механизмы S4U2Self/S4U2Proxy.

Далее используем полученный билет для доступа на сервер FileSRV, меняем пароль локального администратора и получаем доступ к хранилищу LSA на сервере FileSRV.


Мы захватили сервер Front, можем читать флаг.

Server DC01 (10.10.1.10)

Захватывать контроллер домена мы будем через эксплуатацию Unconstrained Kerberos Delegation. Информацию о Unconstrained delegation мы получили, когда запускали скрипт findDelegation.py из Impacket.
Для эксплуатации воспользуемся набором инструментов исследователя Dirk-jan - https://github.com/dirkjanm/krbrelayx.
Первым шагом нам необходимо добавить DNS-запись в домен, которая позволит определить наш ip-адрес (resolve), так как Kerberos работает только через имена, с ip-адресами Kerberos не работает.

Затем зарегистрируем на машину с Unconstrained Delegation SPN, ссылающийся на наш хост.

Теперь при обращении на bsc.bank.msk любой в домене будет обращаться на наш хост. Более того, при получении TGS-билета для любой SPN на bsc.bank.msk, в TGS-билет, зашифрованный на ключе AES256 машинной учетной записи FileSRV, будет упакован TGT-билет клиента. Таким образом, у нас все готово для атаки и теперь нужно вынудить DC обратиться по SMB к нам и извлечь из TGS TGT-билет контроллера домена.
Запускаем krbrelayx с ключем AES256 машинной учетной записи FileSRV.

И с помощью инструмента printerbug просим DC обратиться к нам.

Теперь мы получили TGT-билет контроллера домена и можем сделать атаку DcSync.

С полученной учетной записи администратора заходим на контроллер домена и забираем последний флаг.