Active Directory Methodology

A'dan Z'ye AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Temel Bakış

Active Directory, ağ yöneticilerinin ağ içinde alanlar, kullanıcılar ve nesneleri verimli bir şekilde oluşturmasına ve yönetmesine olanak tanıyan temel bir teknoloji olarak hizmet verir. Geniş bir kullanıcı kitlesini yönetmeyi kolaylaştıran bir şekilde ölçeklendirilmiştir, grupları ve alt grupları yönetirken çeşitli seviyelerde erişim haklarını kontrol eder.

Active Directory yapısı üç temel 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, bu alanları birleştiren ortak bir yapıya sahip olan alanların gruplarıdır ve bir orman, birbirleri arasında güven ilişkileri ile bağlı olan birden fazla ağacın koleksiyonunu temsil eder, organizasyon yapısının en üst katmanını oluşturur. Her bir seviyede belirli erişim ve iletişim hakları belirlenebilir.

Active Directory içindeki temel kavramlar şunlardır:

  1. Dizin – Active Directory nesneleriyle ilgili tüm bilgileri barındırır.

  2. Nesne – Dizin içindeki varlıkları belirtir, kullanıcılar, gruplar veya paylaşılan klasörler gibi.

  3. Alan – Dizin nesneleri için bir konteyner görevi görür, her biri kendi nesne koleksiyonunu koruyan birden fazla alanın bir orman içinde bir arada bulunabilme yeteneğine sahiptir.

  4. Ağaç – Ortak bir kök alanı paylaşan alanların bir gruplaması.

  5. Orman – Active Directory'deki organizasyon yapısının zirvesi, birbirleri arasında güven ilişkileri olan birkaç ağacın koleksiyonundan oluşur.

Active Directory Domain Hizmetleri (AD DS), ağ içinde merkezi yönetim ve iletişim için kritik olan bir dizi hizmeti kapsar. Bu hizmetler şunları içerir:

  1. Alan Hizmetleri – Veri depolamayı merkezileştirir ve kullanıcılar ve alanlar arasındaki etkileşimleri yönetir, kimlik doğrulama ve arama işlevlerini içerir.

  2. Sertifika Hizmetleri – Güvenli dijital sertifikaların oluşturulmasını, dağıtımını ve yönetimini denetler.

  3. Hafif Dizin HizmetleriLDAP protokolü aracılığıyla dizin tabanlı uygulamaları destekler.

  4. Dizin Federasyon Hizmetleri – Birden fazla web uygulamasında kullanıcıları tek oturum açma yetenekleriyle kimlik doğrular.

  5. Hak Yönetimi – Telif hakkı materyallerini koruyarak izinsiz dağıtımını ve kullanımını düzenlemeye yardımcı olur.

  6. DNS HizmetiAlan adlarının çözümlemesi için hayati öneme sahiptir.

Daha detaylı bir açıklama için: TechTerms - Active Directory Tanımı

Kerberos Kimlik Doğrulaması

Bir AD'yi saldırmayı öğrenmek için Kerberos kimlik doğrulama sürecini gerçekten iyi anlamanız gerekir. Hala nasıl çalıştığını bilmiyorsanız bu sayfayı okuyun.

Kopya Kağıt

Bir AD'yi sıralamak/çıkarmak için hangi komutları çalıştırabileceğinizi hızlıca görmek için https://wadcoms.github.io/ adresine gidebilirsiniz.

Keşif Active Directory (Kimlik bilgileri/oturumlar olmadan)

