Konteks Etis & Legal

BloodHound adalah alat open-source untuk analisis keamanan Active Directory. Pengumpulan data (via SharpHound atau kolektor lain) memerlukan izin eksplisit pada direktori yang diuji. Penggunaan tanpa otorisasi terhadap sistem yang bukan milik sendiri melanggar kebijakan internal perusahaan dan kemungkinan hukum pidana. Dokumen ini murni untuk pendidikan defender dan red team yang sah.


๐Ÿงฌ Apa Itu BloodHound Secara Teknis?

BloodHound bukanlah alat serangan. Ia adalah platform analitik yang memetakan hubungan keamanan dalam Active Directory (AD) dan Azure/Entra ID untuk menemukan jalur serangan tersembunyi. Jika Cobalt Strike adalah pedang, BloodHound adalah peta medan perang. Ia mengubah data mentah AD (pengguna, grup, komputer, ACL, sesi, dll.) menjadi graf terarah (directed graph) dan memungkinkan operator menanyakan jalur dari titik awal ke target bernilai tinggi โ€” misalnya: โ€œBagaimana User A bisa menjadi Domain Admin hanya dengan menggunakan hak yang sudah dimilikinya?โ€

Komponen Arsitektur

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                       Data Collector                           โ”‚
โ”‚  SharpHound (C#), RustHound, SOAPHound                         โ”‚
โ”‚  Berjalan pada host yang sudah dikompromikan,                   โ”‚
โ”‚  mengumpulkan data via LDAP, SMB, dan API lainnya.             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚ (ZIP file JSON)
                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     Neo4j Database                              โ”‚
โ”‚  Graph database. Menyimpan node (User, Computer, Group,        โ”‚
โ”‚  Domain, OU, GPO) dan edge (MemberOf, HasSession, AdminTo,     โ”‚
โ”‚  GenericAll, WriteDACL, etc.).                                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚ (Cypher queries)
                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   BloodHound GUI / CLI                          โ”‚
โ”‚  Antarmuka untuk menjalankan query pre-built (Shortest Path    โ”‚
โ”‚  to Domain Admins, Find Principals with DCSync Rights, etc.)   โ”‚
โ”‚  atau custom Cypher queries.                                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Kolektor mengumpulkan data melalui:

  • LDAP (port 389/636): Membaca objek, atribut, keanggotaan grup, ACL (DACL/SACL), delegasi, SPN, dan lain-lain.
  • SMB/CIFS (port 445): Menghitung sesi yang sedang aktif pada komputer (NetSessionEnum), sehingga diketahui user mana yang sedang login di mana.
  • RPC/NetAPI: Mendapatkan anggota grup lokal (Administrators, Remote Desktop Users) pada setiap komputer.
  • Microsoft Graph API (untuk AzureHound): Mengumpulkan informasi dari Azure AD/Entra ID seperti service principals, application permissions, role assignments.

Data yang dihasilkan adalah grafik lengkap tentang hubungan keamanan.


๐Ÿ“Š Model Graf BloodHound: Node, Edge, dan Matematika Serangan

BloodHound memodelkan AD sebagai graf properti. Setiap entitas (user, computer, group, domain, OU, GPO) adalah node dengan label, dan setiap hubungan (relasi) adalah edge dengan arah dan tipe.

Node Utama dan Properti Penting

Label NodeProperti UtamaMakna
Username, domain, admincount, hasspn, dontreqpreauth, pwdlastsetPengguna domain.
Computername, domain, operatingsystem, haslaps, unconstraineddelegationKomputer tergabung domain.
Groupname, domain, admincountGrup keamanan, bisa nested.
Domainname, domain, functionallevelDomain AD.
OUname, domainOrganizational Unit.
GPOname, domainGroup Policy Object.
Azure (tambahan)appid, serviceprincipaltypeEntitas Azure AD.

Edge (Relasi) Kritis

Setiap edge memiliki tipe yang menentukan apa yang bisa dilakukan oleh node sumber terhadap node target.

EdgeTipeArtiRisiko
MemberOfGroup โ†’ User/Computer/GroupKeanggotaan grup. Basis semua relasi privilege.Rendah
AdminToUser/Group โ†’ ComputerAnggota grup Administrator lokal pada komputer.Sangat tinggi โ€” kontrol penuh atas komputer.
HasSessionUser โ†’ ComputerUser sedang memiliki sesi (logon) pada komputer.Tinggi โ€” pencurian token/credential.
CanRDPUser/Group โ†’ ComputerHak Remote Desktop.Tinggi
CanPSRemoteUser/Group โ†’ ComputerHak PowerShell Remoting (WinRM).Tinggi
ExecuteDCOMUser/Group โ†’ ComputerHak eksekusi DCOM pada komputer.Tinggi
SQLAdminUser/Group โ†’ ComputerAdmin SQL pada host.Tinggi
GenericAllUser/Group โ†’ ObjectKontrol penuh atas objek (sering via ACL).Sangat tinggi โ€” bisa reset password, tambahkan diri ke grup.
GenericWriteUser/Group โ†’ ObjectTulis ke semua properti objek (misal: logon script, SPN).Tinggi โ€” bisa menyebabkan kerberos delegation attack.
WriteDACLUser/Group โ†’ ObjectDapat memodifikasi ACL objek.Sangat tinggi โ€” bisa memberikan hak penuh ke diri sendiri.
WriteOwnerUser/Group โ†’ ObjectDapat mengubah pemilik objek.Tinggi โ€” lalu bisa WriteDACL.
AddMemberUser/Group โ†’ GroupDapat menambah anggota ke grup.Sangat tinggi
AddSelfUser โ†’ GroupDapat menambahkan diri sendiri ke grup.Sangat tinggi
ReadLAPSPasswordUser/Group โ†’ ComputerDapat membaca password Administrator lokal (LAPS).Sangat tinggi
DCSyncUser/Group โ†’ DomainHak untuk melakukan replikasi domain (mendapatkan hash semua pengguna).Kritis โ€” Domain Admin penuh.
GPOControlUser/Group โ†’ GPODapat mengedit GPO. Lalu GPO diterapkan ke komputer/user via GpLink.Kritis โ€” eksekusi kode pada banyak host.
ForceChangePasswordUser/Group โ†’ UserDapat mereset password pengguna.Tinggi
AllowedToDelegateComputer โ†’ Domain/ComputerDelegasi Kerberos tanpa batasan.Tinggi โ€” dapat impersonasi user apa pun.
ContainsOU/Domain โ†’ ObjectObjek berada di OU ini.Rendah
GpLinkGPO โ†’ OUGPO diterapkan ke OU ini.Menengah

Dengan edge-edge ini, BloodHound membangun graf besar di mana operator dapat mencari attack path โ€” urutan edge yang menghubungkan node milik penyerang (misal, user yang sudah dikompromikan) ke node target (Domain Admins, Domain Controllers).


โš”๏ธ Primitif Eksploitasi: Dari Edge ke Kompromi

BloodHound sendiri tidak mengeksploitasi; ia hanya menunjukkan jalurnya. Tapi memahami jalur membutuhkan pemahaman tentang eksploitasi yang mendasari setiap edge. Berikut adalah beberapa primitif serangan yang memanfaatkan edge tertentu.

GenericAll pada User โ†’ ForceChangePassword + Kerberoasting

Jika User A memiliki GenericAll pada User B:

  1. User A dapat mereset password User B (karena GenericAll mencakup User-Force-Change-Password).
  2. Atau, jika User B memiliki SPN (Service Principal Name) โ€” ditandai dengan properti hasspn: true โ€” User A dapat menulis SPN palsu pada User B (karena GenericAll termasuk WriteSPN), lalu melakukan Kerberoasting: meminta TGS (Ticket Granting Service) untuk User B dari KDC, lalu memecahkan hash offline untuk mendapatkan password plaintext User B.

GenericWrite pada User โ†’ Targeted Kerberoasting atau Shadow Credentials

Dengan GenericWrite pada user:

  • Penyerang dapat menulis servicePrincipalName pada user target (jika belum ada), lalu melakukan Kerberoasting.
  • Atau, pada lingkungan yang mendukung, menulis msDS-KeyCredentialLink untuk menambahkan kunci publik (Shadow Credentials) dan mengautentikasi sebagai user target tanpa mengetahui password.

WriteDACL pada Domain Root โ†’ DCSync

Jika penyerang memiliki WriteDACL pada objek domain (DC=domain,DC=com):

  1. Tambahkan diri sendiri (atau user yang dikendalikan) dengan hak replikasi: DS-Replication-Get-Changes dan DS-Replication-Get-Changes-All.
  2. Jalankan DCSync (misal via Mimikatz lsadump::dcsync) untuk mendapatkan hash NTLM semua pengguna di domain, termasuk KRBTGT.

AddSelf ke Grup โ†’ Privilege Escalation Langsung

Jika sebuah grup Helpdesk memiliki AddSelf ke Domain Admins (jarang, tapi mungkin melalui ACL aneh), maka setiap anggota Helpdesk bisa menambahkan dirinya ke Domain Admins tanpa bantuan.

HasSession โ†’ Credential Dumping & Token Theft

Jika User A (user biasa) memiliki sesi pada Computer X, dan penyerang sudah mendapatkan akses admin lokal ke Computer X (misal lewat AdminTo dari tempat lain), maka penyerang bisa:

  • Dump kredensial User A dari LSASS (logonpasswords di Cobalt Strike).
  • Curi token User A jika masih aktif.

Jika User A adalah admin di komputer lain atau anggota grup tinggi, ini menjadi batu loncatan.

AllowedToDelegate (Unconstrained Delegation) โ†’ Printer Bug & DCSync

Komputer dengan delegasi tanpa batasan (Unconstrained Delegation) dapat menangkap TGT (Ticket Granting Ticket) dari setiap pengguna yang mengautentikasi ke sana.

  1. Penyerang mengkompromikan komputer tersebut (misal COMP-A dengan unconstrained delegation).
  2. Memaksa Domain Controller untuk mengautentikasi ke COMP-A menggunakan Print Spooler bug (MS-RPRN RpcRemoteFindFirstPrinterChangeNotification), yang menyebabkan DC mengirimkan TGT-nya ke COMP-A.
  3. TGT DC ditangkap di LSASS COMP-A, diekstrak, lalu digunakan untuk DCSync.

Ini adalah jalur klasik dari admin lokal pada server biasa ke Domain Admin dalam satu langkah.

LAPS: ReadLAPSPassword โ†’ Local Admin Everywhere

Jika penyerang memiliki ReadLAPSPassword pada suatu komputer, ia bisa membaca password administrator lokal yang unik. Jika hak itu berlaku untuk banyak komputer (misalnya grup Helpdesk diberi akses baca LAPS), satu pengguna Helpdesk yang dikompromikan bisa menjadi admin lokal pada semua workstation/server, lalu melanjutkan dengan HasSession atau token theft.


๐Ÿ” Cypher Queries: Bahasa Interogasi Graf

BloodHound menggunakan Cypher, bahasa query untuk Neo4j. Beberapa query kritis yang digunakan oleh red teamer dan defender:

1. Shortest Path to Domain Admins

MATCH (n:User {name:'JDOE@DOMAIN.COM'}),
      (m:Group {name:'DOMAIN ADMINS@DOMAIN.COM'}),
      p = shortestPath((n)-[r:MemberOf|AdminTo|HasSession|GenericAll|GenericWrite|WriteDACL|WriteOwner|AddMember|AddSelf|ReadLAPSPassword|DCSync|ForceChangePassword|AllowedToDelegate*1..]->(m))
RETURN p

Ini adalah query paling ikonik: menunjukkan jalur terpendek dari user yang dikuasai ke Domain Admins.

2. Find All Users with Path to High Value Targets

MATCH (u:User), (t:Group {name:'DOMAIN ADMINS@DOMAIN.COM'})
WHERE u<>t
MATCH p = shortestPath((u)-[r:MemberOf|AdminTo|...*1..]->(t))
RETURN u.name, length(p) AS hops, [n in nodes(p) | n.name] AS path
ORDER BY hops ASC

Menemukan semua pengguna di domain yang memiliki jalur ke Domain Admins, bukan hanya satu.

3. Find All Computers Where User Has Session

MATCH (u:User {name:'JDOE@DOMAIN.COM'})-[r:HasSession]->(c:Computer)
RETURN c.name, c.operatingsystem

Menentukan di mana user logged on, untuk merencanakan serangan token theft atau credential dumping.

4. Find All Kerberoastable Users

MATCH (u:User {hasspn:true})
WHERE NOT u.name STARTS WITH 'krbtgt'
RETURN u.name, u.serviceprincipalnames

Menampilkan pengguna dengan SPN yang dapat di-kerberoast.

5. Find All Computers with Unconstrained Delegation

MATCH (c:Computer {unconstraineddelegation:true})
RETURN c.name, c.operatingsystem

6. Find Users with DCSync Rights

MATCH (n:User)-[r:DCSync]->(d:Domain)
RETURN n.name, d.name

7. Find All Nested Group Membership

MATCH (n:User)-[r:MemberOf*1..]->(g:Group)
WHERE g.objectid ENDS WITH '-512' // Domain Admins
RETURN n.name, g.name, length(r) AS depth

Identifikasi pengguna yang menjadi Domain Admin melalui keanggotaan bertingkat, sering tersembunyi.


๐Ÿ›ก๏ธ Deteksi BloodHound / SharpHound Activity

BloodHound sendiri tidak meninggalkan artefak di lingkungan target, tetapi proses pengumpulan data oleh SharpHound meninggalkan jejak.

1. Jejak LDAP

SharpHound melakukan query LDAP dalam jumlah besar. Satu sesi pengumpulan bisa mencakup ribuan permintaan LDAP. Ini tidak normal dibandingkan dengan trafik LDAP biasa dari workstation.

Deteksi:

  • Monitor LDAP query volume dari host non-DC. Rule: โ€œJika sebuah host yang bukan Domain Controller melakukan > 500 LDAP query dalam 5 menit, alert.โ€
  • Event Log (Directory Service): Aktifkan diagnostic logging untuk LDAP (HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics) dan pantau event ID 1644 (LDAP search with high CPU time). SharpHound sering muncul di sini.
  • Sysmon Event ID 3 (Network Connect): Koneksi dari host biasa ke DC pada port 389/636. Normal, tetapi jika dikombinasikan dengan volume tinggi, anomali.
  • Microsoft 365 Defender memiliki deteksi bawaan untuk โ€œReconnaissance using SharpHoundโ€ (Alert: โ€œBloodHound enumerationโ€).

2. Jejak SMB (NetSessionEnum)

SharpHound memanggil NetSessionEnum untuk menghitung sesi. Ini menghasilkan koneksi SMB ke setiap komputer di domain (port 445) untuk memeriksa sesi.

Deteksi:

  • Sysmon Event ID 3: Lonjakan koneksi ke port 445 ke banyak host dalam waktu singkat dari satu source IP.
  • Windows Event ID 5140/5145: Share access ke \\*\IPC$ dari host yang tidak biasa.

3. Jejak SAMR (Security Account Manager Remote)

SharpHound menggunakan SAMR untuk mendapatkan daftar anggota grup lokal pada komputer remote.

Deteksi:

  • Windows Event ID 4661: Handle ke SAM objek oleh user biasa. User non-admin seharusnya tidak banyak mengakses SAM secara remote.
  • Sysmon: Akses ke lsass.exe atau samrpc dari proses SharpHound.

4. Artefak File

SharpHound menulis file ZIP hasil ke disk. Nama file default biasanya YYYYMMDDHHMMSS_BloodHound.zip atau dapat ditentukan. Defender dapat mencari file ZIP baru di direktori %TEMP% atau C:\Users\Public.

5. Tanda Kolektor Lain

  • RustHound: Meninggalkan artefak yang mirip tetapi ditulis dalam Rust; mungkin lebih sulit dideteksi karena tidak ada CLR loading.
  • AzureHound: Menggunakan Microsoft Graph API. Deteksi melalui log audit Azure (akses aplikasi, query Graph yang tidak biasa).

6. Analisis Perilaku

EDR modern dapat mendeteksi aktivitas yang menyerupai pengumpulan data AD dengan mengenali pola: proses yang mengakses LDAP, SMB, SAMR, dan RPC dalam satu sesi.


โ†”๏ธ Dual-Use: Defender vs Attacker

BloodHound adalah alat dual-use sempurna:

Defensive (Blue Team):

  • Attack Path Management (APM): Menemukan dan menghilangkan jalur serangan sebelum penyerang menemukannya. Misal: menghilangkan GenericAll yang tidak perlu, membersihkan nested group yang berbahaya.
  • Audit Keamanan AD: Mengevaluasi dampak dari konfigurasi ACL yang salah, delegasi yang longgar, hak LAPS yang terlalu luas.
  • Tiering Model Validation: Memastikan bahwa Tier 0 (Domain Admins, DCs) benar-benar terisolasi dari Tier 1 (server) dan Tier 2 (workstation). BloodHound bisa memvalidasi apakah ada user Tier 2 yang bisa mencapai Tier 0.
  • Simulasi Kompromi: Blue team dapat menjalankan query yang sama dengan penyerang untuk mengukur exposure mereka.

Offensive (Red Team / APT):

  • Pathfinding: Setelah kompromi awal (user biasa), gunakan BloodHound untuk merencanakan jalur ke Domain Admin.
  • Target Selection: Menemukan user/computer yang memiliki hak tinggi, grup dengan anggota sedikit tapi krusial.
  • Lateral Movement Planning: Menentukan komputer mana yang memiliki sesi admin untuk pencurian token.

๐Ÿ”— Koneksi dalam Vault

  • metasploit โ€” Setelah BloodHound menemukan jalur AdminTo, Metasploit dapat digunakan untuk exploit lateral movement (misal psexec).
  • cobalt-strike โ€” Beacon sering menjalankan SharpHound melalui execute-assembly di memori; lalu data ZIP diunduh untuk analisis offline.
  • empire โ€” Dapat menjalankan modul pengumpul data AD serupa, meskipun tidak sekomprehensif SharpHound.
  • shodan โ€” Tidak langsung, tetapi organisasi yang memiliki DC terekspos ke internet akan terlihat di Shodan, memungkinkan serangan langsung tanpa foothold.
  • xkeyscore โ€” Secara teoritis, jika traffic LDAP/SMB organisasi diintersep di backbone, NSA bisa membangun graf BloodHound-nya sendiri.

๐Ÿงฎ Contoh Attack Path Kompleks

User: "Intern" (Domain User)
  โ””โ”€[MemberOf]โ”€โ–บ Group: "IT Helpdesk"
                   โ””โ”€[ReadLAPSPassword]โ”€โ–บ Computer: "FILE01"
                                             โ””โ”€[HasSession]โ”€โ”€โ–บ User: "svc_backup"
                                                                 โ””โ”€[GenericWrite]โ”€โ–บ User: "SQL_SVC"
                                                                                      โ””โ”€[AdminTo]โ”€โ”€โ–บ Computer: "SQL01"
                                                                                                        โ””โ”€[HasSession]โ”€โ”€โ–บ User: "DomainAdmin01"

Panah ke bawah adalah arah edge. Intern โ†’ Helpdesk (MemberOf). Helpdesk dapat membaca LAPS password FILE01. FILE01 memiliki sesi dari svc_backup (mungkin service account yang sedang login). svc_backup dapat menulis ke properti SQL_SVC (GenericWrite), memungkinkan Kerberoasting atau Shadow Credentials. SQL_SVC adalah admin di SQL01, yang memiliki sesi DomainAdmin01. Jika DomainAdmin01 token dicuri, intern menjadi Domain Admin.

Ini bukan fantasi โ€” jalur seperti ini sering ditemukan di organisasi besar.


๐Ÿ“š Referensi

  • SpecterOps, BloodHound: Six Degrees of Domain Admin (2017)
  • Sadowski, A., & Robbins, J. (2019). BloodHound: The Evolution of Active Directory Defense.
  • Microsoft, Best Practices for Securing Active Directory (2020)
  • MITRE ATT&CK: T1087.002 (Account Discovery: Domain Account), T1069.002 (Permission Groups Discovery: Domain Groups), T1482 (Domain Trust Discovery)
  • Loรฏc Veirman, Active Directory Security: BloodHound Data Collection and Analysis
  • Will Schroeder, The Attacking Active Directory Series

BloodHound Deep Dive | Active Directory Attack Path Analysis | Graph-Based Security for Red & Blue Teams