Анастасия Коротеева
Анастасия КожахметоваВ последнее время служба сертификации Active Directory (AD CS) стала популярной целью для атакующих. Это связано с различными недостатками конфигурации службы, позволяющими ее скомпрометировать, а также с ее важностью в инфраструктуре. Служба сертификации позволяет развернуть собственную инфраструктуру открытых ключей (PKI) в доменной сети и предназначена для создания центра сертификации (CA), который используется для выдачи сертификатов пользователям. Сертификаты в AD — это документы, содержащие информацию об их владельце и использующиеся для определенных целей, таких как аутентификация клиента, подписание кода, шифрование данных и т. д. Шаблоны сертификатов используются для установки параметров сертификата, они определяют, как, кому, на сколько и на что могут быть выданы сертификаты. Эти сценарии использования сертификатов описываются с помощью расширения Extended Key Usage (EKU).
Хакеры могут использовать недостатки в AD CS для получения сертификатов и повышения привилегий в домене до максимальных. мы уже перечисляли основные векторы атак на эту службу, в этой статье мы более детально сфокусируемся на рекомендациях по предотвращению таких атак, а также по мониторингу попыток их проведения.
На данный момент обнаружено 15 векторов, которые в публичных источниках принято обозначать как ESC1–ESC15. Эти векторы лежат в основе атак, направленных на повышение привилегий в сетях Active Directory с включенной службой AD CS.
Атака основана на том, что шаблон сертификата позволяет указать произвольное альтернативное имя субъекта (subjectAltName, SAN) в запросе на выпуск сертификата. Это дает возможность атакующему выпустить сертификат на имя произвольного пользователя, в том числе администратора домена, и использовать его для получения Kerberos TGT с помощью техники pass the certificate.
Для защиты от этого вектора атаки, в случае отсутствия необходимости получать альтернативное имя из запроса, необходимо отключить данную опцию в шаблоне сертификата. Дополнительно могут быть использованы функции подтверждения запросов диспетчером центра сертификации и подписи запроса авторизованным сертификатом.
Если указание альтернативного имени в запросе является необходимым, рекомендуется:
Для обнаружения этого вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).
Если в шаблоне сертификата указан EKU Any Purpose или вообще отсутствует EKU, сертификат можно использовать для чего угодно, например для запроса другого сертификата от имени любого пользователя с указанием произвольных EKU или полей. Такой сертификат потенциально может быть использован не только для прохождения аутентификации в домене, но и для широкого ряда действий, например для подписи кода, аутентификации сервера и т. д.
Необходимо ограничить список пользователей, которые могут использовать данный шаблон, убедиться, что шаблон сертификата не содержит избыточных EKU, а также рассмотреть возможность использования функции подтверждения запросов диспетчером центра сертификации и подписи запроса авторизованным сертификатом.
Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).
Для реализации этого вектора атаки необходимо два уязвимых шаблона сертификата. Злоумышленник может запросить сертификат агента регистрации с использованием первого шаблона, а затем сформировать запрос на получение сертификата на имя другого пользователя с помощью второго шаблона и подписать его полученным ранее сертификатом. В результате от центра сертификации будет получен сертификат, который может быть использован для аутентификации от имени другого пользователя.
Для предотвращения атаки рекомендуется:
Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и событий, связанных с аутентификацией с использованием сертификатов (см. Таблицу 1).
Вектор ESC4 эксплуатирует некорректную настройку ACL (списков контроля доступа), которые позволяют непривилегированным участникам AD редактировать параметры безопасности шаблона. Хакер может внедрить неправильную конфигурацию в шаблон, для того чтобы сделать его уязвимым к другим векторам (например, к вектору ESC1 с помощью установки специального флага).
Для защиты от этого вектора атаки необходимо ограничить список пользователей, имеющих права записи (Owner, FullControl, WriteOwner, WriteDacl, WriteProperty), в параметрах доступа шаблона сертификата. Также рекомендуется использовать функции подтверждения запросов диспетчером центра сертификации и подписи запроса авторизованным сертификатом.
Для обнаружения данного вектора рекомендуется осуществлять мониторинг следующих событий в журналах на сервере центра сертификации и контроллерах домена:
CN=Public Key Services,CN=Services,CN=Configuration,DC=<domainname>,DC=<domainsuffix>. То же произойдет и при изменении объекта «рабочая станция» сервера центра сертификации. Соответственно, если для объектов в данном контейнере настроены SACL, можно получать информацию об изменениях в этих объектах.С помощью мониторинга перечисленных событий можно обнаружить наделение пользователей с низким уровнем привилегий широким набором прав. Важно отметить, что события 4899 и 4900 не подходят для обнаружения модификации шаблона в режиме реального времени.
Если злоумышленник с низкими привилегиями сможет получить контроль над другим объектом AD CS (например, над учетной записью сервера центра сертификации) и самим центром сертификации, атака, скорее всего, приведет к компрометации всей службы сертификации AD CS.
Обнаружение несанкционированной установки сертификата центра сертификации возможно путем аудита изменения атрибутов объекта NTAuthCertificates с помощью анализа события 5136 (A directory service object was modified).
Также рекомендуется отслеживать изменение других объектов PKI AD, осуществлять мониторинг следующих событий:
CN=Public Key Services,CN=Services,CN=Configuration,DC=<domainname>,DC=<domainsuffix>. То же произойдет и при изменении объекта «рабочая станция» сервера центра сертификации. Соответственно, если для объектов в данном контейнере настроены SACL, можно получать информацию об изменениях в этих объектах.Важно отметить, что события 4899 и 4900 не подходят для обнаружения модификации шаблона в режиме реального времени.
Использование флага 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 основывается на возможности управлять центром сертификации при наличии прав 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).
Кроме того, для своевременного обнаружения данной атаки рекомендуется осуществлять аудит событий, регистрирующих изменение параметров сервера:
Атака может быть осуществлена в случае, если установлена и включена веб-регистрация сертификатов. Используя NTLM relay, злоумышленник может перенаправить любую входящую NTLM-аутентификацию на HTTP-интерфейс службы сертификации и запросить сертификат для любого пользователя или рабочей станции.
Для предотвращения атаки рекомендуется:
Для выявления подозрительных запросов на получение сертификата следует осуществлять мониторинг следующих событий:
Прежде чем говорить об эксплуатации векторов ESC9, ESC10, стоит сказать пару слов о маппинге сертификатов. При аутентификации с использованием сертификата контроллер домена извлекает из него информацию о субъекте (пользователе или рабочей станции) и сопоставляет (маппит) ее с пользователем или рабочей станцией домена. Этот процесс называется маппингом сертификата (certificate mapping). Маппинг может быть неявным (implicit) или явным (explicit), слабым (weak) или сильным (strong).
Для определения типа маппинга используется ключ StrongCertificateBindingEnforcement. При этом если в атрибуте сертификата msPKI-Enrollment-Flag содержится флаг CT_FLAG_NO_SECURITY_EXTENSION, то сильный маппинг не будет использован. Это позволяет осуществить запрос сертификата от имени другого пользователя в обход сильного маппинга сертификатов и аутентифицироваться по данному сертификату в домене.
Для предотвращения атаки рекомендуется:
Для обнаружения атаки необходимо осуществлять мониторинг:
Для предотвращения атаки рекомендуется:
Для обнаружения атаки необходимо осуществлять мониторинг:
Интерфейс RPC позволяет клиенту взаимодействовать с центром сертификации для запроса и получения сертификатов. Отключенный атрибут IF_ENFORCEENCRYPTICERTREQUEST на сервере AD CS позволяет проводить атаки NTLM relay для перенаправления аутентификации к незащищенному интерфейсу RPC и запрашивать сертификаты через уязвимый сервер центра сертификации. В результате атаки злоумышленник получает действительный сертификат и может выдавать себя за жертву в домене.
Для предотвращения реализации данного вектора рекомендуется включить шифрование, установив атрибут IF_ENFORCEENCRYPTICERTREQUEST. Однако стоит отметить, что установка этого атрибута может привести к нарушению совместимости со старыми клиентами Windows или клиентами, отличными от Windows.
Также рекомендуется:
Обнаружение атаки возможно с помощью мониторинга:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA NAME>.Эта атака предполагает, что закрытый ключ центра сертификации хранится на внешнем устройстве 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.
В шаблоне сертификата может быть определена политика выдачи (Issuance Policy), которая содержит атрибут msDS-OIDToGroupLink, указывающий на какую-либо группу безопасности AD. В результате нарушитель может получить сертификат для аутентификации от имени подконтрольной учетной записи, который наделяет владельца сертификата правами группы AD, в которой данный пользователь не состоит.
Для защиты от атаки необходимо:
Для обнаружения данного вектора необходимо осуществлять мониторинг событий выпуска сертификатов и аутентификации с их использованием (см. Таблицу 1).
Эта атака основана на небезопасной конфигурации явного маппинга сертификатов. Злоумышленник, скомпрометировавший атакуемую учетную запись и обладающий возможностью запрашивать сертификаты, может использовать небезопасную конфигурацию маппинга для аутентификации от имени целевой учетной записи.
Для обнаружения данной атаки необходимо осуществлять мониторинг:
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.
Логику обнаружения можно построить на загрузке шаблона первой версии и запросе на его основе сертификата с уточнением политик. Для этого необходимо осуществлять мониторинг:
Таблица 1. События для мониторинга действий с сертификатами
В ноябре 2024 года вышло обновление для исправления этой проблемы.