Windows Kerberos 악용(Kerberoasting, AS-Rep Roasting)

2024. 12. 24. 19:05·System/침투

주제

Windows Kerberos 및 악용

 

내용

Kerberos는 네트워크 인증을 위해 사용되는 보안 프로토콜로, 클라이언트와 서버가 통신할 때 암호화된 티켓을 이용해 신뢰할 수 있는 인증을 제공합니다. Kerberos의 핵심 개념과 티켓 기반 인증 방식, 중앙 인증 서버(KDC)의 역할, 커버로스 인증의 취약한 설정으로 인해 발생 가능한 공격에 대해 설명합니다.

 

1. Kerberos 인증의 특징

  1. 티켓 기반 인증
    • 비밀번호를 직접적으로 노출하지 않고, 클라이언트가 인증 서버로부터 받은 암호화된 티켓을 사용해 인증을 수행
  2. KDC라는 중앙 서버가 인증을 관리
    • Authentication Server(AS) 역할: 사용자의 신원을 확인하고 TGT(Ticket Granting Ticket)을 발급
    • TGS(Ticket Granting Server) 역할: 사용자가 요청한 서비스에 접근할 수 있도록 서비스 티켓을 발급

※ AD 환경에서는 도메인 컨트롤러가 KDC로서 동작

 

2. Kerberos 인증 흐름

https://www.optiv.com/insights/source-zero/blog/kerberos-domains-achilles-heel

 

  1. AS-REQ / AS-REP (TGT 발급)
    • 클라이언트는 KDC의 AS에 사용자를 인증합니다. TGT를 발급받습니다.
    • TGT는 클라이언트의 신원을 증명하며, 이후 TGS에 접근할 수 있는 권한을 제공합니다.
  2. TGS-REQ / TGS-REP (ST 발급)
    • 클라이언트는 TGT를 사용해 KDC의 TGS로 ST(Service Ticket)를 요청합니다.
      • 요청에 SPN을 포함
      • SPN: Service Principal Name. Kereros를 통해 접근할 수 있는 서비스 인스턴스에 대한 고유 식별자
      • TGT는 krbtgt 계정의 해시로 암호화
    • TGS는 TGT를 검증한 후, 클라이언트에게 ST를 발급합니다.
      • TGS는 SPN을 통해 해당 서비스와 연결된 서비스 계정을 찾고, 그 서비스 의 해시로 ST를 암호화한 뒤, 발급
  3. 서비스 요청 (ST 사용)
    • 클라이언트는 ST를 사용하여 원하는 서비스에 인증 후 접근합니다.

 

[참고] Kerberos 5 authentication protocol 흐름

 

 

3. Kerberos 악용

3.1. Kerberoasting

Kerberos 인증 시스템의 특징을 악용하여, 특정 서비스 계정의 비밀번호 해시를 획득한 뒤 이를 오프라인에서 크랙하는 방식입니다.

  • Kerberos 환경의 모든 사용자는 모든 서비스에 대해 TGS-REQ 요청을 보낼 수 있습니다.
  • 사용자가 해당 서비스에 실제로 접근할 수 있는 권한이 있든 없든, KDC는 요청에 응답하여 서비스 티켓(ST)을 발급합니다. → Kerberos는 인증 서비스이지, 인가 서비스가 아니기 때문
  • 사용자가 요청한 서비스에 실제로 접근할 수 있는지 여부는 서비스 서버에서 판단합니다.

 

가정: 도메인 자격 증명 획득(권한 상관 없음)

익스플로잇 흐름:

Step 1) TGS-REQ

impacket-GetUserSPNs -request {domain/id:pw} -dc-ip {ip} -outputfile {outputfilename}
  • impacket-GetUserSPNs: SPN 열거, ST 요청 및 저장, PtH 인증 가능

 

Step 2) KDC-TGS가 암호화된 티켓(ST)을 제공

  • svc-admin 계정으로 ST를 요청(TGS-REQ)하고, 그에대한 결과(TGS-REP)을 확인
  • sql-user, http-user라는 서비스 계정으로 암호화된 ST 획득

 

Step 3) ST 해시 크래킹 → 서비스 계정의 패스워드 습득 가능

  • ST는 서비스 계정의 NTLM 해시에서 파생된 키로 암호화되었기 때문에, 서비스 계정의 패스워드를 크래킹

 

3.2. AS-Rep Roasting

Kerberos 사전 인증(Pre-Authentication)이 비활성화된 계정의 암호화된 인증 데이터를 수집한 뒤, 이를 오프라인에서 크랙하여 NTLM 해시를 획득할 수 있는 공격입니다.

 

AD 환경 - 사전 인증 불필요 옵션

  • 사전 인증은 기본적으로 활성화된 상태이며, 사용자가 유효한 패스워드를 제공해야 AS-REP을 반환합니다. (TGT 제공)
  • 하지만 Do not require Kerberos pre-authentication 옵션이 활성화된 경우, KDC-AS는 사용자 인증 없이도 암호화된 AS-REP 데이터를 반환합니다.

 

가정: 사전 인증이 비활성화된 계정 존재(svc-admin)

익스플로잇 흐름:

Step 1) 사전 인증이 비활성화된 계정을 이용하여 AS-REQ

impacket-GetNPUsers {domain/id} -dc-ip {ip} -no-pass -outputfile {outputfilename}
  • 계정명을 알지 못하는 경우, -userfile 옵션 사용하여 사전 대입 가능 (이 경우 -no-pass 옵션 불필요)

 

Step 2) KDC-AS가 AS-REP 제공

  • svc-admin 계정으로 AS-REQ 하고, 그에 대한 결과(AS-REP)를 확인

 

Step 3) 해당 데이터 크래킹 → 사용자 계정(svc-admin)의 패스워드 습득 가능

  • AS-REP에는 krbtgt 계정의 해시로 암호화된 TGT와 사용자 계정의 NTLM 해시로 암호화된 세션키가 존재. 사용자 계정의 NTLM 해시 추출 후 크래킹

 

레퍼런스

- TryHackMe: Attacktive Directory (링크)

- Kerberos - A Domains Achille's Heel (링크)

- Forestall Security: How to Secure Kerberos Authentication Protocol - 1 (링크)

- Pentesting Wiki (링크)

- ver.miun.se: Key Management and Authentication-Daniel Bosk (링크)

- Microsoft: Kerberos Authentication Overview (링크)

 

저작자표시 (새창열림)

'System > 침투' 카테고리의 다른 글

RID Hijacking  (0) 2025.02.12
DLL Search Order Hijacking  (0) 2024.12.24
DLL Hijacking 실습 (2)  (0) 2024.10.26
THM - Offensive Pentesting-Skynet  (0) 2023.10.24
THM - Enumerating Active Directory(2)  (0) 2023.10.20
'System/침투' 카테고리의 다른 글
  • RID Hijacking
  • DLL Search Order Hijacking
  • DLL Hijacking 실습 (2)
  • THM - Offensive Pentesting-Skynet
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공급망공격
    혼공
    it이슈
    혼공파
    정보보호
    파이썬공부
    IT뉴스
    커널디버깅
    혼공학습단
    파이썬
    정보보안교육
    jwt
    윈도우인터널스
    혼공단
    프로세스
    자바스크립트 상속
    뉴스요약
    악성코드
    보안이슈
    정보보안
    리버싱초보
    kisa
    보안뉴스
    windows internals
    리버싱
    파이썬초보
    혼자공부하는파이썬
    파이썬입문
    랜섬웨어
    드림핵리버싱
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
Windows Kerberos 악용(Kerberoasting, AS-Rep Roasting)
상단으로

티스토리툴바