Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Центр сертификации в Active Directory может стать отличной целью атаки при выполнении тестирования на проникновение. В этой статье мы рассмотрим, как устроен этот центр, как происходит выдача сертификатов и как можно повысить привилегии в домене, используя возможности Active Directory Certification Services.
В Windows Server присутствует роль под названием Active Directory Certification Services (AD CS), которая нужна для реализации инфраструктуры открытых ключей (PKI) в сетях с контроллером домена. AD CS предназначена для выдачи сертификатов пользователям и компьютерам. Сертификаты могут использоваться для шифрования, подписи, аутентификации и тому подобного, и в целом эта роль выглядит как сервис для повышения безопасности в домене.
Чаще всего при пентесте домена Active Directory конечной целью ставится перехват учетной записи администратора. Получив админа, можно шифровать систему сдавать отчет и заканчивать проект. Есть множество способов добиться указанной цели, и один из них — эксплуатация неправильных конфигураций шаблонов, по которым выпускаются сертификаты.
На пути к получению администратора домена нам понадобится настоящий швейцарский нож в мире сертификатов — Certipy. Он позволяет искать информацию о шаблонах, запрашивать сертификаты и аутентифицироваться при помощи сертификатов, но самое главное — проводить атаки.
В рамках Active Directory центр сертификации реализует функцию инфраструктуры открытых ключей. В свою очередь, инфраструктура открытых ключей (PKI) — это набор служб и компонентов, позволяющих управлять ключами и сертификатами в сети.
Основная цель центра сертификации состоит в выдаче, отзыве, перевыпуске сертификатов и тому подобном. Центр сертификации, развернутый первым, является корнем инфраструктуры открытых ключей. Далее можно развертывать подчиненные ЦС, расположенные в иерархии инфраструктуры открытых ключей, в верхней части которой находится корневой ЦС.
Cертификат в общем смысле — это документ формата X.509, содержащий информацию о своем владельце. Может использоваться как средство идентификации и аутентификации.
Запрос сертификата
Сертификаты включают в себя некоторые параметры. Вот наиболее интересные из них:
Сертификаты выпускаются по определенным шаблонам, описывающим параметры, с которыми будет выпущен сертификат, например:
Проще говоря, шаблоны сертификатов определяют порядок запроса и использования сертификатов, выданных центром сертификации.
Шаблоны сертификатов хранятся в следующем контейнере:
CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=contoso,DC=com
Соответственно, получить шаблоны можно при помощи следующей команды PowerShell, используя модуль AD:
PS > Get-ADObject -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=contoso,DC=com" -Filter * -Properties *
Также в Windows есть предустановленный инструмент certutil
, который может вывести все шаблоны для сертификатов в более удобном и подробном виде.
$ certutil -v -template
Вывод cerutil.exe
Инструмент Certipy позволит сделать это с Linux и сразу выгрузить данные, которые можно загрузить в BloodHound.
$ certipy find 'contoso/john:[email protected]'
Шаблоны в BloodHound
Чтобы выпустить сертификат, нужно, чтобы наш пользователь состоял в доменной группе, у которой есть права на выпуск этого сертификата. Еще необходима возможность аутентифицироваться в домене. В совокупности эти два требования дадут максимальный импакт для атакующего.
Значения поля EKU, позволяющие аутентифицироваться в домене:
1.3.6.1.5.5.7.3.2
);
1.3.6.1.5.2.3.4
);
1.3.6.1.4.1.311.20.2.2
);
2.5.29.37.0
);
-
).
Для проведения тестов нам потребуется лабораторный стенд, состоящий из двух виртуальных машин: Windows Server 2016 и Kali Linux. Перечислим общие требования для всех атак:
Последние два требования выполняются в Windows Server по умолчанию, и на них можно не обращать внимания (привет, админы!). Еще нам потребуется возможность аутентификации в домене с выпущенным сертификатом. На нашем лабораторном стенде мы будем использовать пользователя Kent.Jill:P@ssw0rd
.
Сбор информации о цели — первый этап тестирования на проникновение. Для сбора информации и визуализации можно использовать Certipy + BloodHound. Перед этим нужно загрузить подготовленные разработчиками Certipy запросы на свой хост.
wget -O ~/.config/bloodhound/customqueries.json https://raw.githubusercontent.com/ly4k/Certipy/main/customqueries.json
Получить информацию из центра сертификации позволяет модуль find
:
$ certipy find 'contoso.com/Kent.Jill:P@ssw0rd'@DC01.contoso.com
BloodHound дает возможность визуализировать информацию по объектам AD CS и правам на них, а также определить векторы повышения привилегий.
Запросы в BloodHound
Запросы в BloodHound
Эта атака основывается на изменении сертификата SAN — цифрового сертификата безопасности, который позволяет защищать несколько имен хостов одним сертификатом. Это позволит нам выпустить сертификат на другого пользователя, даже администратора домена. Чтобы атака прошла успешно, шаблон сертификата должен иметь установленный флаг ENROLLEE_SUPPLIES_SUBJECT
.
Источник: xakep.ru