İçeriğe atla
0 XP 0
12 dkderinleşmeyle 13 dk60 XP6 etkinlik

Kimlik bilgisi artıkları

Bu derste
  • Bellekteki parola özetlerinin ve biletlerin nerede durduğunu, yanal hareketi iki uçtan nasıl doğrulayacağını ve saldırıyı nasıl kapatacağını öğren.
  • Bu derste dökümdeki kimlik artıklarının yanal hareketi nasıl açıkladığını göreceksin.
  • Saldırganın neden LSASS sürecine gittiğini de anlayacaksın.

Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +60 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

Bellek, bir makinenin kimlik sırlarını tutar. Parola özetleri, Kerberos biletleri ve bazı durumlarda düz metin parola orada durur. Bir makine ele geçtiğinde saldırganın asıl hedefi çoğu zaman bu artıklardır, çünkü bir hesabın özeti başka makinelere açılan bir anahtar gibidir.

Senin işin bu artıkların nerede kaldığını, sızıntının nasıl doğrulandığını ve kapının nasıl kapatıldığını bilmek. Önce kimlik verisinin bellekte ve diskte nerede biriktiğini göreceksin. Sonra özetleri okumayı, yanal hareketi iki uçtan doğrulamayı ve saldırıyı kalıcı olarak kapatan savunma katmanlarını sırayla kuracaksın.

Kimlik verisi nerede durur

Windows, oturum açan kullanıcının kimlik verisini lsass.exe sürecinde tutar. Bu süreç NTLM özetlerini, Kerberos biletlerini ve eski WDigest gibi katmanlar açıksa düz metin parolayı barındırabilir. Saldırganın belleğe gitme nedeni budur. WDigest, Windows 8.1 ve Windows Server 2012 R2'den bu yana düz metin parolayı varsayılan olarak bellekte tutmaz.

Saldırgan bunu geri açmak için WDigest anahtarındaki UseLogonCredential değerini 1 yapar ve kullanıcının yeniden oturum açmasını bekler. Bu kayıt değişikliği izlemeye değer bir tespit noktasıdır. Etki alanına bağlı bir dizüstü, ağdan kopukken de giriş yapılabilsin diye son oturumların doğrulayıcısını önbellekte saklar. Bu kayıt özet geçirmede işe yaramaz, yalnız çevrimdışı kırma denemelerine hedef olur.

Kaynakları bir tablo gibi düşün. SAM kovanı yerel hesapların NT özetlerini tutar ve SYSTEM kovanındaki önyükleme anahtarı (bootkey) olmadan çözülmez. SECURITY kovanı LSA sırlarını barındırır: hizmet hesabı parolaları, makine hesabı anahtarı ve önbelleğe alınmış etki alanı doğrulayıcıları (DCC2) burada durur. LSASS belleği ise oturum açmış kullanıcının NT özetini, Kerberos biletlerini ve WDigest açıksa düz metin parolayı taşır.

Volatility bu kaynakları ayrı eklentilerle açar. windows.registry.hashdump SAM özetlerini, windows.registry.lsadump ise LSA sırlarını çıkarır. Hangi verinin hangi kovandan geldiğini bilirsen bulguyu doğru kaynağa dayandırırsın.

Özetle kimlik doğrulamaya özet geçirme (pass the hash) denir. NTLM protokolü parolanın kendisini değil özetini ister. Elinde özet varsa kullanıcı gibi davranırsın, parolayı kırmana bile gerek kalmaz. Kerberos tarafında karşılığı bilet geçirmedir: bellekteki bir bilet başka makinede sunulur.

Modern Windows'ta Credential Guard açıksa bu tablo değişir. Sırlar LSAIso adı verilen yalıtılmış bir süreçte, sanallaştırma tabanlı güvenliğin arkasında tutulur ve işletim sisteminin geri kalanı bunlara erişemez. Böyle bir makinenin dökümünde LSASS beklediğinden boş görünür. Bunu bilirsen eksik bir dökümü korumalı bir makineden ayırırsın.

$ vol -f fin-pc12.raw windows.registry.hashdump
User           rid   lmhash                            nthash
Administrator  500   aad3b435b51404eeaad3b435b51404ee  31d6cfe0d16ae931b73c59d7e0c089c0
mkaya          1001  aad3b435b51404eeaad3b435b51404ee  8846f7eaee8fb117ad06bdd830b7586c
svc_update     1010  aad3b435b51404eeaad3b435b51404ee  e19ccf75ee54e06b06a5907af13cef42
hashdump SAM kovanındaki yerel hesap özetlerini verir. Eski windows.hashdump adı Volatility 3'te windows.registry.hashdump oldu.

Etkinlik 1 / 6

Saldırgan neden ele geçirdiği NTLM özetini kırmadan doğrudan kullanabilir?

Özetleri okumak

hashdump çıktısındaki her satır dört alandan oluşur: hesap adı, hesap kimliği (RID), LM özeti ve NT özeti. İlk özet alanı eski LM özetidir. aad3b435b51404eeaad3b435b51404ee değeri boş LM özetidir ve modern sistemlerde bütün satırlarda böyle görünür, çünkü LM artık kullanılmaz.

Asıl bakacağın alan ikinci, yani NT özetidir. Ama bu alanın değeri de sana tek başına bir şey söyleyebilir. Bazı özetler o kadar bilinir ki bir bakışta tanınır. Bir analistin gözü, sık geçen bu değerleri zamanla ezberler.

Örnekteki Administrator satırının NT özeti 31d6cfe0d16ae931b73c59d7e0c089c0 değeridir. Bu, boş parolanın NT özetidir. Ya hesabın parolası yoktur ya da hesap parola almadan devre dışı bırakılmıştır. Hesap etkinse bunu ciddi bir zayıflık olarak not edersin.

mkaya satırındaki 8846f7eaee8fb117ad06bdd830b7586c değeri ise 'password' sözcüğünün NT özetidir, yani zayıf bir parola. svc_update hesabının RID değeri en yüksek olanıdır. Sonradan açılmış bir hesabın klasik izidir ve olay saatiyle birlikte incelenir. Bu üç satır, özet değerinin kendisinin de bir okuma olduğunu gösterir.

Etkinlik 2 / 6

Bellek dökümünde geniş karakterli metinler içinde parola geçen satırları arayan boru hattını kur.

Parçalara tıklayarak komutu soldan sağa kur.

$

İzi doğrulamak

Bulgunun değeri bağlamla artar. svc_update hesabının özetinin bellekte olması tek başına bir satırdır. Aynı hesabın başka bir makinede oturum açması ise yanal hareketi kanıtlar. Bunu olay günlükleriyle doğrularsın.

Özet geçirme iki uçta iz bırakır. Kaynak makinede saldırgan, çalınan kimlikle ağa çıkmak için 4624 olayını 9 numaralı oturum türüyle (NewCredentials) üretir ve işlem adı seclogo görünür. Hedef makinede ya da etki alanı denetleyicisinde ise aynı bağlantı 4624 olayını 3 numaralı ağ oturumu türüyle bırakır. NTLM kullanıldıysa bir de 4776 doğrulama olayı düşer.

# fin-pc12 güvenlik günlüğü (kaynak uç)
4624  LogonType 9 (NewCredentials)  Hesap: mkaya  İşlem: seclogo  Yeni kimlik: svc_update

# dc01 güvenlik günlüğü (hedef uç)
4776  Paket: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0  Hesap: svc_update  Kaynak: FIN-PC12
4624  LogonType 3 (Network)  Hesap: svc_update  Kaynak IP: 10.20.30.61

# Kerberos tarafında beklenmedik şifreleme türü
4768  Hesap: svc_update  Bilet şifreleme türü: 0x17 (RC4-HMAC)  Kaynak IP: 10.20.30.61
Özet geçirme kaynakta LogonType 9, hedefte LogonType 3 ve 4776 bırakır. Kerberos'ta 0x17 (RC4) modern ortamda beklenmedik bir tercihtir.

Kerberos tarafında da izler vardır. Bilet isteği 4768, hizmet bileti isteği 4769 olayını üretir ve bu olaylarda bir şifreleme türü alanı bulunur. Modern bir etki alanında beklenen değer AES'tir.

0x17 yani RC4 kullanımı ya da olağandışı bir hizmet bileti isteği, bilet saldırılarının işareti olabilir. Bu olayları kaynak IP ve hesapla birlikte okur, aynı hesabın kısa sürede birçok makineden bilet istediğini görürsen yayılan bir saldırıdan şüphelenirsin.

Belleği okuma anının kendisi de bir iz bırakır. Saldırgan LSASS belleğine ulaşmak için sürece bir tanıtıcı açar. Sysmon'un 10 numaralı olayı bu erişimi kaydeder.

Hedef görüntüsü lsass.exe olan ve kaynağı alışılmadık bir süreç olan her satır incelemeye değer. Aşağıdaki kayıtta powershell.exe, lsass.exe belleğini okuma hakkı içeren bir erişim maskesiyle uzanıyor. Bu erişimin hangi süreç ağacına bağlandığını çıkarmak, saldırının başlangıç dakikasını verir.

# fin-pc12 Sysmon günlüğü
EventID: 10 (ProcessAccess)
SourceImage:  C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
SourceProcessId: 4412
TargetImage:  C:\Windows\System32\lsass.exe
GrantedAccess: 0x1010  (PROCESS_VM_READ ile PROCESS_QUERY_LIMITED_INFORMATION)
CallTrace:    C:\Windows\SYSTEM32\ntdll.dll+9d3c4 | UNKNOWN(0x2a4c1e70)
PowerShell'in lsass.exe belleğini okuma erişimi istemesi ve çağrı izinde dosyasız bir adres, kimlik dökme girişiminin işaretidir.

Kayıttaki alanları oku. SourceProcessId 4412, saldırı zincirindeki powershell.exe sürecidir. TargetImage lsass.exe, yani hedef kimlik sürecidir.

GrantedAccess değeri sürecin belleği okuma iznini içerir. En çarpıcı satır CallTrace'tir. Çağrı, dosyaya bağlı olmayan bir adresten geliyor: UNKNOWN olarak işaretli.

Meşru bir çağrı çoğu zaman diskteki bir kitaplığın adresinden geçer. Adresin bir modüle değil de boş bir bölgeye dayanması, çağrının enjekte koddan geldiğini söyler. Böylece bellek bulgusunu Sysmon kaydıyla iki uçtan birbirine bağlarsın.

Etkinlik 3 / 6

Kimlik artıklarını kaynağına göre ayır.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/5 seçenek yerleşti.

Olay kimliklerini karıştırmak kolaydır, o yüzden anlamlarını yan yana oturtursun. Kaynak uç ile hedef uçtaki oturum türleri farklıdır ve bu fark saldırının yönünü söyler. Kaynakta LogonType 9 görürsün, çünkü saldırgan kendi oturumunda başka bir kimlik yükler. Hedefte LogonType 3 düşer, çünkü bağlantı ağ üzerinden gelir.

Kerberos ve NTLM olayları da ayrı kimlikler taşır, çünkü iki protokol ayrı işler. Bir olayı yanlış kimlikle etiketlemek bütün zaman çizelgesini bozar. Zaman çizelgesi bozulursa hangi makinenin önce, hangisinin sonra ele geçtiğini de yanlış anlatırsın. Aşağıdaki eşlemeyi bu yüzden dikkatle kurarsın.

Etkinlik 4 / 6

Her olay kimliğini anlamıyla eşle.

Soldan bir tane seç, sağdan eşini seç. Kullanılmış bir seçeneği yeniden seçersen yeni öğeye taşınır.

Kapatma ve kurtarma

Savunma tarafı aynı bilgiden çıkar ve katman katman kurulur. LSA korumasını açarsın. RunAsPPL ayarı LSASS'ı korumalı süreç yapar ve yetkisiz süreçlerin belleğini okumasını engeller. Bu ayar, Windows 11 22H2 ve sonrasıyla sıfırdan kurulan, kurumsal dizine bağlı ve HVCI destekleyen makinelerde kendiliğinden açıktır.

Credential Guard, sırları sanallaştırma tabanlı güvenlikle yalıtır ve aynı sürümden başlayarak uygun makinelerde varsayılan olarak açılır. Korumalı Kullanıcılar (Protected Users) grubu ise üyeleri için NTLM'i, zayıf Kerberos şifrelemesini ve önbelleğe alınmış girişi kapatır, bilet ömrünü dört saate sabitler. Hizmet ve bilgisayar hesaplarını bu gruba koymazsın, çünkü onların anahtarı makinede her hâlükârda durur. Yerel yönetici parolasını makine başına ayıran LAPS de aynı özetin bütün ağı açmasını önler.

