Site icon Baki ÇUBUK

Active Directory’yi Ele Geçirme Teknikleri Serisi – Bölüm 18: Shadow Credentials

Merhaba

Önceki bölümde Domain Controller’ın kimlik doğrulama sürecinin kendisini ele geçiren Skeleton Key’i inceledik. Bu bölümde, modern, şifresiz (passwordless) kimlik doğrulama altyapısının Windows Hello for Business’ın kendine özgü bir zayıflığını istismar eden Shadow Credentials tekniğini ele alıyoruz. İroni şu ki, kuruluşları şifre tabanlı saldırılara karşı daha güvenli hale getirmesi beklenen bir özellik, doğru yapılandırılmadığında yeni bir kalıcılık ve yetki yükseltme yolu haline gelebiliyor.

Shadow Credentials’ın Ele Geçirilmesi

Shadow Credentials, saldırganların kullanıcı ve bilgisayar nesneleri üzerindeki ‘msDS-KeyCredentialLink’ özniteliğini değiştirerek yetki yükseltmesi ve yanal hareket (lateral movement) yapması için kullandığı bir tekniktir. Bu, saldırganların bu nesneler olarak kimlik doğrulamasını ve onların erişimini devralmasını sağlar. ‘msDS-KeyCredentialLink’ özniteliği, Windows Hello for Business dahil şifresiz kimlik doğrulama mekanizmalarını desteklemek için Windows Server 2016 Domain Functional Level ile tanıtılmıştır.

Bir saldırgan bir nesne üzerinde yeterli izne sahipse veya yüksek ayrıcalıklı bir güvenlik grubunun (örneğin Domain Admins) üyesiyse, bu özniteliği değiştirerek kötü niyetli bir anahtar kimlik bilgisi (key credential) ekleyebilir. Bu, saldırganın hedef nesne olarak sertifika tabanlı kimlik doğrulama kullanarak kimlik doğrulamasını ve bir Domain Controller’dan bir TGT (Ticket Granting Ticket) talep etmesini sağlar. TGT (Ticket Granting Ticket) elde edildikten sonra, saldırgan hedef nesneyi taklit edebilir ve onun ayrıcalıklarını devralabilir.

Shadow Credentials kalıcı erişim sağlayabilir, çünkü kötü niyetli anahtar kimlik bilgisi, kullanıcı veya bilgisayar nesnesinin şifresi değiştirilse bile geçerli kalır. Tek bir nesneyle birden fazla anahtar kimlik bilgisi ilişkilendirilebildiğinden, yetkili ve yetkisiz kimlik bilgileri bir arada var olabilir. Bu, saldırganların meşru şifresiz kimlik doğrulama çözümleri kullanılırken bile erişimlerini sürdürmesine olanak tanır.

Varsayılan olarak:

Shadow Credentials’ı Mitigasyon Etmek

Shadow Credentials’ı mitigasyon etmek için kuruluşlar, yalnızca yetkili kullanıcıların kullanıcı ve bilgisayar nesneleri üzerindeki ‘msDS-KeyCredentialLink’ özniteliğini değiştirebilmesini sağlamalıdır. Bu şu şekillerde başarılabilir:

Shadow Credentials’ı Tespit Etmek

Shadow Credentials’ı tespit etmek, kullanıcı ve bilgisayar nesneleri üzerindeki ‘msDS-KeyCredentialLink’ özniteliğine yapılan yetkisiz değişikliklerin belirlenmesini gerektirir.

Directory Service Değişikliklerinin Günlüğe Kaydedilmesi: Kuruluşlar, Active Directory nesne değişikliklerinin denetimini etkinleştirmeli ve ‘msDS-KeyCredentialLink’ özniteliğindeki değişiklikleri izlemelidir. Tipik olarak, yalnızca Windows Hello for Business gibi yetkili şifresiz kimlik doğrulama iş akışları bu özniteliği değiştirir. Bu öznitelik değiştirildiğinde, değişikliği işleyen Domain Controller’da bir olay üretilir. Onaylı kayıt (registration) iş akışları dışındaki hesaplar, hizmetler veya sistemler tarafından yapılan değişiklikler araştırılmalıdır.

Bu tespiti uygulamak için:

Yapılandırıldığında, directory service değişiklikleri Domain Controller’larda Security Log’da Event ID 5136 üretir. Event ID 5136, Shadow Credentials’a özgü değildir ve diğer meşru veya kötü niyetli directory service değişiklik etkinlikleri tarafından da üretilebilir.

