Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
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.
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:
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.
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:
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.
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:
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.
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:
Graph-Instanz (Beispiel):
In diesem Beispiel werden lokale Active Directory-Angriffspfade und potenzielle Sicherheitsrisiken in einer herkömmlichen Windows-Domänenumgebung veranschaulicht.
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 |