Contoh dan himpunan data sampel grafik

Halaman ini mencantumkan grafik yang ada di kluster bantuan kami di https://help.kusto.windows.net dalam database Sampel dan memperlihatkan cara mengkuerinya menggunakan Bahasa Kueri Kusto (KQL). Contoh-contoh ini menunjukkan kueri model grafik bawaan tanpa memerlukan langkah-langkah pembuatan atau penyiapan apa pun.

Grafik pendidikan sederhana untuk dasar-dasar pembelajaran

Penggunaan: graph("Simple")

Tujuan: Operasi grafik dasar dan pola kueri grafik dasar pembelajaran.

Deskripsi: Grafik pendidikan kecil yang berisi orang, perusahaan, dan kota dengan berbagai hubungan. Sempurna untuk mempelajari traversal grafik dan memahami pola dasar. Himpunan data ringkas ini mencakup 11 simpul (5 orang, 3 perusahaan, dan 3 kota) yang terhubung melalui 20 hubungan, sehingga ideal untuk memahami dasar-dasar grafik tanpa kompleksitas himpunan data yang lebih besar. Grafik menunjukkan skenario dunia nyata umum seperti hubungan pekerjaan, lokasi geografis, koneksi sosial, dan preferensi pribadi.

Kasus Penggunaan:

  • Mempelajari dasar-dasar kueri grafik
  • Menguji algoritma grafik
  • Memahami pola hubungan
  • Contoh pendidikan untuk konsep grafik

Hubungan Skema:

Skema grafik yang berisi orang, perusahaan, dan kota dengan berbagai hubungan.

Skema dan Hitungan:

  • Jenis Node:

    • Person - Individu orang (5 node)
    • Company - Organisasi bisnis (3 simpul)
    • City - Lokasi geografis (3 simpul)
  • Tipe Hubungan:

    • works_at - Hubungan ketenagakerjaan (5 tepi)
    • located_at - Penetapan lokasi geografis (8 tepi)
    • knows - Koneksi sosial antara orang (4 tepi)
    • likes - Preferensi dan minat pribadi (3 tepi)

Contoh Instans Grafik:

Contoh ini menunjukkan hubungan grafik dasar dalam jaringan kecil yang mudah dipahami yang menunjukkan bagaimana orang terhubung ke perusahaan dan kota melalui berbagai jenis hubungan.

Grafik yang berisi instans orang, perusahaan, dan kota dengan berbagai hubungan.

Contoh Kueri:

Temukan semua karyawan perusahaan tertentu:

graph("Simple")
| graph-match (person)-[works_at]->(company)
    where company.name == "TechCorp"
    project employee_name = person.name, employee_age = person.properties.age
employee_name employee_age
Alice Dua puluh lima
Bob 30
Emma 26

Temukan kolega (orang yang bekerja di perusahaan yang sama):

graph("Simple")
| graph-match (person1)-->(company)<--(person2)
    where person1.id != person2.id and labels(company) has "Company"
    project colleague1 = person1.name, colleague2 = person2.name, company = company.name
| take 1
kolega1 kolega2 firma
Alice Bob TechCorp

LDBC SNB interaktif

Penggunaan: graph("LDBC_SNB_Interactive")

Tujuan: Traversal jejaring sosial dan eksplorasi teman-teman.

Nota

Himpunan data ini disediakan di bawah Apache License 2.0. Himpunan data Tolok Ukur Jejaring Sosial LDBC dibuat oleh Linked Data Benchmark Council (LDBC).

Deskripsi: Himpunan data beban kerja Social Network Benchmark Interactive Linked Data Benchmark Council (LDBC) mewakili pemodelan jaringan sosial komprehensif platform media sosial dunia nyata. Tolok ukur ini menangkap kompleksitas jejaring sosial modern dengan lebih dari 327.000 simpul dan beberapa jenis hubungan, termasuk data geografis hierarkis, struktur organisasi multi-tingkat, dan interaksi konten yang kaya. Himpunan data ini memodelkan ekosistem media sosial yang realistis dengan orang-orang yang membuat postingan dan komentar, berpartisipasi dalam forum, bekerja di organisasi, dan tinggal di lokasi geografis di seluruh hierarki terperinci dari benua hingga kota.

Kasus Penggunaan:

  • Analisis jaringan sosial dan sistem rekomendasi
  • Algoritma deteksi komunitas
  • Pengaruhi studi penyebaran
  • Rekomendasi konten berdasarkan koneksi sosial
  • Penemuan teman-teman
  • Penelitian penambangan grafik sosial

Gambaran Umum Skema Grafik:

Skema grafik yang berisi simpul dan hubungan dari himpunan data LDBC SNB.

Skema dan Hitungan:

  • Jenis Entitas Sosial Inti:

    • PERSON - Pengguna jejaring sosial (1.528 simpul)
    • POST - Posting pengguna (135.701 simpul)
    • COMMENT - Komentar pada posting (151.043 simpul)
    • FORUM - Forum diskusi (13.750 simpul)
  • Jenis Organisasi dan Geografis:

    • ORGANISATION - Universitas dan perusahaan (7.955 simpul)
    • PLACE - Lokasi geografis: benua (6), negara (111), kota (1.343) - total 1.460 simpul
  • Jenis Klasifikasi Konten:

    • TAG - Tag konten (16.080 simpul)
    • TAGCLASS - Kategori tag (71 simpul)
  • Jenis Hubungan Kunci:

    • KNOWS - Hubungan teman (14.073 tepi)
    • LIKES - Konten suka: posting (47.215) + komentar (62.225) = 109.440 total tepi
    • HAS_CREATOR - Otorisasi konten: posting (135.701) + komentar (151.043) = 286.744 tepi
    • HAS_MEMBER - Keanggotaan forum (123.268 tepi)
    • HAS_TAG - Pemberian tag konten: posting (51.118) + komentar (191.303) + forum (47.697) = 290.118 tepi
    • IS_LOCATED_IN - Hubungan lokasi: orang (1.528) + organisasi (7.955) + postingan (135.701) + komentar (151.043) = 296.227 tepi
    • REPLY_OF - Utas komentar: komentar ke komentar (76.787) + komentar ke posting (74.256) = 151.043 tepi
    • WORK_AT / STUDY_AT - Sejarah profesional/pendidikan (4.522 tepi)
    • HAS_INTEREST - Kepentingan pribadi (35.475 tepi)
    • Hubungan lain: HAS_MODERATOR, , IS_PART_OFCONTAINER_OF, HAS_TYPE,IS_SUBCLASS_OF

Contoh Instans Grafik:

Contoh ini menunjukkan interaksi jejaring sosial yang kompleks di lingkungan media sosial yang realistis, menunjukkan bagaimana pengguna terlibat dengan konten, berpartisipasi dalam forum, dan membentuk koneksi sosial.

Grafik yang berisi subgraf sampel himpunan data LDBC SNB.

Contoh ini menunjukkan:

  • Keterlibatan Sosial: Mahinda menyukai posting abdullah dan komentar di postingan itu
  • Content Threading: Komentar (tentang Gloria Macapagal-Arroyo) membalas postingan (tentang Aurangzeb)
  • Pembuatan Konten: Abdullah membuat postingan di dinding forumnya sendiri
  • Partisipasi Komunitas: Mahinda adalah anggota forum Abdullah tempat konten muncul
  • Klasifikasi Konten: Postingan dan komentar ditandai dengan topik yang relevan dari kontennya
  • Konteks Geografis: Semua entitas memiliki hubungan lokasi untuk analisis geografis

Kasus Penggunaan:

  • Analisis jaringan sosial dan sistem rekomendasi
  • Algoritma deteksi komunitas
  • Pengaruhi studi penyebaran
  • Rekomendasi konten berdasarkan koneksi sosial
  • Penemuan teman-teman
  • Penelitian penambangan grafik sosial

Contoh Kueri:

Temukan persahabatan langsung dengan usia yang sama:

Kueri ini mengidentifikasi pasangan orang yang terhubung langsung melalui hubungan "KNOWS" dan memiliki usia yang sama (ulang tahun dalam waktu 30 hari satu sama lain). Ini melintasi grafik jejaring sosial LDBC untuk menemukan persahabatan yang ada antara orang-orang dari kelompok usia yang sama. Kueri mengembalikan jumlah total pasangan persahabatan serupa usia tersebut di jaringan, yang dapat berguna untuk menganalisis pola sosial berbasis usia atau memvalidasi algoritma rekomendasi teman.

graph("LDBC_SNB_Interactive")
| graph-match (person1)-[knows]->(person2)
    where labels(person1) has "PERSON" and labels(person2) has "PERSON" and 
        labels(knows) has "KNOWS"and abs(person1.birthday - person2.birthday) < 30d
    project person_name = person1.firstName, friend_name = person2.firstName
| count 
Jumlah
225

Temukan postingan populer berdasarkan suka:

Kueri ini menganalisis keterlibatan sosial dengan mengidentifikasi pembuat konten paling populer berdasarkan berapa banyak orang unik yang menyukai posting mereka. Ini melintasi grafik jejaring sosial melalui jalur: orang → suka → posting → has_creator → pembuat. Kueri menggabungkan data untuk menampilkan jumlah total liker unik dan postingan yang berbeda dari setiap kreator, lalu mengembalikan 3 kreator teratas dengan jumlah suka terbanyak. Ini berguna untuk mengidentifikasi pembuat konten berpengaruh, memahami pola keterlibatan, dan menemukan konten viral di jejaring sosial.

graph("LDBC_SNB_Interactive")
| graph-match (person)-[likes]->(post)-[has_creator]->(creator)
    where labels(person) has "Person" and labels( post) has "POST" and labels(has_creator) has "HAS_CREATOR" and isnotempty(creator.lastName)
    project personId = person.id, postId = post.id, creator = creator.lastName
| summarize Likes = dcount(personId), posts = dcount(postId) by creator
| top 3 by Likes desc
pembuat Suka Posting
Zhang 371 207
Hoffmann 340 9
Singh 338 268

LDBC Financial

Penggunaan: graph("LDBC_Financial")

Tujuan: Analisis transaksi keuangan dan pola deteksi penipuan.

Nota

Himpunan data ini disediakan di bawah Apache License 2.0. Himpunan data Tolok Ukur Keuangan LDBC dibuat oleh Linked Data Benchmark Council (LDBC).

Deskripsi: Himpunan data LDBC Financial Benchmark mewakili jaringan keuangan yang komprehensif dengan perusahaan, orang, rekening, pinjaman, dan berbagai transaksi keuangan. Himpunan data ini memodelkan ekosistem keuangan realistis dengan total 5.580 simpul dan lebih dari 31.000 transaksi dan hubungan keuangan. Dirancang khusus untuk deteksi penipuan, analisis anti pencucian uang (AML), dan skenario investigasi kejahatan keuangan, ini menangkap pola kompleks termasuk kepemilikan akun, aplikasi pinjaman, jaminan, dan rantai transaksi multi-langkah yang umum dalam skenario kejahatan keuangan.

Kasus Penggunaan:

  • Deteksi penipuan keuangan
  • Analisis anti pencucian uang (AML)
  • Analisis pola transaksi
  • Penilaian risiko dan penilaian kredit
  • Pemantauan aktivitas yang mencurigakan
  • Analisis jaringan keuangan

Gambaran Umum Skema Grafik:

Skema grafik yang berisi simpul dan hubungan dari himpunan data LDBC Financial.

Skema dan Hitungan:

  • Jenis Node:

    • COMPANY - Entitas bisnis (386 simpul)
    • PERSON - Pelanggan individu (785 simpul)
    • ACCOUNT - Rekening keuangan (2.055 simpul)
    • LOAN - Produk pinjaman (1.376 simpul)
    • MEDIUM - Media/saluran transaksi (978 simpul)
  • Tipe Hubungan:

    • TRANSFER - Transfer uang antar rekening (8.132 tepi)
    • WITHDRAW - Penarikan tunai dari rekening (9.182 tepi)
    • DEPOSIT - Setoran uang ke rekening (2.758 tepi)
    • OWN - Hubungan kepemilikan akun (2.055 tepi)
    • APPLY - Aplikasi pinjaman (1.376 tepi)
    • GUARANTEE - Jaminan pinjaman (579 tepi)
    • INVEST - Transaksi investasi (1.983 tepi)
    • REPAY - Pembayaran pinjaman (2.747 tepi)
    • SIGN_IN - Peristiwa autentikasi (2.489 tepi)

Contoh Instans Grafik:

Contoh ini menggambarkan jaringan keuangan yang kompleks dengan beberapa jenis entitas dan pola transaksi, menunjukkan bagaimana lembaga keuangan dapat memodelkan hubungan antara pelanggan, akun, pinjaman, dan aliran transaksi untuk deteksi penipuan dan penilaian risiko.

