Delegation
Kerberos에서는 3가지 종류의 위임이 있습니다.
Unconstrained Delegation ( 제약 없는 위임 )
Constrained Delegation ( 제약 위임 )
Resource-Based Constrained Delegation ( 리소스 기반 제약 위임 )
Unconstrained Delegation
제약 없는 위임은 Delegation 개념 중 가장 첫번째로 도입되었던 개념이며
Kerberos 인증 프로토콜을 통한 모든 서비스에 대해 위임하는 개념이기에 낮은 보안 수준을 가집니다.
기본적으로 ST를 발급받기 위해서는 TGT 정보가 필요하다는 것을 Kerberos에서 다뤘습니다.
서비스 티켓 발급의 대행이란, 서비스 계정으로부터 다른 서비스 티켓을 발급받는 것을 의미합니다.
즉 대행 주체에게 다른 ST 발급을 맡기려면 대행 주체의 서비스를 이용할 수 있는 ST가 있어야 합니다.
따라서 대행 주체에게는 TGT 사본과 함께 ST를 전송합니다.
대행 주체는 이용자의 TGT 사본을 사용하여 다른 서비스의 ST를 받고, 클라이언트를 대신하여 작업합니다.
Unconstrained Delegation을 통한 서비스 티켓 발행은 다음과 같은 순서를 가집니다.
클라이언트가 IIS 서버를 이용할 수 있지만, DBMS 서비스에는 직접 접근 할 수 없는 상황을
가정했을 때, 자동화된 작업 등을 이용하여 클라이언트의 권한으로
DBMS를 이용하는 매커니즘에 대한 단계별 설명은 다음과 같습니다.
이용자는 DC에 TGT를 요청 ( 일반적인 Kerberos 인증 과정 )
클라이언트는 IIS 서비스를 이용하기 위한 ST 발급 요청
DC는 IIS 서비스 계정의 TRUSTED_FOR_DELEGATION 플래그를 확인하고 ok-as-delegate 플래그가 설정된 ST를 클라이언트에게 반환
ok-as-delegate 플래그는 서비스가 Unconstrained Delegation을 지원한다는 것을 의미
클라이언트는 ST 대행을 위해 DC에 Forwardable 플래그가 포함된 TGT 사본을 발급
클라이언트는 IIS에 TGT 사본과 함께 ST(IIS를 이용하기 위한)를 제공
IIS는 TGT 사본을 메모리에 캐시하며 DBMS 이용을 위한 ST 발급
IIS는 클라이언트를 대신하여 DBMS를 이용
이러한 매커니즘을 통해 봤을 때, 클라이언트가 Unconstrained Delegation을 이용해
직접 접근이 불가능하거나 자동화된 작업을 위해 ST 발급 및 작업을 위임했다면
작업을 대행한 서비스 계정의 메모리에는 클라이언트의 TGT 사본이 저장되었다는 것을 의미합니다.
따라서 서비스 계정을 장악하게 되었을 때 메모리 덤프를 한다면
인증을 했던 클라이언트들의 TGT 목록이 반환되고, 이것을 이용하여 측면이동 및 권한 상승이 가능합니다.
객체가 서비스 계정을 통한 서비스 이용을 하지 않았다면 메모리에 기록이 남지 않기 때문에
비교적 DCSync보다 안전하다고 생각될 수 있으나
Printer Bug 등과 같은 강제 인증을 통해서 권한이 높은 사용자의 TGT를 탈취할 수 있는
가능성이 있다는 것을 염두해야 합니다.
도메인 내에서 Unconstrained Delegation 권한을 가진 객체를 확인하기 위해서
다음 파워쉘 명령을 사용할 수 있습니다.
Constrained Delegation
Windows Server 2003부터 도입된 이 개념은 Kerberos 인증 프로토콜 외
다른 인증 프로토콜(NTLM 등) 사용 시에도 위임이 가능하도록 확장한 개념입니다.
또한 Unconstrained Delegation과는 다르게 특정 서비스에 국한하여 위임이 가능합니다.
앞서 살펴본 것처럼 Unconstrained Delegation 매커니즘에서 주요 문제는
서비스 계정이 클라이언트를 대행하여 서비스를 이용하기 위해서는 TGT 사본이 필요하다는 것입니다.
TGT는 Kerberos 인증 과정에서 발급되는 티켓으로, 다른 인증 프로토콜을 사용하는
클라이언트는 TGT를 발행하지 못해 위임이 불가능하게 됩니다.
이를 해결하기 위해 S4U확장이 탄생했으며 더이상 TGT 사본 없이도 서비스 이용 대행이 가능합니다.
위에서 확인했던 제한없는 위임 과정과 동일하게
클라이언트는 IIS 서비스를 이용할 수 있고, 직접 접근이 불가능한 DBMS 서비스에
접근하고자, 혹은 자동화된 작업을 예약하고자 IIS를 통해서 이용한다는 시나리오를 가정하겠습니다.
클라이언트는 IIS 서비스에 NTLM 인증
IIS는 DC에 S4U2self를 이용해 TGT 사본 없이도 클라이언트의 IIS 서비스 티켓 발급
IIS 서비스 티켓을 DBMS 서비스 티켓으로 교환하기 위해 S4U2Proxy를 이용
IIS는 DBMS에 대한 서비스 티켓으로 서비스 이용
Constrained Delegation을 설정할 때, 위임을 허용하는 서비스를 선택은 유저 계정을 기준으로 합니다.
유저를 통해서 검색하면 해당 유저로 등록된 SPN 목록이 모두 출력되어 선택이 가능합니다.
제약 위임을 등록했을 경우 객체에 대한 msDS-AllowedToDelegateTo 속성은 SPN으로 채워지게 됩니다.
또한 userAccountControl 속성은 TRUSTED TO AUTHENTICATE FOR DELEGATION 값으로 채워집니다.
도메인 내에서 Constrained Delegation 권한을 가진 객체를 확인하기 위해서
다음 파워쉘 명령을 사용할 수 있습니다.
Resourse-Based Constrained Delegation
RBCD는 Windows Server 2012에 도입된 위임 방식입니다.
기존의 Constrained Delegation은 어떠한 서비스에 대해서 Delegation 권한을 할당했다면
리소스에서 Delegation 권한을 할당할 객체를 지정하는 방식입니다.
이렇게 위임된 경우 리소스의 msDS-AllowedToActOnBehalfOfOtherIdentity 특성이
허용된 객체의 SID로 채워집니다.
References
Last updated
Was this helpful?