Eğer sadece bir AD ortamına erişiminiz var ancak herhangi bir kimlik bilgisi/oturumunuz yoksa şunları yapabilirsiniz:

  • Ağı pentest edin:

  • Ağı taramak, makineleri bulmak ve açık portları açmak ve bunlardan zafiyetleri sömürmek veya kimlik bilgilerini çıkarmak için denemelerde bulunmak (örneğin, yazıcılar çok ilginç hedefler olabilir.

  • DNS'yi sıralamak, alan içindeki ana 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

  • Daha fazla bilgi için Genel Pentest Metodolojisi'ne bakın.

  • Smb hizmetlerinde null ve Guest erişimini kontrol edin (bu modern Windows sürümlerinde çalışmayabilir):

  • 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 sıralayacağınıza dair daha detaylı bir kılavuz burada bulunabilir:

page139,445 - Pentesting SMB
  • Ldap'ı sıralayın

  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>

  • LDAP'ı nasıl sıralayacağınıza dair daha detaylı bir kılavuz burada bulunabilir (özellikle anonim erişime dikkat edin):

page389, 636, 3268, 3269 - Pentesting LDAP

Kullanıcı numaralandırma

  • Anonim SMB/LDAP numaralandırma: pentesting SMB ve pentesting LDAP sayfalarını kontrol edin.

  • Kerbrute numaralandırma: Bir geçersiz kullanıcı adı istendiğinde sunucu, Kerberos hata kodu KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN kullanarak yanıt verecektir, böylece kullanıcı adının geçersiz olduğunu belirleyebiliriz. Geçerli kullanıcı adları, ya AS-REP içinde TGT yanıtını ya da KRB5KDC_ERR_PREAUTH_REQUIRED hatasını alacaktır, bu da kullanıcının ön kimlik doğrulamasını gerçekleştirmesi gerektiğini gösterir.

./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases

nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>

msf> use auxiliary/gather/kerberos_enumusers

crackmapexec smb dominio.es  -u '' -p '' --users | awk '{print $4}' | uniq
  • OWA (Outlook Web Access) Sunucusu

Eğer ağda bu sunuculardan birini bulursanız, ayrıca buna karşı kullanıcı numaralandırması yapabilirsiniz. Örneğin, MailSniper aracını kullanabilirsiniz:

ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt

Bu github deposunda ve bu (istatistiksel-olası-kullanıcı-adları) listelerini kullanıcı adları bulabilirsiniz.

Ancak, bu adımdan önce gerçekleştirmeniz gereken keşif adımından şirkette çalışan kişilerin adını bilmelisiniz. Ad ve soyadı ile namemash.py betiğini kullanarak potansiyel geçerli kullanıcı adları oluşturabilirsiniz.

Bir veya birkaç kullanıcı adını bilmek

Tamam, zaten geçerli bir kullanıcı adınız olduğunu biliyorsunuz ama şifreleriniz yok... O zaman şunları deneyin:

  • ASREPRoast: Bir kullanıcının DONT_REQ_PREAUTH özniteliğine sahip olmadığını biliyorsanız, o kullanıcı için bir AS_REP mesajı isteyebilirsiniz. Bu mesaj, kullanıcının şifresinin türetilmiş bir sürümü tarafından şifrelenmiş bazı veriler içerecektir.

  • Şifre Sıçratma: Keşfettiğiniz kullanıcılarla en sık kullanılan şifreleri deneyin, belki bazı kullanıcılar kötü bir şifre kullanıyordur (şifre politikasını göz önünde bulundurun!).

  • Ayrıca, kullanıcıların posta sunucularına erişmeye çalışmak için OWA sunucularına sıçrama yapabilirsiniz.

pagePassword Spraying / Brute Force

LLMNR/NBT-NS Zehirlenmesi

Ağın bazı protokollerini zehirleyerek bazı meydan okuma karmalarını kırabilirsiniz:

pageSpoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

NTML Aktarımı

Etkin dizini numaralandırmayı başardıysanız, daha fazla e-posta ve ağın daha iyi anlayışına sahip olacaksınız. AD ortamına erişim elde etmek için NTML aktarım saldırıları yapabilirsiniz.

NTLM Kimlik Bilgilerini Çalma

Diğer PC'lere veya paylaşımlara erişebiliyorsanız (boş veya misafir kullanıcı ile) dosyalar yerleştirebilirsiniz (örneğin bir SCF dosyası) ki bu dosyalara bir şekilde erişildiğinde sizinle karşılaştırılan bir NTML kimlik doğrulamasını tetikleyecektir, böylece kimlik doğrulamasını çalabilirsiniz ve kırabilirsiniz:

pagePlaces to steal NTLM creds

Kimlik Bilgileri/Oturum ile Etkin Dizin Numaralandırma

Bu aşamada geçerli bir etki alanı hesabının kimlik bilgilerini veya oturumunu ele geçirmiş olmanız gerekmektedir. Geçerli kimlik bilgileriniz veya bir etki alanı kullanıcısı olarak kabuk aldıysanız, önce verilen seçeneklerin hala diğer kullanıcıları tehlikeye atma seçenekleri olduğunu hatırlamalısınız.

Kimlik doğrulamalı numaralandırmaya başlamadan önce Kerberos çift atlama sorununu bilmelisiniz.

pageKerberos Double Hop Problem

Numaralandırma

Bir hesabı ele geçirmek, tüm etki alanını tehlikeye atmak için büyük bir adımdır, çünkü Etkin Dizin Numaralandırmasına başlayabileceksiniz:

ASREPRoast ile şimdi her olası savunmasız kullanıcıyı bulabilirsiniz ve Şifre Sıçratma ile tüm kullanıcı adlarının listesini alabilir ve ele geçirilen hesabın şifresini, boş şifreleri ve yeni umut verici şifreleri deneyebilirsiniz.

Windows'tan tüm etki 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 Numaralandırma bölümü küçük görünse de bu en önemli kısımdır. Bağlantılara erişin (özellikle cmd, powershell, powerview ve BloodHound'un bağlantısına), bir etki alanını nasıl numaralandıracağınızı öğrenin ve kendinizi rahat hissedene kadar pratik yapın. Bir değerlendirme sırasında, bu, DA yolunu bulmanız veya hiçbir şey yapılamayacağına karar vermeniz için ana an olacaktır.

Kerberoast

Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan TGS biletlerini elde etmeyi ve şifrelerine dayanan şifreleme yöntemlerini çevrimdışı olarak kırmayı içerir.

Daha fazlası için:

pageKerberoast

Uzak bağlantı (RDP, SSH, FTP, Win-RM, vb.)

Birkaç kimlik bilgisine sahip olduktan sonra herhangi bir makineye erişiminizin olup olmadığını kontrol edebilirsiniz. Bu konuda, farklı protokollerle birkaç sunucuya bağlanmayı denemek için CrackMapExec kullanabilirsiniz, taramalarınıza göre uygun şekilde.

Yerel Yetki Yükseltme

Eğer ele geçirdiğiniz kimlik bilgileri veya düzenli bir etki alanı kullanıcısı olarak bir oturumunuz varsa ve bu kullanıcıyla etki alanındaki herhangi bir makineye erişiminiz varsa, yerel olarak yetkileri yükseltmeye ve kimlik bilgilerini ele geçirmeye çalışmalısınız. Bu, çünkü yalnızca yerel yönetici yetkilerine sahip olduğunuzda diğer kullanıcıların bellekteki (LSASS) ve yereldeki (SAM) hash'lerini dökme yeteneğine sahip olacaksınız.

Bu kitapta Windows'ta yerel yetki yükseltme hakkında tam bir sayfa ve bir kontrol listesi bulunmaktadır. Ayrıca, WinPEAS kullanmayı unutmayın.

Geçerli Oturum Biletleri

Çok olasılıksız olsa da, mevcut kullanıcıda beklenmeyen kaynaklara erişim izni veren biletler bulabileceğinizi kontrol edebilirsiniz:

## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))

NTML Aktarımı

Eğer etkin dizini numaralandırmayı başardıysanız, daha fazla e-posta ve ağın daha iyi anlayışına sahip olacaksınız. NTML aktarım saldırılarını** zorlayabilirsiniz**.

Bilgisayar Paylaşımlarında Kimlik Bilgilerini Arayın

Temel kimlik bilgileriniz olduğuna göre, AD içinde paylaşılan ilginç dosyaları bulup bulamayacağınızı kontrol etmelisiniz. Bu işlemi manuel olarak yapabilirsiniz ancak çok sıkıcı ve tekrarlayan bir görevdir (ve yüzlerce belge bulursanız kontrol etmeniz gerekebilir).

Bu bağlantıyı takip ederek kullanabileceğiniz araçlar hakkında bilgi edinin.

NTLM Kimlik Bilgilerini Çalma

Diğer PC'lere veya paylaşımlara erişebiliyorsanız, (örneğin bir SCF dosyası gibi) erişildiğinde size karşı bir NTML kimlik doğrulaması tetikleyecek dosyalar yerleştirebilirsiniz böylece NTLM meydan okumasını çözmek için çalabilirsiniz:

pagePlaces to steal NTLM creds

CVE-2021-1675/CVE-2021-34527 PrintNightmare

Bu zafiyet, herhangi bir kimliği doğrulanmış kullanıcının etki alanı denetleyicisini tehlikeye atmasına izin verdi.

pagePrintNightmare

Ayrıcalıklı Kimlik Bilgileri/Oturum ile Etkin Dizin Üzerinde Ayrıcalık Yükseltme

Aşağıdaki teknikler için düzenli bir etki alanı kullanıcısı yeterli değil, bu saldırıları gerçekleştirmek için özel ayrıcalıklara/kimlik bilgilerine ihtiyacınız var.

Hash Çıkarma

Umarım AsRepRoast, Password Spraying, Kerberoast, Responder dahil olmak üzere bazı yerel yönetici hesaplarını tehlikeye atmayı başarmışsınızdır. Sonra, bellekte ve yerel olarak tüm hash'leri dökmek için zamanı gelmiştir. Farklı hash'leri elde etmenin farklı yolları hakkında bu sayfayı okuyun.

Hash Geçişi

Bir kullanıcının hash'ine sahip olduktan sonra, onu taklit etmek için kullanabilirsiniz. Bu hash'i kullanarak NTLM kimlik doğrulamasını gerçekleştirecek bir aracı kullanmanız gerekmektedir, veya yeni bir oturum açma oluşturabilir ve bu hash'i LSASS içine enjekte edebilirsiniz, böylece herhangi bir NTLM kimlik doğrulaması gerçekleştirildiğinde, bu hash kullanılacaktır. Son seçenek, mimikatz'ın yaptığı işlemdir. Daha fazla bilgi için bu sayfayı okuyun.

Hash Üzerinden Geçiş/Anahtarı Geçiş

Bu saldırı, kullanıcı NTLM hash'ini istemek için Kerberos biletleri talep etmeyi amaçlar ve yaygın Pass The Hash üzerinden NTLM protokolüne alternatif bir yöntemdir. Bu nedenle, bu özellikle NTLM protokolünün devre dışı bırakıldığı ve yalnızca Kerberos'un izin verildiği ağlarda kullanışlı olabilir.

pageOver Pass the Hash/Pass the Key

Bilet Geçişi

Bilet Geçişi (PTT) saldırı yönteminde, saldırganlar bir kullanıcının şifresi veya hash değerleri yerine kimlik doğrulama bileti çalarlar. Bu çalınan bilet daha sonra kullanılarak kullanıcı taklit edilir ve ağ içindeki kaynaklara ve hizmetlere izinsiz erişim sağlanır.

pagePass the Ticket

Kimlik Bilgilerinin Tekrar Kullanımı

Eğer bir yerel yöneticinin hash'ine veya şifresine sahipseniz, bunu kullanarak başka PC'lere yerel olarak giriş yapmayı denemelisiniz.

# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +

Bu oldukça gürültülü ve LAPS bunu hafifletebilir.

MSSQL Kötüye Kullanımı ve Güvenilir Bağlantılar

Bir kullanıcının MSSQL örneklerine erişim ayrıcalıkları varsa, bunu kullanarak MSSQL ana bilgisayarında (SA olarak çalışıyorsa) komutları yürütebilir, NetNTLM hash'ini çalabilir veya hatta bir röle saldırısı gerçekleştirebilir. Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir olarak kabul ediliyorsa (veritabanı bağlantısı). Kullanıcı, güvenilen veritabanı üzerinde ayrıcalıklara sahipse, güven ilişkisini kullanarak diğer örnekte de sorguları yürütebilecektir. Bu güvenler zincirlenebilir ve kullanıcı bir noktada yanlış yapılandırılmış bir veritabanı bulabilir ve burada komutları yürütebilir. Veritabanları arasındaki bağlantılar orman güvenleri dahil çalışır.

pageMSSQL AD Abuse

Kısıtlanmamış Delege

Eğer ADS_UF_TRUSTED_FOR_DELEGATION özniteliğine sahip bir Bilgisayar nesnesi bulursanız ve bilgisayarda etki alanı ayrıcalıklarınız varsa, bilgisayara giriş yapan her kullanıcının belleğinden TGT'leri dökme yeteneğine sahip olacaksınız. Bu nedenle, bir Etki Alanı Yöneticisi bilgisayara giriş yaptığında, onun TGT'sini dökebilecek ve Bilet Taşıma kullanarak onun yerine geçebileceksiniz. Kısıtlanmış delege sayesinde hatta bir Yazıcı Sunucusunu bile otomatik olarak tehlikeye atabilirsiniz (umarım bir DC olmaz).

pageUnconstrained Delegation

Kısıtlanmış Delege

Bir kullanıcı veya bilgisayar "Kısıtlanmış Delege" için izin verilirse, bir bilgisayarda bazı hizmetlere erişmek için herhangi bir kullanıcıyı taklit edebilecektir. Sonra, bu kullanıcı/bilgisayarın hash'ini ele geçirirseniz, bazı hizmetlere erişmek için (hatta etki alanı yöneticileri dahil) herhangi bir kullanıcıyı taklit edebileceksiniz.

pageConstrained Delegation

Kaynak Tabanlı Kısıtlı Delege Kötüye Kullanımı

Uzaktaki bir bilgisayarın Active Directory nesnesinde YAZMA ayrıcalığına sahip olmak, yükseltilmiş ayrıcalıklarla kod yürütme imkanı sağlar:

pageResource-based Constrained Delegation

ACL Kötüye Kullanımı

Kompromize edilmiş kullanıcı, bazı etki alanı nesneleri üzerinde ilginç ayrıcalıklara sahip olabilir ve bu da size yan yana hareket etme/ayrıcalıkları yükseltme imkanı verebilir.

pageAbusing Active Directory ACLs/ACEs

Yazıcı Kuyruğu hizmeti kötüye kullanımı

Etki alanında dinleyen bir Kuyruk hizmeti keşfetmek, yeni kimlik bilgileri edinmek ve ayrıcalıkları yükseltmek için kötüye kullanılabilir.

pageAbusing Active Directory ACLs/ACEs

Üçüncü taraf oturumları kötüye kullanımı

Diğer kullanıcılar kompromize edilen makineye erişirse, bellekten kimlik bilgilerini toplamak ve hatta süreçlerine beacon enjekte etmek için kullanılabilir. Genellikle kullanıcılar sisteme RDP aracılığıyla erişir, bu yüzden üçüncü taraf RDP oturumları üzerinde birkaç saldırıyı nasıl gerçekleştireceğinizi burada bulabilirsiniz:

pageRDP Sessions Abuse

LAPS

LAPS, etki alanına katılmış bilgisayarlardaki yerel Yönetici şifresini yönetmek için bir sistem sağlar, bu şifrenin rastgele, benzersiz ve sık sık değiştirildiğinden emin olur. Bu şifreler Active Directory'de depolanır ve erişim sadece yetkili kullanıcılara ACL'ler aracılığıyla kontrol edilir. Bu şifrelere erişim için yeterli izinlerle, diğer bilgisayarlara geçiş yapmak mümkün olur.

pageLAPS

Sertifika Hırsızlığı

Kompromize edilen makineden sertifikaları toplamak, çevrede ayrıcalıkları yükseltmek için bir yol olabilir:

pageAD CS Certificate Theft

Sertifika Şablonları Kötüye Kullanımı

Eğer savunmasız şablonlar yapılandırılmışsa, bunları kötüye kullanarak ayrıcalıkları yükseltebilirsiniz:

pageAD CS Domain Escalation

Yüksek ayrıcalıklı hesapla son aşama saldırı

Etki Alanı Kimlik Bilgilerini Dökmek

Bir kez Etki Alanı Yöneticisi veya daha iyi Kurumsal Yönetici ayrıcalıklarına sahip olduğunuzda, etki alanı veritabanını ntds.dit dökebilirsiniz.

DCSync saldırısı hakkında daha fazla bilgi burada bulunabilir.

NTDS.dit'yi nasıl çalacağınız hakkında daha fazla bilgi burada bulunabilir

Ayrıcalıkları Yükseltme Olarak Kalıcılık

Önceki tartışılan bazı teknikler kalıcılık için kullanılabilir. Örneğin:

  • Kullanıcıları Kerberoast saldırısına karşı savunmasız hale getirebilirsiniz

Set-DomainObject -Identity <kullanıcıadı> -Set @{serviceprincipalname="sahte/HİÇBİRŞEY"}r
  • Kullanıcıları ASREPRoast saldırısına karşı savunmasız hale getirebilirsiniz

Set-DomainObject -Identity <kullanıcıadı> -XOR @{UserAccountControl=4194304}
  • Bir kullanıcıya DCSync ayrıcalıklarını verin

Add-DomainObjectAcl -TargetIdentity "DC=ALT,DC=ETKİALANI,DC=YEREL" -PrincipalIdentity bfarmer -Rights DCSync

Gümüş Bilet

Gümüş Bilet saldırısı, belirli bir hizmet için meşru Bilet Verme Hizmeti (TGS) bileti oluşturmak için NTLM hash'ini (örneğin, PC hesabının hash'ini) kullanır. Bu yöntem, hizmet ayrıcalıklarına erişmek için kullanılır.

pageSilver Ticket

Altın Bilet

Altın Bilet saldırısı, bir saldırganın Active Directory (AD) ortamında krbtgt hesabının NTLM hash'ine erişmesini içerir. Bu hesap, AD ağı içinde kimlik doğrulama yapmak için esas olan Bilet Verme Biletleri (TGT'ler) tümünü imzalamak için kullanılır.

Saldırgan bu hash'i elde ettikten sonra istediği hesaplar için TGT'ler oluşturabilir (Gümüş bilet saldırısı).

pageGolden Ticket

Elmas Bilet

Bunlar, ortak altın bilet algılama mekanizmalarını atlayan altın biletler gibi dövülmüş altın biletlerdir.

pageDiamond Ticket

Sertifikalar Hesap Kalıcılığı

Bir hesabın sertifikalarına sahip olmak veya onları isteyebilmek, kullanıcının hesabında kalıcı olabilmek için çok iyi bir yoldur (şifresini değiştirse bile):

pageAD CS Account Persistence

Sertifikalar Alan Kalıcılığı

Sertifikaları kullanarak, etki alanı içinde yüksek ayrıcalıklarla kalıcı olmak da mümkündür:

pageAD CS Domain Persistence

AdminSDHolder Grubu

Active Directory'deki AdminSDHolder nesnesi, Domain Admins ve Enterprise Admins gibi özel grupların güvenliğini sağlayarak yetkisiz değişiklikleri önlemek için bu gruplara standart bir Erişim Kontrol Listesi (ACL) uygular. Ancak, bu özellik istismar edilebilir; bir saldırgan, AdminSDHolder'ın ACL'sini değiştirerek düzenli bir kullanıcıya tam erişim verirse, bu kullanıcı tüm özel gruplar üzerinde geniş kontrol elde eder. Bu koruma önlemi, korumak amacıyla tasarlanmış olsa da, yakından izlenmediği sürece izinsiz erişime izin verebilir.

AdminDSHolder Grubu hakkında daha fazla bilgi burada.

DSRM Kimlik Bilgileri

Her Domain Controller (DC) içinde bir yerel yönetici hesabı bulunmaktadır. Bu tür bir makinede yönetici hakları elde edilerek, yerel Yönetici hash'i mimikatz kullanılarak çıkarılabilir. Bunun ardından, bu şifrenin kullanımını etkinleştirmek için bir kayıt değişikliği gereklidir, bu da uzaktan Yönetici hesabına erişim sağlar.

pageDSRM Credentials

ACL Kalıcılığı

Gelecekte ayrıcalıkları yükseltmesine izin verecek belirli etki alanı nesneleri üzerinde bir kullanıcıya bazı özel izinler verebilirsiniz.

pageAbusing Active Directory ACLs/ACEs

Güvenlik Tanımlayıcıları

Güvenlik tanımlayıcıları, bir nesnenin üzerinde sahip olduğu izinleri saklamak için kullanılır. Bir nesnenin güvenlik tanımlayıcısında küçük bir değişiklik yaparak, bir ayrıcalıklı gruba üye olmadan o nesne üzerinde çok ilginç ayrıcalıklar elde edebilirsiniz.

pageSecurity Descriptors

İskelet Anahtar

LSASS'ı bellekte değiştirerek, tüm etki alanı hesaplarına erişim sağlayan evrensel bir şifre oluşturun.

pageSkeleton Key

Özel SSP

SSP'nin (Güvenlik Destek Sağlayıcısı) ne olduğunu buradan öğrenin. Kendi SSP'nizi oluşturarak, makineye erişim için kullanılan kimlik bilgilerini düz metin olarak yakalayabilirsiniz.

pageCustom SSP

DCShadow

AD'de yeni bir Domain Controller kaydeder ve belirli nesneler üzerinde (SIDHistory, SPN'ler...) modifikasyonlarla hiçbir log bırakmadan bu nesneleri itme işlemi yapar. DA ayrıcalıklarına ve kök etki alanı içinde olmanıza gerek vardır. Yanlış veri kullanırsanız, oldukça çirkin loglar ortaya çıkacaktır.

pageDCShadow

LAPS Kalıcılığı

Daha önce, LAPS şifrelerini okuma izniniz varsa ayrıcalıkları nasıl yükselteceğimizi tartıştık. Ancak, bu şifreler aynı zamanda kalıcılığı sürdürmek için de kullanılabilir. Kontrol edin:

pageLAPS

Orman Ayrıcalık Yükseltme - Etki Alanı Güveni

Microsoft, Ormanı güvenlik sınırı olarak görür. Bu, tek bir etki alanının tehlikeye atılması, tüm Ormanın tehlikeye atılmasına yol açabileceği anlamına gelir.

Temel Bilgiler

Bir etki alanı güveni, bir etki alanından başka bir etki alanındaki kaynaklara erişimi sağlayan bir güvenlik mekanizmasıdır. Temelde, iki etki alanının kimlik doğrulama sistemlerini birbirine bağlar ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına izin verir. Etki alanları bir güvenlik ilişkisi kurduğunda, Domain Controller'ları (DC'ler) arasında belirli anahtarları değiştirir ve saklarlar, bu da güvenin bütünlüğü için önemlidir.

Tipik bir senaryoda, bir kullanıcı güvenilen bir etki alanındaki bir hizmete erişmek istiyorsa, önce kendi etki alanının DC'sinden bir inter-realm TGT olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki etki alanının da anlaştığı bir ortak anahtarla şifrelenmiştir. Kullanıcı daha sonra bu TGT'yi güvenilen etki alanının DC'sine sunarak bir hizmet bileti (TGS) alır. Güvenilen etki alanının DC'si, güvenilen etki alanının DC'si tarafından inter-realm TGT'yi doğruladığında, kullanıcıya hizmete erişim sağlayan bir TGS verir.

Adımlar:

  1. Etki Alanı 1'deki bir istemci bilgisayar, NTLM hash'ini kullanarak kendi Domain Controller'ından (DC1) bir Bilet Verme Bileti (TGT) talep ederek işlemi başlatır.

  2. DC1, istemcinin başarılı bir şekilde kimlik doğrulandığı durumda yeni bir TGT verir.

  3. İstemci daha sonra, Etki Alanı 2'deki kaynaklara erişmek için gereken bir inter-realm TGT talep eder.

  4. Inter-realm TGT, iki yönlü etki alanı güveninin bir parçası olarak DC1 ve DC2 arasında paylaşılan bir güven anahtarı ile şifrelenir.

  5. İstemci, inter-realm TGT'yi Etki Alanı 2'nin Domain Controller'ına (DC2) götürür.

  6. DC2, inter-realm TGT'yi paylaşılan güven anahtarı ile doğrular ve geçerliyse, istemcinin erişmek istediği Etki Alanı 2'deki sunucu için bir Hizmet Bilet Servisi (TGS) verir.

  7. Son olarak, istemci bu TGS'yi sunucuya sunar, bu da sunucunun hesap hash'i ile şifrelenmiştir ve Etki Alanı 2'deki hizmete erişim sağlar.

Farklı güvenler

Bir güvenin 1 yönlü veya 2 yönlü olabileceğini fark etmek önemlidir. 2 yönlü seçeneklerde, her iki etki alanı da birbirine güvenir, ancak 1 yönlü güven ilişkisinde etki alanlarından biri güvenilen diğeri ise güvenen etki alanı olacaktır. Bu durumda, güvenilen etki alanından güvenen etki alanındaki kaynaklara erişebileceksiniz.

Eğer Domain A, Domain B'ye güvenirse, A güvenen etki alanı olurken B güvenilen etki alanı olur. Ayrıca, Domain A'da bu bir Dışa Doğru güven olacaktır; ve Domain B'de bu bir İçe Doğru güven olacaktır.

Farklı güven ilişkileri

  • Ebeveyn-Çocuk Güvenleri: Bu, aynı ormanda yaygın bir kurulumdur, burada bir alt etki alanının otomatik olarak ana etki alanıyla iki yönlü geçişli bir güven ilişkisi vardır. Temelde, bu, kimlik doğrulama isteklerinin ana ve çocuk arasında sorunsuz bir şekilde akmasını sağlar.

  • Çapraz Bağlantı Güvenleri: "kısayol güvenleri" olarak adlandırılan bu güvenler, yönlendirme süreçlerini hızlandırmak için çocuk etki alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama yönlendirmelerinin genellikle orman köküne kadar yükselmesi ve ardından hedef etki alana kadar inmesi gerekir. Çapraz bağlantılar oluşturarak, yol kısaltılır, bu da coğrafi olarak dağılmış ortamlarda özellikle faydalıdır.

  • Dış Güvenler: Bu, farklı, ilişkisiz etki alanları arasında kurulur ve doğası gereği geçişli değildir. Microsoft belgelerine göre, dış güvenler, mevcut ormanla bağlı olmayan bir etki alanındaki kaynaklara erişmek için kullanışlıdır. Dış güvenlerle SID filtreleme ile güvenlik artırılır.

  • Ağaç-Kök Güvenleri: Bu güvenler, orman kök etki alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Sık karşılaşılmayan ağaç-kök güvenleri, yeni etki alanı ağaçlarını bir ormana eklemek için önemlidir, onlara benzersiz bir etki alanı adı koruma ve iki yönlü geçişliliği sağlama imkanı verir. Daha fazla bilgiye Microsoft'un rehberinde bulunabilir.

  • Orman Güvenleri: Bu tür bir güven, iki orman kök etki alanı arasında iki yönlü geçişli bir güven ilişkisidir, ayrıca güvenliği artırmak için SID filtreleme uygular.

  • MIT Güvenleri: Bu güvenler, Windows dışı, RFC4120 uyumlu Kerberos etki alanları ile kurulur. MIT güvenleri biraz daha özelleşmiştir ve Windows ekosistemi dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara hizmet eder.

