Targeted Kerberoasting

대상에 대해 GenericAll / GenericWrite / WriteSPN 권한 중 한가지가 있을 경우 도메인 SPN을 강제로 등록하는 것이 가능합니다. 이 공격은 커버로스팅의 전제 조건인 SPN이 등록된 계정의 패스워드 해시만 가져올 수 있다는 것을 극복한 공격이며, 해시가 크랙되어야 한다는 점에서 성공률은 극도로 낮지만 서버의 가용성에 지장이 없다는 것이 장점입니다.
Abuse
# SPN 등록
setspn -S somerandom/spn user-B
# 커버로스팅
.\Rubeus.exe kerberoast /domain:contoso.com /user:user-B /nowrap
# SPN 삭제
setspn -D somerandom/spn user-B
Root Cause
user-B에 대한 권한이 있는 user-A로의 LDAP 바인딩 이후 커버로스 사전 인증으로 TGT를 받습니다. 그다음 SPN을 등록하기 위해 modifyRequest를 통해 SPN을 등록합니다.


somerandom/spn을 user-B로 하여금 도메인에 등록했기 때문에 이제 TGS-REQ를 통해 서비스 티켓을 발급받을 수 있습니다.


마지막으로 생성한 SPN을 제거할 때는 대상 객체의 SPN 속성을 모두 제거하는 것이 확인됩니다.
해당 공격 자체가 SPN이 없는 계정을 강제적으로 등록하여 패스워드 해시를 탈취하는 공격이기 때문에 납득이 가능한 로직이지만, 혹시라도 도메인 SPN을 가진 객체에 대해서 테스트 한다면 기존에 가지고 있던 SPN까지 모두 삭제되기 때문에 실무 환경이라면 대상을 지정할 때 주의할 필요가 있습니다.


References
Last updated
Was this helpful?