Windows Credentials Protections

Reading time: 10 minutes

Credentials Protections

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

WDigest

WDigest protokolü, Windows XP ile tanıtılmıştır ve HTTP Protokolü üzerinden kimlik doğrulama için tasarlanmıştır ve Windows XP'den Windows 8.0'a ve Windows Server 2003'ten Windows Server 2012'ye kadar varsayılan olarak etkindir. Bu varsayılan ayar, LSASS'ta düz metin şifre depolamasına yol açar (Yerel Güvenlik Otoritesi Alt Sistemi Hizmeti). Bir saldırgan, Mimikatz kullanarak bu kimlik bilgilerini çıkarmak için aşağıdaki komutu çalıştırabilir:

bash
sekurlsa::wdigest

Bu özelliği kapalı veya açık hale getirmek için, UseLogonCredential ve Negotiate kayıt defteri anahtarları HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest içinde "1" olarak ayarlanmalıdır. Eğer bu anahtarlar yoksa veya "0" olarak ayarlandıysa, WDigest devre dışıdır:

bash
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential

LSA Koruması (PP & PPL korumalı süreçler)

Korunan Süreç (PP) ve Korunan Süreç Işık (PPL), Windows çekirdek düzeyinde korumalar olup, LSASS gibi hassas süreçlere yetkisiz erişimi önlemek için tasarlanmıştır. Windows Vista ile tanıtılan PP modeli, başlangıçta DRM uygulaması için oluşturulmuş ve yalnızca özel medya sertifikası ile imzalanmış ikili dosyaların korunmasına izin vermiştir. PP olarak işaretlenmiş bir süreç, yalnızca aynı zamanda PP olan ve eşit veya daha yüksek koruma seviyesine sahip diğer süreçler tarafından erişilebilir ve bu durumda bile, özel olarak izin verilmedikçe yalnızca sınırlı erişim hakları ile erişilebilir.

PPL, Windows 8.1 ile tanıtılmıştır ve PP'nin daha esnek bir versiyonudur. Daha geniş kullanım senaryolarına (örneğin, LSASS, Defender) izin vererek "koruma seviyeleri" sunar; bu seviyeler, dijital imzanın EKU (Gelişmiş Anahtar Kullanımı) alanına dayanmaktadır. Koruma seviyesi, EPROCESS.Protection alanında saklanır; bu, aşağıdaki özelliklere sahip bir PS_PROTECTION yapısıdır:

  • Tür (Korunan veya KorunanIşık)
  • İmzalayan (örneğin, WinTcb, Lsa, Antimalware, vb.)

Bu yapı tek bir bayta paketlenmiştir ve kimin kime erişebileceğini belirler:

  • Daha yüksek imzalayan değerler, daha düşük olanlara erişebilir
  • PPL'ler PP'lere erişemez
  • Korumasız süreçler, herhangi bir PPL/PP'ye erişemez

Saldırgan bir perspektiften bilmeniz gerekenler

  • LSASS PPL olarak çalıştığında, normal bir yönetici bağlamından OpenProcess(PROCESS_VM_READ | QUERY_INFORMATION) kullanarak açma girişimleri 0x5 (Erişim Reddedildi) ile başarısız olur, SeDebugPrivilege etkin olsa bile.
  • LSASS koruma seviyesini Process Hacker gibi araçlarla veya EPROCESS.Protection değerini okuyarak programatik olarak kontrol edebilirsiniz.
  • LSASS genellikle PsProtectedSignerLsa-Light (0x41) değerine sahip olacaktır; bu, yalnızca daha yüksek seviyeli bir imzalayan ile imzalanmış süreçler tarafından erişilebilir, örneğin WinTcb (0x61 veya 0x62).
  • PPL, sadece Kullanıcı Alanı kısıtlamasıdır; çekirdek düzeyindeki kod bunu tamamen atlayabilir.
  • LSASS'in PPL olması, çekirdek shellcode'u çalıştırabilirseniz veya uygun erişime sahip yüksek ayrıcalıklı bir süreci kullanabilirseniz kimlik bilgisi dökümünü önlemez.
  • PPL ayarlamak veya kaldırmak, yeniden başlatma veya Güvenli Önyükleme/UEFI ayarları gerektirir; bu, kayıt defteri değişiklikleri geri alındığında bile PPL ayarını sürdürebilir.

PPL koruma seçeneklerini atlama:

PPL'ye rağmen LSASS'i dökmek istiyorsanız, 3 ana seçeneğiniz var:

  1. LSASS'in koruma bayrağını kaldırmak için imzalı bir çekirdek sürücüsü (örneğin, Mimikatz + mimidrv.sys) kullanın:

  1. Kendi Zayıf Sürücünüzü (BYOVD) getirerek özel çekirdek kodu çalıştırın ve korumayı devre dışı bırakın. PPLKiller, gdrv-loader veya kdmapper gibi araçlar bunu mümkün kılar.
  2. Açık bir LSASS tutamacını başka bir süreçten (örneğin, bir AV süreci) çalın, ardından bunu sürecinize kopyalayın. Bu, pypykatz live lsa --method handledup tekniğinin temelidir.
  3. Herhangi bir ayrıcalıklı süreci kötüye kullanarak, onun adres alanına veya başka bir ayrıcalıklı sürecin içine rastgele kod yüklemenize izin veren bir süreç bulun; bu, PPL kısıtlamalarını etkili bir şekilde atlatır. Bunu bypassing-lsa-protection-in-userland veya https://github.com/itm4n/PPLdump adresinde bir örneğini kontrol edebilirsiniz.

LSASS için LSA koruma (PPL/PP) mevcut durumunu kontrol et:

bash
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL

When you running mimikatz privilege::debug sekurlsa::logonpasswords it'll probably fail with the error code 0x00000005 becasue of this.

Credential Guard

Credential Guard, yalnızca Windows 10 (Enterprise ve Education sürümleri) için özel bir özellik olup, Virtual Secure Mode (VSM) ve Virtualization Based Security (VBS) kullanarak makine kimlik bilgilerinin güvenliğini artırır. CPU sanallaştırma uzantılarını kullanarak, ana işletim sisteminin erişiminden uzak, korumalı bir bellek alanında ana süreçleri izole eder. Bu izolasyon, çekirdek bile VSM'deki belleğe erişemediğinden, kimlik bilgilerini pass-the-hash gibi saldırılardan etkili bir şekilde korur. Local Security Authority (LSA) bu güvenli ortamda bir trustlet olarak çalışırken, ana işletim sistemindeki LSASS süreci yalnızca VSM'nin LSA'sı ile iletişim kuran bir aracı olarak görev yapar.

Varsayılan olarak, Credential Guard aktif değildir ve bir organizasyon içinde manuel olarak etkinleştirilmesi gerekir. Mimikatz gibi araçlara karşı güvenliği artırmak için kritik öneme sahiptir; bu araçlar, kimlik bilgilerini çıkarmada kısıtlanır. Ancak, özel Security Support Providers (SSP) eklenerek, giriş denemeleri sırasında kimlik bilgilerini açık metin olarak yakalamak için hala zafiyetler istismar edilebilir.

Credential Guard'ın etkinlik durumunu doğrulamak için, HKLM\System\CurrentControlSet\Control\LSA altındaki kayıt defteri anahtarı LsaCfgFlags incelenebilir. "1" değeri, UEFI kilidi ile etkinleştirildiğini, "2" kilitsiz olduğunu ve "0" ise etkinleştirilmediğini gösterir. Bu kayıt defteri kontrolü, güçlü bir gösterge olmasına rağmen, Credential Guard'ı etkinleştirmek için tek adım değildir. Bu özelliği etkinleştirmek için ayrıntılı kılavuz ve bir PowerShell betiği çevrimiçi olarak mevcuttur.

bash
reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags

Kapsamlı bir anlayış ve Credential Guard'ı Windows 10'da etkinleştirme ile Windows 11 Enterprise ve Education (sürüm 22H2) uyumlu sistemlerde otomatik aktivasyonu hakkında talimatlar için Microsoft'un belgelerine göz atın.

Kimlik bilgilerini yakalamak için özel SSP'lerin uygulanmasıyla ilgili daha fazla ayrıntı bu kılavuzda sağlanmaktadır.

RDP RestrictedAdmin Modu

Windows 8.1 ve Windows Server 2012 R2, RDP için Restricted Admin modu dahil olmak üzere birkaç yeni güvenlik özelliği tanıttı. Bu mod, pass the hash saldırılarıyla ilişkili riskleri azaltarak güvenliği artırmak için tasarlanmıştır.

Geleneksel olarak, RDP aracılığıyla bir uzak bilgisayara bağlandığınızda, kimlik bilgileriniz hedef makinede saklanır. Bu, özellikle yükseltilmiş ayrıcalıklara sahip hesaplar kullanıldığında önemli bir güvenlik riski oluşturur. Ancak, Restricted Admin modu ile bu risk önemli ölçüde azaltılmıştır.

mstsc.exe /RestrictedAdmin komutunu kullanarak bir RDP bağlantısı başlatıldığında, uzak bilgisayara kimlik doğrulama, kimlik bilgilerinizin üzerinde saklanmadan gerçekleştirilir. Bu yaklaşım, bir kötü amaçlı yazılım enfeksiyonu durumunda veya kötü niyetli bir kullanıcının uzak sunucuya erişim sağlaması durumunda, kimlik bilgilerinizin tehlikeye girmediğini garanti eder, çünkü sunucuda saklanmamaktadır.

Restricted Admin modu'nda, RDP oturumundan ağ kaynaklarına erişim girişimleri kişisel kimlik bilgilerinizi kullanmaz; bunun yerine makinenin kimliği kullanılır.

Bu özellik, uzak masaüstü bağlantılarını güvence altına almak ve hassas bilgilerin bir güvenlik ihlali durumunda ifşa edilmesini önlemek için önemli bir adım teşkil etmektedir.

Daha ayrıntılı bilgi için bu kaynağa göz atın.

Önbelleğe Alınmış Kimlik Bilgileri

Windows, domain kimlik bilgilerini Yerel Güvenlik Otoritesi (LSA) aracılığıyla güvence altına alır ve Kerberos ve NTLM gibi güvenlik protokolleri ile oturum açma süreçlerini destekler. Windows'un önemli bir özelliği, son on domain oturum açma işlemini önbelleğe alma yeteneğidir; bu, kullanıcıların domain denetleyicisi çevrimdışı olduğunda bile bilgisayarlarına erişim sağlamalarını garanti eder—bu, sık sık şirket ağından uzakta olan dizüstü bilgisayar kullanıcıları için büyük bir avantajdır.

Önbelleğe alınmış oturum açma sayısı, belirli bir kayıt defteri anahtarı veya grup politikası aracılığıyla ayarlanabilir. Bu ayarı görüntülemek veya değiştirmek için aşağıdaki komut kullanılır:

bash
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT

Bu önbelleğe alınmış kimlik bilgilerine erişim sıkı bir şekilde kontrol edilmektedir; yalnızca SYSTEM hesabı bu bilgileri görüntülemek için gerekli izinlere sahiptir. Bu bilgilere erişmesi gereken yöneticiler, SYSTEM kullanıcı ayrıcalıkları ile bunu yapmalıdır. Kimlik bilgileri şu konumda saklanmaktadır: HKEY_LOCAL_MACHINE\SECURITY\Cache

Mimikatz, bu önbelleğe alınmış kimlik bilgilerini lsadump::cache komutunu kullanarak çıkarmak için kullanılabilir.

Daha fazla ayrıntı için, orijinal kaynak kapsamlı bilgiler sunmaktadır.

Korunan Kullanıcılar

Korunan Kullanıcılar grubu üyeliği, kullanıcılar için birkaç güvenlik geliştirmesi getirir ve kimlik bilgisi hırsızlığına ve kötüye kullanımına karşı daha yüksek koruma seviyeleri sağlar:

  • Kimlik Bilgisi Delegasyonu (CredSSP): Varsayılan kimlik bilgilerini devretmeye izin ver Grup Politika ayarı etkin olsa bile, Korunan Kullanıcıların düz metin kimlik bilgileri önbelleğe alınmayacaktır.
  • Windows Digest: Windows 8.1 ve Windows Server 2012 R2'den itibaren, sistem Korunan Kullanıcıların düz metin kimlik bilgilerini önbelleğe almayacaktır; Windows Digest durumuna bakılmaksızın.
  • NTLM: Sistem, Korunan Kullanıcıların düz metin kimlik bilgilerini veya NT tek yönlü fonksiyonlarını (NTOWF) önbelleğe almayacaktır.
  • Kerberos: Korunan Kullanıcılar için Kerberos kimlik doğrulaması DES veya RC4 anahtarları oluşturmayacak, ayrıca düz metin kimlik bilgilerini veya ilk Ticket-Granting Ticket (TGT) edinimi sonrasındaki uzun vadeli anahtarları önbelleğe almayacaktır.
  • Çevrimdışı Giriş: Korunan Kullanıcılar, giriş veya kilidi açma sırasında önbelleğe alınmış bir doğrulayıcı oluşturulmayacak, bu da bu hesaplar için çevrimdışı girişin desteklenmediği anlamına gelmektedir.

Bu korumalar, Korunan Kullanıcılar grubuna üye bir kullanıcının cihaza giriş yaptığı anda etkinleştirilir. Bu, çeşitli kimlik bilgisi ihlali yöntemlerine karşı koruma sağlamak için kritik güvenlik önlemlerinin alındığını garanti eder.

Daha ayrıntılı bilgi için resmi belgelere başvurun.

Tablo belgelerden.

Windows Server 2003 RTMWindows Server 2003 SP1+

Windows Server 2012,
Windows Server 2008 R2,
Windows Server 2008

Windows Server 2016
Account OperatorsAccount OperatorsAccount OperatorsAccount Operators
AdministratorAdministratorAdministratorAdministrator
AdministratorsAdministratorsAdministratorsAdministrators
Backup OperatorsBackup OperatorsBackup OperatorsBackup Operators
Cert Publishers
Domain AdminsDomain AdminsDomain AdminsDomain Admins
Domain ControllersDomain ControllersDomain ControllersDomain Controllers
Enterprise AdminsEnterprise AdminsEnterprise AdminsEnterprise Admins
Enterprise Key Admins
Key Admins
KrbtgtKrbtgtKrbtgtKrbtgt
Print OperatorsPrint OperatorsPrint OperatorsPrint Operators
Read-only Domain ControllersRead-only Domain Controllers
ReplicatorReplicatorReplicatorReplicator
Schema AdminsSchema AdminsSchema AdminsSchema Admins
Server OperatorsServer OperatorsServer OperatorsServer Operators

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin