Открыть сервис

Ticket-Granting Ticket

Ticket-Granting Ticket (TGT) — это криптографический билет, используемый в протоколе аутентификации Kerberos, который подтверждает успешную аутентификацию пользователя в домене и позволяет получать сервисные билеты для доступа к сетевым ресурсам без повторного ввода пароля. TGT представляет собой временный идентификатор сеанса, выдаваемый центром распространения ключей (KDC) после проверки учётных данных пользователя.

История и происхождение

Протокол Kerberos был разработан в Массачусетском технологическом институте (MIT) в 1980-х годах в рамках проекта Athena. Первая версия (Kerberos 4) была выпущена в 1987 году, а версия 5 (RFC 4120) стала стандартом в 1993 году и используется по настоящее время. TGT как ключевой элемент протокола появился уже в ранних версиях, поскольку он решал фундаментальную проблему безопасной аутентификации в открытых сетях: необходимость многократной передачи пароля по сети.

До появления Kerberos в большинстве сетей использовалась простая аутентификация по паролю, при которой пароль передавался в открытом виде или с минимальной защитой. TGT позволил реализовать схему с единым входом (Single Sign-On, SSO), где пользователь вводит пароль один раз, а затем получает доступ ко всем ресурсам домена в течение времени жизни билета.

Принцип работы

Получение TGT

Процесс начинается с запроса аутентификации (Authentication Service Request, AS-REQ). Клиент отправляет на сервер аутентификации (AS), входящий в состав KDC, сообщение, содержащее идентификатор пользователя (Principal Name) и временную метку, зашифрованную хэшем от пароля пользователя. AS проверяет, что временная метка актуальна (отклонение не более нескольких минут) и что пароль корректен (расшифровка прошла успешно). В ответ AS отправляет клиенту два компонента:

  1. TGT, зашифрованный долговременным ключом KDC (krbtgt). TGT содержит:
  • Идентификатор пользователя (Principal Name)
  • Идентификатор домена (Realm)
  • Временную метку выдачи
  • Время жизни (обычно 8–10 часов)
  • Сеансовый ключ (Session Key) для взаимодействия с KDC
  • Флаги билета (например, forwardable, proxiable, renewable)
  1. Сеансовый ключ, зашифрованный хэшем пароля пользователя.

Клиент расшифровывает сеансовый ключ с помощью своего пароля, но не может расшифровать TGT, так как он зашифрован ключом KDC. TGT хранится в памяти клиента (в кэше билетов) до истечения срока действия или завершения сеанса.

Использование TGT для получения сервисных билетов

Когда пользователь хочет получить доступ к сетевому ресурсу (например, файловому серверу или веб-приложению), клиент отправляет запрос на получение сервисного билета (Ticket Granting Service Request, TGS-REQ) на сервер выдачи билетов (TGS), также входящий в состав KDC. Запрос содержит:

  • TGT (который клиент не может изменить, так как он зашифрован)
  • Идентификатор запрашиваемого сервиса (Service Principal Name, SPN)
  • Аутентификатор (Authenticator), зашифрованный сеансовым ключом, полученным из TGT

TGS проверяет TGT, расшифровывая его своим ключом, извлекает сеансовый ключ и проверяет аутентификатор. Если всё корректно, TGS генерирует сервисный билет (Service Ticket), зашифрованный ключом сервиса, и новый сеансовый ключ для взаимодействия с сервисом, зашифрованный старым сеансовым ключом. Клиент передаёт сервисный билет на сервер ресурса, который проверяет его и предоставляет доступ.

Обновление TGT

TGT имеет ограниченное время жизни (обычно 8–10 часов). Для продления сеанса без повторного ввода пароля используется механизм обновления (Renewal). Клиент отправляет запрос на обновление TGT, содержащий текущий TGT и аутентификатор. KDC проверяет, что TGT ещё не истёк и что он помечен как обновляемый (renewable), и выдаёт новый TGT с продлённым сроком действия. Максимальное время жизни обновляемого TGT может достигать 7 дней.

Структура TGT

TGT, как и любой билет Kerberos, имеет строгую структуру, определённую в RFC 4120. Основные поля:

  • tkt-vno — версия протокола (для Kerberos 5 — значение 5)
  • realm — имя домена (Kerberos Realm), в котором был выдан билет
  • sname — имя сервера, для которого выдан билет (в случае TGT это krbtgt/realm)
  • enc-part — зашифрованная часть, содержащая:
  • Ключ сеанса (Session Key)
  • Идентификатор пользователя (cname)
  • Время выдачи (authtime)
  • Время начала действия (starttime)
  • Время окончания (endtime)
  • Время последнего обновления (renew-till)
  • Флаги билета (flags)
  • Список адресов (caddr) — опционально
  • Данные авторизации (authorization-data) — опционально

