Методология
IMG_1233.jpgАнастасия Коротеева
akozhakhmetova.jpgАнастасия Кожахметова

В последнее время служба сертификации Active Directory (AD CS) стала популярной целью для атакующих. Это связано с различными недостатками конфигурации службы, позволяющими ее скомпрометировать, а также с ее важностью в инфраструктуре. Служба сертификации позволяет развернуть собственную инфраструктуру открытых ключей (PKI) в доменной сети и предназначена для создания центра сертификации (CA), который используется для выдачи сертификатов пользователям. Сертификаты в AD — это документы, содержащие информацию об их владельце и использующиеся для определенных целей, таких как аутентификация клиента, подписание кода, шифрование данных и т. д. Шаблоны сертификатов используются для установки параметров сертификата, они определяют, как, кому, на сколько и на что могут быть выданы сертификаты. Эти сценарии использования сертификатов описываются с помощью расширения Extended Key Usage (EKU).

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

На данный момент обнаружено 15 векторов, которые в публичных источниках принято обозначать как ESC1–ESC15. Эти векторы лежат в основе атак, направленных на повышение привилегий в сетях Active Directory с включенной службой AD CS.

ESC1: изменение SAN (modifiable SAN)

Атака основана на том, что шаблон сертификата позволяет указать произвольное альтернативное имя субъекта (subjectAltName, SAN) в запросе на выпуск сертификата. Это дает возможность атакующему выпустить сертификат на имя произвольного пользователя, в том числе администратора домена, и использовать его для получения Kerberos TGT с помощью техники pass the certificate.

Превентивные меры защиты

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

Если указание альтернативного имени в запросе является необходимым, рекомендуется:

  • Ограничить список пользователей, которые могут использовать уязвимый шаблон.
  • Убедиться, что шаблон сертификата не содержит избыточных вариантов использования в расширениях EKU.
  • Если не требуется сопоставление альтернативного имени субъекта с учетной записью домена при Kerberos-аутентификации, рекомендуется отключить данную возможность. Для этого необходимо задать нулевое значение ключа реестра UseSubjectAltName в ветке HKLM\SYSTEM\CurrentControlSet\Services\Kdc на всех контроллерах домена. В этом случае злоумышленник сможет указать альтернативное имя в запросе на получение сертификата, но не сможет использовать его при аутентификации.

Рекомендации по мониторингу

Для обнаружения этого вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC2: небезопасные расширения any purpose или none purpose (any or none purpose attack)

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

Превентивные меры защиты

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

Рекомендации по мониторингу

Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC3: небезопасная конфигурация шаблона сертификата агента регистрации (enrollment agent)

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

Превентивные меры защиты

Для предотвращения атаки рекомендуется:

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

Рекомендации по мониторингу

Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC4: недостаточное разграничение доступа к шаблонам сертификатов (certificate ACL abuse)

Вектор ESC4 эксплуатирует некорректную настройку ACL (списков контроля доступа), которые позволяют непривилегированным участникам AD редактировать параметры безопасности шаблона. Хакер может внедрить неправильную конфигурацию в шаблон, для того чтобы сделать его уязвимым к другим векторам (например, к вектору ESC1 с помощью установки специального флага).

Превентивные меры защиты

Для защиты от этого вектора атаки необходимо ограничить список пользователей, имеющих права записи (Owner, FullControl, WriteOwner, WriteDacl, WriteProperty), в параметрах доступа шаблона сертификата. Также рекомендуется использовать функции подтверждения запросов диспетчером центра сертификации и подписи запроса авторизованным сертификатом.

Рекомендации по мониторингу

Для обнаружения данного вектора рекомендуется осуществлять мониторинг следующих событий в журналах на сервере центра сертификации и контроллерах домена:

  • 4899 (A Certificate Services template was updated). Событие возникает при выпуске сертификата с измененным шаблоном. Если параметры шаблона в кэше сервера отличаются от параметров шаблона, по которому запрошен сертификат, регистрируется данное сообщение.
  • 4900 (A Certificate Services template security was updated). Событие генерируется при выпуске сертификата по шаблону с измененными разрешениями безопасности ACL. Если ACL шаблона в кэше сервера отличается от ACL шаблона, по которому запрошен сертификат, регистрируется данное сообщение. Полезная информация содержится в поле NewSecurityDescriptor.
  • 4662 (An operation was performed on an object). Событие возникает при изменении объекта в AD пользователем. При изменении шаблона изменится и соответствующий объект в AD в контейнере: CN=Public Key Services,CN=Services,CN=Configuration,DC=<domainname>,DC=<domainsuffix>. То же произойдет и при изменении объекта «рабочая станция» сервера центра сертификации. Соответственно, если для объектов в данном контейнере настроены SACL, можно получать информацию об изменениях в этих объектах.

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

ESC5: недостаточный контроль доступа к объектам PKI (vulnerable PKI AD object access control)

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

Рекомендации по мониторингу

Обнаружение несанкционированной установки сертификата центра сертификации возможно путем аудита изменения атрибутов объекта NTAuthCertificates с помощью анализа события 5136 (A directory service object was modified).

Также рекомендуется отслеживать изменение других объектов PKI AD, осуществлять мониторинг следующих событий:

  • 4899 (A Certificate Services template was updated). Событие возникает при выпуске сертификата с измененным шаблоном и отображает измененные атрибуты. Если параметры шаблона в кэше сервера отличаются от параметров шаблона, по которому запрошен сертификат, то регистрируется данное сообщение.
  • 4900 (A Certificate Services template security was updated). Событие генерируется при выпуске сертификата по шаблону с измененными разрешениями безопасности ACL. Если ACL шаблона в кэше сервера отличается от ACL шаблона, по которому запрошен сертификат, регистрируется данное сообщение. Полезная информация содержится в поле NewSecurityDescriptor.
  • 4662 (An operation was performed on an object). Событие возникает при изменении объекта в AD пользователем. При изменении шаблона изменится и соответствующий объект в AD в контейнере: CN=Public Key Services,CN=Services,CN=Configuration,DC=<domainname>,DC=<domainsuffix>. То же произойдет и при изменении объекта «рабочая станция» сервера центра сертификации. Соответственно, если для объектов в данном контейнере настроены SACL, можно получать информацию об изменениях в этих объектах.

Важно отметить, что события 4899 и 4900 не подходят для обнаружения модификации шаблона в режиме реального времени.

ESC6: некорректная конфигурация центра сертификации с использованием флага EDITF_ATTRIBUTESUBJECTALTNAME2 (everything and for everyone, EDITF_ATTRIBUTESUBJECTALTNAME2)

Использование флага EDITF_ATTRIBUTESUBJECTALTNAME2 в центре сертификации позволяет задать произвольное альтернативное имя субъекта для всех сертификатов, несмотря на конфигурацию шаблона сертификата. Таким образом, злоумышленник может выпустить сертификат, где в качестве альтернативного имени будет указано любое имя пользователя, в том числе Domain Admin, и пройти с его помощью аутентификацию в домене.

Рекомендации

Следует установить обновления с исправлениями из KB5014754, если они не установлены. Также для предотвращения реализации данного вектора рекомендуется отключить использование флага EDITF_ATTRIBUTESUBJECTALTNAME2 в центре сертификации с помощью использования следующих инструментов: PSPKIAudit, Certify.exe, certutil.exe. Если использование этого флага является необходимым, рекомендуется включить функцию одобрения запросов диспетчером сертификатов центра сертификации.

Рекомендации по мониторингу

Для обнаружения необходимо с помощью ПО Sysmon выполнять мониторинг события 13 по изменению ключа реестра: *\system\currentcontrolset\services\certsvc\configuration\*\policymodules\certificateauthority_microsoftdefault.policy\editflags. Если значение подходит под маску DWORD=0x00X5XXXX, то у сертификата выставлен флаг EDITF_ATTRIBUTESUBJECTALTNAME2.

Для выявления подозрительных запросов на получение сертификата следует осуществлять мониторинг событий 4886 (Certificate Services received a certificate request) и 4887 (Certificate Services approved a certificate request and issued a certificate), в которых содержатся сведения о пользователе, запросившем сертификат, и узле, с которого запрос получен, а также о времени создания запроса.

ESC7: недостаточный контроль доступа к центру сертификации (vulnerable certificate authority access control)

Недостаток ESC7 основывается на возможности управлять центром сертификации при наличии прав ManageCA (администратор центра сертификации) и Issue and Manage Certificates (менеджер сертификатов). Например, недостаток позволяет одобрить отклоненные запросы на получение сертификата. Для эксплуатации достаточно получить контроль над пользователем с правом ManageCA, так как оно позволяет выдать себе право Issue and Manage Certificates.

Рекомендации по мониторингу

