• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Kerberoasting - используем Kerbros для взлома Microsoft Active Directory

Azrv3l

win32kfull
Эксперт
Регистрация
30.03.2019
Сообщения
215
Реакции
539
Вступление:
kerberos-logo.jpg


В среде Microsoft Active Directory (AD), пентестеры имеют в своём распоряжении множество типов атак. Из примеров это:
  • Relaying аутентификации
  • Подбор хэшей паролей
  • Эксплуатация уязвимых служб.
В среде AD, контроллер домена(DC) управляя доменом, выдвигает набор требований в отнашении таких вещей, как надёжность пароля, выполнение программ и доступ к общим файлам.
Аутентификация и авторизация контролируется DC, силами протокола Kerberos. Этот протокол был разработан в MIT. Начиная с Wundows 2000,
Microsoft адоптировала и реализовала его для использования в среде Active Directory. Это сложный протокол, который использует криптографические подписи,
надежное шифрование, односторонние хеш-функции и доверительные отношения. Вследствии сложности протокола, надёжно реализовать его стало трудной задачей.

В этом посте мы подробно рассмотрим и разберём несколько типов атак, которые злоумышленник может провести в отнашении протокола Kerberos,
известных под названием Kerberoasting - термин в первые был использован Tim Medin* из SANS institute.

*Не стал переводить имена, так как за правильность транскибирования не ручаюсь

Немного о Kerberos:
Поскольку Kerberos - сложный протокол, важно получить хорошее представление о том, как он работает, прежде чем описывать его слабые места.
Прежде чем вдаваться в подробности, приведу реальный пример:

Рассмотрим, например, процесс бронирования рейса. Вы создаете учетную запись на веб-сайте и входите в систему.
Затем вы оплачиваете билеты, получаете посадочный талон и, наконец, идете к выходу и предъявляете посадочный талон.

Используя приведенный выше сценарий, мы проиллюстрируем доступ к службе в среде Active Directory, в нашем случаи это база данных SQL Server.

Kerberos - это протокол, который управляет процессом аутентификации. Допустим, вы хотите получить доступ к определенной записи в базе данных SQL Server.
Процесс аутентификации для этого сценария выглядит следующим образом (см. Схематический обзор ниже). Первым шагом (1) является аутентификация в Службе аутентификации (AS) в Центре распространения ключей (KDC),
доказывая, что вы знаете общий секрет, то есть хэш пароля пользователя (эквивалент создания учетной записи на веб-сайте билета) . Это делается путем шифрования метки времени с помощью хэша вашего пароля.
Если хэш пароля правильный, часть службы аутентификации (AS) KDC сможет расшифровать и проверить полученную метку времени. KDC впоследствии предоставит вам билет (так называемый билет для предоставления билета),
зашифрованный с помощью хэша пароля учетной записи krbtgt, который позволяет вам запросить другой билет (2) (эквивалент входа на веб-сайт билета). С помощью этого TGT вы возвращаетесь в KDC и указываете услугу,
к которой хотите получить доступ (3) (эквивалентно бронированию рейса). KDC проверяет, может ли он расшифровать билет с помощью учетной записи krbtgt и что он правильный. Затем KDC ищет учетную запись службы, соответствующую запрошенной службе.
С помощью этой учетной записи службы создается билет, который должен предоставлять доступ к службе (так называемая служба предоставления билетов). Этот билет зашифрован с использованием хэша пароля для учетной записи службы (4)
(эквивалентно получению посадочного талона по электронной почте). Теперь вы можете представить TGS серверу SQL, который должен иметь возможность его расшифровать и проверить, поскольку он знает свой собственный хэш пароля (5)
(эквивалентно отправке посадочного талона на выходе). После того, как SQL Server расшифровывает TGS и проверяет его, он предоставит вам доступ, и вы сможете прочитать запрошенную запись из базы данных (6)
(что эквивалентно предоставлению доступа к самолету).

Обратите внимание, что фактическая авторизация выполняется службой, а не KDC!
KDC просто проверяет, что пользователь зарегистрирован в домене (т.е выполняет аутентификацию).

kerberos.png

Схематический обзор

Классический Kerberoasting
Kerberoasting
- это техника, целью в которой становятся учетные записи служб, а именно и их пароли.

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

Атака Kerberoasting выполняется следующим образом:
  1. Определение учетных записей домена с установленным SPN
  2. Отфильтровать любые учетные записи компьютеров, для которых есть сгенерированные компьютером пароли
  3. Запросить сервисные билеты для не отсеяных учетных записей
  4. Выгрузить билеты служб на диск, с использованием Mimikatz
  5. Взломать полученые хэши, чем душа пожелает
Создание SPN'ов для Kerberoasting
Вариант классической атаки Kerberoasting - особый случай. Если злоумышленник с учетной записью пользователя домена может манипулировать свойствами учетной записи другого пользователя домена,
то это можно использовать для принудительной установки имени участника-службы и запроса билета, зашифрованного с помощью NTLM-хэша целевого пользователя. Чтобы иметь возможность выполнить такое действие,
необходимо предоставить разрешения GenericAll или GenericWrite учетной записи злоумышленника, так что по умолчанию такое не исполнить.

SPN, установленный злоумышленником, может быть произвольным; он не обязательно должен существовать в домене, если он соответствует правильному формату (служба / хост).
Как только учетная запись или группа установят свое имя участника-службы, можно запросить, извлечь и взломать билет так же, как показано для классической Kerberoasting.

Примеры:
За прошедшие годы было разработано множество программных решений, которые помогают злоумышленнику в выполнении Kerberoasting.
В следующих разделах показаны некоторые примеры:

Classic
Оригинальный метод, открытый Tim Medin, был несколько сложнее. Он использовал собственное программное обеспечение Windows, такое как setspn.exe и klist.exe, для определения имен участников-служб и запросов билетов соответственно.
Кроме того, Mimikatz должен был вырезать билеты из памяти, прежде чем хэш можно будет взломать. Наконец, программы для взлома хэшей, такие как Hashcat и John the Ripper, еще не поддерживали этот формат,
то есть взлом выполнялся с помощью (медленного) скрипта Python. Ниже приведены инструкции, необходимые для успешного взлома пароля учетной записи службы.

Используя setspn.exe, можно искать в домене и / или лесу учетные записи, для которых настроено имя SPN.

setspn.png


Этот запрос дает несколько результатов, из которых dbadmin является наиболее многообещающим. Используя klist.exe, у KDC запрашивается сервисный билет (TGS).

klist.png


Этот TGS теперь хранится в памяти. Чтобы взломать NTLM-хэш учетной записи dbadmin, необходимо выполнить еще один шаг.
Используя Mimikatz, билет можно вырезать из памяти и записать на диск.

dump-tickets.png


Mimikatz записывает билет в файл * .kirbi, из которого можно взломать хэш. Взлом осуществляется с помощью tgsrepcrack.py, сценария, написанного Tim Medin для демонстрации атаки во время его выступления на DerbyCon 2014.

tgsrepcrack.png


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

PowerView:
PowerView - это модуль разведки, который поставляется с PowerSploit. Это набор методов PowerShell, .NET и WMI, которые позволяют легко искать информацию в домене.
Кроме того, появилась возможность выполнять Kerberoasting с помощью метода PowerShell Invoke-Kerberoast.
Этот метод был разработан на основе работы Matan Hart (@machosec) и позволяет злоумышленнику вырезать билет Kerberos из памяти из PowerShell.
Следовательно, больше нет необходимости использовать Mimikatz, что снижает вероятость детекта.

invoke-kerberoast.png


Выше приведен снимок экрана с использованием PowerView для получения хэша билета службы для экземпляра Windows SQL Server в домене.
Этот хеш впоследствии можно будет взломать (в автономном режиме) с помощью Hashcat.

crack-ticket.png


Rubeus:
Rubeus
- это набор инструментов С# для непосредственного взаимодействия с Kerberos и экплуотации. Он в значительной степени адаптирован из
проекта Benjamin Delpy (@gentilkiwi) Kekeo и проекта Vincent Le Toux (@mysmartlogon) MakeMeEnterpriseAdmin.

Несмотря на то, что он написан на C# вместо PowerShell, Rubeus в равной степени способен выполнять Kerberoasting и может делать гораздо больше вещей,
по отношению к Kerberos, например, подделывать билеты.

rubeus-kerberoast.png


Так же, как PowerView, Rubeus также распечатывает хэш для служебных билетов, позволяя (в автономном режиме) взломать соответствующий пароль пользователя.

AS-REP Roasting
Технология, которая не была открыта до недавнего времени, называется AS-REP Roasting. Этот метод аналогичен по своей природе Kerberoasting, но вместо атаки на TGS он нацелен на TGT, предоставляемый KDC.
Эта атака редко бывает полезной на практике, поскольку требует, чтобы администраторы домена отключили предварительную аутентификацию Kerberos для учетных записей - параметр, который включен по умолчанию.
Однако есть некоторые крайние случаи, например, некоторые старые версии программного обеспечения Cisco VPN, которые иначе не могут интегрироваться с Kerberos.
Другой случай - когда у вас есть привилегии GenericWrite / GenericAll над целевым пользователем, аналогичные настройке SPN вручную.
Это позволяет принудительно отключить предварительную аутентификацию Kerberos для этого конкретного пользователя.

Однако, если вы встретите такого пользователя, вы можете использовать AS-REP Roasting для получения TGT от имени целевого пользователя. Поскольку часть TGT всегда зашифрована с использованием хэша пароля пользователя,
можно взломать билет и получить пароль для целевой учетной записи, аналогично оригинальной методике Kerberoasting.

Обратите внимание, что этот метод очень похож на первоначальную установку SPN для целевой учетной записи: оба требуют, чтобы вы могли изменять свойства своей целевой учетной записи.
Разница заключается в типе целевого сообщения Kerberos.

В настоящее время PowerView не имеет возможности выполнять AS-REP Roasting, но Rubeus имеет.
rubeus-asreproast.png


После получения хеша его снова можно взломать в автономном режиме с помощью Hashcat. Обратите внимание, что это немного другой тип хеша.

asreproasting.png


Таким образом, можно взломать пароль, принадлежащий учетной записи домена, не имея доступа к учетной записи домена самостоятельно. Обратите внимание,
что этот сценарий не очень распространен и в основном используется для некоторого программного обеспечения VPN, у которого возникают проблемы с интеграцией с AD.

Детект:
Обнаружить этот тип атак может быть очень сложно. Основная причина этого заключается в том, что запрос билетов от контроллера домена для проверки подлинности сам по себе считается легитимным трафиком:
это то, что должен делать пользователь домена для выполнения задач, связанных с учетными записями служб. Однако его можно обнаружить, если злоумышленник не будет осторожен и запросит сразу большое количество билетов.
Обычно вам нужно включить аудит операций билета службы Kerberos, чтобы регистрировать запросы билетов службы Kerberos TGS. В частности, исследуйте нерегулярные модели активности
(например, учетные записи, отправляющие многочисленные запросы, событие с кодом 4769, в течение короткого периода времени, особенно если они также запрашивают шифрование RC4.
Дополнительно исследуйте события 4738 и 5136 на предмет аномалий, связанных с использованием AS-REP Roasting.

Rubeus
Как уже было продемонстрировано, Rubeus можно использовать для различных атак Kerberos. Rubeus также принимает во внимание OPSEC, что означает ряд настроек, которые можно включить.
Например, используя исследование Benjamin Delpy , Rubeus может запрашивать только билеты RC4 Kerberos, в то же время предотвращая кеширование этих билетов на хосте, контролируемом злоумышленником.
Для получения дополнительной информации о соображениях OPSEC см. Презентацию Will Schroeder (@harmjoy) на DerbyCon 2019.

Обнаружение & Предотвращение
Обнаружение атак Kerberoasting внутри вашей корпоративной сети лучше всего выполняется с помощью программного обеспечения EDR, которое ищет выпуск билетов Kerberos,
зашифрованных с помощью RC4, то есть хэшей NTLM. Кроме того, важно отслеживать большие объемы билетов, запрашиваемых за относительно короткий период времени.
Подобные аномалии могут указывать на то, что злоумышленник запрашивает билеты для всех имен SPN в вашей корпоративной сети.
Наконец, Kerberoasting может быть обнаружен путем поиска систем, которые имеют необычно большое количество билетов Kerberos,
хранящихся в памяти (хотя мы видели, что некоторые инструменты также учитывают это).

Предотвращение Kerberoasting - это легкий шаг к повышению безопасности корпоративной сети.
Например, MITRE ATT&CK framework показывает, что для этого можно использовать три основных метода:
  • Лучше шифрование
  • Сложные пароли
  • Снижение привелегий
Шифруйте конфиденциальную информацию:
По возможности включите шифрование AES Kerberos (или другой более надежный алгоритм шифрования) вместо RC4.
AES используется по умолчанию, начиная с домена 2008 и более поздних версий.

Политика паролей:
Обеспечьте надежную длину пароля (в идеале 25+ символов) и сложность для учетных записей служб,
а также периодический срок действия этих паролей.

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

Управление учётными записями:
Ограничьте учетные записи служб минимальными необходимыми привилегиями, включая членство в привилегированных группах,
таких как администраторы домена.

Литература:
Kerberoasting - это лишь одна из многих атак на протокол Kerberos. К другим относятся Golden Tickets, Silver Tickets, брут Kerberos и Over Pass the Hash.
Все это нацелено на неотъемлемые недостатки конструкции протокола. Для получения дополнительной информации обратитесь к MITRE's ATT&CK matrix.

Примечание переводчика:
Оригинал вот.
Это мой первый перевод для xss. Не судите строго.
Спасибо p2d за наводку на материал.

Jeleshka
@Cпециально для xss.pro
 

Вложения

  • invoke-kerberoast.png
    invoke-kerberoast.png
    17.7 КБ · Просмотры: 16


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх