Spacebar Campaigns

WL-003 Windows Security 4769 Kerberos Service Ticket Request

Log ID:
WL-003
Source:
Windows Event Log Security
Representative Path:
Windows Logs > Security (Event ID 4769)
Collection:
Winlogbeat
Primary Use:
Active Directory 환경에서 서비스 계정의 패스워드 해시를 탈취하려는 Kerberoasting 공격을 탐지하고, 비정상적인 Kerberos 서비스 티켓(TGS) 요청 행위를 추적 및 모니터링

주요 필드

필드의미예시
@timestamp사용자 계정이 특정 서버나 서비스에 접근하기 위해 TGS 서비스 티켓 발급을 요청한 시간2026-05-25T15:29:24.399Z
winlog.event_idWindows 보안 이벤트 식별자 (Kerberos 서비스 티켓 요청 이벤트의 경우 값은 4769)4769
winlog.computer_name이벤트가 발생한 대상 호스트(PC 또는 서버)의 컴퓨터 이름DC01.mycompany.local
winlog.event_data.TargetUserNameKerberos 서비스 티켓(TGS)을 요청한 사용자(계정명). 일반적으로 티켓 요청을 시도한 공격자 또는 탈취된 계정employee1@MYCOMPANY.LOCAL
winlog.event_data.ServiceName티켓이 요청된 대상 서비스 계정의 이름 (SPN에 매핑된 서비스 계정)svc_file
winlog.event_data.IpAddress서비스 티켓 요청이 발생한 출발지(공격자 또는 감염된 클라이언트 PC)의 IP 주소::ffff:10.0.4.216
winlog.event_data.StatusKerberos 티켓 요청 처리 결과 코드 (0x0은 오류 없이 성공적으로 티켓이 발급되었음을 의미)0x0
winlog.event_data.RequestTicketHash요청된 TGS(서비스 티켓)의 고유 해시값 (WL-007 내에서 ticket_hash로 가공되어 WL-010 로그의 TGT 발급 기록과 매칭되는 핵심 식별자)ASvNAQxD1VFRjUfuT14RNhFg/C6NcVRH8V/5H2LR4xQ=

커버하는 Techniques Used

TechniqueMapping Reason
T1558.003 - Steal or Forge Kerberos Tickets: Kerberoasting공격자가 도메인 환경 내 서비스 계정(예: svc_file)의 비밀번호를 오프라인에서 크래킹(알아내기) 위해, 도메인 컨트롤러에 정당한 권한이 있는 것처럼 서비스 티켓(TGS)을 요청하여 자격 증명 해시 데이터를 수집하는 행위를 식별한다.
T1558.001 - Steal or Forge Kerberos Tickets: Golden Ticket공격자가 메모리에 주입한 가짜 골든 티켓(TGT)을 사용해 AD 도메인의 다양한 자원에 접근하려고 시도할 때, 도메인 컨트롤러에는 WL-003(4769) 서비스 요청 로그만 독단적으로 대량 발생하게 된다. 공격자가 실제로 시스템 권한을 남용하여 내부 횡적 이동을 감행하는 실질적인 공격 행위 단계를 탐지한다.

탐지 포인트

Technique관찰할 행위주요 필드
T1558.003 - Steal or Forge Kerberos Tickets: Kerberoasting일반 사용자 계정(예: employee1, employee2 등)이 평소 접근할 이유가 없거나 업무 연관성이 낮은 특정 핵심 서비스 계정(svc_file)을 대상으로, 도메인 컨트롤러에 Kerberos 서비스 티켓을 요청하여 성공적으로 발급(Status: 0x0)받는 행위 감시winlog.event_id, winlog.computer_name, winlog.event_data.TargetUserName, winlog.event_data.ServiceName, winlog.event_data.IpAddress, winlog.event_data.Status
T1558.001 - Steal or Forge Kerberos Tickets: Golden Ticket도메인 내 관리자 계정(Administrator 등) 명의로 공유 폴더나 특정 시스템 접속 요청(4769)이 지속적으로 관찰되고 있으나, 분석 플랫폼 내에서 해당 요청의 RequestTicketHash값과 일치하는 정상적인 사용자 최초 인증 기록(4768)이 누락된 채 4769 이벤트만 단독으로 발생하는 행위 추적@timestamp, winlog.event_data.RequestTicketHash, winlog.event_data.IpAddress, winlog.event_data.TargetUserName

ELK Query 예시

winlog.channel : "Security"
and winlog.event_id : 4769
and winlog.event_data.Status : 0x0
and winlog.event_data.TargetUserName : (employee1* or employee2*)
and winlog.event_data.ServiceName : ("svc_file")
from winlogbeat-*
| where winlog.channel == "Security" 
  and winlog.event_id in ("4768", "4769")
  and winlog.event_data.TargetUserName in ("Administrator@MYCOMPANY.LOCAL", "admin_user@MYCOMPANY.LOCAL", "Administrator", "admin_user")
| eval ticket_hash = case(
    winlog.event_id == "4769", winlog.event_data.RequestTicketHash,
    winlog.event_id == "4768", winlog.event_data.ResponseTicket,
    null
  )
| eval is_4769 = to_integer(case(winlog.event_id=="4769",1,0))
| eval is_4768 = to_integer(case(winlog.event_id=="4768",1,0))
| eval targetUserName = case(
    winlog.event_data.TargetUserName in ("Administrator@MYCOMPANY.LOCAL", "Administrator"), "Administrator",
    winlog.event_data.TargetUserName in ("admin_user@MYCOMPANY.LOCAL", "admin_user"), "admin_user",
    null
)
| stats
    count_4769 = sum(is_4769),
    count_4768 = sum(is_4768),
    first_seen = min(to_long(@timestamp)),
    last_seen = max(to_long(@timestamp))
by ticket_hash, winlog.event_data.IpAddress, targetUserName
| where count_4769 > 0 and count_4768 == 0
| eval first_seen = to_datetime(first_seen)
| eval last_seen = to_datetime(last_seen)
| keep ticket_hash, winlog.event_data.IpAddress, targetUserName, first_seen, last_seen, count_4768, count_4769