Grafik yang berisi subgraf sampel himpunan data LDBC Financial.

Contoh Kueri:

Mendeteksi potensi pencucian uang melalui transfer melingkar:

Kueri ini mengidentifikasi pola transaksi melingkar mencurigakan yang dapat menunjukkan aktivitas pencucian uang. Ini mencari akun yang mengirim uang ke akun lain dan kemudian menerimanya kembali melalui rantai transfer 1 hingga 3, membuat alur melingkar. Kueri secara khusus mencari transfer awal besar (lebih dari 10.000) dan mengembalikan detail tentang akun yang mencurigakan, termasuk jumlah transfer dan panjang rantai melingkar. Deteksi pola ini berguna untuk sistem anti pencucian uang (AML) dan investigasi penipuan keuangan.

graph("LDBC_Financial")
| graph-match (account1)-[t1]->(account2)-[t2*1..3]->(account1)
    where labels(t1) has "TRANSFER" and t1.amount > 10000  // Large initial transfer
    project suspicious_account = account1.node_id,
            amount = t1.amount,
            transfer_chain_length = array_length(t2) + 1
| take 10
suspicious_account jumlah transfer_chain_length
Akun::4818007176356300028 5035377,73 2
Akun::4818007176356300028 5035377,73 2
Akun::4845310249097233848 359062,45 2
Akun::4818007176356300028 5035377,73 3
Akun::4818007176356300028 5035377,73 4
Akun::4840243699516440940 5753668,55 4
Akun::4818007176356300028 5035377,73 4
Akun::180143985094820389 465338,26 4
Akun::4814910951612482356 1684581,62 4
Akun::4816599801472746629 963626,42 4

Temukan penjamin pinjaman berisiko tinggi:

Kueri ini mengidentifikasi individu atau perusahaan yang menjamin beberapa pinjaman dengan jumlah yang signifikan, yang dapat menunjukkan eksposur risiko keuangan. Ini melintasi grafik jaringan keuangan mengikuti jalur: penjamin → menjamin → peminjam → menerapkan pinjaman →. Kueri menggabungkan jumlah total yang dijamin dan jumlah pinjaman untuk setiap penjamin, kemudian memfilter untuk yang menjamin lebih dari total 100.000 dan mengembalikan 5 teratas dengan total jumlah yang dijamin. Analisis ini berguna untuk penilaian risiko, mengidentifikasi penjamin yang terlalu leverage, dan mengevaluasi risiko keuangan sistemik dalam jaringan pinjaman.

graph("LDBC_Financial")
| graph-match (guarantor)-[guarantee]->(borrower)-[apply]->(loan)
    where labels(guarantee) has "GUARANTEE" and labels(apply) has "APPLY"
    project guarantor_id = guarantor.node_id,
            borrower_id = borrower.node_id,
            loan_amount = loan.loanAmount
| summarize total_guaranteed = sum(loan_amount), loan_count = count() by guarantor_id
| where total_guaranteed > 100000
| top 5 by total_guaranteed desc
guarantor_id total_guaranteed loan_count
Orang::44 439802195 8
Orang::15393162789155 411111642 8
Perusahaan::12094627905931 404538891 6
Perusahaan::4398046511208 366243272 8
Orang::19791209300551 338838223 6

Himpunan data BloodHound Entra

Penggunaan: graph("BloodHound_Entra")

Tujuan: Eskalasi hak istimewa Microsoft Entra dan analisis jalur serangan.

Nota

Himpunan data ini disediakan di bawah Apache License 2.0. Himpunan data BloodHound dibuat oleh proyek BloodHound.

Deskripsi: Himpunan data BloodHound untuk lingkungan Microsoft Entra. Himpunan data keamanan komprehensif ini berisi 13.526 objek Microsoft Entra termasuk pengguna, grup, aplikasi, perwakilan layanan, perangkat, dan berbagai sumber daya cloud. Dengan lebih dari 800.000 hubungan izin dan tepi keamanan, ini memodelkan lingkungan Microsoft Entra yang kompleks khas organisasi perusahaan. Himpunan data menangkap izin Microsoft Entra terperinci, penetapan peran, keanggotaan grup, dan pola kepemilikan sumber daya yang penting untuk mengidentifikasi jalur eskalasi hak istimewa dan vektor serangan di lingkungan cloud.

Kasus Penggunaan:

  • Penilaian keamanan ID Entra
  • Penemuan jalur eskalasi hak istimewa
  • Visualisasi jalur serangan
  • Analisis tata kelola identitas
  • Kontrol keamanan berbasis risiko
  • Audit kepatuhan untuk lingkungan cloud

Gambaran Umum Skema Grafik:

Skema grafik yang berisi simpul dan hubungan dari himpunan data BloodHound Entra.

Skema dan Hitungan:

Nota

Himpunan data ini disediakan di bawah Apache License 2.0. Himpunan data BloodHound dibuat oleh proyek BloodHound Community Edition.

Deskripsi: Himpunan data BloodHound Community Edition untuk lingkungan Microsoft Entra. Himpunan data keamanan komprehensif ini berisi 13.526 objek Microsoft Entra termasuk pengguna, grup, aplikasi, perwakilan layanan, perangkat, dan berbagai sumber daya cloud. Dengan lebih dari 800.000 hubungan izin dan tepi keamanan, ini memodelkan lingkungan Microsoft Entra yang kompleks khas organisasi perusahaan. Himpunan data menangkap izin Microsoft Entra terperinci, penetapan peran, keanggotaan grup, dan pola kepemilikan sumber daya yang penting untuk mengidentifikasi jalur eskalasi hak istimewa dan vektor serangan di lingkungan cloud.

Skema dan Hitungan:

  • Jenis Node Utama:

    • AZUser - Pengguna Microsoft Entra (230 simpul)
    • AZServicePrincipal - Perwakilan layanan dan aplikasi (6.270 simpul)
    • AZApp - Aplikasi Azure (6.648 simpul)
    • AZGroup - Grup Microsoft Entra (58 simpul)
    • AZDevice - Perangkat terkelola (47 simpul)
  • Jenis Sumber Daya Azure:

    • AZResourceGroup - Grup sumber daya (59 simpul)
    • AZVM - Komputer virtual (66 simpul)
    • AZRole - Peran Azure (116 simpul)
    • AZSubscription - Langganan Azure (3 simpul)
    • AZTenant - Penyewa Azure (1 simpul)
  • Jenis Hubungan Kunci (Izin teratas menurut volume):

    • AZMGAddOwner - Izin pemilik grup manajemen (403.412 tepi)
    • AZMGAddSecret - Izin manajemen rahasia (345.324 tepi)
    • AZAddSecret - Izin rahasia aplikasi (24.666 tepi)
    • AZContains - Hubungan penahanan sumber daya (12.924 tepi)
    • AZRunsAs - Izin eksekusi layanan (6.269 tepi)
    • AZMemberOf - Hubungan keanggotaan grup (4.439 tepi)
    • AZOwns - Kepemilikan sumber daya (2.870 tepi)

Contoh Instans Grafik:

Contoh ini menunjukkan hubungan identitas Microsoft Entra dan Entra dengan struktur hak istimewa yang kompleks dan jalur serangan potensial di lingkungan cloud.

Grafik yang berisi subgraf sampel himpunan data BloodHound Entra

Kasus Penggunaan:

  • Penilaian keamanan ID Entra
  • Penemuan jalur eskalasi hak istimewa
  • Visualisasi jalur serangan
  • Analisis tata kelola identitas
  • Kontrol keamanan berbasis risiko
  • Audit kepatuhan untuk lingkungan cloud

Contoh Kueri:

Temukan jalur ke hak administratif:

Kueri ini mengidentifikasi jalur eskalasi hak istimewa dari pengguna reguler ke grup administratif di lingkungan Microsoft Entra. Ini mencari pengguna yang dapat menjangkau grup admin (seperti Administrator Microsoft Entra DC, DnsAdmins, dll.) melalui 1-3 hop hubungan, membantu tim keamanan memahami potensi jalur serangan dan risiko eskalasi hak istimewa.

graph("BloodHound_Entra")
| graph-match (user)-[path*1..3]->(admingroup)
    where labels(user) has_any ("User", "AZUser") 
          and labels(admingroup) has_any ("Group", "AZGroup")
          and (admingroup.name contains "ADMIN" or admingroup.displayname contains "ADMIN")
    project source_user = user.name,
             path_length = array_length(path),
             admin_group = coalesce(admingroup.displayname, admingroup.name)
