Active Directory Methodology
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Active Directory, ağ yöneticilerinin bir ağ içindeki alanlar, kullanıcılar ve nesneleri verimli bir şekilde oluşturup yönetmelerini sağlayan temel bir teknoloji olarak hizmet eder. Ölçeklenebilir olacak şekilde tasarlanmıştır, çok sayıda kullanıcıyı yönetilebilir gruplara ve alt gruplara organize ederken, çeşitli seviyelerde erişim haklarını kontrol eder.
Active Directory yapısı üç ana katmandan oluşur: alanlar, ağaçlar ve ormanlar. Bir alan, ortak bir veritabanını paylaşan kullanıcılar veya cihazlar gibi nesnelerin bir koleksiyonunu kapsar. Ağaçlar, paylaşılan bir yapı ile bağlantılı bu alanların gruplarıdır ve bir orman, birbirleriyle güven ilişkileri aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder ve organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli erişim ve iletişim hakları atanabilir.
Active Directory içindeki anahtar kavramlar şunlardır:
Dizin – Active Directory nesneleri ile ilgili tüm bilgileri barındırır.
Nesne – Dizin içindeki varlıkları, kullanıcılar, gruplar veya paylaşılan klasörler dahil olmak üzere belirtir.
Alan – Dizin nesneleri için bir konteyner görevi görür, bir orman içinde birden fazla alanın bir arada bulunabilme yeteneğine sahiptir ve her biri kendi nesne koleksiyonunu korur.
Ağaç – Ortak bir kök alanı paylaşan alanların bir gruplamasıdır.
Orman – Active Directory'deki organizasyon yapısının zirvesi, aralarında güven ilişkileri bulunan birkaç ağaçtan oluşur.
Active Directory Domain Services (AD DS), bir ağ içindeki merkezi yönetim ve iletişim için kritik olan bir dizi hizmeti kapsar. Bu hizmetler şunları içerir:
Alan Hizmetleri – Veri depolamasını merkezi hale getirir ve kullanıcılar ile alanlar arasındaki etkileşimleri yönetir, kimlik doğrulama ve arama işlevlerini içerir.
Sertifika Hizmetleri – Güvenli dijital sertifikaların oluşturulması, dağıtımı ve yönetimini denetler.
Hafif Dizin Hizmetleri – LDAP protokolü aracılığıyla dizin destekli uygulamaları destekler.
Dizin Federasyon Hizmetleri – Bir oturumda birden fazla web uygulaması arasında kullanıcıları kimlik doğrulamak için tek oturum açma yetenekleri sağlar.
Hak Yönetimi – Telif hakkı materyalini korumaya yardımcı olur, yetkisiz dağıtım ve kullanımını düzenler.
DNS Hizmeti – alan adlarının çözülmesi için kritik öneme sahiptir.
Daha ayrıntılı bir açıklama için kontrol edin: TechTerms - Active Directory Tanımı
Bir AD'yi saldırmak için Kerberos kimlik doğrulama sürecini gerçekten iyi anlamanız gerekir. Nasıl çalıştığını hala bilmiyorsanız bu sayfayı okuyun.
AD'yi listelemek/sömürmek için hangi komutları çalıştırabileceğinizi hızlıca görmek için https://wadcoms.github.io/ adresine göz atabilirsiniz.
Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturumunuz yoksa şunları yapabilirsiniz:
Ağı pentest edin:
Ağı tarayın, makineleri ve açık portları bulun ve bunlardan zayıflıkları sömürmeye veya kimlik bilgilerini çıkarmaya çalışın (örneğin, yazıcılar çok ilginç hedefler olabilir).
DNS'i listelemek, alan içindeki anahtar sunucular hakkında bilgi verebilir; web, yazıcılar, paylaşımlar, vpn, medya vb.
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
Bunu nasıl yapacağınız hakkında daha fazla bilgi bulmak için Genel Pentesting Methodology sayfasına göz atın.
Smb hizmetlerinde null ve Guest erişimini kontrol edin (bu modern Windows sürümlerinde çalışmayacaktır):
enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>
smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>
smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
Bir SMB sunucusunu nasıl listeleyeceğiniz hakkında daha ayrıntılı bir kılavuz burada bulunabilir:
Ldap'ı listeleyin
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
LDAP'ı nasıl listeleyeceğiniz hakkında daha ayrıntılı bir kılavuz burada bulunabilir (lütfen anonim erişime özel dikkat gösterin):
Ağı zehirleyin
Responder ile hizmetleri taklit ederek kimlik bilgilerini toplayın.
relay saldırısını istismar ederek ana makineye erişin.
kötü niyetli UPnP hizmetlerini açığa çıkararakSDP ile kimlik bilgilerini toplayın.
Alan ortamları içindeki iç belgelerden, sosyal medyadan, hizmetlerden (özellikle web) kullanıcı adlarını/isimlerini çıkarın ve ayrıca kamuya açık olanlardan.
Eğer şirket çalışanlarının tam isimlerini bulursanız, farklı AD kullanıcı adı konvansiyonlarını deneyebilirsiniz (bunu okuyun). En yaygın konvansiyonlar: AdSoyad, Ad.Soyad, AdSoy (her birinin 3 harfi), Ad.Soy, ASoyad, A.Soyad, SoyadAd, Soyad.Ad, SoyadA, Soyad.N, 3 rastgele harf ve 3 rastgele rakam (abc123).
Araçlar:
Anonim SMB/LDAP enum: pentesting SMB ve pentesting LDAP sayfalarını kontrol edin.
Kerbrute enum: Bir geçersiz kullanıcı adı istendiğinde, sunucu Kerberos hata kodu KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN kullanarak yanıt verecek, bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. Geçerli kullanıcı adları, ya AS-REP yanıtında TGT alacak ya da KRB5KDC_ERR_PREAUTH_REQUIRED hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini belirtir.
OWA (Outlook Web Access) Sunucusu
Eğer ağda bu sunuculardan birini bulursanız, ona karşı kullanıcı sayımı da gerçekleştirebilirsiniz. Örneğin, MailSniper aracını kullanabilirsiniz:
Kullanıcı adlarının listelerini bu github repo **** ve bu (istatistiksel-olasılıkta-kullanıcı-adları) adreslerinde bulabilirsiniz.
Ancak, bu adımdan önce gerçekleştirdiğiniz keşif aşamasında şirket çalışanlarının isimlerini almış olmalısınız. İsim ve soyadı ile namemash.py scriptini kullanarak potansiyel geçerli kullanıcı adları oluşturabilirsiniz.
Tamam, geçerli bir kullanıcı adınız var ama şifre yok... O zaman deneyin:
ASREPRoast: Eğer bir kullanıcının DONT_REQ_PREAUTH niteliği yoksa, o kullanıcı için bir AS_REP mesajı talep edebilirsiniz; bu mesaj, kullanıcının şifresinin bir türevine göre şifrelenmiş bazı veriler içerecektir.
Password Spraying: Bulduğunuz her kullanıcı ile en yaygın şifreleri deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!).
Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için OWA sunucularını da spray yapabileceğinizi unutmayın.
Bazı zorluk hash'lerini elde edebilmek için ağ protokollerini zehirleyerek edinebilirsiniz:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay AttacksEğer aktif dizini listelemeyi başardıysanız, daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız. NTML relay saldırılarını **** zorlayarak AD ortamına erişim sağlamayı deneyebilirsiniz.
Eğer null veya misafir kullanıcısı ile diğer PC'lere veya paylaşımlara erişiminiz varsa, dosyalar yerleştirebilirsiniz (örneğin bir SCF dosyası) ve bu dosyaya bir şekilde erişildiğinde NTML kimlik doğrulamasını tetikler; böylece NTLM zorluğunu çalabilirsiniz:
Places to steal NTLM credsBu aşama için geçerli bir alan hesabının kimlik bilgilerini veya oturumunu ele geçirmiş olmanız gerekir. Eğer geçerli kimlik bilgilerine veya bir alan kullanıcısı olarak bir shell'e sahipseniz, önceki verilen seçeneklerin hala diğer kullanıcıları ele geçirmek için seçenekler olduğunu hatırlamalısınız.
Kimlik doğrulamalı listelemeye başlamadan önce Kerberos çift atlama sorununu bilmelisiniz.
Kerberos Double Hop ProblemBir hesabı ele geçirmek, tüm alanı ele geçirmeye başlamak için büyük bir adımdır, çünkü Aktif Dizin Listelemesine başlayabileceksiniz:
ASREPRoast ile artık her olası savunmasız kullanıcıyı bulabilirsiniz ve Password Spraying ile ele geçirilen hesabın şifresini, boş şifreleri ve yeni umut verici şifreleri deneyebilirsiniz.
Ayrıca keşif için powershell kullanabilirsiniz bu daha gizli olacaktır
Daha fazla ayrıntılı bilgi çıkarmak için powerview kullanabilirsiniz
Aktif dizinde keşif için başka harika bir araç BloodHound. Çok gizli değildir (kullandığınız toplama yöntemlerine bağlı olarak), ama bununla ilgilenmiyorsanız, kesinlikle denemelisiniz. Kullanıcıların RDP yapabileceği yerleri bulun, diğer gruplara giden yolları keşfedin, vb.
Diğer otomatik AD listeleme araçları şunlardır: AD Explorer, ADRecon, Group3r, PingCastle.
AD'nin DNS kayıtları ilginç bilgiler içerebilir.
Dizin listelemek için kullanabileceğiniz GUI'ye sahip bir araç AdExplorer.exe'dir, SysInternal Suite'ten.
Ayrıca, userPassword & unixUserPassword alanlarında veya hatta Description için kimlik bilgilerini aramak üzere ldapsearch ile LDAP veritabanında arama yapabilirsiniz. Diğer yöntemler için PayloadsAllTheThings'deki AD Kullanıcı yorumundaki şifre bağlantısına bakın.
Eğer Linux kullanıyorsanız, pywerview kullanarak alanı da listeleyebilirsiniz.
Ayrıca otomatik araçları deneyebilirsiniz:
Tüm alan kullanıcılarını çıkarmak
Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (net user /domain
, Get-DomainUser
veya wmic useraccount get name,sid
). Linux'ta ise şunları kullanabilirsiniz: GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username
veya enum4linux -a -u "user" -p "password" <DC IP>
Bu Listeleme bölümü küçük görünse de, bu tüm sürecin en önemli kısmıdır. Bağlantılara erişin (özellikle cmd, powershell, powerview ve BloodHound olanlara), bir alanı nasıl listeleyeceğinizi öğrenin ve rahat hissettiğinizdeye kadar pratik yapın. Bir değerlendirme sırasında, bu DA'ya ulaşmak veya hiçbir şey yapılamayacağına karar vermek için ana an olacaktır.
Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan TGS biletlerini elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olarak—çözmeyi içerir.
Bunun hakkında daha fazla bilgi:
KerberoastBazı kimlik bilgilerini elde ettikten sonra, herhangi bir makineye erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, CrackMapExec kullanarak farklı protokollerle birkaç sunucuya bağlanmayı deneyebilirsiniz, port taramalarınıza göre.
Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile alan içindeki herhangi bir makineye erişiminiz varsa, yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile diğer kullanıcıların hash'lerini bellekte (LSASS) ve yerel olarak (SAM) dökmek mümkün olacaktır.
Bu kitapta Windows'ta yerel yetki yükseltme hakkında bir sayfa ve bir kontrol listesi bulunmaktadır. Ayrıca, WinPEAS kullanmayı unutmayın.
Beklenmedik kaynaklara erişim izni veren biletler bulmanız çok olası değildir, ancak kontrol edebilirsiniz:
Eğer aktif dizini listelemeyi başardıysanız, daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız. NTML relay saldırılarını** zorlayabilirsiniz.**
Artık bazı temel kimlik bilgilerine sahip olduğunuz için, AD içinde paylaşılan ilginç dosyaları bulup bulamayacağınızı kontrol etmelisiniz. Bunu manuel olarak yapabilirsiniz ama bu çok sıkıcı ve tekrarlayan bir görevdir (ve kontrol etmeniz gereken yüzlerce belge bulursanız daha da fazla).
Kullanabileceğiniz araçlar hakkında bilgi edinmek için bu bağlantıyı takip edin.
Eğer diğer PC'lere veya paylaşımlara erişiminiz varsa, dosyalar yerleştirebilirsiniz (örneğin bir SCF dosyası) ve bu dosyalar bir şekilde erişildiğinde, sizinle NTML kimlik doğrulaması tetikleyecektir böylece NTLM zorluğunu çalabilir ve onu kırabilirsiniz:
Places to steal NTLM credsBu güvenlik açığı, herhangi bir kimlik doğrulaması yapılmış kullanıcının alan denetleyicisini tehlikeye atmasına izin verdi.
PrintNightmareAşağıdaki teknikler için, normal bir alan kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel yetkilere/kimlik bilgilerine ihtiyacınız var.
Umarım AsRepRoast, Password Spraying, Kerberoast, Responder dahil olmak üzere bazı yerel yönetici hesaplarını tehlikeye atmayı başardınız. Sonra, bellek ve yerel olarak tüm hash'leri dökme zamanı. Hash'leri elde etmenin farklı yolları hakkında bu sayfayı okuyun.
Bir kullanıcının hash'ine sahip olduğunuzda, onu taklit etmek için kullanabilirsiniz. Bu hash ile NTLM kimlik doğrulamasını gerçekleştirecek bir araç kullanmalısınız, ya da yeni bir oturum açma oluşturup bu hash'i LSASS içine enjekte edebilirsiniz, böylece herhangi bir NTLM kimlik doğrulaması yapıldığında, o hash kullanılacaktır. Son seçenek, mimikatz'ın yaptığıdır. Daha fazla bilgi için bu sayfayı okuyun.
Bu saldırı, kullanıcı NTLM hash'ini Kerberos biletleri talep etmek için kullanmayı amaçlar; bu, yaygın Pass The Hash NTLM protokolüne alternatif olarak. Bu nedenle, bu özellikle NTLM protokolünün devre dışı bırakıldığı ve yalnızca Kerberos'un kimlik doğrulama protokolü olarak izin verildiği ağlarda yararlı olabilir.
Over Pass the Hash/Pass the KeyPass The Ticket (PTT) saldırı yönteminde, saldırganlar bir kullanıcının kimlik doğrulama biletini çalar ve bunun yerine şifrelerini veya hash değerlerini alır. Bu çalınan bilet daha sonra kullanıcıyı taklit etmek için kullanılır ve bir ağ içindeki kaynaklara ve hizmetlere yetkisiz erişim sağlar.
Pass the TicketEğer bir yerel yönetici'nin hash veya şifresine sahipseniz, bunu kullanarak diğer PC'lere yerel olarak giriş yapmayı denemelisiniz.
Not edin ki bu oldukça gürültülü ve LAPS bunu azaltacaktır.
Eğer bir kullanıcının MSSQL örneklerine erişim yetkisi varsa, MSSQL ana bilgisayarında komutlar çalıştırmak, NetNTLM hash'ini çalmak veya hatta bir relay saldırısı gerçekleştirmek için bunu kullanabilir. Ayrıca, eğer bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse. Eğer kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir. Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.
MSSQL AD AbuseEğer ADS_UF_TRUSTED_FOR_DELEGATION niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının TGT'sini bellekten dökme yeteneğine sahip olursunuz. Yani, eğer bir Domain Admin bilgisayara giriş yaparsa, onun TGT'sini dökebilir ve Pass the Ticket kullanarak onu taklit edebilirsiniz. Sınırlı delegasyon sayesinde, bir Yazıcı Sunucusunu otomatik olarak ele geçirebilirsiniz (umarım bu bir DC olacaktır).
Unconstrained DelegationEğer bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, bir kullanıcıyı taklit ederek bir bilgisayardaki bazı hizmetlere erişim sağlamasına olanak tanır. Sonrasında, eğer bu kullanıcı/bilgisayarın hash'ini ele geçirirseniz, herhangi bir kullanıcıyı (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişim sağlayabilirsiniz.
Constrained DelegationUzak bir bilgisayarın Active Directory nesnesinde YAZMA yetkisine sahip olmak, yükseltilmiş yetkilerle kod yürütme elde etme imkanı sağlar:
Resource-based Constrained DelegationEle geçirilmiş bir kullanıcı, bazı alan nesneleri üzerinde bazı ilginç yetkilere sahip olabilir ve bu da size yanal hareket etme/yetki yükseltme imkanı verebilir.
Abusing Active Directory ACLs/ACEsAlan içinde bir Spool hizmetinin dinlendiğini keşfetmek, yeni kimlik bilgileri edinmek ve yetki yükseltmek için kötüye kullanılabilir.
Force NTLM Privileged AuthenticationEğer diğer kullanıcılar ele geçirilmiş makineye erişirse, bellekten kimlik bilgilerini toplamak ve hatta onların süreçlerine beacon enjekte etmek mümkündür. Genellikle kullanıcılar sisteme RDP aracılığıyla erişir, bu nedenle burada üçüncü taraf RDP oturumları üzerinde birkaç saldırı gerçekleştirme yöntemini bulabilirsiniz:
RDP Sessions AbuseLAPS, alan bağlı bilgisayarlardaki yerel Yönetici parolasını yönetmek için bir sistem sağlar, bunun rastgele, benzersiz ve sık sık değiştirildiğinden emin olur. Bu parolalar Active Directory'de saklanır ve erişim, yalnızca yetkili kullanıcılara ACL'ler aracılığıyla kontrol edilir. Bu parolalara erişim için yeterli izinlere sahip olduğunuzda, diğer bilgisayarlara geçiş yapmak mümkün hale gelir.
LAPSEle geçirilmiş bir makineden sertifikaları toplamak, ortam içinde yetki yükseltmenin bir yolu olabilir:
AD CS Certificate TheftEğer savunmasız şablonlar yapılandırılmışsa, bunları yetki yükseltmek için kötüye kullanmak mümkündür:
AD CS Domain EscalationBir kez Domain Admin veya daha iyi bir Enterprise Admin yetkisine sahip olduğunuzda, alan veritabanını dökebilirsiniz: ntds.dit.
DCSync saldırısı hakkında daha fazla bilgi burada bulunabilir.
NTDS.dit'i çalma hakkında daha fazla bilgi burada bulunabilir
Daha önce tartışılan bazı teknikler süreklilik için kullanılabilir. Örneğin, şunları yapabilirsiniz:
Kullanıcıları Kerberoast için savunmasız hale getirin
Kullanıcıları ASREPRoast için savunmasız hale getirin
Bir kullanıcıya DCSync yetkileri verin
Gümüş Bilet saldırısı, belirli bir hizmet için geçerli bir Ticket Granting Service (TGS) biletinin oluşturulmasını sağlar ve bu, NTLM hash'ini kullanarak gerçekleştirilir (örneğin, PC hesabının hash'i). Bu yöntem, hizmet yetkilerine erişim sağlamak için kullanılır.
Silver TicketAltın Bilet saldırısı, bir saldırganın Active Directory (AD) ortamında krbtgt hesabının NTLM hash'ine erişim sağlamasıyla ilgilidir. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm Ticket Granting Tickets (TGT'ler) imzalamak için kullanıldığı için özeldir.
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için TGT'ler oluşturabilir (Gümüş bilet saldırısı).
Golden TicketBunlar, yaygın altın bilet tespit mekanizmalarını atlayacak şekilde sahte olarak oluşturulmuş altın biletler gibidir.
Diamond TicketBir hesabın sertifikalarına sahip olmak veya bunları talep edebilmek, kullanıcı hesabında sürekliliği sağlamak için çok iyi bir yoldur (şifreyi değiştirse bile):
AD CS Account PersistenceSertifikaları kullanarak, alan içinde yüksek yetkilerle de süreklilik sağlamak mümkündür:
AD CS Domain PersistenceActive Directory'deki AdminSDHolder nesnesi, yetkili grupların (Domain Admins ve Enterprise Admins gibi) güvenliğini sağlamak için bu gruplar üzerinde standart bir Erişim Kontrol Listesi (ACL) uygular ve yetkisiz değişiklikleri önler. Ancak, bu özellik kötüye kullanılabilir; eğer bir saldırgan AdminSDHolder'ın ACL'sini düzenleyerek sıradan bir kullanıcıya tam erişim verirse, o kullanıcı tüm yetkili gruplar üzerinde geniş kontrol elde eder. Bu güvenlik önlemi, koruma amacıyla tasarlanmış olsa da, dikkatli bir şekilde izlenmediği takdirde istenmeyen erişimlere yol açabilir.
AdminDSHolder Grubu hakkında daha fazla bilgi burada.
Her Domain Controller (DC) içinde bir yerel yönetici hesabı bulunmaktadır. Böyle bir makinede yönetici hakları elde ederek, yerel Yönetici hash'ini mimikatz kullanarak çıkartabilirsiniz. Ardından, bu parolanın kullanımını etkinleştirmek için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar.
DSRM CredentialsBelirli alan nesneleri üzerinde bir kullanıcıya bazı özel izinler verebilir ve bu, kullanıcının gelecekte yetki yükseltmesine olanak tanır.
Abusing Active Directory ACLs/ACEsGüvenlik tanımlayıcıları, bir nesnenin üzerinde izinleri saklamak için kullanılır. Eğer bir nesnenin güvenlik tanımlayıcısında sadece küçük bir değişiklik yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz.
Security DescriptorsLSASS'ı bellekte değiştirerek, tüm alan hesaplarına erişim sağlayan evrensel bir parolayı oluşturun.
Skeleton KeyBir SSP'nin (Güvenlik Destek Sağlayıcısı) ne olduğunu burada öğrenin. Kendi SSP'nizi oluşturabilir ve makineye erişim için kullanılan kimlik bilgilerini düz metin olarak yakalamak için kullanabilirsiniz.\
Custom SSPAD'de yeni bir Domain Controller kaydeder ve belirli nesnelerde özellikleri (SIDHistory, SPNs...) güncellemeleri log bırakmadan itme işlemi yapar. DA yetkilerine sahip olmanız ve kök alan içinde olmanız gerekir. Yanlış veri kullanırsanız, oldukça kötü loglar ortaya çıkacaktır.
DCShadowDaha önce, LAPS parolalarını okuma iznine sahip olduğunuzda nasıl yetki yükseltebileceğinizi tartıştık. Ancak, bu parolalar sürekliliği sağlamak için de kullanılabilir. Kontrol edin:
LAPSMicrosoft, Ormanı güvenlik sınırı olarak görmektedir. Bu, tek bir alanın ele geçirilmesinin, tüm Ormanın ele geçirilmesine yol açabileceği anlamına gelir.
Bir alan güveni, bir alan kullanıcısının başka bir alan içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli anahtarları Domain Controller'ları (DC'ler) arasında değiş tokuş eder ve saklar.
Tipik bir senaryoda, bir kullanıcı güvenilir bir alandaki bir hizmete erişmek istediğinde, önce kendi alanının DC'sinden inter-realm TGT olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki alanın üzerinde anlaştığı bir anahtar ile şifrelenmiştir. Kullanıcı daha sonra bu TGT'yi güvenilir alanın DC'sine sunarak bir hizmet bileti (TGS) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarılı bir şekilde doğruladığında, bir TGS vererek kullanıcıya hizmete erişim izni verir.
Adımlar:
Domain 1'deki bir istemci bilgisayar, Domain Controller (DC1)'den Ticket Granting Ticket (TGT) talep etmek için NTLM hash'ini kullanarak süreci başlatır.
DC1, istemci başarılı bir şekilde kimlik doğrulandıysa yeni bir TGT verir.
İstemci daha sonra Domain 2'deki kaynaklara erişmek için DC1'den bir inter-realm TGT talep eder.
Inter-realm TGT, iki yönlü alan güveninin bir parçası olarak DC1 ve DC2 arasında paylaşılan bir güven anahtarı ile şifrelenmiştir.
İstemci inter-realm TGT'yi Domain 2'nin Domain Controller'ı (DC2)'ye götürür.
DC2, inter-realm TGT'yi paylaşılan güven anahtarı ile doğrular ve geçerli ise, istemcinin erişmek istediği Domain 2'deki sunucu için bir Ticket Granting Service (TGS) verir.
Son olarak, istemci bu TGS'yi sunucuya sunar; bu, sunucunun hesap hash'i ile şifrelenmiştir ve Domain 2'deki hizmete erişim sağlar.
Bir güvenin 1 yönlü veya 2 yönlü olabileceğini belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan da birbirine güvenecektir, ancak 1 yönlü güven ilişkisi durumunda bir alan güvenilir ve diğeri güvenen alan olacaktır. Son durumda, güvenilir alandan güvenen alana yalnızca güvenen alan içindeki kaynaklara erişim sağlanabilir.
Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir alandır. Ayrıca, Alan A'da bu bir Çıkış güveni; Alan B'de ise bu bir Giriş güveni olacaktır.
Farklı güven ilişkileri
Anaç-Çocuk Güvenleri: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, bu, kimlik doğrulama taleplerinin ana ve çocuk arasında sorunsuz bir şekilde akabileceği anlamına gelir.
Çapraz Bağlantı Güvenleri: "Kestirme güvenler" olarak adlandırılan bu güvenler, referans süreçlerini hızlandırmak için çocuk alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama referanslarının genellikle orman köküne kadar gitmesi ve ardından hedef alana inmesi gerekir. Çapraz bağlantılar oluşturarak, yol kısaltılır; bu, coğrafi olarak dağılmış ortamlarda özellikle faydalıdır.
Dış Güvenler: Farklı, ilişkili olmayan alanlar arasında kurulur ve doğası gereği geçişli değildir. Microsoft'un belgelerine göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Dış güvenlerle SID filtrelemesi ile güvenlik artırılır.
Ağaç-kök Güvenleri: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi Microsoft'un kılavuzunda bulunabilir.
Orman Güvenleri: Bu tür bir güven, iki orman kök alanı arasında iki yönlü geçişli bir güven olup, güvenlik önlemlerini artırmak için SID filtrelemesi uygular.
MIT Güvenleri: Bu güvenler, Windows dışındaki, RFC4120 uyumlu Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara hitap eden daha özel bir yapıdır.
Bir güven ilişkisi geçişli (A güveniyor B'ye, B güveniyor C'ye, o zaman A güveniyor C'ye) veya geçişli olmayan olabilir.
Bir güven ilişkisi iki yönlü güven (her ikisi de birbirine güvenir) veya bir yönlü güven (sadece biri diğerine güvenir) olarak kurulabilir.
Güven ilişkilerini listeleyin
Herhangi bir güvenlik ilkesi (kullanıcı/grup/bilgisayar) diğer alanın kaynaklarına erişime sahip olup olmadığını kontrol edin; belki ACE girişleri veya diğer alanın gruplarında yer alarak. Alanlar arası ilişkileri arayın (güven bu nedenle oluşturulmuş olabilir).
Bu durumda kerberoast başka bir seçenek olabilir.
Hesapları ele geçirin ve alanlar arasında geçiş yapın.
Saldırganlar, başka bir alandaki kaynaklara erişim sağlamak için üç ana mekanizma kullanabilir:
Yerel Grup Üyeliği: İlkeler, makinelerde yerel gruplara eklenebilir; örneğin, bir sunucudaki “Yöneticiler” grubu, onlara o makine üzerinde önemli kontrol sağlar.
Yabancı Alan Grup Üyeliği: İlkeler, yabancı alandaki grupların üyeleri de olabilir. Ancak, bu yöntemin etkinliği, güvenin doğasına ve grubun kapsamına bağlıdır.
Erişim Kontrol Listeleri (ACL'ler): İlkeler, belirli kaynaklara erişim sağlamak için bir ACL'de belirtilmiş olabilir; özellikle bir DACL içindeki ACE'ler olarak. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “An ACE Up The Sleeve” başlıklı beyaz kağıt değerli bir kaynaktır.
2 güvenilir anahtar vardır, biri Çocuk --> Ebeveyn ve diğeri Ebeveyn --> Çocuk için. Mevcut alan tarafından kullanılanı şu şekilde bulabilirsiniz:
Enterprise admin olarak çocuk/ebeveyn alanına yükselmek için SID-History injection kullanarak güveni kötüye kullanın:
SID-History InjectionKonfigürasyon İsimlendirme Bağlamı (NC) nasıl sömürülebileceğini anlamak çok önemlidir. Konfigürasyon NC, Active Directory (AD) ortamlarında bir orman genelinde konfigürasyon verileri için merkezi bir depo görevi görür. Bu veriler, ormandaki her Alan Denetleyicisi (DC) ile çoğaltılır ve yazılabilir DC'ler, Konfigürasyon NC'nin yazılabilir bir kopyasını tutar. Bunu sömürmek için, bir DC üzerinde SYSTEM ayrıcalıklarına sahip olmak gerekir, tercihen bir çocuk DC.
GPO'yu kök DC alanına bağlayın
Konfigürasyon NC'nin Siteler konteyneri, AD ormanındaki tüm alan bağlı bilgisayarların siteleri hakkında bilgi içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile çalışan saldırganlar, GPO'ları kök DC alanlarına bağlayabilir. Bu eylem, bu alanlara uygulanan politikaları manipüle ederek kök alanı tehlikeye atabilir.
Derinlemesine bilgi için, SID Filtrelemesini Aşma üzerine yapılan araştırmalara göz atılabilir.
Ormandaki herhangi bir gMSA'yı tehlikeye atma
Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almayı içerir. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Konfigürasyon NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA'nın şifrelerini hesaplamak mümkündür.
Detaylı analiz, Altın gMSA Güven Saldırıları konusundaki tartışmada bulunabilir.
Şema değişikliği saldırısı
Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını beklemek için sabır gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yeni oluşturulan AD nesneleri üzerinde yetkisiz erişim ve kontrol ile sonuçlanabilir.
Daha fazla okuma için Şema Değişikliği Güven Saldırıları üzerine bakılabilir.
ADCS ESC5 ile DA'dan EA'ya
ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulama sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Konfigürasyon NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar.
Bununla ilgili daha fazla ayrıntı DA'dan EA'ya ESC5 ile makalesinde okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu konu Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme makalesinde tartışılmıştır.
Bu senaryoda alanınız dış bir alan tarafından güvenilir kılınmıştır ve size belirsiz izinler vermektedir. Alanınızdaki hangi ilkelerin dış alanda hangi erişimlere sahip olduğunu bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek:
External Forest Domain - OneWay (Inbound) or bidirectionalBu senaryoda alan adınız farklı alanlardan bir prensipe bazı ayrıcalıklar güveniyor.
Ancak, bir alan adı güvenildiğinde, güvenilen alan tahmin edilebilir bir isimle bir kullanıcı oluşturur ve bu kullanıcı güvenilen şifreyi şifre olarak kullanır. Bu, güvenilen alana girmek için güvenen alanın bir kullanıcısına erişmenin mümkün olduğu anlamına gelir; bu kullanıcı, güvenilen alanı listeleyebilir ve daha fazla ayrıcalık artırmaya çalışabilir:
External Forest Domain - One-Way (Outbound)Güvenilen alanı tehlikeye atmanın bir başka yolu, alan güveni yönünün tersinde oluşturulmuş bir SQL güvenilir bağlantısı bulmaktır (bu çok yaygın değildir).
Güvenilen alanı tehlikeye atmanın bir başka yolu, güvenilen alanın bir kullanıcısının erişebileceği bir makinede beklemektir ve RDP üzerinden oturum açmaktır. Ardından, saldırgan RDP oturum süreci içinde kod enjekte edebilir ve oradan kurbanın orijinal alanına erişebilir. Ayrıca, eğer kurban sabit diskini bağladıysa, saldırgan RDP oturumu sürecinden sabit diskin başlangıç klasörüne arka kapılar depolayabilir. Bu teknik RDPInception olarak adlandırılır.
RDP Sessions AbuseOrman güvenleri arasında SID geçmişi niteliğini kullanan saldırı riskleri, varsayılan olarak tüm ormanlar arası güvenlerde etkinleştirilen SID Filtreleme ile azaltılmaktadır. Bu, Microsoft'un görüşüne göre ormanların güvenlik sınırı olarak kabul edilmesi nedeniyle, orman içi güvenlerin güvenli olduğu varsayımına dayanmaktadır.
Ancak, bir sorun var: SID filtreleme, uygulamaları ve kullanıcı erişimini bozabilir, bu da bazen devre dışı bırakılmasına yol açar.
Ormanlar arası güvenler için Seçici Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasını sağlamaz. Bunun yerine, güvenen alan veya ormandaki alanlara ve sunuculara erişim için açık izinler gereklidir.
Bu önlemlerin, yazılabilir Yapılandırma İsimlendirme Bağlamı (NC) istismarına veya güven hesaplarına yönelik saldırılara karşı koruma sağlamadığını belirtmek önemlidir.
Alan güvenleri hakkında daha fazla bilgi için ired.team'e bakın.
Kimlik bilgilerini koruma hakkında daha fazla bilgi edinin.\
Alan Yöneticileri Kısıtlamaları: Alan Yöneticilerinin yalnızca Alan Denetleyicilerine giriş yapmalarına izin verilmesi önerilir; diğer ana bilgisayarlarda kullanılmamalıdır.
Hizmet Hesabı Ayrıcalıkları: Hizmetler, güvenliği sağlamak için Alan Yöneticisi (DA) ayrıcalıkları ile çalıştırılmamalıdır.
Geçici Ayrıcalık Sınırlaması: DA ayrıcalıkları gerektiren görevler için süreleri sınırlı olmalıdır. Bu, Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
ile gerçekleştirilebilir.
Aldatmayı uygulamak, süresi dolmayan veya Delegasyon için Güvenilir olarak işaretlenmiş şifreler gibi özelliklere sahip tuzaklar, sahte kullanıcılar veya bilgisayarlar kurmayı içerir. Ayrıntılı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek ayrıcalıklı gruplara eklemeyi içerir.
Pratik bir örnek, Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
gibi araçlar kullanmaktır.
Aldatma tekniklerini dağıtma hakkında daha fazla bilgi Deploy-Deception on GitHub adresinde bulunabilir.
Kullanıcı Nesneleri için: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturma tarihleri ve düşük kötü şifre sayıları bulunur.
Genel Göstergeler: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak, tutarsızlıkları ortaya çıkarabilir. HoneypotBuster gibi araçlar, bu tür aldatmaları tanımlamaya yardımcı olabilir.
Microsoft ATA Algılama Aşma:
Kullanıcı Listeleme: ATA algılamasını önlemek için Alan Denetleyicilerinde oturum listelemeden kaçınmak.
Bilet Taklidi: Bilet oluşturmak için aes anahtarlarını kullanmak, NTLM'ye düşmeden algılamadan kaçınmaya yardımcı olur.
DCSync Saldırıları: ATA algılamasından kaçınmak için bir Alan Denetleyicisinden değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Alan Denetleyicisinden yürütme, uyarıları tetikler.
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)