Bir Shadow Credentials ele geçirilmesi gerçekleştiğinde, bu olay şunları içerir:

‘msDS-KeyCredentialLink’ Özniteliğinin Denetlenmesi: Özniteliğe yapılan değişikliklerin tespitine ek olarak, kuruluşlar yetkisiz anahtar kimlik bilgilerini belirlemek için bu özniteliği tüm kullanıcı ve bilgisayar nesneleri için düzenli olarak gözden geçirmelidir. Bu metadata, kimlik bilgisini oluşturan sistemi veya kullanıcıyı içermez, dolayısıyla tek başına yetkili olup olmadığını belirlemek için kullanılamaz; ancak şunları belirlemeye yardımcı olacak bağlamsal bilgi sağlar: beklenmedik şekilde tek bir nesneyle ilişkilendirilmiş birden fazla anahtar kimlik bilgisi değeri; şifresiz kimlik doğrulama kullanmayan nesnelerle ilişkilendirilmiş anahtar kimlik bilgisi değerleri; bilinen provizyon etkinlikleriyle uyuşmayan yakın zamanda eklenmiş anahtar kimlik bilgileri.

Shadow Credentials’ı Tespit Eden Olay

Olay ID Kaynak Açıklama
5136 Domain Controller’lar Bir Active Directory nesnesindeki bir öznitelik değiştirildiğinde üretilir. Shadow Credentials için kuruluşlar, Attribute LDAP Display Name’in ‘msDS-KeyCredentialLink’ olduğu ve Subject Name’in yetkili bir kayıt hizmetiyle ilişkili olmadığı bu Olay ID’sini izlemelidir.

Lab Uygulaması

Bu bölümün lab uygulaması, W25DC (bakicubuk.local) üzerinde nihat.cubuk test hesabına karşı uçtan uca gerçek bir Shadow Credentials denemesidir. Kullanılan araç Whisker (Elad Shamir); resmi depoda derlenmiş bir binary bulunmadığından, topluluğun güvendiği SharpCollection gece derlemesi (nightly build) deposundan indirildi. Aynı şekilde Rubeus da SharpCollection üzerinden temin edildi.

1. Adım – Whisker ile sahte anahtar kimlik bilgisi ekleme:

W25DC‘de,  Run as administrator (Yönetici olarak çalıştır), nihat.cubuk hesabının msDS-KeyCredentialLink özniteliğine sahte bir sertifika eklendi:

.\Whisker.exe add /target:nihat.cubuk /domain:bakicubuk.local /dc:w25dc.bakicubuk.local /path:C:\Temp\nihat5.pfx /password:P@ssword5

Komut ilk denemede sorunsuz çalıştı: hedef hesap bulundu, sertifika üretildi, msDS-KeyCredentialLink özniteliği başarıyla güncellendi ve sertifika C:\Temp\nihat5.pfx olarak diske kaydedildi. Whisker, çıktısının sonunda bir sonraki adımda kullanılacak Rubeus komutunu da otomatik olarak önerdi.

2. Adım – Sertifika ile PKINIT kimlik doğrulama:

Elde edilen .pfx sertifikası, Rubeus’un asktgt modülüyle kullanılarak, nihat.cubuk‘un gerçek şifresi hiç bilinmeden bir TGT (Ticket Granting Ticket) talep edildi. İlk denemede Rubeus’un varsayılan şifreleme türü (RC4) ile istek gönderildi:

.\Rubeus.exe asktgt /user:nihat.cubuk /certificate:C:\Temp\nihat5.pfx /password:"P@ssword5" /domain:bakicubuk.local /dc:w25dc.bakicubuk.local /getcredentials /show

Bu istek, Windows Server 2025 KDC’sinden KDC_ERR_ETYPE_NOTSUPP; hatasıyla reddedildi modern KDC, PKINIT için artık RC4 şifreleme türünü kabul etmiyor.

Komut, SpecterOps’un Rubeus dokümantasyonunda doğrulanan /enctype:aes256 parametresi eklenerek tekrar çalıştırıldı:

.\Rubeus.exe asktgt /user:nihat.cubuk /certificate:C:\Temp\nihat5.pfx /password:"P@ssword5" /domain:bakicubuk.local /dc:w25dc.bakicubuk.local /enctype:aes256 /getcredentials /show

Bu sefer istek aes256_cts_hmac_sha1 ile başarıyla tamamlandı ve nihat.cubuk için geçerli bir TGT (Ticket Granting Ticket) elde edildi hesabın gerçek şifresi hiçbir anda kullanılmadı veya bilinmedi.

/getcredentials parametresiyle Rubeus, elde edilen TGT (Ticket Granting Ticket)’yi U2U (User-to-User) ile kullanarak hesabın NTLM hash’ini de çözdü:

Böylece saldırgan, hedef hesabın parolasını hiç bilmeden veya sıfırlamadan, yalnızca msDS-KeyCredentialLink özniteliğine yazma yetkisiyle hem TGT (Ticket Granting Ticket) hem de hesabın NTLM hash’ini elde etmiş oldu.

3. Adım – Tespit doğrulaması:

Raporun önerdiği tespit yönteminin gerçekten çalışıp çalışmadığı test edildi. İlk denemede yalnızca auditpol /set /subcategory:"Directory Service Changes" etkinleştirilmesine rağmen Event ID 5136 üretilmedi – bunun nedeni, domain kökünde msDS-KeyCredentialLink özniteliğine özel bir SACL (System Access Control List) tanımlı olmamasıydı. Şemadan canlı olarak alınan schemaIDGUID kullanılarak bir SACL kuralı eklendi, ancak ilk deneme de sessizce başarısız oldu 4 parametreli ActiveDirectoryAuditRule kurucusu yalnızca domain kökü nesnesinin kendisine uygulanıyor, alt nesneleri (kullanıcı hesaplarını) kapsamıyordu. Kural, kalıtım kapsamını "Descendents" olarak genişleten 5 parametreli kurucuyla yeniden oluşturulduktan sonra sorun çözüldü:

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5136} -MaxEvents 5 | Format-List

Düzeltmenin ardından Event ID 5136 doğru şekilde üretildi. Olay kaydı, Attribute LDAP Display Name: msDS-KeyCredentialLink değerini ve Subject Account Name: Administrator bilgisini açıkça gösteriyor raporun belirttiği gibi, bu hesap bilinen bir parolasız kimlik doğrulama sağlayıcısı (passwordless-auth provisioning) hizmetiyle ilişkili olmadığından şüpheli olarak işaretlenmesi gereken bir davranış.

Bu üç aşamalı sonuç, raporun hem saldırı vektörünü (parola bilmeden TGT (Ticket Granting Ticket) ve NTLM hash elde etme) hem de önerdiği tespit yöntemini (Event ID 5136 + öznitelik bazlı SACL) doğrulayan eksiksiz bir kanıt zinciri oluşturuyor.

Uyumluluk ve Çerçeve Eşlemesi Tablosu

Çerçeve İlgili Kontrol/Madde
PCI DSS Gereksinim 7.1 (Erişim kısıtlaması), Gereksinim 10.2 (Denetim izleri)
HIPAA 164.312(a)(1) – Erişim Kontrolü, 164.312(b) – Denetim Kontrolleri
ISO 27001 A.9.2 (Kullanıcı Erişim Yönetimi), A.12.4 (Günlükleme ve İzleme)
KVKK Madde 12 – Veri Güvenliğine İlişkin Yükümlülükler
TCMB Bilgi Sistemleri Yönetimi Tebliğ – Erişim ve Yetkilendirme Kontrolleri
NIST CSF PR.AC-4 (Erişim izinleri ve yetkilendirmeleri yönetilir), DE.CM-1 (Ağ izlenir)
CIS Controls CIS 5 (Hesap Yönetimi), CIS 6 (Erişim Kontrol Yönetimi)

MITRE ATT&CK: T1098.005 (Account Manipulation: Device Registration), T1558 (Steal or Forge Kerberos Tickets)

Sonuç

Shadow Credentials, güvenliği artırmak için tasarlanmış bir özelliğin (şifresiz kimlik doğrulama) bile, yetersiz izin kontrolleriyle birleştiğinde saldırganlar için yeni bir kalıcılık yolu haline gelebileceğini gösteriyor.

Serinin bir sonraki ve son bölümünde, tüm bu teknikleri “canary” (tuzak) hesaplar ve nesnelerle nasıl proaktif olarak tespit edebileceğimizi ve serinin genel bir özetini ele alacağız.

Exit mobile version