CTF HackTheBox CTF "Monteverde" разбор Active Directory (Уровень: Средний)

IMG_20220128_143100_362.jpg

Приветствую!

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

Данные:

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

Первоначальная разведка:

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

nmap -sC -sV 10.10.10.172

nmap1.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 диски (шары), а что ещё лучше список пользователей!;)

ENUM4LINUX.png


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

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

impacket.png


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

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

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

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

crackmap.png


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

impacket-smbclient SABatchJobs:SABatchJobs@10.10.10.172

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

smbclient.png


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

impacket1.png


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

smbclient1.png


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

azure12.png


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

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

crackmap2.png


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

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

evilwinrm.png


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

evilwinrm2.png

Повышение привелегий:

Для начала посмотрим и проведем анализ нашего доступа и пользователя в домене:
whoami /all

privesc.png


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

Import-Module .\Azure-ADConnect.ps1

evilwinrm3.png


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

Azure-ADConnect -server 10.10.10.172 -db ADSync

1643315011004.png


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

admin.png



Выводы:

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

QuietMoth1

Red Team
18.10.2020
43
150
BIT
12
Но это ведь только для локалки , в которой ты сам и находишься. ???? А есть что интересное для внешних хостов ????
Этот таск и подразумевает только локальную сеть и в портах нет никаких вебсерверов, скоро буду писать новый врайтап по вебу, так что жди😁
 

Faust_1st

Green Team
16.06.2020
23
16
BIT
22
Проходил этот таск. Будет интересно прочитать новые статьи. Продолжай!
 
  • Нравится
Реакции: QuietMoth1

Nikkonofune

One Level
28.01.2022
2
2
BIT
0
погодите, SABatchJobs сходится логин и пароль? вся надежда была только на то, в домене не запрещены пароли равные логину?
Azure-ADConnect.ps1 поисков нашел где? прям на этой же шаре?
 
Последнее редактирование:
  • Нравится
Реакции: QuietMoth1

DOGhan

Green Team
29.12.2021
1
1
BIT
0
Спасибо вам за статью, очень хотелось бы увидеть продолжение.
 
  • Нравится
Реакции: QuietMoth1

QuietMoth1

Red Team
18.10.2020
43
150
BIT
12
погодите, SABatchJobs сходится логин и пароль? вся надежда была только на то, в домене не запрещены пароли равные логину?
Да пароль и логин сходятся, но не вся надежда была на это, можно было бы сделать ещё достаточное количество сканирования и мы бы смогли найти побольше информации о учетках
 

Nikkonofune

One Level
28.01.2022
2
2
BIT
0
Да пароль и логин сходятся, но не вся надежда была на это, можно было бы сделать ещё достаточное количество сканирования и мы бы смогли найти побольше информации о учетках
а Azure-ADConnect.ps1 где искали и нашли? прям на этой же шаре, которую выше нашли?
 
  • Нравится
Реакции: QuietMoth1

nks1ck

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!