Externer Wald-Domain - Einweg (Outbound)

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks

In diesem Szenario vertraut Ihre Domain einigen Befugnissen einem Principal aus anderen Domains.

AufzÀhlung

Outbound-Vertrauen

# Notice Outbound trust
Get-DomainTrust
SourceName      : root.local
TargetName      : ext.local
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

# Lets find the current domain group giving permissions to the external domain
Get-DomainForeignGroupMember
GroupDomain             : root.local
GroupName               : External Users
GroupDistinguishedName  : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL
MemberDomain            : root.io
MemberName              : S-1-5-21-1028541967-2937615241-1935644758-1115
MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL
## Note how the members aren't from the current domain (ConvertFrom-SID won't work)

Trust Account Attack

Eine SicherheitsanfĂ€lligkeit besteht, wenn eine Vertrauensbeziehung zwischen zwei DomĂ€nen hergestellt wird, hier als DomĂ€ne A und DomĂ€ne B identifiziert, wobei DomĂ€ne B ihr Vertrauen auf DomĂ€ne A ausdehnt. In diesem Setup wird ein spezielles Konto in DomĂ€ne A fĂŒr DomĂ€ne B erstellt, das eine entscheidende Rolle im Authentifizierungsprozess zwischen den beiden DomĂ€nen spielt. Dieses Konto, das mit DomĂ€ne B verbunden ist, wird verwendet, um Tickets fĂŒr den Zugriff auf Dienste ĂŒber die DomĂ€nen hinweg zu verschlĂŒsseln.

Der kritische Aspekt, den es hier zu verstehen gilt, ist, dass das Passwort und der Hash dieses speziellen Kontos von einem DomĂ€nencontroller in DomĂ€ne A mit einem Befehlszeilenwerkzeug extrahiert werden können. Der Befehl, um diese Aktion auszufĂŒhren, ist:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local

Diese Extraktion ist möglich, da das Konto, das mit einem $ nach seinem Namen identifiziert wird, aktiv ist und zur Gruppe “Domain Users” der DomĂ€ne A gehört, wodurch es die mit dieser Gruppe verbundenen Berechtigungen erbt. Dies ermöglicht es Personen, sich mit den Anmeldeinformationen dieses Kontos gegen die DomĂ€ne A zu authentifizieren.

Warnung: Es ist möglich, diese Situation auszunutzen, um einen Fuß in der DomĂ€ne A als Benutzer zu fassen, wenn auch mit eingeschrĂ€nkten Berechtigungen. Dieser Zugriff ist jedoch ausreichend, um eine Enumeration in der DomĂ€ne A durchzufĂŒhren.

In einem Szenario, in dem ext.local die vertrauende DomĂ€ne und root.local die vertrauenswĂŒrdige DomĂ€ne ist, wĂŒrde ein Benutzerkonto mit dem Namen EXT$ innerhalb von root.local erstellt. Durch spezifische Tools ist es möglich, die Kerberos-VertrauensschlĂŒssel zu dumpen, wodurch die Anmeldeinformationen von EXT$ in root.local offengelegt werden. Der Befehl, um dies zu erreichen, lautet:

lsadump::trust /patch

Folgendes könnte man tun: Man könnte den extrahierten RC4-SchlĂŒssel verwenden, um sich als root.local\EXT$ innerhalb von root.local mit einem anderen Tool-Befehl zu authentifizieren:

.\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4:<RC4> /dc:dc.root.local /ptt

Dieser Authentifizierungsschritt eröffnet die Möglichkeit, Dienste innerhalb von root.local zu enumerieren und sogar auszunutzen, wie zum Beispiel einen Kerberoast-Angriff durchzufĂŒhren, um Anmeldeinformationen von Dienstkonten zu extrahieren mit:

.\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local

Sammeln des Klartext-Vertrauenspassworts

Im vorherigen Ablauf wurde der Vertrauens-Hash anstelle des Klartextpassworts verwendet (das ebenfalls von mimikatz extrahiert wurde).

Das Klartextpasswort kann erhalten werden, indem die [ CLEAR ]-Ausgabe von mimikatz in Hexadezimal umgewandelt und Null-Bytes ‘\x00’ entfernt werden:

Manchmal muss bei der Erstellung einer Vertrauensbeziehung ein Passwort vom Benutzer fĂŒr das Vertrauen eingegeben werden. In dieser Demonstration ist der SchlĂŒssel das ursprĂŒngliche Vertrauenspasswort und daher menschenlesbar. Da der SchlĂŒssel zyklisch ist (alle 30 Tage), wird der Klartext nicht menschenlesbar sein, ist aber technisch weiterhin verwendbar.

Das Klartextpasswort kann verwendet werden, um eine regulĂ€re Authentifizierung als Vertrauenskonto durchzufĂŒhren, als Alternative zur Anforderung eines TGT unter Verwendung des Kerberos-GeheimschlĂŒssels des Vertrauenskontos. Hier wird root.local von ext.local nach Mitgliedern der Domain Admins abgefragt:

Referenzen

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks