본문 바로가기
Hack/System

[AD] Kerberoasting (커버로스팅)

by Becoming a Hacker 2026. 1. 25.
반응형

시작 전 용어 설명

KDC (Key Distribution Center) : 서버와 사용자에 대한 신뢰 관계 정보를 관리하는 역할이며, AD(Active Directory) 환경에서는 Domain Controller(DC)가 KDC 역할을 수행

AS (Authentication Service) : 사용자로부터 인증을 수락하는 인증 서버

TGS (Ticket Granting Service) : 클라이언트가 특정 서비스에 접근할 수 있도록 Service Ticket을 발급하는 서버

TGT (Ticket Granting Ticket) : 클라이언트가 AS로부터 인증을 받았다는 것을 증명하는 티켓

Principal : KDC가 인증하는 사용자 및 서버

 

티켓은 총 2가지 존재함

TGT : 나는 이 도메인의 사용자임을 증명함

Service Ticket : 이 서비스에 접근 가능하다는 것을 증명

 

Kerberoasting이란

Kerberos의 인증 구조를 악용해 서비스 계정의 비밀번호를 오프라인 크래킹할 수 있는 공격 기법임

 

공격 기법을 알기 위해서는 먼저 Kerberos 인증 구조를 알아야 함

 

커버로스는 티켓 기반의 컴퓨터 네트워크 사용자 인증 프로토콜이며,

이러한 티켓을 발급할 때는 Secret Key로 정보들을 암호하여 전송하고 있음

 

또한, 암호화된 정보들을 통하여 서버와 클라이언트는 서로 신뢰할 수 있는 대상인지를 확인함

 

실제 인증 방식은 아래와 같은 방식으로 진행됨

1. 로그인 단계 - 신원 증명

AS-REQ (Client -> AS)
- 클라이언트는 자신의 신원을 증명하기 위하여, 몇 가지 데이터를 보냄

  • Timestamp 기반 데이터
  • 사용자 이름 (예 : user1)
  • 도메인 정보

 

AS-REP (AS -> Client)

- AS는 AD에서 user1 정보를 확인한 뒤, 두가지 데이터를 보냄

  • TGT
    • 사용자 SID
    • 그룹 정보
    • 유효기간
    • KRBTGT 계정 패스워드로 암호화됨
  • Client-TGS Session Key
    • 클라이언트 신원 확인용
    • 사용자 비밀번호로 암호화됨

- 클라이언트는 자기 비밀번호를 알고 있을테니 Session Key를 복호화할 수 있기 때문에 사용자라는 것을 증명할 수 있음

 

2. 서비스 접근 권한 요청 (이 부분이 이번 공격의 핵심)

TGS-REQ (Client -> TGS)

- 클라이언트는 어떤 서비스에 접근하기 위해 TGS에 요청을 함 

  • TGT
  • 인증자 ( Client id, Timestamp)를 세션키로 암호화 ->재전송 공격을 방지하기 위해 Timestamp가 들어감

 

TGS-REP (TGS -> Client)

- TGS는 다음의 내용을 확인한 뒤, 특이사항이 없으면 Service Ticket을 발행

  • TGT 유효성 확인
  • 시간 값 정상 여부 확인
  • 권한 유무 확인
  • Service Ticket 구성 정보는 서비스 계정의 비밀번호로 암호화됨
    • 사용자 정보
    • 접근 권한
    • 유효 기간

 

3. 실제 서비스 접근

AP-REQ (Client -> Service)

- 클라이언트가 서비스 서버에게 인증된 사용자임을 증명하며, Service Ticket을 전달함

  • Service Ticket
  • 인증자(Client id, Timestamp)를 서비스 서버 세션키로 암호화

- 서비스 서버는 아래와 같은 행위를 수행한 뒤, 성공하면 Timestamp를 서비스 서버 세션키로 암호화하여 전달함

  • 자기 계정 비밀번호로 Service Ticket을 복호화
  • 사용자 정보 확인
  • 시간 확인

- 클라이언트는 전달받은 Timestamp와 자신이 인증 정보에 담았던 Timestamp 값이 일치하는 지 확인 후, 서비스 서버에 서비스를 요청하게 

 

Kerberoasting

위의 인증 단계에서 이야기했듯이 Kerberos는 도메인 유저라면,

Service Principal Name(SPN) 특성이 존재하는 서비스 서버를 대상으로 한 Service Ticket을 TGS를 통해 요청하고 받아낼 수 있음

 

이때 이러한 Service Ticket은 해당 서비스 서버의 패스워드로 암호화되어있기 때문에

해당 티켓을 온라인에서 받아 오프라인에서 크래킹할 경우, 서비스 서버의 계정 패스워드를 획득할 수 있는 공격임

 

이를 테스트 서버에서 PoC 해본 화면은 아래와 같음

서비스 계정의 패스워드로 암호화된 티켓 획득

 

패스워드 크랙 화면

 

방어자 입장에서 바라보면,

네트워크 상에는 SPN의 티켓을 요청하는 정상 요청만이 존재하기 때문에 공격을 탐지하는 것은 매우 어려운 일일 수 있음

 

다만, 단 시간 내에 대량의 SPN 티켓을 요청하는 경우를 탐지하거나,

쉽게 크래킹할 수 없게 어려운 패스워드를 사용하도록 정책을 강화하는 방안이 존재하며,

최소한의 권한을 SPN에 부여하고 SPN 계정을 최소한으로 운영해야 함

(조직에서 사용하는 정해진 틀의 패스워드를 사용하는 모든 경우를 방어할 순 없으나, SPN에 사용되는 계정만이라도 안전하게 방어가 필요함)

 

 

Reference

- https://hyeo-noo.tistory.com/415

- https://gruuuuu.hololy.org/security/kerberos/

- https://www.xn--hy1b43d247a.com/credential-access/kerberos/kerberoasting

반응형

댓글