Что такое Kerberos и как он работает

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

Как устроен Kerberos: билеты, KDC и области доверия

Kerberos — это протокол сетевой аутентификации, разработанный для защиты взаимодействия в небезопасных сетях. Его ядро — модель доверенного посредника, которая заменяет передачу паролей по сети на выдачу временных криптографических билетов. Эта система лежит в основе таких инфраструктур, как Microsoft Active Directory.

Ключевые компоненты и термины

Работу Kerberos определяет несколько основных понятий.

Термин Описание Роль в процессе
KDC (Key Distribution Center) Доверенный центр распределения ключей. Хранит все секретные ключи пользователей и служб. Выполняет функции сервера аутентификации (AS) и службы выдачи билетов (TGS).
TGT (Ticket-Granting Ticket) Билет на получение билетов. Зашифрован секретным ключом KDC. Содержит сеансовый ключ для клиента и метаданные. Доказательство успешной первичной аутентификации. Клиент предъявляет его для получения сервисных билетов.
Сервисный билет (ST, Service Ticket) Билет для доступа к конкретной службе (например, файловому серверу). Частично зашифрован ключом целевой службы. Клиент передаёт его службе для доступа. Доказывает, что KDC разрешил этому клиенту использовать данную службу.
Principal (Участник) Любая сущность (пользователь или служба), у которой есть секретный ключ в KDC и которая может запрашивать билеты. Клиент, служба или учётная запись компьютера в домене.
Realm (Область) Логический домен безопасности Kerberos (например, домен Active Directory). Определяет границу доверия KDC. В рамках одного realm KDC может выдать билеты для любой службы. Между разными realm требуется настройка доверия.

Протокол использует симметричное шифрование (AES, DES) и построен так, что пароль пользователя никогда не передаётся по сети, даже в хэшированном виде. Вместо этого знание пароля доказывается способностью расшифровать данные, зашифрованные KDC с использованием этого пароля.

Процесс аутентификации: от пароля до доступа к службе

Аутентификация по Kerberos — это трёхэтапный танец между клиентом, KDC и целевой службой.

Шаг 1: Получение TGT (Initial Authentication)

  1. Пользователь вводит логин и пароль на клиентской машине.
  2. Клиент локально вычисляет из пароля ключ и отправляет KDC запрос (AS-REQ), содержащий имя пользователя и текущую метку времени.
  3. KDC проверяет наличие пользователя в базе. Затем создаёт сеансовый ключ для будущего общения клиента с TGS.
  4. KDC формирует ответ (AS-REP), который содержит две критически важные части:
    • Часть A: Сеансовый ключ и данные пользователя, зашифрованные ключом, производным от пароля пользователя.
    • Часть B: TGT, содержащий те же данные (сеансовый ключ, имя пользователя, срок действия), но зашифрованный секретным ключом самого KDC (ключом KRBTGT).
  5. Клиент получает ответ. Если пароль верный, он может расшифровать Часть A, извлечь сеансовый ключ и сохранить TGT (Часть B) в кэше билетов. Расшифровать TGT клиент не может — это может сделать только KDC.

TGT обычно действует 10 часов, что избавляет пользователя от повторного ввода пароля в течение рабочего дня.

Шаг 2: Получение сервисного билета (Service Ticket Granting)

Когда пользователю нужен доступ к конкретной службе (например, к внутреннему веб-порталу):

  1. Клиент создаёт запрос (TGS-REQ) к службе выдачи билетов (TGS) внутри KDC. В запрос он вкладывает свой TGT и аутентикатор — блок данных (метка времени), зашифрованный сеансовым ключом из TGT.
  2. KDC получает запрос, расшифровывает TGT своим секретным ключом KRBTGT и извлекает сеансовый ключ. Этим ключом он расшифровывает аутентикатор и проверяет метку времени (защита от атак повтора).
  3. Если проверки прошли, KDC создаёт новый сеансовый ключ для клиента и службы. Формируется ответ (TGS-REP):
    • Часть A: Новый сеансовый ключ и данные, зашифрованные сеансовым ключом клиента из TGT.
    • Часть B: Сервисный билет (ST), содержащий тот же новый сеансовый ключ и данные клиента, но зашифрованный уже секретным ключом целевой службы.
  4. Клиент получает ответ, расшифровывает Часть A своим старым сеансовым ключом, получает новый сеансовый ключ для общения со службой и сохраняет сервисный билет (ST).

Шаг 3: Доступ к службе (Service Request)

  1. Клиент обращается к службе, отправляя запрос (AP-REQ), содержащий сервисный билет (ST) и новый аутентикатор, зашифрованный уже новым сеансовым ключом «клиент-служба».
  2. Служба получает запрос. С помощью своего секретного ключа (который она знает, так как зарегистрирована в KDC) она расшифровывает сервисный билет и извлекает сеансовый ключ «клиент-служба».
  3. Этим ключом служба расшифровывает аутентикатор, проверяет метку времени и таким образом убеждается, что клиент легитимен и билет свежий.
  4. При необходимости служба может ответить (AP-REP), подтвердив свою подлинность клиенту (взаимная аутентификация). После этого начинается защищённая сессия.

Почему Kerberos стал стандартом и каковы его альтернативы

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

  • Единый вход (SSO): После первичной аутентификации TGT позволяет получать билеты к любым службам без повторного ввода пароля.
  • Отсутствие передачи паролей: Пароль используется только для локальной дешифровки при первом обращении. В сетевом трафике фигурируют только билеты, зашифрованные ключами KDC и служб.
  • Взаимная аутентификация: Клиент убеждается не только служба, но и служба — клиент.
  • Ограниченное время жизни: Кража TGT или ST даёт злоумышленнику ограниченное окно для атаки.

Основные альтернативы и их место в экосистеме:

Протокол Ключевое отличие от Kerberos Типичное применение
NTLM (Windows NT LAN Manager) Использует challenge-response, но передаёт хэш пароля (хоть и в преобразованном виде). Не поддерживает единый вход и взаимную аутентификацию так же элегантно. Устаревший протокол в Windows, оставлен для обратной совместимости, используется когда Kerberos невозможен (работа вне домена).
LDAP-привязка Прямая аутентификация против каталога. Часто пароль или его хэш передаётся по сети (даже поверх TLS). Нет концепции билетов. Аутентификация веб-приложений, VPN, где нет инфраструктуры Kerberos или она неинтегрируема.
RADIUS Централизованный AAA-протокол для управления доступом к сети (например, к коммутаторам, Wi-Fi точкам). Не выдаёт токены для последующего доступа к прикладным службам. Контроль сетевого доступа (802.1X), аутентификация администраторов на сетевом оборудовании.

Уязвимости и векторы атак на инфраструктуру Kerberos

Безопасность Kerberos основана на секретности ключей KDC и служб. Компрометация этих ключей разрушает всю модель доверия.

Основные техники атак

  • Kerberoasting: Атакующий, уже имеющий учётную запись в домене, запрашивает сервисные билеты для учётных записей служб (Service Accounts). Эти билеты зашифрованы ключом, производным от пароля учётной записи службы. Атакующий выгружает билеты и пытается взломать пароли оффлайн методом перебора. Уязвимость здесь — часто слабые пароли служб, которые редко меняются.
  • Золотой билет (Golden Ticket): Требует полной компрометации хэша пароля учётной записи KRBTGT (её пароль — мастер-ключ KDC для шифрования TGT). С этим хэшем атакующий может самостоятельно генерировать поддельные TGT для любого пользователя с любыми привилегиями и неограниченным сроком действия, обходя все обычные проверки. Это атака на устойчивость.
  • Серебряный билет (Silver Ticket): Компрометация хэша пароля компьютера или учётной записи конкретной службы (например, SQL Server). Зная этот хэш, атакующий может напрямую сгенерировать поддельный сервисный билет для доступа к этой службе, минуя KDC. Область воздействия ограничена одной службой, но обнаружить такую атаку сложнее.
  • AS-REP Roasting: Атака на пользователей, у которых отключена обязательная предварительная аутентификация (пакетная политика Do not require Kerberos preauthentication). Для таких пользователей можно запросить данные AS-REP (часть, обычно шифруемую паролем) и попытаться взломать пароль оффлайн.

Меры защиты

  • Строгая политика паролей для учётных записью служб и KRBTGT: Очень длинные, сложные и регулярно меняемые пароли (особенно для KRBTGT — двухэтапная смена).
  • Отслеживание аномальных событий Kerberos: Мониторинг журналов KDC на предмет запросов билетов с необычных IP, запросов большого количества сервисных билетов (Kerberoasting) или использования билетов с истёкшим сроком.
  • Применение Protected Users группы и ограничение типов шифрования: Запрет слабых типов шифрования (RC4) и принудительное использование AES.
  • Регулярный аудит привилегированных учётных записей: Контроль членства в группах типа Domain Admins, Enterprise Admins.

Инструменты анализа и тестирования

Для анализа работы Kerberos и проверки его конфигурации на уязвимости используются специализированные инструменты.

Один из мощных инструментов для работы с Kerberos в среде Windows — Rubeus. Это инструмент командной строки, написанный на C#, который позволяет выполнять широкий спектр операций: от легитимного запроса и обновления билетов до эксплуатации уязвимостей, таких как Kerberoasting или AS-REP Roasting. Например, с его помощью можно выгрузить все сервисные билеты текущего пользователя в формате, пригодном для оффлайн-подбора паролей, или попытаться получить TGT для пользователя с отключённой предварительной аутентификацией. Его использование подчёркивает важность мониторинга аномальной активности, связанной с протоколом Kerberos.

Понимание внутренней механики Kerberos — это не только знание протокола, но и осознание того, где находятся точки напряжения в системе безопасности. Билет — это не просто пропуск, это временное делегирование доверия от KDC. И безопасность всей инфраструктуры зависит от того, насколько хорошо защищены ключи, из которых эти билеты создаются.

Оставьте комментарий