AS-REP Roasting

AS-REP Roasting은 커버로스 사전 인증 단계를 생략할 수 있는 도메인 사용자 계정을 이용하여, 인증 없이 암호화된 AS-REP 패킷을 탈취할 수 있는 공격입니다. AS-REP 안에는 TGS-REQ에 사용할 세션키가 클라이언트의 패스워드 해시로 암호화되어 저장되기 때문에 공격자가 AS-REP을 탈취한다면 오프라인 해시 크랙이 가능합니다.

Abuse

# AS Rep Roasting에 취약한 객체 열거
Get-ADUser -Filter {UserAccountControl -band 4194304} -Properties SamAccountName, servicePrincipalName, UserAccountControl | Select-Object SamAccountName, Enabled

# 선택적 AS Rep Roasting
.\Rubeus.exe asreproast /user:user-A

Root Cause

커버로스 인증을 사용하기 위해서 클라이언트는 자신의 패스워드 해시로 현재 시간을 암호화하여 KDC에 전달해야 합니다. KDC 역할은 AD 환경에서 DC가 수행하기 때문에 KDC는 클라이언트의 패스워드 해시를 알 수 있습니다.

Default Kerberos maximum clock synchronization

KDC는 복호화 한 타임스탬프와 현재 도메인 서버의 타임스탬프를 비교하여 5분 이상 차이가 발생한다면 요청을 거절합니다. 만약 시간 차이가 5분 이상 발생하지 않을 경우 KDC는 AS-REP를 통해 TGT를 발급해주며, 여기까지 과정들이 커버로스 사전 인증 단계라고 부릅니다.

AS-REP 패킷에는 신원을 증명하는 TGT 뿐 아니라 TGS-REQ에서 사용할 세션키도 포함되어 있는데, 이 키는 클라이언트의 패스워드 해시로 암호화 되어 있습니다.

Do not require Kerberos preauthentication

정상적인 상황에서 AS-REQ는 도메인 사용자 계정의 자격 증명이 요구되기 때문에 AS-REP 패킷이 사용자의 패스워드 해시로 암호화되는 것은 특이하거나 취약한 상황은 아니지만 사전 인증 단계가 생략된다면 공격자는 사용자의 AS-REP를 탈취하여 오프라인 해시 크랙을 할 수 있습니다.

Do not require preauthentication AS-REQ
일반적인 AS-REQ

References

Last updated

Was this helpful?