Необходимо обращать внимание на атрибут SecuritySettings, который может содержать небезопасные разрешения центра сертификации ManageCA и ManageCertificates для непривилегированных пользователей или групп.

Рекомендуется наблюдать за изменениями членства в группах ManageCA и Manage Certificates. Также, поскольку обладая правами ManageCA злоумышленник может использовать функции DCOM для изменения значения флага EDITF_ATTRIBUTESUBJECTALTNAME2, рекомендуется наблюдать за изменениями в объекте HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MyHome Lab Issuing Certification authority\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy (ключ: EditFlags, тип: DWORD).

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

  • 4880 (Certificate Services started). Событие создается при запуске служб сертификации. В полях содержится информация о хеш-сумме базы данных, сертификате и использовании закрытого ключа.
  • 4881 (Certificate Services stopped). Событие создается во время остановки служб сертификации. В полях содержится информация о хеш-сумме базы данных, сертификате и использовании закрытого ключа.
  • 4882 (The security permissions for Certificate Services changed). Событие генерируется каждый раз при изменении разрешений безопасности для служб сертификации (Certification Services). При изменении параметров security в полях dataname будут перечислены пользователи, группы и членство в группах на сервере AD CS.
  • 4885 (The audit filter for Certificate Services changed). Событие создается при изменении параметров аудита служб AD CS. При изменении параметров аудита служб AD CS в полях auditfilter указан id в битовом виде.
  • 4890 (The certificate manager settings for Certificate Services changed). Событие создается при изменении параметров менеджеров сертификатов в службе AD CS.
  • 4891 (A configuration entry changed in Certificate Services). Событие создается при изменении записей в конфигурации AD CS, например при изменении модуля политик AD CS, изменении в списке отзыва сертификатов (Certificate Revocation List, CRL).
  • 4892 (A property of Certificate Services changed). Событие создается при изменении свойств службы AD CS. Полезная информация содержится в полях propertyname, propertyindex, propertyvalue.

ESC8: атака NTLM relay на веб-службу регистрации сертификатов (NTLM relay to AD CS HTTP endpoints)

Атака может быть осуществлена в случае, если установлена и включена веб-регистрация сертификатов. Используя NTLM relay, злоумышленник может перенаправить любую входящую NTLM-аутентификацию на HTTP-интерфейс службы сертификации и запросить сертификат для любого пользователя или рабочей станции.

Превентивные меры защиты

Для предотвращения атаки рекомендуется:

  • рассмотреть возможность отключения веб-службы регистрации сертификатов Web Enrollment;
  • рассмотреть возможность отключения аутентификации с использованием протокола NTLM;
  • включить настройку Extended Protection for Authentication веб-сервера Microsoft IIS.

Рекомендации по мониторингу

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

  • 4886 (Certificate Services received a certificate request), 4887 (Certificate Services approved a certificate request and issued a certificate) и 4888 (Certificate Services denied a certificate request). В событиях содержатся сведения о пользователе, запросившем сертификат, и узле, с которого запрос получен, а также о времени создания запроса. Необходимо сопоставлять имя узла и IP-адрес, с которого осуществлялось соединение: в случае проведения атаки NTLM relay остается имя исходного узла, но IP-адрес заменяется на IP-адрес скомпрометированного злоумышленником узла.
  • 5145 (A network share object was checked to see whether client can be granted desired access). При проведении атаки ESC8 на CA-сервере происходит обращение к именованному каналу cert (object.storage.id = "\\*\ipc$" и object.storage.name = "cert"). Если запрос на выпуск сертификата отправлен от имени учетной записи рабочей станции (machine account), то такое событие должно считаться подозрительным.
  • 4768 (A Kerberos authentication ticket (TGT) was requested). Мониторинг этого события необходим для выявления использования при аутентификации нелегитимных сертификатов по их серийному номеру.

Маппинг сертификатов

Прежде чем говорить об эксплуатации векторов ESC9, ESC10, стоит сказать пару слов о маппинге сертификатов. При аутентификации с использованием сертификата контроллер домена извлекает из него информацию о субъекте (пользователе или рабочей станции) и сопоставляет (маппит) ее с пользователем или рабочей станцией домена. Этот процесс называется маппингом сертификата (certificate mapping). Маппинг может быть неявным (implicit) или явным (explicit), слабым (weak) или сильным (strong).

ESC9: отсутствие расширений безопасности (no security extension)

Для определения типа маппинга используется ключ StrongCertificateBindingEnforcement. При этом если в атрибуте сертификата msPKI-Enrollment-Flag содержится флаг CT_FLAG_NO_SECURITY_EXTENSION, то сильный маппинг не будет использован. Это позволяет осуществить запрос сертификата от имени другого пользователя в обход сильного маппинга сертификатов и аутентифицироваться по данному сертификату в домене.

Превентивные меры защиты

Для предотвращения атаки рекомендуется:

  • установить значение 2 для ключа реестра StrongCertificateBindingEnforcement;
  • предоставлять права на изменение объектов в AD только конкретным группам поддержки и управления инфраструктуры;
  • удостовериться, что шаблоны сертификатов не содержат флаг CT_FLAG_NO_SECURITY_EXTENSION в атрибуте msPKI-Enrollment-Flag.

Рекомендации по мониторингу

Для обнаружения атаки необходимо осуществлять мониторинг:

  • Изменений шаблонов сертификатов в AD, например мониторинг события 4899 (A Certificate Services template was updated), которое возникает при выпуске сертификата с измененным шаблоном. Если параметры шаблона в кэше сервера отличаются от параметров шаблона, по которому запрошен сертификат, то регистрируется данное сообщение. Важно отметить, что событие не подходит для обнаружения модификации шаблона в режиме реального времени.
  • Изменений объектов пользователей и рабочих станций в AD, например таких, как событие 5136 (A directory service object was modified), которое генерируется при изменении объекта Active Directory, в том числе при изменении учетной записи и присвоении ей UPN, отличного от ее имени, и событие 4738 (A user account was changed), которое также генерируется при изменении учетной записи.
  • Событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC10: слабый маппинг сертификатов (weak certificate mappings)

  • Данный вектор основан на слабом маппинге, при котором для аутентификации используется UPN учетной записи, и аналогичен по механизму реализации вектору ESC9, но фокусируется на неправильных параметрах в разделах реестра, а не на конфигурациях шаблонов. Этот вектор имеет два сценария реализации, с помощью которых злоумышленник может скомпрометировать учетную запись администратора контроллера домена.

Превентивные меры защиты

Для предотвращения атаки рекомендуется:

  • установить значение 2 для ключа реестра StrongCertificateBindingEnforcement;
  • проверить, что ключ реестра CertificateMappingMethods не содержит флагов слабых методов маппинга;
  • предоставлять права на изменение объектов в AD только конкретным группам поддержки и управления инфраструктуры;
  • убедиться, что шаблоны сертификатов не содержат флаг CT_FLAG_NO_SECURITY_EXTENSION в атрибуте msPKI-Enrollment-Flag.

Рекомендации по мониторингу

Для обнаружения атаки необходимо осуществлять мониторинг:

  • Изменений шаблонов сертификатов в AD, например мониторинг события 4899 (A Certificate Services template was updated), которое возникает при выпуске сертификата с измененным шаблоном. Если параметры шаблона в кэше сервера отличаются от параметров шаблона, по которому запрошен сертификат, то регистрируется данное сообщение. Важно отметить, что событие не подходит для обнаружения модификации шаблона в режиме реального времени.
  • Изменений объектов пользователей и рабочих станций в AD, например таких, как событие 5136 (A directory service object was modified), которое генерируется при изменении объекта Active Directory, в том числе при изменении учетной записи и присвоении ей UPN, отличного от ее имени, и событие 4738 (A user account was changed), которое также генерируется при изменении учетной записи.
  • Событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC11: атака NTLM relay на протокол ICPR (relaying NTLM to ICPR)

Интерфейс RPC позволяет клиенту взаимодействовать с центром сертификации для запроса и получения сертификатов. Отключенный атрибут IF_ENFORCEENCRYPTICERTREQUEST на сервере AD CS позволяет проводить атаки NTLM relay для перенаправления аутентификации к незащищенному интерфейсу RPC и запрашивать сертификаты через уязвимый сервер центра сертификации. В результате атаки злоумышленник получает действительный сертификат и может выдавать себя за жертву в домене.

Превентивные меры защиты

Для предотвращения реализации данного вектора рекомендуется включить шифрование, установив атрибут IF_ENFORCEENCRYPTICERTREQUEST. Однако стоит отметить, что установка этого атрибута может привести к нарушению совместимости со старыми клиентами Windows или клиентами, отличными от Windows.

Также рекомендуется:

  • обеспечить принудительное подписание пакетов для клиентов и серверов по всей сети с помощью GPO;
  • проверить списки контроля доступа Active Directory: следует использовать принцип наименьших привилегий;
  • реализовать сегментацию сети в соответствии с лучшими практиками информационной безопасности, чтобы предотвратить relay-атаки;
  • не использовать NTLM.

Рекомендации по мониторингу

Обнаружение атаки возможно с помощью мониторинга:

  • Событий входа в систему, например события 4624 (An account successfully logged on). Особое внимание стоит уделять мониторингу событий, которые используют NTLM с несовпадающим исходным IP-адресом и именем (поля sourceip и name).
  • Событий, связанных с изменением ключа реестра InterfaceFlags по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA NAME>.
  • Событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC12: доступ к оболочке центра сертификации AD CS с помощью YubiHSM (shell access to AD CS CA with YubiHSM)

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

Превентивные меры защиты

Для минимизации рисков, связанных с эксплуатацией этой уязвимости, рекомендуется ограничить доступ к чтению ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword, а также к серверу Windows, на котором запущен экземпляр CA, для любых авторизованных пользователей. Доступ необходимо предоставить только администраторам PKI или администраторам AD, обладающим сопоставимыми привилегиями. К этим привилегиям относится возможность добавлять себя в группу безопасности администраторов PKI или сбрасывать пароль администратора PKI для выдачи себя за другое лицо, а также возможность изменять шаблоны сертификатов в глобальном каталоге AD, делая их уязвимыми для атак ESC1.

Рекомендации по мониторингу

Необходимо отслеживать доступ к ключу аутентификации YubiHSM2 при помощи включения аудита для соответствующей ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM. Для этого необходимо осуществлять мониторинг события 4663 (An attempt was made to access an object), которое генерируется при получении доступа к чтению объектов Windows.

ESC13: злоупотребление полномочиями привязанной группы (OID group link abuse)

В шаблоне сертификата может быть определена политика выдачи (Issuance Policy), которая содержит атрибут msDS-OIDToGroupLink, указывающий на какую-либо группу безопасности AD. В результате нарушитель может получить сертификат для аутентификации от имени подконтрольной учетной записи, который наделяет владельца сертификата правами группы AD, в которой данный пользователь не состоит.

Превентивные меры защиты

Для защиты от атаки необходимо:

  • Включить SACL для объектов шаблонов сертификатов в AD в контейнере: CN=Certificate Templates, CN=Public Key Services, CN=Services, CN=Configuration, DC=<domainname>, DC=<domainsuffix>. Отслеживать действия: запись, удаление, изменение DACL и изменение владельца объекта.
  • Провести аудит шаблонов сертификатов и ограничить для пользователей, которые не должны состоять в привилегированных группах AD, право запрашивать сертификаты с использованием шаблона сертификата, в котором указан соответствующий OID политики и в политике заполнено свойство msDS-OIDToGroupLink.

Рекомендации по мониторингу

Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и аутентификации с их использованием (см. Таблицу 1).

ESC14: слабый явный маппинг (weak explicit mapping)

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

Рекомендации по мониторингу

Для обнаружения данной атаки необходимо осуществлять мониторинг:

  • Изменений шаблонов сертификатов в AD, например мониторинг события 4899 (A Certificate Services template was updated), которое возникает при выпуске сертификата с измененным шаблоном. Если параметры шаблона в кэше сервера отличаются от параметров шаблона, по которому запрошен сертификат, то регистрируется данное сообщение.
  • Изменений объектов пользователей и рабочих станций в AD, например таких, как событие 5136 (A directory service object was modified), которое генерируется при изменении объекта Active Directory. Из особенностей можно выделить запись в атрибут altSecurityIdentities другого пользователя ссылки на сертификат.
  • Событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).

ESC15: злоупотребление политикой приложений (EKUwu application policies)

ESC15 — это вектор атаки, который использует шаблоны сертификатов с версией схемы 1 в AD CS. Нарушитель может при запросе сертификата манипулировать полем EKU и добавлять дополнительные идентификаторы OID политики применения (Application Policies). Это позволяет пользователям указывать произвольные условия, в которых может использоваться выданный сертификат. Используя эти условия злоумышленники могут выдавать себя за привилегированных пользователей, таких как администраторы домена, и повышать свои привилегии внутри домена.

Превентивные меры защиты

Для предотвращения злоупотребления политикой приложений следует обновить Windows Server до актуальной версии, в которой исправлен описанный недостаток.

Рекомендуется проверить все шаблоны сертификатов в среде AD CS, особенно те, которые имеют версию схемы шаблона сертификата 1. Шаблоны, которые не используются, следует удалить. В качестве альтернативы шаблоны версии 1 можно обновить до версии схемы 2, чтобы снизить риски эксплуатации данного вектора.

Также рекомендуется изменить все уязвимые шаблоны, отключив опцию Supplied in the Request и вместо этого выбрав Built from information in Active Directory. Это не позволит злоумышленникам указывать произвольные имена субъектов при запросе сертификатов.

Обновите шаблоны с помощью ADSIEDIT, для этого используйте редактор атрибутов ADSIEDIT и обновите атрибут msPKI-Certificate-Name-Flag с помощью следующей команды:

Set-ADObject -Identity "CN=WebServer,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=yourdomain,DC=com" -Replace @{ 'msPKI-Certificate-Name-Flag' = 0 }

Стоит отметить, что для шаблонов со схемой версии 1 изменения не могут быть внесены через интерфейс certtmpl.msc.

Рекомендации по мониторингу

Логику обнаружения можно построить на загрузке шаблона первой версии и запросе на его основе сертификата с уточнением политик. Для этого необходимо осуществлять мониторинг:

  • События 4898 (Certificate Services loaded a template), которое генерируется при загрузке шаблона Windows и содержит в себе информацию о версии схемы и другие подробности. Это событие достаточно информативно, однако его появление ограничено случаями, когда шаблон используется впервые после редактирования или перезагрузки CA.
  • События 4887 (Certificate Services approved a certificate request and issued a certificate), в котором содержатся сведения о пользователе, запросившем сертификат, и узле, с которого запрос получен, а также информация об указанных Application Policies в поле object.property.

Таблица 1. События для мониторинга действий с сертификатами

Идентификатор событияСообщениеОписание
39The Key Distribution Center (KDC) encountered a user certificate that was valid but could not be mapped to a user in a secure wayСобытие появляется при попытке пользователя выполнить аутентификацию клиента с предоставлением сертификата, не соответствующего политике сильного маппинга. Может быть предупреждением или ошибкой — в зависимости от настроенной политики сильного маппинга. Если требуется сильный маппинг — ошибка, если сильный маппинг не требуется, но включено наблюдение — предупреждение (политика настроена по умолчанию и действует до февраля 2025 года; если политика отключена — сообщение не регистрируется)
40Certificate predates accountОшибка: сертификат выпущен раньше, чем создан аккаунт, для которого он предназначен, соответственно сертификат отклонен
41Users SID does not match Certificate SIDОшибка: SID, указанный в сертификате, не соответствует SID пользователя. Запрос отклонен
4624An account successfully logged onВ качестве Authentication Package будет указан Kerberos, в качестве Logon Process Name — Schannel. В событии также будет указана информация о пользователе, указанном в сертификате, и IP-адрес локального компьютера
4648A logon was attempted using explicit credentialsВ свойствах сообщения в качестве целевого аккаунта будет указан пользователь, упоминающийся в сертификате, в качестве целевого сервера будет указан localhost. Также в дополнительных полях будет указан IP-адрес узла, на котором происходит вход в систему. При успешном завершении S4U2Self далее появится сообщение 4624
4768A Kerberos authentication ticket (TGT) was requestedПри выполнении аутентификации по сертификату будут заполнены поля Certiticate Information
4769A Kerberos service ticket was requestedПри выполнении аутентификации по Schannel контроллер домена попробует получить информацию об аккаунте, указанном в сертификате с помощью S4U2Self, поэтому появится сначала это событие, а затем событие 4648
4886Certificate Services received a certificate requestЗапрос сертификата клиентом
4887Certificate Services approved a certificate 
request and issued a certificate
Одобрение и выпуск сертификата
1006A new certificate has been installedСертификат установлен, в информационных полях есть EKU OID, по которому можно определить его назначение. Сообщение появится лишь в случае использования стандартных средств для запроса сертификата; использование WinAPI не генерирует подобных сообщений
1007A certificate has been exportedСертификат экспортирован, в информационных полях есть EKU OID, по которому можно определить его назначение. Сообщение появится лишь в случае использования стандартных средств для запроса сертификата; использование WinAPI не генерирует подобных сообщений

В ноябре 2024 года вышло обновление для исправления этой проблемы.