| take 10
source_user path_length admin_group
THISUSERHASINTUNEADMINROLE@PHANTOMCORP.ONMICROSOFT.COM 1 ADSyncAdmins
097EF6C2-GROUPSADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 Administrator AAD DC
USERBELONGSTOGAGROUP@PHANTOMCORP.ONMICROSOFT.COM 1 ADSyncAdmins
THISUSERHASINTUNEADMINROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
RHADMIN@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
CJACKSON@PHANTOMCORP.ONMICROSOFT.COM 1 Administrator phantom Azure ATP
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 Administrator AAD DC
RHADMIN_PHANTOMCORP.ONMICROSOFT.COM#EXT#@PHANTOMCORP.ONMICROSOFT.COM 1 Admin Grup Sumber Daya
THISUSERHASKNOWLEDGEMANAGERROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins

Identifikasi target bernilai tinggi (aset Tingkat 0):

Kueri ini mengidentifikasi aset administratif penting yang ditandai sebagai "admin_tier_0" di lingkungan. Ini adalah akun, perwakilan layanan, dan sumber daya yang paling sensitif dan kuat yang menimbulkan risiko tertinggi jika disusupi. Memahami aset ini membantu memprioritaskan upaya pemantauan dan perlindungan keamanan.

graph("BloodHound_Entra")
| graph-match (asset)
    where asset.properties.system_tags contains "admin_tier_0"
    project asset_name = asset.name,
             asset_type = tostring(labels(asset)[1]),  // Get primary type (AZUser, AZServicePrincipal, etc.)
             system_tags = asset.properties.system_tags
| take 10
asset_name asset_type system_tags
JJACOB@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
PLEWIS@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
JMILLER@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
CJACKSON@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
RHALL@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
THISAPPHASGLOBALADMIN@PHANTOMCORP AZServicePrincipal admin_tier_0
MYCOOLAUTOMATIONACCOUNT@PHANTOMCORP AZServicePrincipal admin_tier_0
SERVICEPRINCIPALE@PHANTOMCORP AZServicePrincipal admin_tier_0
31E3B75F-PRIVILEGED AUTHENTICATION ADMINISTRATOR@PHANTOMCORP AZServicePrincipal admin_tier_0
31E3B75F-PRIVILEGED ROLE ADMINISTRATOR@PHANTOMCORP AZServicePrincipal admin_tier_0

Himpunan data Direktori Aktif BloodHound

Penggunaan: graph("BloodHound_AD")

Tujuan: Analisis keamanan Active Directory lokal dan pemetaan hak istimewa.

Nota

Himpunan data ini disediakan di bawah Apache License 2.0. Himpunan data BloodHound dibuat oleh proyek BloodHound.

Deskripsi: Himpunan data BloodHound Community Edition untuk lingkungan Active Directory lokal. Himpunan data ini berisi 1.495 objek Active Directory yang mewakili penyebaran AD perusahaan yang khas dengan struktur izin yang kompleks dan jalur serangan. Himpunan data mencakup pengguna, komputer, grup, unit organisasi, objek kebijakan grup, dan komponen otoritas sertifikat di beberapa domain. Dengan lebih dari 18.000 hubungan izin dan tepi keamanan, ia menangkap skenario serangan AD yang realistis termasuk jalur eskalasi hak istimewa, izin berbasis ACL, keanggotaan grup, dan kerentanan autentikasi berbasis sertifikat yang umum di lingkungan domain Windows.

Kasus Penggunaan:

  • Penilaian keamanan Direktori Aktif
  • Analisis jalur serangan dan pengujian penetrasi
  • Pemetaan hak istimewa domain
  • Analisis keamanan kebijakan grup
  • Identifikasi target Kerberoasting dan ASREPRoasting
  • Analisis kesenjangan kontrol keamanan

Gambaran Umum Skema Grafik:

  • Jenis Objek AD Inti:

    • User - Pengguna domain (99 simpul)
    • Computer - Komputer domain (34 simpul)
    • Group - Grup keamanan dan distribusi (219 simpul)
    • ADLocalGroup - Grup lokal di komputer (28 simpul)
    • GPO - Objek Kebijakan Grup (32 simpul)
  • Jenis Infrastruktur AD:

    • Domain - Domain Direktori Aktif (5 simpul)
    • OU - Unit Organisasi (20 simpul)
    • Container - Kontainer AD (939 simpul)
    • CertTemplate - Templat sertifikat (106 simpul)
    • EnterpriseCA - Otoritas Sertifikat (4 simpul)
    • RootCA - Otoritas Sertifikat Akar (5 simpul)
  • Jenis Izin Kunci (Vektor serangan teratas):

    • GenericAll - Izin kontrol penuh (3.292 tepi)
    • WriteDacl - Mengubah izin (2.221 tepi)
    • WriteOwner - Mengubah kepemilikan (2.187 tepi)
    • Owns - Kepemilikan objek (1.439 tepi)
    • Contains - Hubungan penahanan (1.416 tepi)
    • GenericWrite - Izin tulis (579 tepi)
    • MemberOf - Keanggotaan grup (301 tepi)

Gambaran Umum Skema Grafik:

Skema grafik yang berisi simpul dan hubungan dari himpunan data BloodHound AD.

Contoh Instans Grafik:

Contoh ini menunjukkan jalur serangan Direktori Aktif lokal dan potensi kerentanan keamanan di lingkungan domain Windows tradisional.

Grafik yang berisi subgraf sampel himpunan data BloodHound AD.

Kasus Penggunaan:

  • Penilaian keamanan Direktori Aktif
  • Analisis jalur serangan dan pengujian penetrasi
  • Pemetaan hak istimewa domain
  • Analisis keamanan kebijakan grup
  • Identifikasi target Kerberoasting dan ASREPRoasting
  • Analisis kesenjangan kontrol keamanan

Contoh Kueri:

Temukan potensi eskalasi hak istimewa:

Kueri ini menghitung berapa banyak pengguna non-admin yang berpotensi meningkat menjadi admin di Microsoft Entra. Ini melintasi hingga 10 hop grup MemberOf (tanpa siklus) dari setiap pengguna ke grup yang memberikan izin berbahaya (GenericAll, WriteDacl, WriteOwner, ForceChangePassword) melalui pengguna admin (admincount=true), lalu mengembalikan jumlah pengguna "penyerang potensial" tersebut yang berbeda.

graph("BloodHound_AD")
| graph-match cycles=none (user)-[memberof*0..10]->(group)-[permission]->(target)
    where labels(user) has "User" 
          and labels(group) has "Group"
          and all(memberof, labels() has "MemberOf")
          and user.properties.admincount == false
          and (labels(permission) has_any ("GenericAll", "WriteDacl", "WriteOwner", "ForceChangePassword"))
          and (labels(target) has "User" and target.properties.admincount == true)
    project  attack_user = user.name
| summarize ['Potential attackers'] = dcount(attack_user)
Penyerang potensial
2

Temukan jalur serangan Sertifikat Emas:

Kueri ini mengidentifikasi entitas yang dapat melakukan serangan Sertifikat Emas, yang memungkinkan penyerang untuk menembok sertifikat sebagai pengguna mana pun di domain. Ini adalah kerentanan penting karena memungkinkan penyusupan domain lengkap dengan memungkinkan penyerang untuk meniru pengguna apa pun, termasuk administrator domain, melalui sertifikat yang ditempa.

graph("BloodHound_AD")
| graph-match (attacker)-[goldencert]->(target)
    where labels(goldencert) has "GoldenCert"
    project 
        Attacker = attacker.name,
        AttackerType = case(
            attacker.name has "DC", "Domain Controller",
            attacker.name has "CA", "Certificate Authority", 
            attacker.name has "SRV", "Server",
            "Unknown System"
        ),
        Target = target.name,
        RiskLevel = "CRITICAL",
        AttackCapability = case(
            attacker.name has "DC", "Primary domain controller with certificate services",
            attacker.name has "EXTCA", "External Certificate Authority with root access",
            attacker.name has "SRV", "Compromised server with certificate generation rights",
            "System with certificate forging capabilities"
        )
Penyerang AttackerType Target RiskLevel AttackCapability
DC01. HANTU. CORP Sistem Tidak Diketahui HANTU. CORP KRITIS Sistem dengan kemampuan forging sertifikat
SRV-SHARPHOUND. HANTU. CORP pelayan HANTU. CORP KRITIS Server yang disusupi dengan hak pembuatan sertifikat
EXTCA01. WRAITH. CORP Sistem Tidak Diketahui WRAITH. CORP KRITIS Sistem dengan kemampuan forging sertifikat
EXTCA02. WRAITH. CORP Sistem Tidak Diketahui WRAITH. CORP KRITIS Sistem dengan kemampuan forging sertifikat