펜테스팅 위키
  • Welcome
    • Home
  • 정보 수집
    • OSINT
      • Sub Domain
      • Google Hacking
      • Github
      • IP Address
      • Employees
    • 내부망
      • RID Cycling
      • Password Spraying
      • Password Must Change
      • Extension
        • xlsx/ods
        • pfx
        • vhd
        • pst
        • vbs
        • hc
      • Protocol
        • 21 - FTP
        • 22 - SSH
        • 25 - SMTP
        • 23 - Telnet
        • 53 - DNS
        • 80/443 - HTTP
        • 88 - Kerberos
        • 111 - RPC
        • 135 - msrpc
        • 139/445 - SMB
        • 389/636 - LDAP
        • 1433 - MSSQL
        • 5985/5986 - wsman
  • 초기 침투
    • CVEs
      • CVE-2025-31486
    • Phishing
      • Command File
      • EXE + LNK
      • wax
      • Microsoft Word
    • Web
      • Quary Language
        • SQL
        • GraphQL
      • File Upload
      • File Download
      • XSS
      • SSRF
      • CSRF
      • Open Redirect
      • SOP / CORS
    • ZIP Slip
  • 지속성
    • Active Directory
      • Golden Tickets
      • Diamond Tickets
      • DC Shadow
      • RID Hijacking
      • Certificate
    • Local
      • Task Scheduler
      • Startup Folder
      • Registry AutoRun
      • COM
      • WMI Event Subscription
      • SSH Key Injection
      • DLL Hijacking
      • DLL SideLoading
      • Create Account
  • 권한 상승
    • Active Directory
      • DACL
        • ReadGMSAPassword
        • ReadLAPSPassword
        • ForceChangePassword
        • AddSelf
        • GenericAll
        • Inherited GenericAll
        • WriteOwner
        • GenericWrite
        • WriteProperty
        • WriteSPN
        • AddMembers
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
        • Restore-ADObject
      • AD CS
        • Abuse Permissions
        • ESC1
        • ESC2
        • ESC3
        • ESC4
        • ESC5
        • ESC6
        • ESC7
        • ESC8
        • ESC9
        • ESC10
        • ESC11
        • CVE-2022-26923
        • Non-PKINIT
      • MS14-068
      • Server Operators
      • DnsAdmins
      • noPac
      • Silver Tickets
      • KrbRelayUp
      • GPO
    • Windows
      • SeImpersonatePrivilege
      • Unquoted Service Path
      • Weak Service Permissions
      • Weak Service Binary Permissions
      • UAC Bypass
      • Always Install Elevated
      • Autoruns
      • Credential Manager
      • Local Service Account
  • 민감정보 탈취
    • Active Directory
      • Kerberoasting
      • Timeroasting
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • Shadow Credentials
      • DCSync
      • LSASS
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
      • Network Access Account Credentials
      • DPAPI Backup Key
    • Windows
      • Unattended File
      • DPAPI
      • Hard-coding Credentials
      • SeBackupPrivilege
  • 측면 이동
    • File Transfer
      • SCP
      • ZIP
      • ncat
      • Python
      • PowerShell
      • certutil
      • wget
      • SMB
      • Base64
      • FTP
      • WebDav
      • cURL
    • Pivoting
      • SOCKS
      • Proxifier
      • Remote Port Forwarding
    • NTLM Relay
    • WebDAV Relay
    • WinRM
    • PsExec
    • WMI
    • DCOM
    • RDP
    • Port Forwarding
    • Domain Trust Discovery
  • 사용자 가장
    • Pass the Hash
  • Pass the Ticket
  • Overpass the Hash
  • Token Impersonation
  • Make Token
  • Process Injection
  • Domain Trust
    • Active Directory Trusts
    • Two-way Domain Trust
    • One-way Domain Trust
  • ETC
    • CS
      • Active Directory
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Delegation
      • OAuth 2.0
      • S4U
      • SCCM
      • SID History
      • TRUSTWORTHY
      • Link Server Passwords
      • SSL Pinning
    • Tools
      • Mindmap
      • Cobalt Strike
      • BloodHound
      • LDAP Search
      • Hydra
      • Hashcat
      • Ligolo-ng
    • Home Lab
Powered by GitBook
On this page
  • Trust Type
  • 단방향 신뢰 관계
  • 양방향 신뢰 관계
  • 부모-자식 관계
  • Forest
  • 정보 수집
  • References

Was this helpful?

Export as PDF
  1. Domain Trust

Active Directory Trusts

PreviousProcess InjectionNextTwo-way Domain Trust

Last updated 18 hours ago

Was this helpful?

대규모 조직에서는 Active Directory를 관리하고 운영하는데 있어서 한개의 도메인만 사용하기에는 부족할 수 있습니다. 두 개 이상의 도메인을 관리할 때, 서로 다른 도메인 객체가 리소스에 대해 접근을 요구하거나, 접근을 허용해야 하는 경우가 발생할 수 있습니다. 이럴 때 도메인 신뢰 관계를 통해 서로의 엑세스에 대해 접근을 허용할 수 있습니다.

Trust Type

단방향 신뢰 관계

트러스트는 단방향일 수도 있고 양방향일 수도 있으며, 전이적일 수도, 비전이적일 수도 있습니다. 먼저 단방향 트러스트는 신뢰하는 도메인과 신뢰받는 도메인이라는 개념으로 시작합니다.

단방향 신뢰 관계는 서로가 서로의 리소스에 대해 접근하도록 허용하는 것이 아닌, 일방적으로 한 쪽만이 신뢰하고 접근할 수 있는 관계입니다. 위 그림에서는 왼쪽의 도메인이 오른쪽을 신뢰하고, 오른쪽의 도메인이 왼쪽 도메인의 리소스에 대해 접근할 수 있습니다. 본인 도메인에 접근하도록 허용하는 도메인(왼쪽 도메인)을 신뢰하는 도메인(Trusting Domain)이라 부르고, 신뢰를 받기 때문에 외부 도메인의 리소스에 접근할 수 있는 도메인(오른쪽 도메인)을 신뢰받는 도메인(Trusted Domain)이라고 부릅니다.

반대로 서로가 서로를 신뢰하는 경우, 이는 양방향 신뢰 관계라 부르며 서로가 서로의 리소스에 대해서 접근할 수 있습니다. 양방향 신뢰 관계인 도메인을 포레스트 단위로 칭합니다.

신뢰 구조가 생성되면 신뢰하는 도메인에는 신뢰받는 도메인의 NetBIOS 이름에 $ 기호를 붙인 계정이 추가되는데 이것을 신뢰 계정(Trust Account)이라 부릅니다. 신뢰 도메인 간에는 기본적으로 30일마다 변경되는 공유 패스워드가 존재하는데, 신뢰 계정의 패스워드는 이 값으로 설정됩니다.

양방향 신뢰 관계

양방향 신뢰 관계는 단방향 신뢰 관계가 서로를 향한 것과 동일합니다. 따라서 단방향 신뢰 관계에서는 신뢰하는 도메인에 신뢰 계정이 생성되지만, 양방향 구조에서는 서로의 도메인에 서로의 NetBIOS 이름으로 생성되는 신뢰 계정이 존재합니다.

이 신뢰 관계에 있는 도메인 객체들이 할 수 있는 행위는 단방향 신뢰 관계에서 신뢰받는 도메인이 할 수 있는 행위와 일치합니다.

외부 도메인의 서비스에 접근 시 커버로스는 다음 단계를 거칩니다.

  1. 사용자는 도메인에 인증하여 TGT 발급 요청(AS-REQ)

  2. KDC는 사용자의 자격 증명을 확인 후 TGT 발급(AS-REP)

  3. 사용자는 외부 도메인 서비스에 대한 서비스 티켓을 요청(TGS-REQ)

  4. KDC는 요청한 서비스가 외부 도메인임을 인지하고 레퍼럴 티켓 발급(TGS-REP)

  5. 사용자는 레퍼럴 티켓을 통해 외부 도메인 KDC에 서비스 티켓 요청

  6. 외부 도메인은 레퍼럴 티켓을 복호화하여 확인 후 서비스 티켓 발급

  7. 사용자는 외부 서비스 이용

내부 도메인에 대한 TGS-REQ에서는 realm 필드를 내부 도메인으로 지정하되 sname-string 필드는 외부 SPN으로 지정합니다. 이때 KDC는 요청 들어온 SPN이 내부에 없을 경우 트러스트 관계가 있는지 확인 한 뒤, 있다면 외부 도메인의 SPN이라 여겨 레퍼럴 티켓을 발급합니다. 이 과정에서 KDC는 외부 도메인의 SPN 목록을 열거할 권한이 없기 때문에, 존재하지 않는 SPN을 입력하더라도 레퍼럴 티켓 자체는 반환됩니다.

발급된 티켓을 가지고 외부 도메인에 서비스 티켓을 요청합니다. 이때는 처음 sname-string 필드에 명시했던 외부 도메인의 SPN을 기입하여 최종적으로 서비스에 대한 접근권을 획득합니다.

부모-자식 관계

도메인 하위에 자식 도메인이 생기게 되면 기본적으로 부모와 자식 도메인 간의 관계는 양방향 신뢰 관계가 맺어집니다. 또한 자식 도메인에서 도메인 관리자 권한을 가진 경우, SID History라는 특수 속성이 포함된 TGT를 통해 부모 도메인에서도 도메인 관리자 권한을 획득할 수 있습니다.

SID History는 사용자 계정을 다른 도메인으로 이전할 때 사용자의 기존 도메인에서의 권한을 이전한 도메인에서도 유지시키도록 고안된 개념입니다.

골든 티켓 / 다이아몬드 티켓 공격을 통해 위조된 TGT를 생성할 때, 부모 도메인에서 권한이 있는 그룹(Enterprise Admins, Domain Admins 등)의 SID를 추가하면 부모 도메인의 모든 리소스에 접근할 수 있게 됩니다.

# 부모 도메인의 Domain Admins SID 획득
Get-DomainGroup -Identity "Domain Admins" -Domain <Parent Domain> -Properties ObjectSid

# 다이아몬드 티켓 생성
.\Rubeus.exe diamond /tgtdeleg /ticketuser:Administrator /ticketuserid:500 /groups:519 /sids:<P-Domain Admins SID> /krbkey:<krbtgt key> /nowrap

Forest

또한 도메인 간의 트러스트 관계에서 A ↔ B ↔ C 간의 양방향 신뢰 관계는 전이적 특성 때문에 A와 C도 암묵적으로 양방향 신뢰를 갖지만, 포레스트는 전이적 특성이 적용되지 않습니다.

정보 수집

# 트러스트 모델 수집
Get-ADTrust -Filter * | Select-Object Name, Direction

여기서:

  • Name : 신뢰 관계 도메인 이름

  • Direction :

    • Inbound : 대상 도메인이 나의 리소스에 접근 가능

    • Outbound : 내가 대상의 리소스에 접근 가능

    • Bidirectional : 서로가 서로의 리소스에 접근 가능

# 트러스트 모델 수집
ldapsearch -x -H ldap://192.168.1.9 -D "Attack3r@pentest.local" -w "Password123!" -b "dc=pentest,dc=local" "(objectClass=trustedDomain)" name trustType TrustDirection

References

포레스트는 도메인의 집합으로 하나의 루트 도메인일 수도 있고, 여러개의 도메인이 있을 수도 있습니다. 포레스트는 Microsoft가 보안 경계로 주장하는 모델이지만, 에서 이러한 주장을 비판당하기도 했습니다. 포레스트 내부 도메인 간에는 기본적으로 상호 접근이 가능하지만 포레스트는 설계 상 트러스트 관계가 아니면 접근하지 못하도록 되어있습니다.

Will Schroeder의 블로그
Different types of Trusts in an Active DirectoryZindagi technologies
A Guide to Attacking Domain TrustsMedium
It’s All About Trust – Forging Kerberos Trust Tickets to Spoof Access across Active Directory TrustsActive Directory Security
SID-History 특성 - Win32 appsMicrosoftLearn
Logo
Active Directory Domain Trusts & Trust Password ManagementActive Directory Security
Logo
Logo
TGS-REQ(내부 도메인)
TGS-REP(내부 도메인)
TGS-REQ(외부 도메인)
TGS-REP(외부 도메인)
https://adsecurity.org/?p=1588
https://www.cayosoft.com/what-is-an-active-directory-forest/