Разбираем атаки на Kerberos с помощью Rubeus. Часть 2

auzu5ftics2dqztbmgob5xcrvfm.png

Всем привет!

Это вторая часть статьи про возможности инструмента проведения атак на протокол Kerberos — Rubeus. Первую можно прочитать тут. В этот раз мы рассмотрим, как с помощью данного инструмента возможно реализовать следующие атаки: 


— Overpass The Hash/Pass The Key (PTK);
— Pass The Ticket;
— Unconstrained Delegation;
— Constrained Delegation.

О том, почему возможны эти атаки, какие механизмы их реализации существуют, какой принцип лежит в основе работы Kerberos, написано уже много (например, коллеги из Инфосистемы Джет опубликовали хорошую статью с разбором), поэтому в своем материале я сделаю упор на реализацию атак с помощью Rubeus.

Помимо «экшенов» для проведения атак и взаимодействия с Kerberos, в Rubeus есть небольшая приятная мелочь: на основании пароля в открытом виде он может посчитать NTLM хэш, что иногда бывает очень удобно и полезно.

chkgrzp39w9n9crzqrogziblktu.jpeg

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

Overpass The Hash/Pass The Key (PTK)


Материал из Википедии — свободной энциклопедии

Атака Pass-the-hash — один из видов атаки повторного воспроизведения. Она позволяет атакующему авторизоваться на удалённом сервере, аутентификация на котором осуществляется с использованием протокола NTLM или LM.


Но что делать, если в сети отключена аутентификация по протоколам NTLM или LM и используется только аутентификация Kerberos, а у вас есть хэш пароля? Здесь в игру вступает Overpass-the-hash — с помощью имеющегося хэша пароля пользователя Rubeus может запросить билет TGT для данной учетной записи.

Вот доменный пользователь Barsik решил изучить вопросы информационной безопасности, где-то раздобыл хэш пароля администратора домена ADadmin, скачал Rubeus, прочитал умных статей и пробует применить это на практике.

nrhyruvkvj2ysnoyqmg2y-38p-8.jpeg

Видим, что кэшированных билетов у него нет, как и нет доступа к контроллеру домена DC-16.meow.local, но дальше Barsik запускает Rubeus с «экшеном» asktgt и аргументами /domain, /user, /rc4, /ptt, чтобы на основании имеющегося хэша пароля учетной записи ADadmin получить валидный TGT билет, аргумент /ptt сразу подгрузит полученный билет в текущую сессию пользователя Barsik.

u1q-ybulumwetfyci6xxcynm094.jpeg

Билет получен и загружен, Barsik пробует ещё раз авторизоваться на контроллере домена как Adadmin.

t6-oudjllveytteq5rhnz3wqmpw.jpeg

И на этот раз у него это успешно получается.

Pass The Ticket (PTT)


Данная атака похожа на Overpass-the-hash/Pass-the-key, атакующий старается получить билет доменного пользователя (желательно имеющего максимальные привилегии в домене) и загрузить его в текущую сессию. Один из способов получения TGT билетов — дамп билетов локально на текущей доменной машине из процесса lsass.exe (Local Security Authentication Server). Чтобы это сделать, необходимо иметь привилегии локального администратора, а лучше NT AUTHORITY/SYSTEM. Rubeus может выгрузить билеты, хранящиеся в lsass, с помощью «экшена» dump, а «экшен» triage покажет, какие билеты хранятся в системе на данный момент.

vclf0nmiruy1leqh8yxumriejyu.jpeg

kf0hwm6p_ik77r5k8-7imjbfpvm.jpeg

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

hnr_p_dxmg03oqwj2h0zb3e-u5q.jpeg

Сохраним и импортируем билет в текущую сессию пользователя.

dfhgwm9lqfnus0kvrmyzkp_4yyk.jpeg

Как видно из скриншота, тикет ADadmin успешно загружен и мы можем посмотреть содержимое диска C на контроллере домена DC-16.meow.local от имени ADadmin.

Unconstrained Delegation


Unconstrained Delegation (неограниченное делегирование) — это привилегия в домене, которая может быть предоставлена учетным записям пользователей или компьютеров. Она позволяет учетной записи проходить проверку подлинности на сервисе в сети от имени другой учетной записи.

Вот теперь пришло время немного «подкрутить» тестовый стенд и включить неограниченное делегирование: дадим привилегию неограниченного делегирования компьютеру BARSCOMP.

bpvc0bytc7xnrsqsjxyut9uh7lo.jpeg

Один из этапов проведения тестирования безопасности домена Active Directory — поиск учетных записей с включенным делегированием, обычно для этих целей используют Powerview, но можно и вручную, используя стандартный модуль ActiveDirectory.

z-rrq5prktxkfowq7djeckbcyfw.jpeg

Для проведения данной атаки я воспользуюсь Printer Bug, который подробно описал Lee Christensen из SpecterOps. Любой прошедший проверку пользователь может удаленно подключиться к серверу печати контроллера домена и запросить обновление новых заданий на печать, сказав ему отправить уведомление учетной записи с неограниченным делегированием. Lee Christensen написал приложение SpoolSample, которое производит обращение к службе печати на КД по протоколу MS-RPRN.

На компьютере, с которого будет проводится атака (BARSCOMP.meow.local), необходимо запустить Rubeus в режиме мониторинга, используя «экшен» monitoring. Данный режим требует привилегий NT ATHORITY/SYSTEM и «слушает» новые билеты TGT/TGS в процессе lsass. Я установлю аргументом /interval:1 (в секундах) интервал опроса lsass на наличие новых билетов, и аргументом /filteruser:DC-16$ установлю фильтр отображения только билетов пользователя DC-16$.

nmbwdlo2s84j-ofjygfa23fp2_s.jpeg

Rubeus запущен, параллельно в другой сессии запускаю SpoolSample.exe с аргументами dc-16.meow.local (атакуемая машина) и barscomp.meow.local (наш «слушающий» хост).

wkirecjx0z9thtgwomqcl4nbrui.jpeg

Посмотрим, что «намониторил» Rubeus.

hrcznuugxrsg7_8xmxrksjo9fgc.jpeg

Пойман TGT билет учетной записи контроллера домена. Теперь можно, используя уже известную Pass-the-ticket атаку, импортировать билет и с помощью mimikatz провести атаку DCSync, чтобы получить NTLM-хэш учетной записи krbtgt (а как вы уже знаете из первой части статьи, хэш этой учетной записи можно использовать для создания Golden Ticket и полного захвата домена AD).

hxt0qvkg8emcdwjwedtyy214msa.jpeg

Обратите внимание, что Rubeus понимает билеты как в виде .kirbi файла, так и в строке закодированной base64.

Сonstrained Delegation


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

Создадим нового доменного пользователя Backup с паролем B@ckup1234, присвоим ему SPN для службы cifs на контроллере домена.

nx_a2nx2gxxxuoaa-wu3ucfnhr8.jpeg

Теперь можно установить для этой учетной записи возможность делегирования служб ldap и cifs на контроллере домена DC-16.meow.local.

jpog2of4z2auwdsxfoxcgse9pk4.jpeg

Определить учетные записи, которым разрешено ограниченное делегирование, можно также с помощью Powerview или модуля ActiveDirectory.

ui6vgefmnggsi-jbmaxpskieutu.jpeg

Зная пароль или NTLM-хэш учетной записи meow.local\Backup, с помощью Rubeus можно запросить билет TGT для неё.

z8mmkjv0qg1xgwocdkyupv0rvgm.jpeg

Теперь, используя «экшен» s4u в Rubeus можно запросить TGS для пользователя, которому разрешена аутентификация на сервисе cifs\dc-16.meow.local (например, администратору домена ADadmin).

0t5wk51b96mqyb5ekbsozz1jmmy.jpeg

Здесь я указываю полученный ранее билет учетной записи Backup; /impersonateuser — пользователя, права которого хочу получить; /domain — домен, в котором всё происходит; /msdsspn /asltservice — сервис, для которого нужен TGS; /ptt — сразу импортировать полученный билет в текущую сессию.

Вот что происходит в Rubeus:

csiu7s_wpl9zus6etti-mdh1vgm.jpeg

Здесь можно заметить, что при ограниченном делегировании включаются 2 расширения Kerberos: это S4U2self и S4U2proxy.

S4U2self позволяет участникам службы запросить специальный TGS с флагом FORWARDABLE к себе от имени конкретного пользователя. Это нужно для того, чтобы данный билет в дальнейшем мог использоваться расширением S4U2proxy.

S4U2proxy позволяет вызывающей стороне использовать этот специальный билет, чтобы запросить TGS пользователя для службы, к которой разрешено делегирование (в данном случае cifs\dc-16.meow.local). Более подробно об этом можно прочитать здесь и здесь.

В это время Rubeus уже получил финальный тикет и импортировал его в текущую сессию.

9rd123rt5c-tc_l-rv4uzozka9a.jpeg

Проверим, получится ли посмотреть диск C на контроллере домена с полученным билетом.

kcp0x8uqrbvt0afl-udz49wl4rw.jpeg

Да, всё прошло успешно.

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

Спасибо за внимание, всем добра, не болейте!

© Habrahabr.ru