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

Сертификат учётной записи прав

Сертификат учётной записи прав (англ. Privilege Access Certificate, PAC) — это цифровой сертификат, используемый в операционных системах Microsoft Windows для авторизации пользователей и служб в доменной сети Active Directory. Он представляет собой структуру данных, которая встраивается в билет Kerberos (Ticket-Granting Ticket, TGT) или служебный билет (Service Ticket) и содержит информацию о группах безопасности, правах доступа и привилегиях учётной записи. PAC позволяет серверам и службам проверять полномочия пользователя без обращения к контроллеру домена при каждом запросе.

История

Сертификат учётной записи прав был введён корпорацией Microsoft в составе реализации протокола Kerberos версии 5 в Windows 2000. До этого в Windows NT использовался протокол NTLM (NT LAN Manager), который требовал постоянного взаимодействия с контроллером домена для проверки прав. PAC стал частью расширения Microsoft к стандарту Kerberos, известного как MS-PAC (Microsoft Privilege Access Certificate). В 2006 году спецификация MS-PAC была опубликована корпорацией Microsoft в рамках программы Open Specification Promise, что позволило сторонним разработчикам и исследователям анализировать и реализовывать этот протокол.

В 2014 году в ходе исследования безопасности были обнаружены уязвимости, связанные с PAC, в частности атака MS14-068, позволявшая злоумышленнику, имеющему доступ к домену, подделывать PAC для повышения привилегий. Microsoft выпустила обновления безопасности, закрывающие эту уязвимость. В последующих версиях Windows (начиная с Windows 8 и Windows Server 2012) были внедрены дополнительные механизмы проверки подлинности PAC, такие как использование подписи HMAC (Hash-based Message Authentication Code) и поддержка расширений PAC для более строгой валидации.

Структура и формат

PAC представляет собой бинарный объект, закодированный в формате ASN.1 (Abstract Syntax Notation One) и упакованный в структуру KERB_VALIDATION_INFO. Основные компоненты PAC включают:

  • LogonInfoинформация о входе в систему: идентификатор пользователя (SID), имя учётной записи, домен, время входа и выхода, флаги сеанса.
  • GroupMembershipсписок SID групп безопасности, в которые входит пользователь, включая глобальные, локальные и универсальные группы домена.
  • ExtraSids — дополнительные SID, не входящие в основной список (например, SID привилегированных групп, таких как «Администраторы домена»).
  • UserFlags — флаги, указывающие на свойства учётной записи: например, заблокирована ли учётная запись, требуется ли смена пароля.
  • UserAccountControl — битовая маска, содержащая атрибуты учётной записи из Active Directory (например, ACCOUNTDISABLE, PASSWD_NOTREQD).
  • SidHistory — история SID для миграции учётных записей между доменами (используется при переносе профилей).
  • LogonTime — время последнего успешного входа в систему.

Каждый PAC подписывается сервером аутентификации (контроллером домена) с использованием ключа, известного только службе KDC (Key Distribution Center). Подпись включает два типа: серверная подпись (Server Signature) и подпись PAC (PAC Signature). Серверная подпись вычисляется на основе ключа службы, а подпись PAC — на основе ключа пользователя, что предотвращает подделку PAC самим пользователем.

Механизм работы

Процесс использования PAC в домене Active Directory происходит следующим образом:

  1. Аутентификация. Пользователь проходит аутентификацию на контроллере домена через протокол Kerberos. Контроллер домена проверяет пароль или другой фактор аутентификации.
  2. Формирование TGT. Контроллер домена создаёт билет TGT, в который встраивается PAC, содержащий информацию о группах и правах пользователя. TGT шифруется ключом службы KDC.
  3. Запрос служебного билета. Когда пользователь обращается к ресурсу (например, к файловому серверу или веб-приложению), он запрашивает служебный билет (Service Ticket) у контроллера домена. В ответ контроллер извлекает PAC из TGT и копирует его в служебный билет.
  4. Проверка на сервере. Сервер ресурса, получив служебный билет, расшифровывает его и извлекает PAC. Сервер проверяет подпись PAC, чтобы убедиться, что данные не были изменены, и затем анализирует список групп и прав для принятия решения о доступе.

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

Классификация и версии

Существует несколько версий PAC, различающихся по набору полей и алгоритмам подписи:

  • PAC версии 0 — базовая версия, используемая в Windows 2000 и Windows XP. Включает минимальный набор полей: LogonInfo, GroupMembership, UserFlags.
  • PAC версии 1 — расширенная версия, появившаяся в Windows Server 2003. Добавлены поля ExtraSids, SidHistory, UserAccountControl, а также поддержка подписи HMAC-SHA1.
  • PAC версии 2 — версия для Windows 8 и Windows Server 2012. Включает дополнительные поля для поддержки динамических групп и условного доступа, а также усиленную подпись с использованием HMAC-SHA256.

В современных версиях Windows (Windows 10, Windows Server 2016 и новее) используется PAC версии 2 с возможностью обратной совместимости.

Применение

PAC является ключевым элементом системы авторизации в корпоративных средах на базе Active Directory. Основные области применения:

  • Управление доступом к файловым ресурсам. PAC определяет, имеет ли пользователь доступ к папке или файлу на основе членства в группах безопасности.
  • Аутентификация в веб-приложениях. Приложения, интегрированные с Active Directory (например, SharePoint, Exchange), используют PAC для проверки прав пользователя.
  • Удалённый доступ. Службы Remote Desktop Services и VPN-решения на базе Windows используют PAC для определения привилегий сеанса.
  • Принт-серверы. PAC позволяет принт-серверам проверять, разрешена ли пользователю печать на конкретном устройстве.

Безопасность и критика

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

  • Атака MS14-068 (2014 год) — уязвимость, позволявшая злоумышленнику, имеющему доступ к домену, сгенерировать поддельный PAC с произвольными правами. Уязвимость была устранена в обновлении KB3011780.
  • Атаки Pass-the-Hash и Pass-the-Ticket — злоумышленник, получивший TGT или служебный билет, может использовать PAC для доступа к ресурсам без знания пароля.
  • Атаки Golden Ticket и Silver Ticket — при компрометации ключа KDC (krbtgt) злоумышленник может создать любой PAC, что даёт полный контроль над доменом.

Для защиты от этих угроз Microsoft рекомендует:

  • Регулярно обновлять операционные системы и устанавливать патчи безопасности.
  • Использовать многофакторную аутентификацию.
  • Ограничивать привилегии учётных записей служб.
  • Внедрять мониторинг событий безопасности (например, событие 4624 — успешный вход в систему).

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

  • PAC не является частью стандарта Kerberos RFC 4120; это проприетарное расширение Microsoft, которое, тем не менее, широко используется в корпоративных сетях.
  • В 2017 году исследователи из компании Preempt обнаружили уязвимость PAC, позволяющую обходить проверку подписи при использовании определённых алгоритмов шифрования (RC4). Уязвимость была устранена в Windows 10 версии 1709.
  • В Linux-системах, интегрированных с Active Directory через Samba или Winbind, PAC также используется для авторизации, но реализация может отличаться от Microsoft.

Источники

  • Microsoft Open Specification: [MS-PAC] — Privilege Access Certificate Structure
  • Microsoft Security Bulletin MS14-068 — Vulnerability in Kerberos Could Allow Elevation of Privilege
  • RFC 4120 — The Kerberos Network Authentication Service (V5)
  • Документация Microsoft по Active Directory и Kerberos
  • Исследование Preempt: «PAC Vulnerability in Windows Kerberos» (2017)

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

На главную BFOmetr →