BloodHound ile Saldırı Yolu Analizi
ATT&CK T1087.002 metodoloji
ATT&CK T1087.002 metodoloji
BloodHound, AD nesneleri arasındaki ilişkileri (üyelik, ACL, oturum, delegasyon) bir grafik olarak modelleyip saldırgan bakışıyla en kısa yolu gösterir. “Elimdeki bu kullanıcıdan Domain Admin’e nasıl giderim?” sorusunu görselleştirir. Ham LDAP dump’ı okumak yerine kenarları somut saldırılara çevirmek asıl değeridir.
Mimari (kısa)
Section titled “Mimari (kısa)”- Collector — SharpHound (Windows) veya bloodhound-python / NetExec LDAP modülü; JSON/ZIP üretir.
- Graph DB — BloodHound CE (PostgreSQL + UI) veya klasik Neo4j UI.
- Analiz — Cypher / hazır sorgular; Owned → high-value yolları.
Veri toplama
Section titled “Veri toplama”Collection metodları
Section titled “Collection metodları”| Flag | Ne toplar | Not |
|---|---|---|
All | DC + session + local group + ACL… | En dolu; gürültülü |
DCOnly | Yalnızca LDAP (DC) | Sessiz; session yok |
Session / LoggedOn | Kim nerede oturum açmış | Foothold + loop |
Group / ACL / Trusts | Hedefli | Yeniden tarama |
ObjectProps | Delegation, SPN, LAPS props | Privesc için kritik |
Container | OU/GPO bağlantıları | GPO abuse yolları |
SharpHound.exe -c All --zipfilename lootSharpHound.exe -c DCOnly --zipfilename stealthSharpHound.exe -c Session,LoggedOn --Loop --LoopDuration 01:00:00 --LoopInterval 00:05:00SharpHound.exe -d domain.local -c All --ldapusername user --ldappassword 'Pass123'SharpHound.exe -c All --ExcludeDCs # DC'lere session sorgusu atma (opsec)SharpHound.exe -c All --throttle 1000 --jitter 20bloodhound-python -d domain.local -u user -p 'Pass123' -ns 10.10.10.5 -c All --zipbloodhound-python -d domain.local -u user -p 'Pass123' -ns 10.10.10.5 -c DCOnly,ObjectProps,ACL --zipbloodhound-python -d domain.local -u user -hashes :NTHASH -ns 10.10.10.5 -c All --zipbloodhound-python -d domain.local -u user -p 'Pass123' -dc dc01.domain.local -c All --dns-tcp --zipnxc ldap 10.10.10.5 -u user -p 'Pass123' --bloodhound -c All --dns-server 10.10.10.5nxc ldap 10.10.10.5 -u user -H :NTHASH --bloodhound -c DCOnly --dns-server 10.10.10.5Analiz metodolojisi
Section titled “Analiz metodolojisi”-
İçe aktar — ZIP’i BloodHound CE’ye yükle; ingest bitene kadar bekle.
-
High-value işaretle — Domain Admins, Enterprise Admins, DC’ler, Tier-0 sunucular, CA, backup sunucuları varsayılan olarak kritik.
-
Owned işaretle — ele geçirdiğin her kullanıcı, grup, bilgisayar. Pathfinding Owned’dan başlar.
-
Hazır sorguları çalıştır (CE / klasik): Shortest Paths to Domain Admins
-
Shortest Paths from Owned Principals
-
Find Principals with DCSync Rights
-
Kerberoastable Users / AS-REP Roastable Users
-
Computers with Unconstrained Delegation
-
Shortest Paths to Unconstrained Delegation Systems
-
Users with Foreign Domain Group Membership
-
Kenarı tekniğe çevir — grafikteki her edge bir sayfaya map edilir (aşağıdaki tablo).
-
Yolu doğrula — BH bazen stale session / yanlış ACL gösterebilir; PowerView veya bloodyAD get objectacl ile teyit et, sonra exploit.
Kenar → saldırı eşlemesi
Section titled “Kenar → saldırı eşlemesi”| BloodHound edge | Anlam | Teknik |
|---|---|---|
MemberOf | Grup üyeliği | Hakların kalıtımı |
AdminTo | Yerel admin | PtH / exec / LSASS |
HasSession | Oturum açık | LSASS dump → credential |
CanRDP / CanPSRemote | RDP / WinRM | Lateral |
ForceChangePassword | Parola sıfırla | ACL Abuse |
AddMember | Gruba ekle | DA/IT grupları |
GenericAll | Tam kontrol | parola, SPN, RBCD, shadow |
GenericWrite | Özellik yaz | targeted Kerberoast, RBCD, shadow |
WriteDacl | ACL yaz | kendine GenericAll / DCSync |
WriteOwner | Sahip ol | ardından WriteDacl |
Owns | Owner | WriteDacl zinciri |
AllExtendedRights | Geniş haklar | ForceChangePassword vb. |
DCSync / GetChanges* | Replikasyon | DCSync |
AllowedToDelegate | Constrained del. | Delegation |
AllowedToAct | RBCD | RBCD |
AddKeyCredentialLink | Shadow creds | Shadow Credentials |
ReadLAPSPassword | LAPS oku | GPP & LAPS |
ReadGMSAPassword | gMSA blob | gMSA decrypt |
AddAllowedToAct | RBCD yaz | RBCD kur |
GPLink + Write on GPO | GPO yaz | GPO Abuse |
SyncLAPSPassword | LAPS sync hakkı | LAPS okuma |
Örnek Cypher (Neo4j / klasik BH)
Section titled “Örnek Cypher (Neo4j / klasik BH)”// Owned'dan Domain Admins'e en kısa yollarMATCH p=shortestPath((n)-[*1..]->(m:Group))WHERE n.owned=true AND m.objectid ENDS WITH '-512'RETURN p
// GenericAll / WriteDacl tutan low-priv → yüksek değerMATCH (n)-[r:GenericAll|WriteDacl|GenericWrite|Owns]->(m)WHERE NOT n.name CONTAINS 'ADMIN'RETURN n.name, type(r), m.name LIMIT 50
// Unconstrained delegation bilgisayarlarıMATCH (c:Computer {unconstraineddelegation:true}) RETURN c.nameKomut üreteci
Section titled “Komut üreteci”BloodHound · collector
embedded toolbloodhound-python -d domain.local -u lowpriv -p Pass123 -c All -ns 10.10.10.5BloodHound · collector
Section titled “BloodHound · collector”Saldırı zinciri örnekleri
Section titled “Saldırı zinciri örnekleri”Owned: bob → MemberOf HelpDesk → ForceChangePassword on jim → jim HasSession on FILE01 → AdminTo on FILE01 (jim local admin) → dump LSASS → DA hash → DCSync
Owned: svc_web (Kerberoast kırıldı) → AllowedToDelegate → cifs/SQL01 → S4U impersonate Administrator → SQL01 SYSTEM → pivotYaygın tuzaklar
Section titled “Yaygın tuzaklar”- Owned işaretlemeyi unutmak — pathfinding boş kalır.
- Eski SharpHound + yeni CE şema uyumsuzluğu → collector sürümünü eşleştir.
- Yalnızca DCOnly ile DA yolu “yok” sanmak; session kenarı olmadan yol görünmeyebilir — foothold sonrası loop şart.
- adminCount=1 kullanıcılar AdminSDHolder korumalı; ACL kenarı “yazılabilir” görünse de SDProp geri alabilir — yine de AdminSDHolder persistence için bak.
- DNS çözülemezse Python collector eksik bilgisayar bırakır ( -ns , –dns-tcp ).
Sonraki adımlar
Section titled “Sonraki adımlar”BloodHound bir keşif/planlama aracıdır; her kenarı ilgili teknik sayfasıyla eşleştirip uygula: ACL Abuse, RBCD, Shadow Credentials, Unconstrained Delegation, GPO Abuse.