В этой статье пойдет речь о Domain Escalation. Неограниченное делегирование – это определенная привилегия в домене, которая может быть предоставлена учетным записям компьютеров или пользователей.
Введение
После выхода Windows 2000 Microsoft в новых версиях своей ОС представила опцию, с помощью которой можно было проходить проверку подлинности учетной записи на сервисе в сети от имени другого аккаунта. Это стало возможным благодаря делегированию. Неограниченное делегирование возможно при использовании метода TGT (англ. «ticket granting ticket» — мандата для получения мандата).
Делегирование Kerberos
Делегирование Kerberos позволяет сервису выдавать себя за компьютер или пользователя, чтобы взаимодействовать с другим сервисом, используя имеющиеся привилегии и разрешения пользователя.
Классический пример того, когда делегирование крайне необходимо, связан с аутентификацией на веб-сервере с использованием Kerberos или других протоколов. Сервер зачастую предпочитает взаимодействовать с бэкэндом SQL или файловым сервером.
Виды делегирования Kerberos:
- Неограниченное делегирование
- Ограниченное делегирование
- Ограниченное делегирование на основе ресурсов (RBCD)
Уникальный идентификатор экземпляра сервиса (SPN)
Уникальное имя (идентификатор) экземпляра сервиса используется при проверке подлинности Kerberos для его связи с учетной записью входа в службу. Это позволяет клиентскому приложению запрашивать у сервиса аутентификацию учетной записи, даже если у клиента нет учетной записи.
Неограниченное делегирование
Первоначально эта функция появилась в Windows Server 2000, но она все еще доступна для обеспечения обратной совместимости. По сути, если пользователь запрашивает служебный билет на сервере, где разрешено неограниченное делегирование, сервер извлекает TGT пользователя и кэширует его в своей памяти для последующего использования. Это означает, что сервер может притворяться этим пользователем для любого ресурса в домене.
В учетной записи компьютера администратор может настроить следующий параметр для получения неограниченного делегирования.
- Пользователи и компьютеры Active Directory -> Компьютеры -> Доверять этому компьютеру делегирование служб (только Kerberos)
Ключевыми особенностями неограниченного делегирования являются:
- Обычно привилегия предоставляется компьютерам, на которых запущены такие службы, как IIS и MSSQL, поскольку этим компьютерам требуется некоторое серверное подключение к другим ресурсам.
- Получив право на делегирование, компьютер запрашивает TGT пользователя и сохраняет его в своей кэш-памяти.
- С помощью TGT компьютер может получать доступ к внутренним ресурсам от имени прошедшего проверку пользователя.
- Суть в том, что сами системы также могут запрашивать доступ к любому ресурсу в домене, используя TGT.
Хакер может злоупотреблять неограниченным делегированием, запрашивая TGS для доменных служб, используя делегированный пользователем TGT.
Получение TGT с помощью неограниченного делегирования
Нужно провести атаку на компьютер, где включено делегирование. Таким образом, предполагается, что хакер уже успел скомпрометировать его.
Идеальные условия:
- Злоумышленник скомпрометировал систему DC1$, где запущена IIS с проверкой подлинности Kerberos.
- Злоумышленник имеет доступ к системе, подключенной к домену (в данном случае, есть окно PowerShell, запущенное в ОС).
- Пользователь является администратором системы.
На деле у хакера может и не быть прямого доступа к системе DC. Для демонстрации практической части была запущена IIS на DC.
Перед получением TGT нужно изучить системы, где включено неограниченное делегирование. Это можно сделать с помощью PowerShell и модуля AD.
Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties trustedfordelegation,serviceprincipalname,description
Помимо этого, можно использовать скрипт Powerview, который является частью фреймворка PowerSploit, созданного для обеспечения безопасности с применением PowerShell. Скрипт доступен по ссылке.
После компрометации системы AD пользователь может установить и использовать Powerview.
Import-Module .\powerview.ps1
Get-NetComputer -Unconstrained
Теперь в целевой системе нужно запустить Rubeus в режиме мониторинга. После этого всякий раз, когда пользователь подключается или аутентифицируется в DC1$, Rubeus будет сбрасывать TGT пользователя.
rubeus.exe monitor /monitorinterval:10 /targetuser:dc1$ /nowrap
Нужно дождаться, когда привилегированные пользователи подключатся к DC1$, и служба IIS будет активной. В данном практическом примере это было сделано вручную, использовался модуль IWR.
Invoke-WebRequest http://dc1.offense.local -UseDefaultCredentials -UseBasicParsing
Как можно увидеть на картинке выше, Rubeus захватил новый мандат для получения мандата (TGT) от пользователя IGNITE\Administrator.
Хакер может использовать этот TGT для получения доступа к любому ресурсу, запросив TGS. Для выполнения данной цели часто применяется Rubeus asktgs.
Заключение
В статье продемонстрирован метод неограниченного делегирования. Как и следует из названия, нет никаких ограничений на то, как система, имеющая права делегирования, использует аутентификационные данные пользователя. Лазейки в системе безопасности заставили Microsoft добавить ограниченное делегирование.
Автор переведенной статьи: Harshit Rajpal.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.
Больше интересного материала на cisoclub.ru. Подписывайтесь на нас: VK | Twitter | Telegram | Дзен | Мессенджер | ICQ New | YouTube | Rutube | Now | Пульс.