ESC10
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이 Kerberos 인증 시 잘못된 레지스트리 키 설정으로 인해 발생한 취약점이라면
ESC10은 Schannel 인증 시 잘못된 레지스트리 키 설정으로 인해 비롯되는 취약점입니다.
Kerberos 인증 시의 취약점입니다.
이 경우 StrongCertificateBindingEnforcement
레지스트리 키가 0으로 설정된 것을 이용합니다.
이 값은 Microsoft 2023년 4월 업데이트가 설치되지 않은 경우에 설정되어 있으며, 그 외의 경우에는
기본 값인 1에서 0으로 변경 시에만 공격에 적용 가능합니다.
악용 조건
StrongCertificateBindingEnforcement
키 값이 0으로 설정클라이언트 인증이 활성화된 템플릿 존재 (내장 템플릿 User 등)
공격자가 계정 A에 대한 GenericWrite 권한 보유
일반적으로 낮은 권한의 사용자는 레지스트리의 키 값을 읽을 권한이 없기 때문에
외부에서 ESC10에 취약한지 판별하기는 어렵습니다.
다만 실습의 경우 impacket-reg를 이용하여 판별하며, 외부자 관점 공격 시에는
공격의 성공 여부에 따라 해당 사용자의 레지스트리 키 값을 유추할 수 있습니다.
취약한 것이 확인되었으면 이후 과정은 ESC9과 유사합니다.
References
Last updated
Was this helpful?