ESC9
ESC9와 ESC10을 이해하기 위해선 다음과 같은 내용을 알아둬야 합니다.
szOID_NTDS_CA_SECURITY_EXT
요청자의 objectSid를 포함하며 AD에서 고유한 식별자
StrongCertificateBindingEnforcement
Kerberos 암시적 매핑에 사용되는 레지스트리 키
CertificateMappingMethods
Schannel 암시적 매핑에 사용되는 레지스트리 키
Kerberos 인증 시, 인증서 매핑 프로세스는
StrongCertificateBindingEnforcement
레지스트리 키를 참조하며,
이 키는 세가지 값으로 설정될 수 있습니다.
0
비활성화 모드
강력한 인증서 매핑이 수행되지 않습니다. szOID_NTDS_CA_SECURITY_EXT 확장은 확인되지 않습니다.
1
호환 모드(기본값)
KDC는 명시적 인증서 매핑이 있는지 확인하고, 없으면 인증서 보안 확장이 존재하고 유효한지 검사합니다. 보안 확장이 없으면, 사용자 계정이 인증서보다 먼저 생성된 경우 인증이 허용될 수 있습니다.
2
완전 시행 모드
KDC는 명시적 인증서 매핑이 있는지 확인하고, 없으면 인증서 보안 확장이 존재하고 유효한지 검사합니다. 보안 확장이 없으면 인증이 거부됩니다.
ESC9은 사용자의 UPN을 조작할 수 있는 GenericWrite 이상의 권한이 있을 때
인증서를 요청하는 사용자의 UPN을 다른 사용자의 UPN으로 변경함에 따라
가장한 사용자의 인증서를 발급받을 수 있는 권한 상승 취약점입니다.
ESC9에 필요한 몇가지 조건은 다음과 같습니다.
StrongCertificateBindingEnforcement
레지스트리 키 값이 2 이외의 값 ( 기본 값 1 ) 혹은CertificateMappingMethods
에 UPN 포함msPKI-Enrollment-Flag
의 값이 CT_FLAG_NO_SECURITY_EXTENSION템플릿 용도에 Client Authentication 값이 명시적으로 존재
악용하려는 유저에 대한 GenericWrite
CT_FLAG_NO_SECURITY_EXTENSION의 경우 보안 확장 기능이 무력화되는데,
레지스트리 키 값이 2 미만일 경우 보안 확장이 존재하지 않을 때
사용자 계정이 인증서보다 먼저 생성된 경우 인증이 허용되는 허점을 이용합니다.
Practice
공격이 성립하기 위해서는 최소 하나의 계정에 GenericWrite 권한이 필요합니다.
Alice 계정이 Bob 계정에 대한 GenericWrite/All 권한이 있으며
Bob 계정의 UPN을 Administrator로 변경하여 도메인 관리자 권한을 획득하고자 할 때
다음과 같이 명령하여 NT Hash 덤핑이 가능합니다.
References
Last updated
Was this helpful?