PDA

Просмотр полной версии : HackTheBox CTF "Monteverde" разбор Active Directory (Уровень: Средний)


QuietMoth1
28.01.2022, 00:39
https://forum.antichat.xyz/attachments/29092814/img_3ab76322c6.png

Приветствую!
Решил начать писать статьи с разборами CTF одной из самых известных площадок информационной безопасности - HackTheBox!

Данные:
Задача: взять права Administrator'а на домене и получить два флага user.txt и root.txt
Основная машина: Kali Linux 2021.3

Первоначальная разведка:
Для начала нам нужно просканировать самые известные порты на удаленной машине, сделаем это с помощью команды:


nmap -sC -sV 10.10.10.172


https://forum.antichat.xyz/attachments/29092814/img_f6945f1873.png

Вывод nmap'а очень полезен для нас, потому что в нём содержится название домена (который nmap нашёл с ldap) - MEGABANK.LOCAL
Теперь нам нужно добавить его в /etc/hosts:


echo "10.10.10.172 MEGABANK.LOCAL" >> /etc/hosts


Видим открытый порт SMB - 445, попробуем провести разведку с помощью утилиты enum4linux:


enum4linux -a 10.10.10.172


Enum4Linux - это отличный инструмент для сбора информации из систем Windows и Samba, который можно использовать практически всегда для пентестов windows!
Для нас открывается большое количество информации по данному хосту, но самой важной деталью здесь являются открытые smb диски (шары), а что ещё лучше список пользователей!

https://forum.antichat.xyz/attachments/29092814/img_e9c3a81cce.png

А вот и все наши пользователи, запишем их в файл и двигаемся дальше)
Для Linux был создан набор классов для работы с сетью под названием - Impacket
С ним мы можем перебрать наш список юзеров для входа без пароля, давайте сделаем это, будем использовать impacket-GetNPUsers:


impacket-GetNPUsers MEGABANK.LOCAL/ -usersfile users.txt


https://forum.antichat.xyz/attachments/29092814/img_84ea941e2d.png

К сожалению модуль не справился и не нашёл пользователей без пароля
Ну ладно не унываем и идём дальше!

Теперь очередь одной из небезызвестных утилит для пентеста Windows это - CrackMapExec!
C её помощью мы попробуем подобрать пароль к одной из полученных нами учетных записей, приступим:


crackmapexec smb -u users.txt -p users.txt --shares 10.10.10.172


В качестве логина и пароля я подставляю файл с именами пользователей - users.txt!
Получаем отличный результат с найденными учетными данными пользователя SABatchJobs:

https://forum.antichat.xyz/attachments/29092814/img_deccde90c1.png

Так как мы нашли данные можем зайти в SMB с помощью той же утилиты Impacket, только уже с модулем impacket-smbclient, я предпочитаю использовать его вместо обычного smbclient:


impacket-smbclient SABatchJobs:SABatchJobs@10.10.10.172


Практически всегда для Impacket и его модулей используется один и тот же синтаксис, поэтому он очень хорошо подходит для быстрой разведки! (Никто же не хочет писать "колбасу")
Итак, первоначальные команды для этого модуля: shares- она покажет все доступные шары:

https://forum.antichat.xyz/attachments/29092814/img_b7b7031328.png

Перейдем теперь в папку users$ и посмотрим её содержимое, выберем её с помощью use:

https://forum.antichat.xyz/attachments/29092814/img_7d4696e6bf.png

Видим список из 4 пользователей, если мы полазим по их папкам командой cd и выводом их содержимого, мы можем наткуться на папку пользователя mhope, именно в ней мы сможем увидеть файлик azure.xml, загрузим его командой get:

https://forum.antichat.xyz/attachments/29092814/img_b0d18a6ee2.png

Теперь посмотрим содержимое нашего файла:

https://forum.antichat.xyz/attachments/29092814/img_38d902682a.png

И о чудо! Мы нашли чей-то пароль, но чей...? Опять воспользуемся CrackMapExec и подберем пароль к его юзеру:


crackmapexec smb -u users.txt -p '4n0therD4y@n0th3r$' --shares 10.10.10.172


https://forum.antichat.xyz/attachments/29092814/img_aa770c12ee.png

Можно было и догадаться... Ну не суть, мы получили пользователя mhope с паролем 4n0therD4y@n0th3r$!
Теперь к ещё одной полезной утилите написанной на Ruby -Evil-WinRM - она позволяет создать shell через протокол WinRM:


./evil-winrm.rb -i 10.10.10.172 -u mhope -p '4n0therD4y@n0th3r$'


https://forum.antichat.xyz/attachments/29092814/img_ad1d9a6632.png

Ура! Мы в системе, но мы ещё не админы, поэтому продолжаем искать
В папке C:\Users\mhope\Desktop\ находим файл user.txt с флагом.

https://forum.antichat.xyz/attachments/29092814/img_770a046ac2.png

Повышение привелегий:
Для начала посмотрим и проведем анализ нашего доступа и пользователя в домене:

whoami /all


https://forum.antichat.xyz/attachments/29092814/img_ed19699bc3.png

Заметим интересную группу MEGABANK\Azure Admins в которой мы состоим, а это значит что мы можем управлять Azure, найдем интересные способы повысить привелегии...
После недолгих поисков скриптов, я наткнулся на Powershell скрипт Azure-ADConnect.ps1 - он подключается к базе данных Azure и выдаёт пароль Администратора
С помощью evil-winrm и его полезного upload - загружаем свой скрипт на тачку в папку C:\Windows\Temp и теперь нам остается загрузить его как модуль powershell, сделаем это командой:


Import-Module .\Azure-ADConnect.ps1


https://forum.antichat.xyz/attachments/29092814/img_0ad5e27810.png

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


Azure-ADConnect -server 10.10.10.172 -db ADSync


https://forum.antichat.xyz/attachments/29092814/1643315011004.png

О да! Мы получили админские учетные данные Теперь зайдем под ними в Evil-WinRM:

https://forum.antichat.xyz/attachments/29092814/img_7e7ef4a1e9.png

Выводы:
Эта CTF дала нам самые базовые понятия пентеста AD (но не всё!), поэтому я очень сильно горю желанием продолжать делать статьи на тему CTF, а может найду ещё что получше... Поэтому надеюсь на вашу поддержку, скоро увидимся

tiolpxe
28.01.2022, 11:15
Интересная статья, понравилось. Делай ещё

QuietMoth1
28.01.2022, 11:18
tiolpxe сказал(а):

Интересная статья, понравилось. Делай ещё


Буду стараться)

Дмитрий Собянин
28.01.2022, 18:54
Но это ведь только для локалки , в которой ты сам и находишься. ???? А есть что интересное для внешних хостов ????

QuietMoth1
28.01.2022, 19:14
Дмитрий Собянин сказал(а):

Но это ведь только для локалки , в которой ты сам и находишься. ???? А есть что интересное для внешних хостов ????


Этот таск и подразумевает только локальную сеть и в портах нет никаких вебсерверов, скоро буду писать новый врайтап по вебу, так что жди

Faust_1st
28.01.2022, 19:41
Проходил этот таск. Будет интересно прочитать новые статьи. Продолжай!

QuietMoth1
28.01.2022, 19:50
Faust_1st сказал(а):

Проходил этот таск. Будет интересно прочитать новые статьи. Продолжай!


Обязательно)

Nikkonofune
28.01.2022, 21:31
погодите, SABatchJobs сходится логин и пароль? вся надежда была только на то, в домене не запрещены пароли равные логину?
Azure-ADConnect.ps1 поисков нашел где? прям на этой же шаре?

DOGhan
28.01.2022, 21:38
Спасибо вам за статью, очень хотелось бы увидеть продолжение.

QuietMoth1
28.01.2022, 21:42
Nikkonofune сказал(а):

погодите, SABatchJobs сходится логин и пароль? вся надежда была только на то, в домене не запрещены пароли равные логину?


Да пароль и логин сходятся, но не вся надежда была на это, можно было бы сделать ещё достаточное количество сканирования и мы бы смогли найти побольше информации о учетках

QuietMoth1
28.01.2022, 21:43
DOGhan сказал(а):

Спасибо вам за статью, очень хотелось бы увидеть продолжение.


Уже пишу))

Nikkonofune
28.01.2022, 21:47
QuietMoth1 сказал(а):

Да пароль и логин сходятся, но не вся надежда была на это, можно было бы сделать ещё достаточное количество сканирования и мы бы смогли найти побольше информации о учетках


а Azure-ADConnect.ps1 где искали и нашли? прям на этой же шаре, которую выше нашли?

QuietMoth1
28.01.2022, 21:51
Nikkonofune сказал(а):

а Azure-ADConnect.ps1 где искали и нашли? прям на этой же шаре, которую выше нашли?


В гугле, простой запрос "azure priv esc powershell" выдаст вам ссылку на github, где есть инструкция к данному скрипту

Mike123321
29.01.2022, 12:04
Спасибо!

d3f0lt
29.01.2022, 13:03
Отличный врайтап, пиши еще!

QuietMoth1
29.01.2022, 13:16
d3f0lt сказал(а):

Отличный врайтап, пиши еще!


Уже написал

nks1ck
29.01.2022, 21:07
QuietMoth1 сказал(а):

С ним мы можем перебрать наш список юзеров для входа без пароля, давайте сделаем это, будем использовать impacket-GetNPUsers:



Что? Какой вход без пароля? Тут лишь абуз фичи don't req kerberos pre-authentication. Прочитай про ASREPRoasting.