Зашифрованная часть TGT защищена ключом KDC (ключом учётной записи krbtgt). Клиент не может расшифровать или модифицировать TGT.

Классификация и виды TGT

TGT классифицируются по нескольким признакам:

По типу аутентификации

  • Обычный TGT — выдаётся после ввода пароля или смарт-карты.
  • TGT на основе PKINIT — выдаётся после аутентификации с использованием сертификата X.509 (протокол PKINIT, RFC 4556). Используется в средах с высокой степенью защиты.
  • TGT на основе OTP — выдаётся после одноразового пароля (One-Time Password).

По флагам

  • Forwardable — TGT может быть передан другому хосту (например, при делегировании).
  • Proxiable — TGT может быть использован для получения сервисных билетов от имени другого хоста.
  • Renewable — TGT может быть обновлён без повторной аутентификации.
  • Initial — TGT был получен непосредственно от AS, а не через делегирование.
  • Invalid — TGT помечен как недействительный (используется при предварительной аутентификации).
  • HW-Authent — аутентификация выполнена с использованием аппаратного токена.

Применение

TGT является основой для реализации единого входа (SSO) в средах, использующих Kerberos. Основные области применения:

  • Домены Microsoft Active Directory — Kerberos является основным протоколом аутентификации в Windows-доменах начиная с Windows 2000. TGT используется для доступа к файловым серверам, принтерам, веб-приложениям (IIS), базам данных (SQL Server) и другим ресурсам.
  • Unix- и Linux-системы — Kerberos широко применяется в корпоративных средах для аутентификации пользователей и сервисов (например, NFS, SSH, Apache с mod_auth_kerb).
  • Веб-приложения — протокол SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) позволяет использовать TGT для аутентификации в веб-браузерах (например, Internet Explorer, Chrome, Firefox) при доступе к сайтам, поддерживающим Kerberos.
  • Междоменная аутентификация — TGT может быть использован для получения билетов в другом домене (через механизм междоменных ключей).

Безопасность

TGT является критически важным элементом безопасности Kerberos. Компрометация TGT даёт злоумышленнику доступ ко всем ресурсам домена, к которым имеет право пользователь, на время жизни билета. Основные угрозы:

  • Кража TGT (Pass-the-Ticket) — злоумышленник, получив доступ к кэшу билетов (например, через Mimikatz), может использовать TGT для аутентификации от имени пользователя. Защита включает использование Credential Guard (Windows), ограничение прав локальных администраторов и мониторинг событий безопасности.
  • Атака Golden Ticket — злоумышленник, получив хэш ключа учётной записи krbtgt, может создать собственный TGT с любыми правами. Защита требует регулярной смены ключа krbtgt (дважды) и мониторинга аномальных билетов.
  • Атака Silver Ticket — создание поддельного сервисного билета, что менее опасно, чем Golden Ticket, но также позволяет получить доступ к конкретному ресурсу.
  • Атака Kerberoasting — запрос сервисных билетов для получения хэшей паролей сервисных учётных записей. Защита включает использование сложных паролей для сервисных учётных записей и мониторинг запросов TGS.

Интересные факты

  • Название «Ticket-Granting Ticket» происходит от билетной системы, используемой в железнодорожных и театральных кассах: TGT является «билетом на получение билетов».
  • Время жизни TGT по умолчанию в Active Directory составляет 10 часов (для Windows 10 и Windows Server 2016+ — 8 часов). Максимальное время жизни обновляемого TGT — 7 дней.
  • Учётная запись krbtgt, ключом которой шифруются TGT, создаётся автоматически при создании домена Active Directory. Её пароль (хэш) никогда не меняется автоматически и должен меняться вручную администратором для защиты от атак Golden Ticket.
  • В протоколе Kerberos версии 4 TGT имел более простую структуру и не поддерживал флаги и обновление.
  • TGT может быть использован для получения билетов в доверенных доменах через механизм междоменных TGT (cross-realm TGT).

Источники

  • RFC 4120 — The Kerberos Network Authentication Service (V5)
  • RFC 4556 — Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
  • Microsoft Docs — How the Kerberos Version 5 Authentication Protocol Works
  • MIT Kerberos Documentation — Ticket Granting Ticket
  • Книга «Kerberos: The Definitive Guide» by Jason Garman (O'Reilly Media, 2003)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →