Всем привет, на днях в достаточно подробном исполнении появилась еще одна вариация атаки Kerberos Relay. Этот пост для тех, кто окончательно запутался и не знает, с чего начать изучение всего обилия инструментов и статей.
Для локального повышения привилегий можно использовать
KrbRelay и
KrbRelayUp. Это тулы, которые позволяли повысить привилегии и получить учетную запись системы. Вкратце мы, благодаря особенностям создания объектов в СОМ, могли перехватить учетные данные системы и перенаправить их в какую-либо службу.
Пример использования. После того, как потыкаете, можете посмотреть подробный разбор. Есть две статьи от Google Project Zero
тут и
тут. Если этот материал показался слишком сложным, то попробуйте начать
с этой статьи на хабре. Если и она не идет, то читайте весь материал, на который я оставил там ссылки.
В последней статье активно упоминается
RemoteKrbRelay . Это вариация локальной атаки KrbRelay и KrbRelayUp, но только в удаленном исполнении — можем захватывать аутентификацию чужих компьютеров. POC можно использовать для атак
SilverPotato и
CertifiedDCOM.
Помимо всего прочего, стоит упомянуть DavRelayUp (
POC1 ,
POC2,
POC3). Этот инструмент использует локальный релей NTLM (не керберос, просто схожая структура репозиториев) через поднятый WebDAV на LDAP. Фактически, это автоматизация действий, описанных в
этой статье.Существуют также варианты, которые работают несколько иначе и в некоторых случаях даже не требуют наличия у нас учетной записи в домене. Они основываются на возможности ретрансляции AP-REQ пакетов пользователей.
Начнем с
krbrelayx.py. Изначально инструмент создавался в качестве тулкита для абуза неограниченного делегирования с Linux-систем, либо если делегирование настроено на учетную запись пользователя.
Статья ,
примеры командлетов. Однако в дальнейшем была обнаружена возможность перехвата AP-REQ пакетов во время аутентификации клиентов (эта ауф появляется потому , что по дефолту в ADIDNS настроены Secure Dynamic Updates , требующие аутентификации перед обновленим записи) и захвата серверов с ролью DNS.
Статья про релей из DNS.
Логичный вопрос: «Как получать AP-REQ?» И у нас есть несколько вариантов ответа.
1. Через MiTM: из DNS Authenticated Updates (см выше),
из отравления LLMNR, через подмену DNS записи, - в общем практически любой MiTM ;
2. Через принудительную аутентификацию со специальным DNS-именем. Он же абуз CredMarshalTargetInfo(). Читать теорию
тут, примеры использования krbrelayx с ним
тут;
3. Через триггер и аутентификацию поверх DCOM. Тулза-триггерилка называется
potato.py , ее разбор
тут.
Вернемся к DNS. Зона может быть настроена с флагом ZONE_UPDATE_UNSECURE , что разрешает обновления без аутентификации. В таком случае мы можем осуществить MiTM и перехватить AP-REQ креды, идущие на какие-либо службы. Соответственно, сделать релей на эти службы и получить к ним доступ. POC называется
KrbJack. Он автоматизирует весь цикл атаки: сначала подменяет IP-адреса, потом слушает пакеты и, если обнаруживает аутентификацию по керберосу или NTLM, то пытается отрелеить ее на шару ADMIN$ с последующим деплоем шелла. Тулзу можно использовать и просто для обновлений записей анонимно. Пример использования в репозитории.
Если нам требуется осуществлять перехват и релей AP-REQ-пакетов с Windows, то можно использовать
KrbRelayEx.
Пример использования.
Также есть
KrbRelay-SMBServer , который используют чтобы чейнить абуз CredMarshalTargetInfo() с Kerberos Relay с Windows-тачки.