Freigeben über


Graph-Beispiel-Datasets und Beispiele

Auf dieser Seite werden vorhandene Diagramme in unserem Hilfecluster in https://help.kusto.windows.net der Beispieldatenbank aufgelistet und gezeigt, wie Sie sie mithilfe der Kusto-Abfragesprache (KQL) abfragen können. Diese Beispiele veranschaulichen das Abfragen vordefinierter Diagrammmodelle, ohne dass Erstellungs- oder Einrichtungsschritte erforderlich sind.

Einfaches Lerndiagramm für Grundlagen des Lernens

Syntax: graph("Simple")

Zweck: Grundlegende Diagrammvorgänge und lernen grundlegende Diagrammabfragemuster.

Beschreibung: Ein kleines Bildungsdiagramm mit Personen, Unternehmen und Städten mit verschiedenen Beziehungen. Perfekt für Lerndiagramme durchlaufen und grundlegende Muster verstehen. Dieses kompakte Dataset umfasst 11 Knoten (5 Personen, 3 Unternehmen und 3 Städte), die über 20 Beziehungen miteinander verbunden sind, sodass sie ideal für das Verständnis von Diagrammgrundsätzen ohne die Komplexität größerer Datasets geeignet ist. Die Grafik zeigt allgemeine reale Szenarien wie Beschäftigungsbeziehungen, geografische Standorte, soziale Verbindungen und persönliche Vorlieben.

Anwendungsfälle:

  • Grundlagen der Lerndiagrammabfrage
  • Testen von Diagrammalgorithmen
  • Grundlegendes zu Beziehungsmustern
  • Lernbeispiele für Diagrammkonzepte

Schemabeziehungen:

Ein Schema eines Diagramms, das Personen, Unternehmen und Städte mit verschiedenen Beziehungen enthält.

Schema und Anzahl:

  • Knotentypen:

    • Person - Einzelne Personen (5 Knoten)
    • Company - Unternehmen (3 Knoten)
    • City - Geografische Standorte (3 Knoten)
  • Beziehungstypen:

    • works_at - Arbeitsverhältnisse (5 Ränder)
    • located_at - Geografische Standortzuweisungen (8 Kanten)
    • knows - Soziale Verbindungen zwischen Personen (4 Kanten)
    • likes - Persönliche Vorlieben und Interessen (3 Kanten)

Graph-Instanz (Beispiel):

In diesem Beispiel werden grundlegende Diagrammbeziehungen in einem kleinen, leicht verständlichen Netzwerk veranschaulicht, in dem gezeigt wird, wie Personen sich über verschiedene Beziehungstypen mit Unternehmen und Städten verbinden.

Ein Diagramm, das Instanzen von Personen, Unternehmen und Städten mit verschiedenen Beziehungen enthält.

Beispielabfragen:

Suchen Sie alle Mitarbeiter eines bestimmten Unternehmens:

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
Alina 25
Bubikopf 30
Emma 26

Kollegen suchen (Mitarbeiter, die am gleichen Unternehmen arbeiten):

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
Kollege 1 Kollege2 Firma
Alina Bubikopf TechCorp

LDBC SNB interaktiv

Syntax: graph("LDBC_SNB_Interactive")

Zweck: Soziale Netzwerke durchqueren Und Freund-von-Freund-Erkundungen.

Hinweis

Dieses Dataset wird unter der Apache-Lizenz 2.0 bereitgestellt. Die LDBC Social Network Benchmark-Datasets werden vom Linked Data Benchmark Council (LDBC) erstellt.

Beschreibung: Der Linked Data Benchmark Council (LDBC) Social Network Benchmark Interactive Workload Dataset stellt eine umfassende Social Network Modellierung realer Social Media-Plattformen dar. Dieser Benchmark erfasst die Komplexität moderner sozialer Netzwerke mit über 327.000 Knoten und mehreren Beziehungstypen, einschließlich hierarchischer geografischer Daten, Organisationsstrukturen auf mehreren Ebenen und umfassenden Inhaltsinteraktionen. Das Dataset modelliert realistische Social-Media-Ökosysteme mit Personen, die Beiträge und Kommentare erstellen, an Foren teilnehmen, an Organisationen arbeiten und an geografischen Standorten in einer detaillierten Hierarchie von Kontinenten bis zu Städten leben.

Anwendungsfälle:

  • Analyse- und Empfehlungssysteme für soziale Netzwerke
  • Community-Erkennungsalgorithmen
  • Einflussverteilungsstudien
  • Inhaltsempfehlung basierend auf sozialen Verbindungen
  • Freund-von-Freund-Entdeckung
  • Social Graph Mining Research

Übersicht über das Diagrammschema:

Ein Schema eines Diagramms, das Knoten und Beziehungen aus dem LDBC-SNB-Dataset enthält.

Schema und Anzahl:

  • Kerntypen für soziale Entitäten:

    • PERSON - Benutzer sozialer Netzwerke (1.528 Knoten)
    • POST - Benutzerbeiträge (135.701 Knoten)
    • COMMENT - Kommentare zu Beiträgen (151.043 Knoten)
    • FORUM - Diskussionsforen (13.750 Knoten)
  • Organisations- und geografische Typen:

    • ORGANISATION - Universitäten und Unternehmen (7.955 Knoten)
    • PLACE - Geografische Standorte: Kontinente (6), Länder (111), Städte (1,343) - insgesamt 1.460 Knoten
  • Inhaltsklassifizierungstypen:

    • TAG - Inhaltstags (16.080 Knoten)
    • TAGCLASS - Kategoriekategorien (71 Knoten)
  • Schlüsselbeziehungstypen:

    • KNOWS - Freundbeziehungen (14.073 Kanten)
    • LIKES - Likes für Inhalte: Beiträge (47.215) + Kommentare (62.225) = 109.440 Gesamtränder
    • HAS_CREATOR - Inhaltsautorschaft: Beiträge (135.701) + Kommentare (151.043) = 286.744 Kanten
    • HAS_MEMBER - Forummitgliedschaften (123.268 Kanten)
    • HAS_TAG - Inhaltstagging: Beiträge (51.118) + Kommentare (191.303) + Foren (47.697) = 290.118 Kanten
    • IS_LOCATED_IN - Standortbeziehungen: Personen (1.528) + Organisationen (7.955) + Beiträge (135.701) + Kommentare (151.043) = 296.227 Kanten
    • REPLY_OF - Kommentarthreading: Kommentar-zu-Kommentar (76.787) + Kommentar-zu-Beitrag (74.256) = 151.043 Kanten
    • WORK_AT / STUDY_AT - Berufs-/Bildungsgeschichte (4.522 Kanten)
    • HAS_INTEREST - Persönliche Interessen (35.475 Kanten)
    • Andere Beziehungen: HAS_MODERATOR, , IS_PART_OFCONTAINER_OF, , HAS_TYPEIS_SUBCLASS_OF

Graph-Instanz (Beispiel):

In diesem Beispiel werden komplexe Interaktionen sozialer Netzwerke in einer realistischen Umgebung sozialer Medien veranschaulicht, die zeigen, wie Benutzer mit Inhalten interagieren, an Foren teilnehmen und soziale Verbindungen bilden.

Ein Diagramm mit einem Beispieluntergraph des LDBC-SNB-Datasets.

In diesem Beispiel wird veranschaulicht:

  • Soziales Engagement: Mahinda mag sowohl den Beitrag von Abdullah als auch einen Kommentar zu diesem Beitrag
  • Content Threading: Der Kommentar (über Gloria Macapagal-Arroyo) antwortet auf den Beitrag (über Aurangzeb)
  • Content Creation: Abdullah erstellt Beiträge in seiner eigenen Forumwand
  • Community-Teilnahme: Mahinda ist Mitglied des Forums von Abdullah, in dem die Inhalte angezeigt werden
  • Inhaltsklassifizierung: Sowohl Beiträge als auch Kommentare werden mit relevanten Themen aus ihren Inhalten markiert.
  • Geografischer Kontext: Alle Entitäten verfügen über Standortbeziehungen für die geografische Analyse

Anwendungsfälle:

  • Analyse- und Empfehlungssysteme für soziale Netzwerke
  • Community-Erkennungsalgorithmen
  • Einflussverteilungsstudien
  • Inhaltsempfehlung basierend auf sozialen Verbindungen
  • Freund-von-Freund-Entdeckung
  • Social Graph Mining Research

Beispielabfragen:

Finden Sie direkte Freundschaften mit ähnlichen Alters:

Diese Abfrage identifiziert Paare von Personen, die direkt über eine "KNOWS"-Beziehung verbunden sind und ähnliche Altersstufen haben (Geburtstage innerhalb von 30 Tagen voneinander). Es durchläuft das LDBC Social Network Graph, um bestehende Freundschaften zwischen Menschen ähnlicher Altersgruppen zu finden. Die Abfrage gibt die Gesamtanzahl solcher altersgleichen Freundschaftspaare im Netzwerk zurück, die nützlich sein können, um altersbasierte soziale Muster zu analysieren oder Freundesempfehlungsalgorithmen zu validieren.

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 
Anzahl
225

Suchen Nach beliebten Beiträgen nach Likes:

Diese Abfrage analysiert das soziale Engagement, indem die am häufigsten verwendeten Inhaltsersteller anhand der Anzahl eindeutiger Personen identifiziert werden, die ihren Beiträgen gefallen haben. Es durchläuft das Diagramm des sozialen Netzwerks durch den Pfad: Person → gefällt → Beitrag → has_creator → Erstellers. Die Abfrage aggregiert die Daten, um die Gesamtzahl der eindeutigen Liker und unterschiedlichen Beiträge jedes Erstellers anzuzeigen, und gibt dann die 3 wichtigsten Ersteller mit den meisten Likes zurück. Dies ist nützlich, um einflussreiche Inhaltsersteller zu identifizieren, Interaktionsmuster zu verstehen und virale Inhalte im sozialen Netzwerk zu entdecken.

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
Schöpfer Mag Beiträge
Zhang 371 207
Hoffmann 340 9
Singh 338 268

LDBC Financial

Syntax: graph("LDBC_Financial")

Zweck: Finanztransaktionsanalyse und Betrugserkennungsmuster.

Hinweis

Dieses Dataset wird unter der Apache-Lizenz 2.0 bereitgestellt. Die LDBC Financial Benchmark-Datasets werden vom Linked Data Benchmark Council (LDBC) erstellt.

Beschreibung: LDBC Financial Benchmark-Dataset, das ein umfassendes Finanznetzwerk mit Unternehmen, Personen, Konten, Krediten und verschiedenen Finanztransaktionen darstellt. Dieses Dataset modelliert realistische Finanzökosysteme mit 5.580 Gesamtknoten und über 31.000 Finanztransaktionen und -beziehungen. Entwickelt speziell für Betrugserkennungs-, Geldwäsche- und Finanzkriminalitätsuntersuchungsszenarien, erfasst sie komplexe Muster, einschließlich Kontobesitz, Kreditanträge, Garantien und mehrstufige Transaktionsketten, die in Finanzkriminalitätsszenarien üblich sind.

Anwendungsfälle:

  • Erkennung von Finanzbetrug
  • Analyse der Geldwäsche (AML)
  • Transaktionsmusteranalyse
  • Risikobewertung und Bonitätsbewertung
  • Verdächtige Aktivitätsüberwachung
  • Analyse des Finanznetzwerks

Übersicht über das Diagrammschema:

Ein Schema eines Diagramms, das Knoten und Beziehungen aus dem LDBC Financial-Dataset enthält.

Schema und Anzahl:

  • Knotentypen:

    • COMPANY - Geschäftsentitäten (386 Knoten)
    • PERSON - Einzelne Kunden (785 Knoten)
    • ACCOUNT - Finanzkonten (2.055 Knoten)
    • LOAN - Kreditprodukte (1.376 Knoten)
    • MEDIUM - Transaktionsmittel/Kanäle (978 Knoten)
  • Beziehungstypen:

    • TRANSFER - Geldtransfers zwischen Konten (8.132 Kanten)
    • WITHDRAW - Bargeldabhebungen von Konten (9.182 Kanten)
    • DEPOSIT - Geldeinlagen in Konten (2.758 Kanten)
    • OWN - Kontobesitzbeziehungen (2.055 Edges)
    • APPLY - Kreditanträge (1.376 Kanten)
    • GUARANTEE - Kreditgarantien (579 Kanten)
    • INVEST - Anlagetransaktionen (1.983 Kanten)
    • REPAY - Kredittilgungen (2.747 Ränder)
    • SIGN_IN - Authentifizierungsereignisse (2.489 Kanten)

Graph-Instanz (Beispiel):

In diesem Beispiel wird ein komplexes Finanznetzwerk mit mehreren Entitätstypen und Transaktionsmustern veranschaulicht, das veranschaulicht, wie Finanzinstitute Beziehungen zwischen Kunden, Konten, Krediten und Transaktionsflüssen für die Betrugserkennung und -risikobewertung modellieren können.

Ein Diagramm mit einem Beispieluntergraph des LDBC Financial-Datasets.

Beispielabfragen:

Erkennen potenzieller Geldwäsche durch Zirkelübertragungen:

Diese Abfrage identifiziert verdächtige Zirkeltransaktionsmuster, die auf Geldwäscheaktivitäten hinweisen könnten. Es sucht nach Konten, die Geld an ein anderes Konto senden und es dann über eine Kette von 1 bis 3 Übertragungen erhalten, wodurch ein Zirkelfluss entsteht. Die Abfrage sucht speziell nach großen anfänglichen Übertragungen (über 10.000) und gibt Details zu den verdächtigen Konten zurück, einschließlich des Übertragungsbetrags und der Länge der Zirkelkette. Diese Mustererkennung ist nützlich für AmL-Systeme (Anti-Money Geldwäsche) und Finanzbetrugsuntersuchungen.

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 Menge transfer_chain_length
Account::4818007176356300028 5035377,73 2
Account::4818007176356300028 5035377,73 2
Account::4845310249097233848 359062,45 2
Account::4818007176356300028 5035377,73 3
Account::4818007176356300028 5035377,73 4
Account::4840243699516440940 5753668,55 4
Account::4818007176356300028 5035377,73 4
Account::180143985094820389 465338,26 4
Account::4814910951612482356 1684581,62 4
Account::4816599801472746629 963626,42 4

Finden Sie risikoreiche Kreditbürgen:

Diese Abfrage identifiziert Einzelpersonen oder Unternehmen, die mehrere Kredite insgesamt mit erheblichen Beträgen garantieren, was auf finanzielle Risikorisiken hinweisen könnte. Es durchläuft das Finanznetzdiagramm nach dem Pfad: Garantiegeber → Garantie → Darlehensnehmer → → Kredit anwenden. Die Abfrage aggregiert den garantierten Gesamtbetrag und die Anzahl der Kredite für jeden Garanten, filtert dann nach denjenigen, die insgesamt über 100.000 garantieren, und gibt die top 5 nach Gesamtgarantiebetrag zurück. Diese Analyse ist nützlich für die Risikobewertung, die Identifizierung überlasteter Garanten und die Bewertung systemischer finanzieller Risiken in Kreditnetzwerken.

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
Person::44 439802195 8
Person::15393162789155 411111642 8
Unternehmen::12094627905931 404538891 6
Unternehmen::4398046511208 366243272 8
Person::19791209300551 338838223 6

BloodHound Entra-Dataset

Syntax: graph("BloodHound_Entra")

Zweck: Microsoft Entra-Berechtigungseskalation und Angriffspfadanalyse.

Hinweis

Dieses Dataset wird unter der Apache-Lizenz 2.0 bereitgestellt. Die BloodHound-Datasets werden vom BloodHound-Projekt erstellt.

Beschreibung: BloodHound-Dataset für Microsoft Entra-Umgebungen. Dieses umfassende Sicherheits-Dataset enthält 13.526 Microsoft Entra-Objekte, darunter Benutzer, Gruppen, Anwendungen, Dienstprinzipale, Geräte und verschiedene Cloudressourcen. Mit über 800.000 Berechtigungsbeziehungen und Sicherheits-Edges modelliert es komplexe Microsoft Entra-Umgebungen, die typisch für Unternehmensorganisationen sind. Das Dataset erfasst detaillierte Microsoft Entra-Berechtigungen, Rollenzuweisungen, Gruppenmitgliedschaften und Ressourcenbesitzmuster, die für die Identifizierung von Berechtigungseskalationspfaden und Angriffsvektoren in Cloudumgebungen unerlässlich sind.

Anwendungsfälle:

  • Entra ID-Sicherheitsbewertungen
  • Ermittlung des Berechtigungseskalationspfads
  • Visualisierung des Angriffspfads
  • Identitätsgovernanceanalyse
  • Risikobasierte Sicherheitskontrollen
  • Complianceüberwachung für Cloudumgebungen

Übersicht über das Diagrammschema:

Ein Schema eines Diagramms, das Knoten und Beziehungen aus dem BloodHound Entra-Dataset enthält.

Schema und Anzahl:

Hinweis

Dieses Dataset wird unter der Apache-Lizenz 2.0 bereitgestellt. Die BloodHound-Datasets werden vom Projekt BloodHound Community Edition erstellt.

Beschreibung: BloodHound Community Edition-Dataset für Microsoft Entra-Umgebungen. Dieses umfassende Sicherheits-Dataset enthält 13.526 Microsoft Entra-Objekte, darunter Benutzer, Gruppen, Anwendungen, Dienstprinzipale, Geräte und verschiedene Cloudressourcen. Mit über 800.000 Berechtigungsbeziehungen und Sicherheits-Edges modelliert es komplexe Microsoft Entra-Umgebungen, die typisch für Unternehmensorganisationen sind. Das Dataset erfasst detaillierte Microsoft Entra-Berechtigungen, Rollenzuweisungen, Gruppenmitgliedschaften und Ressourcenbesitzmuster, die für die Identifizierung von Berechtigungseskalationspfaden und Angriffsvektoren in Cloudumgebungen unerlässlich sind.

Schema und Anzahl:

  • Primäre Knotentypen:

    • AZUser - Microsoft Entra-Benutzer (230 Knoten)
    • AZServicePrincipal - Dienstprinzipale und Anwendungen (6.270 Knoten)
    • AZApp - Azure-Anwendungen (6.648 Knoten)
    • AZGroup - Microsoft Entra-Gruppen (58 Knoten)
    • AZDevice - Verwaltete Geräte (47 Knoten)
  • Azure-Ressourcentypen:

    • AZResourceGroup - Ressourcengruppen (59 Knoten)
    • AZVM - Virtuelle Computer (66 Knoten)
    • AZRole – Azure-Rollen (116 Knoten)
    • AZSubscription – Azure-Abonnements (3 Knoten)
    • AZTenant – Azure-Mandant (1 Knoten)
  • Schlüsselbeziehungstypen (Top-Berechtigungen nach Volume):

    • AZMGAddOwner - Berechtigungen für Verwaltungsgruppenbesitzer (403.412 Kanten)
    • AZMGAddSecret - Berechtigungen für die geheime Verwaltung (345.324 Kanten)
    • AZAddSecret - Anwendungsgeheimnisberechtigungen (24.666 Kanten)
    • AZContains - Ressourceneindämmungsbeziehungen (12.924 Kanten)
    • AZRunsAs - Dienstausführungsberechtigungen (6.269 Kanten)
    • AZMemberOf - Gruppenmitgliedschaftsbeziehungen (4.439 Kanten)
    • AZOwns - Ressourcenbesitz (2.870 Kanten)

Graph-Instanz (Beispiel):

In diesem Beispiel werden Microsoft Entra- und Entra-Identitätsbeziehungen mit komplexen Berechtigungsstrukturen und potenziellen Angriffspfaden in einer Cloudumgebung veranschaulicht.

Ein Diagramm mit einem Beispieluntergraph des BloodHound Entra-Datasets

Anwendungsfälle:

  • Entra ID-Sicherheitsbewertungen
  • Ermittlung des Berechtigungseskalationspfads
  • Visualisierung des Angriffspfads
  • Identitätsgovernanceanalyse
  • Risikobasierte Sicherheitskontrollen
  • Complianceüberwachung für Cloudumgebungen

Beispielabfragen:

Pfade zu Administratorrechten finden:

Diese Abfrage identifiziert Berechtigungseskalationspfade von regulären Benutzern zu administrativen Gruppen in Microsoft Entra-Umgebungen. Es sucht nach Benutzern, die Administratorgruppen (z. B. Microsoft Entra DC-Administratoren, DnsAdmins usw.) über 1-3 Beziehungshüpfungen erreichen können, wodurch Sicherheitsteams potenzielle Angriffspfade und Berechtigungseskalationsrisiken verstehen können.

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 AAD DC-Administratoren
USERBELONGSTOGAGROUP@PHANTOMCORP.ONMICROSOFT.COM 1 ADSyncAdmins
THISUSERHASINTUNEADMINROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
RHADMIN@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
CJACKSON@PHANTOMCORP.ONMICROSOFT.COM 1 Azure ATP-Phantomadministratoren
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 AAD DC-Administratoren
RHADMIN_PHANTOMCORP.ONMICROSOFT.COM#EXT#@PHANTOMCORP.ONMICROSOFT.COM 1 Ressourcengruppenadministratoren
THISUSERHASKNOWLEDGEMANAGERROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins

Identifizieren von Zielen mit hohem Wert (Ressourcen der Ebene 0):

Diese Abfrage identifiziert wichtige administrative Ressourcen, die in der Umgebung als "admin_tier_0" gekennzeichnet sind. Dies sind die vertraulichsten und leistungsstärksten Konten, Dienstprinzipale und Ressourcen, die das höchste Risiko darstellen, wenn sie kompromittiert werden. Das Verständnis dieser Ressourcen hilft bei der Priorisierung von Sicherheitsüberwachungs- und Schutzbemühungen.

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-Administrator für privilegierte Authentifizierung@PHANTOMCORP AZServicePrincipal admin_tier_0
31E3B75F-PRIVILEGIERTE ROLLE ADMINISTRATOR@PHANTOMCORP AZServicePrincipal admin_tier_0

BloodHound Active Directory-Dataset

Syntax: graph("BloodHound_AD")

Zweck: Lokale Active Directory-Sicherheitsanalyse und Berechtigungszuordnung.

Hinweis

Dieses Dataset wird unter der Apache-Lizenz 2.0 bereitgestellt. Die BloodHound-Datasets werden vom BloodHound-Projekt erstellt.

Beschreibung: BloodHound Community Edition-Dataset für lokale Active Directory-Umgebungen. Dieses Dataset enthält 1.495 Active Directory-Objekte, die eine typische Enterprise AD-Bereitstellung mit komplexen Berechtigungsstrukturen und Angriffspfaden darstellen. Das Dataset umfasst Benutzer, Computer, Gruppen, Organisationseinheiten, Gruppenrichtlinienobjekte und Zertifizierungsstellenkomponenten in mehreren Domänen. Mit über 18.000 Berechtigungsbeziehungen und Sicherheitsrändern werden realistische AD-Angriffsszenarien erfasst, darunter Berechtigungseskalationspfade, ACL-basierte Berechtigungen, Gruppenmitgliedschaften und zertifikatbasierte Authentifizierungsrisiken, die in Windows-Domänenumgebungen üblich sind.

Anwendungsfälle:

  • Active Directory-Sicherheitsbewertungen
  • Angriffspfadanalyse und Penetrationstests
  • Domänenberechtigungszuordnung
  • Sicherheitsanalyse für Gruppenrichtlinien
  • Kerberoasting und ASREPRoasting-Zielidentifikation
  • Analyse der Sicherheitskontrolllücke

Übersicht über das Diagrammschema:

  • Kern-AD-Objekttypen:

    • User - Domänenbenutzer (99 Knoten)
    • Computer - Domänencomputer (34 Knoten)
    • Group - Sicherheits- und Verteilergruppen (219 Knoten)
    • ADLocalGroup - Lokale Gruppen auf Computern (28 Knoten)
    • GPO - Gruppenrichtlinienobjekte (32 Knoten)
  • AD-Infrastrukturtypen:

    • Domain - Active Directory-Domänen (5 Knoten)
    • OU - Organisationseinheiten (20 Knoten)
    • Container - AD-Container (939 Knoten)
    • CertTemplate - Zertifikatvorlagen (106 Knoten)
    • EnterpriseCA - Zertifizierungsstellen (4 Knoten)
    • RootCA - Stammzertifizierungsstellen (5 Knoten)
  • Schlüsselberechtigungstypen (Top-Angriffsvektoren):

    • GenericAll - Vollzugriffsberechtigungen (3.292 Kanten)
    • WriteDacl - Ändern von Berechtigungen (2.221 Kanten)
    • WriteOwner - Ändern des Besitzes (2.187 Kanten)
    • Owns - Objektbesitz (1.439 Kanten)
    • Contains - Eindämmungsbeziehungen (1.416 Kanten)
    • GenericWrite - Schreibberechtigungen (579 Kanten)
    • MemberOf - Gruppenmitgliedschaften (301 Kanten)

Übersicht über das Diagrammschema:

Ein Schema eines Diagramms, das Knoten und Beziehungen aus dem BloodHound AD-Dataset enthält.

Graph-Instanz (Beispiel):

In diesem Beispiel werden lokale Active Directory-Angriffspfade und potenzielle Sicherheitsrisiken in einer herkömmlichen Windows-Domänenumgebung veranschaulicht.

Ein Diagramm, das ein Beispieluntergraph des BloodHound AD-Datasets enthält.

Anwendungsfälle:

  • Active Directory-Sicherheitsbewertungen
  • Angriffspfadanalyse und Penetrationstests
  • Domänenberechtigungszuordnung
  • Sicherheitsanalyse für Gruppenrichtlinien
  • Kerberoasting und ASREPRoasting-Zielidentifikation
  • Analyse der Sicherheitskontrolllücke

Beispielabfragen:

Potenzielle Berechtigungseskalation finden:

Diese Abfrage zählt, wie viele Benutzer, die keine Administratoren sind, potenziell an den Administrator in Microsoft Entra eskalieren können. Er durchläuft bis zu 10 MemberOf-Gruppenhüpfen (keine Zyklen) von jedem Benutzer zu Gruppen, die gefährliche Berechtigungen (GenericAll, WriteDacl, WriteOwner, ForceChangePassword) über Administratorbenutzer (admincount=true) erteilen, und gibt dann die unterschiedliche Anzahl solcher "potenzieller Angreifer" Benutzer zurück.

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)
Potenzielle Angreifer
2

Suchen von Angriffspfaden für goldenen Zertifikats:

Diese Abfrage identifiziert Entitäten, die Golden Certificate-Angriffe ausführen können, sodass Angreifer Zertifikate als jeden Benutzer in der Domäne schmieden können. Hierbei handelt es sich um kritische Sicherheitsrisiken, da sie vollständige Domänenkompromittierung ermöglichen, indem der Angreifer die Identität eines Benutzers, einschließlich Domänenadministratoren, durch geschmiedete Zertifikate imitieren kann.

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"
        )
Angreifer AttackerType Ziel RiskLevel AttackCapability
DC01. PHANTOM. CORP Unbekanntes System PHANTOM. CORP KRITISCH System mit Zertifikat forging-Funktionen
SRV-SHARPHOUND. PHANTOM. CORP Server PHANTOM. CORP KRITISCH Kompromittierter Server mit Zertifikatgenerierungsrechten
EXTCA01. GESPENST. CORP Unbekanntes System GESPENST. CORP KRITISCH System mit Zertifikat forging-Funktionen
EXTCA02. GESPENST. CORP Unbekanntes System GESPENST. CORP KRITISCH System mit Zertifikat forging-Funktionen