Kerberoast와 Mimikatz를 활용한 Active Directory Kerberos 공격 체인 분석

Active Directory(AD) 환경에서 Kerberos는 기본 인증 프로토콜로 사용되지만, 서비스 티켓의 특성상 오프라인 크래킹에 취약한 구조를 가지고 있습니다. 본 글에서는 Kerberoasting 기법과 Mimikatz를 연동하여 티켓을 탈취하고 권한을 상승시키는 전체 공격 체인을 기술적 관점에서 분석합니다.

1. SPN(Service Principal Name) 열거 및 타겟 식별

Kerberoasting의 첫 단계는 도메인 내에서 SPN이 등록된 서비스 계정을 찾는 것입니다. 공격자는 LDAP 쿼리를 통해 사용자 계정에 매핑된 SPN을 열거합니다. PowerShell을 활용한 열거 스크립트는 다음과 같이 실행될 수 있습니다.

Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName | Select-Object Name, ServicePrincipalName

이 과정을 통해 MSSQL, IIS 등 특정 서비스를 실행하는 계정과 해당 SPN(예: MSSQLSvc/db-node01.corp.local:1433)을 식별할 수 있습니다.

2. TGS(Service Ticket) 요청 및 추출

식별된 SPN을 대상으로 KDC(Key Distribution Center)에 TGS를 요청합니다. 요청된 티켓은 NTLM 해시 형태로 암호화되어 공격자에게 전달됩니다. Python 기반의 요청 도구를 사용하여 티켓을 파일로 저장하는 과정은 다음과 같습니다.

python3 kerberoast.py --domain-cmd "CORP.LOCAL" --target-spn "MSSQLSvc/db-node01.corp.local:1433" --out-ticket db_mssql.kirbi --rid 1105

또는 네트워크 캡처 파일(PCAP)에서 TGS-REP 패킷을 필터링하여 티켓 데이터를 추출할 수도 있습니다.

3. 오프라인 비밀번호 크래킹

추출한 .kirbi 티켓 파일은 로컬 환경에서 사전 공격(Dictionary Attack)을 통해 평문 비밀번호를 복원할 수 있습니다. 기존 도구 대신 최적화된 해시 크래킹 도구를 활용하면 다음과 같이 처리할 수 있습니다.

python3 tgsrepcrack.py --wordlist /opt/dictionaries/custom_words.txt --ticket-file db_mssql.kirbi

크래킹이 성공하면 서비스 계정의 평문 자격 증명을 확보하게 되며, 이를 통해 도메인 내 횡적 이동(Lateral Movement)이 가능해집니다.

4. Mimikatz를 활용한 패스 더 티켓(Pass-the-Ticket)

확보한 티켓을 현재 세션에 주입하여 인증을 우회하거나 권한을 상승시키기 위해 Mimikatz를 사용합니다.

먼저, 현재 메모리에 캐시된 Kerberos 티켓을 확인하고 내보냅니다.

mimikatz # kerberos::list /export

이후, 크래킹을 통해 얻거나 탈취한 유효한 TGS 티켓을 현재 프로세스의 로그온 세션에 주입(Pass-the-Ticket)합니다.

mimikatz # kerberos::ptt "C:\Tickets\db_mssql.kirbi"

티켓 주입이 완료되면, 공격자는 별도의 비밀번호 입력 없이 해당 SPN이 가리키는 대상 서비스(예: 데이터베이스 서버)에 관리자 권한으로 접근할 수 있습니다.

5. 공격 방어 및 완화 전략

이러한 Kerberos 공격 체인을 차단하기 위해서는 다음과 같은 보안 통제가 필요합니다.

  • SPN 계정 감사: 불필요하게 등록된 SPN을 정기적으로 제거하고, 서비스 계정의 권한을 최소 권한 원칙에 따라 제한합니다.
  • 강력한 비밀번호 정책: 서비스 계정은 자동 생성된 25자 이상의 복잡한 비밀번호를 사용하도록 강제하여 오프라인 크래킹 시도를 무력화합니다.
  • 이상 징후 모니터링: 단일 호스트에서 다수의 SPN에 대해 연속적으로 TGS를 요청하는 행위(이벤트 ID 4769)를 탐지하는 SIEM 규칙을 구축합니다.
  • 엔드포인트 탐지 및 대응(EDR): 메모리 상의 티켓 조작 및 Mimikatz와 같은 크레덴셜 덤프 도구의 실행을 실시간으로 차단합니다.

태그: ActiveDirectory Kerberos Kerberoasting Mimikatz PassTheTicket

7월 1일 23:28에 게시됨