One-way Trust
Last updated
Was this helpful?
Last updated
Was this helpful?
트러스트는 일방향일 수도 있고 양방향일 수도 있으며, 전이적일 수도, 비전이적일 수도 있습니다. 먼저 일방향 트러스트는 신뢰하는 도메인과 신뢰받는 도메인이라는 개념으로 시작합니다.
일방향 신뢰 관계는 서로가 서로의 리소스에 대해 접근하도록 허용하는 것이 아닌, 일방적으로 한 쪽만이 신뢰하고 접근할 수 있는 관계입니다. 위 그림에서는 왼쪽의 도메인이 오른쪽을 신뢰하고, 오른쪽의 도메인이 왼쪽 도메인의 리소스에 대해 접근할 수 있습니다.
본인 도메인에 접근하도록 허용하는 도메인(왼쪽 도메인)을 신뢰하는 도메인(Trusting Domain)이라 부르고, 신뢰를 받기 때문에 외부 도메인의 리소스에 접근할 수 있는 도메인(오른쪽 도메인)을 신뢰받는 도메인(Trusted Domain)이라고 부릅니다.
일방향 신뢰 관계는 신뢰받는 객체와 신뢰하는 객체로 나뉘며, 신뢰받는 객체가 일방적으로 신뢰하는 객체의 리소스에 대해 접근할 수 있는 권한을 가집니다. 일방향 신뢰 관계 구축 시, 신뢰하는 도메인에는 신뢰받는 도메인의 NetBIOS 이름으로 한 계정이 생성됩니다. 이 계정은 로그인을 위한 계정은 아니며, 리소스 접근 시 자격 증명 인증하기 위한 계정입니다.
실습 환경에서 PENTEST.LOCAL 도메인 객체는 CONTOSO.COM에 접근하지 못하지만, 그 반대는 가능한 신뢰 관계입니다. 이러한 일방향 신뢰 관계가 신뢰하는 도메인(PENTEST.LOCAL)에서는 Outbound Direction이고, 신뢰 받는 도메인(CONTOSO.COM)에서는 Inbound Direction으로 표기됩니다.
비록 공식적으로 PENTEST.LOCAL에서 CONTOSO.COM으로 접근할 수 있는 수단은 없지만, PENTEST.LOCAL을 장악하는데 성공하여 Inter-realm Key를 탈취했다면 신뢰 계정의 자격 증명을 사용하여 신뢰받는 도메인에 일부 접근하는 것이 가능합니다.
외부 도메인에 대해 공격을 진행하기 위해선 영역 간 공유 키(Inter-realm Key)가 필요합니다. 이 키는 사람이 사용하지 않는 형식의 패스워드로, 30일마다 변경되기 때문에 현실적으로는 도메인을 장악한 뒤, DCSync로 탈취할 수 있습니다.
신뢰하는 도메인에는 신뢰 계정이 없기 때문에 TDO의 GUID를 덤프한 뒤, 해당 GUID에 대한 해시 패스워드를 가져와야 합니다. ldapsearch 결과로 반환되는 GUID는 디코딩 후 리틀 앤디안에서 표준 형식으로 변경하는 작업이 필요하기 때문에 파이썬 코드를 사용하여 변환합니다.
획득한 TDO의 GUID를 통해 해시 정보를 덤프합니다. 여기서 획득하는 해시 정보가 영역 간 공유 키입니다.
현재 실습 환경에서는 External-Trust(외부 신뢰)이기 때문에 신뢰되는 도메인(CONTOSO.COM)에는 PENTEST$ 계정이 생성되어 있으며, 이 계정의 해시 패스워드는 방금 전에 획득한 Inter-realm Key와 동일한 값을 갖는다는 것을 추론할 수 있습니다.
따라서 CONTOSO.COM\PENTEST$ 계정으로 TGT를 발급받은 뒤, 이 티켓을 사용하여 CONTOSO.COM 도메인에 대한 커버로스팅 등의 공격이 가능합니다.