Diğer farklılıklar güvenen ilişkilerde

  • Bir güven ilişkisi aynı zamanda geçişli (A B'ye güvenir, B C'ye güvenir, o zaman A C'ye güvenir) veya geçişsiz olabilir.

  • Bir güven ilişkisi çift yönlü güven (her ikisi de birbirine güvenir) olarak veya tek yönlü güven (sadece biri diğerine güvenir) olarak kurulabilir.

Saldırı Yolu

  1. Güvenen ilişkileri sırala

  2. Herhangi bir güvenlik prensibinin (kullanıcı/grup/bilgisayar) diğer etki alanının kaynaklarına erişimi olup olmadığını kontrol et, belki ACE girişleri veya diğer etki alanının gruplarında bulunarak. Etki alanları arasındaki ilişkilere bak (muhtemelen bu güven ilişkisi bunun için oluşturuldu).

  3. Bu durumda kerberoast başka bir seçenek olabilir.

  4. Hesapları kompromize et, bu hesaplar aracılığıyla geçiş yapabilirsin.

Saldırganlar başka bir etki alanındaki kaynaklara üç temel mekanizma aracılığıyla erişebilir:

  • Yerel Grup Üyeliği: Prensipler, bir sunucudaki "Yöneticiler" grubu gibi makinelerdeki yerel gruplara eklenmiş olabilir, bu da onlara o makine üzerinde önemli bir kontrol sağlar.

  • Yabancı Etki Alanı Grup Üyeliği: Prensipler ayrıca yabancı etki alanındaki grup üyeleri de olabilir. Ancak, bu yöntemin etkinliği güvenin doğası ve grup kapsamına bağlıdır.

  • Erişim Kontrol Listeleri (ACL'ler): Prensipler, özellikle bir DACL içindeki ACE'ler olarak var olan ACL'lerde belirtilebilir, bu da onlara belirli kaynaklara erişim sağlar. ACL'lerin, DACL'lerin ve ACE'lerin mekaniği hakkında daha derinlemesine bilgi edinmek isteyenler için, "An ACE Up The Sleeve" adlı whitepaper çok değerli bir kaynaktır.

Çocuktan Ebeveyn orman ayrıcalığı yükseltme

Get-DomainTrust

SourceName      : sub.domain.local    --> current domain
TargetName      : domain.local        --> foreign domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST       --> WITHIN_FOREST: Both in the same forest
TrustDirection  : Bidirectional       --> Trust direction (2ways in this case)
WhenCreated     : 2/19/2021 1:28:00 PM
WhenChanged     : 2/19/2021 1:28:00 PM

2 güvenilir anahtar bulunmaktadır, biri Çocuk --> Ebeveyn için diğeri ise Ebeveyn --> Çocuk için. Mevcut alan tarafından kullanılanı şu şekilde bulabilirsiniz:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'

SID-History Injection

Çocuk/ana etki alanına güveni istismar ederek Enterprise yönetici olarak yükselin ve SID-History enjeksiyonunu kullanın:

pageSID-History Injection

Yazılabilir Yapılandırma NC'sini Sömürme

Yapılandırma Adlandırma Bağlamının (NC) nasıl sömürülebileceğini anlamak önemlidir. Yapılandırma NC, Active Directory (AD) ortamlarındaki orman genelinde yapılandırma verileri için merkezi bir depo olarak hizmet eder. Bu veriler, ormandaki her Etki Alanı Denetleyicisine (DC) replike edilir ve yazılabilir DC'ler, Yapılandırma NC'nin yazılabilir bir kopyasını korur. Bunu sömürmek için, tercihen bir çocuk DC üzerinde BIR SISTEM ayrıcalıklarına sahip olmak gerekir.

GPO'yu kök DC sitesine bağlama

Yapılandırma NC'nin Siteler konteyneri, AD ormanı içindeki tüm etki alanına katılmış bilgisayarların siteleri hakkında bilgi içerir. Herhangi bir DC üzerinde SISTEM ayrıcalıklarıyla çalışarak, saldırganlar GPO'ları kök DC sitelerine bağlayabilir. Bu eylem, bu sitelere uygulanan politikaları manipüle ederek kök etki alanını potansiyel olarak tehlikeye atabilir.

Detaylı bilgi için SID Filtreleme Atlatma üzerine yapılan araştırmaları inceleyebilirsiniz.

Ormandaki herhangi bir gMSA'yı tehlikeye atma

Bir saldırı vektörü, etki alanı içindeki ayrıcalıklı gMSA'ları hedef almaktadır. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Kök anahtarı, Yapılandırma NC içinde saklanır. Herhangi bir DC üzerinde SISTEM ayrıcalıklarıyla, KDS Kök anahtarına erişmek ve ormandaki herhangi bir gMSA için şifreleri hesaplamak mümkündür.

Detaylı analiz, Alt Etki Alanından Üst Etki Alanına Altın gMSA Güven Saldırıları üzerinde bulunabilir.

Şema değişikliği saldırısı

Bu yöntem sabır gerektirir, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını bekler. SISTEM ayrıcalıklarıyla, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verme yeteneğine sahip olabilir. Bu, yetkisiz erişime ve yeni oluşturulan AD nesneleri üzerinde kontrol sağlamaya yol açabilir.

Daha fazla okuma için Şema Değişikliği Güven Saldırıları mevcuttur.

DA'dan EA'ya ADCS ESC5 ile

ADCS ESC5 zafiyeti, Genel Anahtar Altyapısı (PKI) nesneleri üzerinde kontrol sağlamayı hedefler ve ormandaki herhangi bir kullanıcı olarak kimlik doğrulamasını mümkün kılan bir sertifika şablonu oluşturur. PKI nesneleri, Yapılandırma NC içinde bulunduğundan, yazılabilir bir çocuk DC'nin tehlikeye atılması ESC5 saldırılarının gerçekleştirilmesine olanak tanır.

Bu konuda daha fazla detay, DA'dan EA'ya ESC5 ile okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir, Çocuk Etki Alanı Yöneticilerinden Üst Etki Alan Yöneticilerine Yükselme konusunda tartışıldığı gibi.

Harici Orman Etki Alanı - Tek Yönlü (Gelen) veya çift yönlü

Get-DomainTrust
SourceName      : a.domain.local   --> Current domain
TargetName      : domain.external  --> Destination domain
TrustType       : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection  : Inbound          --> Inboud trust
WhenCreated     : 2/19/2021 10:50:56 PM
WhenChanged     : 2/19/2021 10:50:56 PM

Bu senaryoda alanınızın, dış bir alan tarafından belirsiz izinlerle güvenildiği varsayılmaktadır. Alanınızın hangi prensiplerinin dış alan üzerinde hangi erişime sahip olduğunu bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecektir:

pageExternal Forest Domain - OneWay (Inbound) or bidirectional

Dış Orman Alanı - Tek Yönlü (Dışa Doğru)

Get-DomainTrust -Domain current.local

SourceName      : current.local   --> Current domain
TargetName      : external.local  --> Destination domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound        --> Outbound trust
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

Bu senaryoda alanınız, farklı alanlardan bir özneye bazı yetkileri güveniyor.

Ancak, güvenen alan tarafından güvenilen alanın öngörülebilir bir ad kullanarak ve güvenilen şifreyi kullanarak bir kullanıcı oluşturduğu durumda, güvenilen alana erişmek mümkün olabilir. Bu, güvenen alanın içindeki bir kullanıcıya erişerek güvenilen alana girmek ve daha fazla yetki yükseltmeye çalışmak anlamına gelir:

pageExternal Forest Domain - One-Way (Outbound)

Güvenilen alanı tehlikeye atmanın başka bir yolu, alan güveni yönünün karşı yönde oluşturulan bir SQL güvenilen bağlantısını bulmaktır (bu çok yaygın değildir).

Güvenilen alanı tehlikeye atmanın başka bir yolu, güvenilen alanın bir kullanıcısının erişebileceği bir makinede beklemek ve ardından RDP aracılığıyla oturum açmak olabilir. Daha sonra, saldırgan RDP oturumu sürecine kod enjekte edebilir ve buradan kurbanın orijin alanına erişebilir. Ayrıca, kurbanın sabit diski bağladığı durumda, saldırgan RDP oturumu sürecinden sabit diskin başlangıç klasörüne arka kapılar saklayabilir. Bu teknik RDPInception olarak adlandırılır.

pageRDP Sessions Abuse

Alan güveni kötüye kullanımı önleme

SID Filtreleme:

  • Orman güvenleri arasında SID geçmiş özniteliğini kullanarak yapılan saldırı riski, tüm orman güvenlerinde varsayılan olarak etkinleştirilen SID Filtreleme ile azaltılır. Bu, Microsoft'un duruşuna göre, ormanı, alanı değil, güvenlik sınırı olarak kabul ettiği varsayımına dayanmaktadır.

  • Ancak, bir dezavantajı vardır: SID filtreleme, uygulamaları ve kullanıcı erişimini bozabilir ve bazen devre dışı bırakılabilir.

Seçmeli Kimlik Doğrulama:

  • Ormanlar arası güvenler için Seçmeli Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasının yapılmamasını sağlar. Bunun yerine, güvenen alan veya ormandaki alanlara ve sunuculara erişim için kullanıcıların açık izinlere sahip olmaları gerekmektedir.

  • Bu önlemlerin, yazılabilir Yapılandırma Adlandırma Bağlamı (NC) üzerindeki kötüye kullanımı veya güven hesabına yönelik saldırıları engellemediği önemlidir.

ired.team'de alan güvenleri hakkında daha fazla bilgi.

AD -> Azure & Azure -> AD

Bazı Genel Savunmalar

Kimlik bilgilerini korumanın yolları hakkında daha fazla bilgi edinin.\

Kimlik Bilgilerini Koruma İçin Savunma Önlemleri

  • Alan Yöneticileri Kısıtlamaları: Alan Yöneticilerinin yalnızca Alan Denetleyicilere giriş yapmaları ve diğer ana bilgisayarlarda kullanılmamaları önerilir.

  • Hizmet Hesabı Yetkileri: Hizmetlerin Alan Yönetici (DA) ayrıcalıklarıyla çalıştırılmaması, güvenliği korumak için önemlidir.

  • Geçici Ayrıcalık Sınırlaması: DA ayrıcalıklarını gerektiren görevler için süreleri sınırlamak önemlidir. Bu, şu şekilde başarılabilir: Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)

Aldatma Tekniklerinin Uygulanması

  • Aldatma uygulamak, tuzağın kurulması anlamına gelir, örneğin süresi dolmayan veya Güvenilir Delege olarak işaretlenmiş şifreler gibi özelliklere sahip sahte kullanıcılar veya bilgisayarlar. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya yüksek ayrıcalıklı gruplara eklemeyi içerir.

  • Pratik bir örnek, şu araçların kullanılmasını içerir: Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose

  • Aldatma tekniklerinin uygulanması hakkında daha fazla bilgiye GitHub'da Deploy-Deception adresinden ulaşılabilir.

Aldatmanın Tanımlanması

  • Kullanıcı Nesneleri İçin: Şüpheli göstergeler, tipik olmayan ObjectSID, nadir oturum açma, oluşturma tarihleri ve düşük hatalı şifre sayıları içerebilir.

  • Genel Göstergeler: Potansiyel sahte nesnelerin özniteliklerini gerçek nesnelerin öznitelikleriyle karşılaştırmak, tutarsızlıkları ortaya çıkarabilir. HoneypotBuster gibi araçlar, bu tür aldatmaları tanımlamada yardımcı olabilir.

Algılama Sistemlerini Atlatma

  • Microsoft ATA Algılama Atlatma:

  • Kullanıcı Numaralandırma: ATA algılama tetiklememek için Alan Denetleyicilerinde oturum numaralandırmasından kaçınılmalıdır.

  • Bilet Taklit: Bilet oluşturmak için aes anahtarlarını kullanmak, NTLM'ye düşürülmemek suretiyle algılamadan kaçınmaya yardımcı olur.

  • DCSync Saldırıları: ATA algılama tetiklememek için doğrudan bir Alan Denetleyicisinden değil, bir Alan Denetleyicisinden doğrudan yürütme yapılması tavsiye edilir.

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated