펜테스팅 위키
  • 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
        • WriteOwner
        • GenericAll
        • GenericWrite
        • WriteSPN
        • AddMembers
        • WriteProperty
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
      • 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
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • DCSync
      • LSASS
      • Shadow Credentials
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
      • Network Access Account Credentials
    • 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
  • ETC
    • CS
      • Active Directory
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Active Directory Trusts
      • Delegation
      • OAuth 2.0
      • S4U
      • SCCM
      • SID History
    • Tools
      • Cobalt Strike
      • BloodHound
      • Rubeus
      • Certipy-ad
      • LDAP Search
      • Hydra
      • Hashcat
Powered by GitBook
On this page
  • Command
  • Mitigation
  • References

Was this helpful?

Export as PDF
  1. ETC
  2. CS

SID History

PreviousSCCMNextTools

Last updated 17 hours ago

Was this helpful?

SID는 Security Identifier로 Windows와 Active Directory 환경에서 사용자, 그룹, 컴퓨터 계정 등에 부여되는 고유 식별자입니다. 사용자가 로그인 하면 SID가 엑세스 토큰에 포함되며, 이후 이 토큰의 SID를 참조하여 리소스에 대한 접근 권한을 결정합니다.

서로 다른 도메인 간에 신뢰 관계가 있는 상황을 가정하겠습니다. 사용자 계정과 같은 도메인 객체가 다른 도메인으로 마이그레이션되는 상황이 발생하면 도메인마다 객체를 식별하는 고유한 값인 SID가 변경됩니다. 기존의 사용자 SID는 마이그레이션이 되기 이전의 도메인 A에 대한 SID 권한 정보이기 때문에, 만약 SID가 도메인 B에서 할당해주는 고유한 SID로 변경되지 않을 경우 사용자는 도메인 B에 대한 리소스 접근 권한이 아예 없기 때문입니다.

이렇게 서로 다른 도메인 간의 마이그레이션 상황을 위해서 사용자가 다시 도메인 A의 리소스로 엑세스 했을 때 이전 SID 정보를 통해 접근을 허가하기 위해 SID History 개념이 생겼습니다.

부모-자식 관계와 같이 자동으로 신뢰하는 관계에서는 SID Filtering 기능이 기본적으로 비활성화 상태이지만, 새로 생성된 신뢰 관계의 경우 이러한 기능이 기본적으로 활성화 된 상태입니다.

언급한 문제를 해결하기 위한 해결책으로 SID History가 도입되었는데, 이를 통해서 어떻게 외부 도메인으로 마이그레이션 된 사용자가 기존의 도메인 리소스에 접근이 가능한지 순차적으로 보겠습니다.

  1. 도메인 A의 사용자는 도메인 B로 마이그레이션되며 새로운 SID를 할당받음

  2. 사용자에 대한 도메인 B의 새로운 SID가 덮어써지기 전에, SID History에 기존의 SID를 저장함

  3. 사용자는 신뢰 관계에 있는 환경에서 SID History를 이용하여 이전 엑세스 권한을 보존함

부모-자식 신뢰 관계 모델에서는 SID History에 대한 필터링 기능이 비활성화이기 때문에 공격자들은 자식 도메인을 장악하여 SID에 대한 정보를 조작할 수 있는 관리자 권한을 획득한 뒤, 부모 도메인에서의 관리자 권한을 탈취할 수 있습니다.

기존의 매커니즘이라면 부모 도메인 객체가 자식 도메인으로 마이그레이션이 되었을 때, 다시 부모 도메인의 리소스에 대한 접근 권한을 위해 기존 부모 도메인에서 발급되었던 SID를 유지하는 기능입니다. 하지만 부모 도메인의 관리자 그룹 SID와PAC을 변경할 권한인 자식 도메인 관리자 권한을 확보한 공격자는 자식 도메인 객체의 PAC 정보를 수정하여 SID History 내역에 부모 도메인 관리자 그룹 SID를 추가할 수 있습니다. 따라서 공격자가 악용할 자식 도메인의 객체는 원래 부모 도메인에서 자식 도메인으로 마이그레이션이 된 적 없는 객체일지라도, 부모 도메인 컨트롤러 입장에서는 그런 과정을 거쳤던 객체로 인식하여 접근을 허용합니다.

위와 같은 SID History를 이용한 공격은 자식 도메인에서의 관리자 권한이 요구되지만, 만약 이러한 권한이 없더라도 부모 도메인 리소스의 접근 권한을 이용해 ASRep-Roasting 혹은 Kerberoasting 공격을 수행할 수도 있습니다. 또한 부모 도메인의 객체가 자식 도메인의 Unconstrained Delegation이 위임된 계정에 접근한 경우 해당 머신의 메모리엔 부모 도메인의 TGT 사본이 캐시되어 있기 때문에 이를 통한 측면 이동도 가능합니다.

Command

# 부모 도메인 도메인 관리자 그룹 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

Mitigation

앞서 설명한 것과 같이 이러한 마이그레이션 이전 SID를 통한 접근 권한 악용은 부모-자식 관계의 포레스트 환경에서만 악용할 수 있습니다. 기본적으로 Active Directory에서 이러한 신뢰 관계 외에 새롭게 구축된 관계에서는 SID Filtering 기능이 활성화 상태이기 때문에, 이전의 SID History를 갖고 있더라도 현재 도메인에서 적용되는 SID 양식이 아니면 무시하기 때문입니다. 물론 보안 담당자의 실수 혹은 고의로 다른 포레스트 관계에서도 이러한 보안 기능이 비활성화 되어있을 수도 있다는 가능성은 염두해두어야 합니다.

References

Microsoft Defender for Identity Recommended Actions: Remove unsecure SID history attributes from entitiesMicrosoft Security Blog
ADMT (Active Directory Migration Tool) Domain Migration – Part 2 | PeteNetLivePeteNetLive
A Guide to Attacking Domain TrustsMedium
Shared ContentChatGPT
Logo
Logo
Logo
Logo