Bir hesap ele geçtiyse temizlik de bellidir. Etkilenen hesapların parolası değiştirilir, açık oturumlar ve jetonlar iptal edilir. Yalnız parolayı değiştirip yenileme jetonlarını iptal etmemek eksik bir temizliktir.

Tarayıcı belleğinde duran bir oturum jetonu, parola değişse bile geçerli kalabilir. Etki alanı riskteyse krbtgt hesabının parolası iki kez sıfırlanır. Kimlik bulgusunu hızlı raporlarsın, çünkü özet sızıntısı saatler içinde yanal harekete döner.

Rapora özet değerini açık yazmazsın. Rapor birçok elden geçer ve özet hâlâ kullanılabilir bir anahtardır. Bulguyu hesap adı ve kaynak artefaktla anlatır, değeri ayrı ve kısıtlı bir ekte tutarsın.

Dökümün kendisi de kimlik taşır, o yüzden onu da korursun. Bir bellek dökümü kurumun oturum açmış bütün kullanıcılarının özetlerini ve biletlerini içerebilir. Dosya kötüye kullanılırsa sorumluluk seninle başlar. Bu yüzden döküm şifreli diskte durur, klasör izni yalnız incelemeye açık ekiple sınırlanır ve her kopya kayda geçer.

Analiz bitince örnekler saklama ilkesine göre imha edilir. Kurumsal ortamda çoğu kimlik incelemesi saatlerle yarışır, çünkü bir özet ele geçtiğinde saldırgan onu dakikalar içinde başka makinelerde dener. Analizin tamamlanmasını beklemeden etkilenen hesapları güvenlik ekibine bildirir, parola yenilemeyi başlatırsın.

Derinleş:krbtgt neden iki kez sıfırlanır

Bir etki alanındaki bütün Kerberos biletleri, krbtgt adlı yerleşik hesabın parolasından türeyen bir anahtarla imzalanır. Saldırgan bu anahtarı ele geçirirse istediği kullanıcı için geçerli bilet üretebilir; buna altın bilet denir ve parola değişse bile bilet ömrü boyunca çalışır. Microsoft'un orman kurtarma kılavuzu bu yüzden krbtgt parolasının iki kez sıfırlanmasını ister.

Neden iki kez? Çünkü hesabın parola geçmişi değeri ikidir, yani sistem en son iki parolayı geçerli sayar. Tek sıfırlama eski anahtarı hâlâ geçerli bırakır. İki sıfırlama ise geçmişteki her iki değeri de temizler.

İki sıfırlama arasında en az on saat beklemek de gerekir, çünkü on saat varsayılan bilet ömrüdür. Erken sıfırlarsan hâlâ dağıtımda olan meşru biletler ve etki alanı denetleyicileri arasındaki eşleme bozulur. Ortamda daha uzun bir bilet ömrü ayarlıysa bekleme süresi de o değerden büyük olmalıdır.

Etkinlik 5 / 6

Doğru mu, yanlış mı?

Özet geçirme tekniğinde saldırgan, LSASS belleğinden aldığı NTLM özetini kırmadan kimlik doğrulamada kullanır.

Özet geçirmenin neden bu kadar etkili olduğunu bir kez daha topla: saldırgan parolayı hiç görmeden kimlik doğrular, çünkü protokol özeti anahtar gibi kullanır. Kırma adımı olmadığı için bir sürü deneme de gerekmez, yani hesap kilitlenmesi ve başarısız giriş uyarıları tetiklenmez. Sızıntı bu yüzden sessiz kalır.

Şimdi soruyu tersinden kur. Bu özetleri ve biletleri tam olarak hangi sürecin belleğinde bulursun? Cevap, bütün dersin döndüğü tek addır ve savunmanın da ilk hedefidir.

Etkinlik 6 / 6

Windows'ta oturum kimlik verisini tutan süreç: ____

Dersi bitirmek için 6 etkinlik kaldı

Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.

Bu derste bir hata mı gördün? Bildir