Entitätskontextsuchen durchführen

Unterstützt in:

Mit dem Feature „Entitätskontext in der Suche“ können Nutzer in ihrem Google Security Operations-Konto nach Kontextereignissen suchen, die mit Entitäten verknüpft sind, und diese ansehen. So lassen sich Sicherheitsuntersuchungen und die Reaktion auf Vorfälle verbessern. Im Gegensatz zu Suchen, die auf das Standardschema für Unified Data Model-Ereignisse (UDM) beschränkt sind, können Nutzer mit diesem Feature auch über UDM-Ereignisdaten hinaus suchen, einschließlich UDM-Entitätskontext, und so detailliertere Informationen zu Sicherheitsvorfällen erhalten.

Hauptvorteile

  • Sicherheitsanalysten und Threat Hunter können Kontextinformationen zu Entitäten abfragen.
  • Unterstützung bei der Ursachenanalyse, der Suche nach Bedrohungen und der Forensik.
  • Nutzer können statistische Suchen im Entitätskontext durchführen, um Telemetriemuster und betroffene Entitäten durch Telemetrieanalysen zu ermitteln.

Sie können den Entitätskontext verwenden, um auf folgende Weise Informationen aus Ihren Suchergebnissen zu gewinnen:

  • Mit UDM-Entitätsfeldnamen suchen: Erstellen Sie Ihre Suchanfragen mit UDM-Entitätsfeldnamen. Wenn Sie beispielsweise alle Kontextereignisse finden möchten, die mit einem bestimmten Hostnamen verknüpft sind, erstellen Sie eine Suche mit graph.entity.hostname.
  • Auf den Tab „Übersicht“ zugreifen: Der Tab Übersicht enthält eine allgemeine Zusammenfassung der in Ihrer Suche gefundenen Entitäten . Dabei werden Informationen aus der Abfrage verwendet, die ein Nutzer eingibt, um Informationen anzuzeigen . Auf der Seite Übersicht werden Informationen für Entitätstypen wie DOMAIN_NAME, IP_ADDRESS, ASSET, USER, FILE, GROUP und RESOURCE angezeigt.
  • Den Tab „Entität“ verwenden: Auf dem Tab Entität werden alle empfangenen Entitätskontextereignisse aufgeführt, einschließlich Unterkomponenten wie „Trend im Zeitverlauf“, „Snapshot-Filter“, „Aggregationen“ und „Ereignisse“. Die Entitäten werden in zeitbezogene und zeitunabhängige Entitäten kategorisiert und auf separaten Tabs angezeigt.
  • Aggregate ansehen: Aggregate werden für Felder angezeigt, ähnlich wie bei der UDM Ereignissuche. Die Aggregationen werden weiter in Kontexttypen unterteilt: Entitätskontext, abgeleiteter Kontext und globaler Kontext.

Benutzeroberfläche für Suchergebnisse im Entitätskontextdiagramm

Die Benutzeroberfläche für Suchergebnisse im Entitätskontextdiagramm (Entity Context Graph, ECG) bietet mehrere Tabs, mit denen Sie Entitätskontextdaten analysieren können:

  • Tab „Ergebnisse“: Hier werden Timed Data und Timeless Data angezeigt.

    • Zeitbezogene Daten: Hier werden Entitäten angezeigt, die während der Erfassung einen Wert für metadata.interval.end_time hatten.
    • Zeitunabhängige Daten: Hier werden Entitäten angezeigt, die keinen Wert für metadata.interval.end_time hatten.

    Auf der Benutzeroberfläche werden zeitbezogene oder zeitunabhängige Entitäten bis zur konfigurierten maximalen Anzahl von Ergebnissen angezeigt.

  • Tab „Benachrichtigungen“: Hier werden alle Benachrichtigungen angezeigt, die mit den in der Suche gefundenen Entitäten verknüpft sind.

  • Tab „Übersicht“: Hier werden Informationen zur Entität in der Suchanfrage angezeigt.

  • Diagramm „Aktivität im Zeitverlauf“:

    • Hier werden die Anzahl der Entitäten und der Entitätskontext angezeigt, die in jedem Zeitintervall gültig sind. Mit dem Schieberegler können Sie den Zeitraum vergrößern oder verkleinern.

    • Gesamtzahl der geänderten Entitäten: Im Entitätskontextdiagramm (Entity Context Graph, ECG) werden Daten in Zeitintervallen innerhalb ihres Gültigkeitszeitraums gespeichert. Diese Daten werden auch in das nächste Zeitintervall kopiert, sofern die Entität gültig bleibt (basierend auf end_time). Dieses Diagramm wird immer aktualisiert, wenn sich eine Entitätseigenschaft zwischen zwei Zeitintervallen ändert.

Anwendungsfall: Kompromittiertes Nutzerkonto untersuchen

Angenommen, ein Sicherheitsanalyst muss ein potenziell kompromittiertes Nutzerkonto (email@company.com) untersuchen. Führen Sie die folgenden Schritte aus, um die Untersuchung durchzuführen:

  1. Kompromittierten Nutzer identifizieren: Eine Benachrichtigung weist darauf hin, dass die E‑Mail-Adresse email@company.com als verdächtiges Konto identifiziert wurde.

  2. Informationen zum Entitätskontext erfassen: Rufen Sie Kontextdaten zum Nutzer ab, um den Umfang und die Auswirkungen zu ermitteln.

  3. Abfragen ausführen: Verwenden Sie Entitätskontext in der Suche, um die folgenden Abfragen auszuführen:

    • graph.entity.user.email_addresses = "email@company.com" zum Abrufen von Informationen zum Nutzer.
    • graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context" zum Prüfen des Produktnamens und anderer Metadaten.
  4. Tab „Übersicht“ analysieren: Auf dem Tab Übersicht wird die Entitätszusammenfassung für den Nutzer angezeigt, einschließlich:

    • Prüfen Sie die Zeitstempel First Seen Hour und Last Seen Hour.
  • Prüfen Sie Hostnamen, IP-Adressen und MAC-Adressen (falls verfügbar).
  • Prüfen Sie das Hardwaremodell, die Betriebssystemplattform und die Plattformversion.
  1. Tab „Ereignisse“ prüfen: Sehen Sie sich die zugehörigen Ereignisse für diesen Nutzer an, einschließlich Anmeldeversuchen und Anomalien.

  2. Aggregate prüfen: Ermitteln Sie Muster und Anomalien in den Entitätskontextdaten, die in Entitätskontext, abgeleiteten Kontext und globalen Kontext unterteilt sind.

Wenn Sie nach Entitätskontextdaten suchen möchten, verwenden Sie in Ihren Suchanfragen UDM-Entitätsfeldnamen:

  • graph.entity.hostname
  • graph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"

Die Suchergebnisse enthalten wichtige Informationen zu den Entitäten, darunter:

  • Entitätsmetadaten
  • Messwerte (First Seen Hour, Last Seen Hour)
  • Beziehungen (Entity, Direction, Entity_label, Entity_type, Relationship)
  • Je nach Entitätstyp bestimmte Felder wie Principal_ip für Assets, Mail_id für Nutzer, File_name für Hashes/Dateien und Domain_name und IP_address für Domains.

Beispiele für Entitätskontext in der Suche

In diesem Abschnitt finden Sie praktische Beispiele für die Nutzung des UDM-Features „Entitätskontext“ zur Analyse von Entitätsstatistiken.

Wenn Sie verfügbare Kontextquellen und ‑typen aufrufen möchten, führen Sie in der UDM-Suche die folgende Suche nach UDM-Entitätsstatistiken aus:

graph.metadata.source_type = $sourceType
graph.metadata.entity_type = $entityType
match:
  $sourceType, $entityType
outcome:
  $total = count(graph.metadata.product_entity_id)
order:
  $sourceType, $total desc
limit:
  100

In der Zeitauswahl werden aktive Daten im Entitätsdiagramm angezeigt, nicht der Zeitpunkt, zu dem die Kontextdaten erfasst wurden.

Da bei der UDM-Entitätssuche die Standardschnittstelle der UDM-Suche verwendet wird, können Sie Funktionen wie den Bereich Aggregationen (zum Aufrufen der höchsten oder niedrigsten Werte), die Ergebnistabelle und die erweiterten Ergebnisse der UDM-Statistiken verwenden.

Beispiel: Unterschiedliche ENTITY_TYPE ansehen

Um die UDM-Entitätssuche zu erweitern, können Sie die Protokollquelle, den Namespace und ein Ergebnisarray einbeziehen, um die verschiedenen beobachteten ENTITY_TYPE anzuzeigen:

graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper(graph.metadata.event_metadata.base_labels.log_types)
$namespace = strings.to_upper(graph.metadata.event_metadata.base_labels.namespaces)
match:
  $logType, $namespace
outcome:
  $total = count(graph.metadata.product_entity_id)
  $entityTypes = array_distinct(graph.metadata.entity_type)
order:
  $logType, $total desc
limit:
  100

Beispiel: Entitätssatz verfeinern

Mit dem Pivot-Feature der UDM-Suche können Sie einen bestimmten Satz von Entitäten verfeinern. Durch diese Verfeinerung wird dann eine YARA-L-Abfrage wie die folgende generiert:

graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper( graph.metadata.event_metadata.base_labels.log_types )
$namespace = strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces )
AND strings.to_upper( graph.metadata.event_metadata.base_labels.log_types ) = "WINDOWS_AD"
AND strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces ) = "ACME"

Abgeleiteter Kontext

Google SecOps bietet die folgenden Arten von abgeleitetem Kontext:

  • Zeitstempel first_seen und last_seen für jeden ENTITY_TYPE
  • Prevalence: Die Anzahl der Assets, die auf einen bestimmten ENTITY_TYPE zugegriffen haben

Zeitstempel First Seen Hour und Last Seen Hour

Google SecOps führt eine statistische Analyse der eingehenden Daten durch und ergänzt Entitätskontextdatensätze mit den Zeitstempeln first_seen und last_seen:

  • Im Feld first_seen_time wird die Stunde erfasst, in der eine Entität zum ersten Mal in der Kundenumgebung gesehen wurde.
  • Im Feld last_seen_time wird die Stunde der letzten Beobachtung dieser Entität erfasst.

Nutzer mit einer „First Seen Hour“ in den letzten 7 Tagen:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "USER"
graph.entity.user.userid != ""
graph.entity.user.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)

Domains, die in den letzten 7 Tagen zum ersten Mal gesehen wurden:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/
graph.entity.domain.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)

Dateien (Hashes), die in den letzten 7 Tagen beobachtet wurden:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "FILE"
//graph.entity.file.md5 != ""
//graph.entity.file.sha1 != ""
graph.entity.file.sha256 != ""
graph.entity.file.first_seen_time.hours >= timestamp.current_hours() - (86400 * 7)

Der ENTITY_TYPE stellt einen FILE-Hash dar, z. B. entity.file.hash. Im hash-Objekt kann der Typ einer der folgenden sein:

  • md5
  • sha1
  • sha256

Wenn Sie nach einem bestimmten Hash suchen möchten, können Sie eine UDM-Entitätssuche für den angegebenen Hash-Typ ausführen:

// This will search ENTITY, DERIVED, and GLOBAL Source Types
graph.metadata.entity_type = "FILE"
graph.entity.file.sha256 = "eb5db1feadda5351c3b8fc0770e9f4c173484df5dc4a785bd1bdce7806a9e498"

IP-Adressen

Abgeleitete ENTITY_TYPES von IP_ADDRESS können interne oder externe Entitäten darstellen.

Die folgende Suche nach UDM-Entitätsstatistiken identifiziert kürzlich beobachtete IP_ADDRESSES und verwendet Aggregatfunktionen (im Ergebnisbereich), um sie nach CIDR-Block zu zählen:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
//note, for IP addresses the first seen is under artifact, not ip
graph.entity.artifact.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
outcome:
  $total = count(graph.metadata.product_entity_id)
  $classA = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.0.0.0/8"),1,0))
  $classB = sum(if(net.ip_in_range_cidr(graph.entity.ip, "172.16.0.0/12"),1,0))
  $classC = sum(if(net.ip_in_range_cidr(graph.entity.ip, "192.168.0.0/16"),1,0))
  $classD = sum(if(net.ip_in_range_cidr(graph.entity.ip, "224.0.0.0/4"),1,0))
  // we shouldn't see results here…
  $classE = sum(if(net.ip_in_range_cidr(graph.entity.ip, "240.0.0.0/4"),1,0))
  $thisNetwork = sum(if(net.ip_in_range_cidr(graph.entity.ip, "0.0.0.0/8"),1,0))
  $loopback = sum(if(net.ip_in_range_cidr(graph.entity.ip, "127.0.0.0/8"),1,0))
  $linklocal = sum(if(net.ip_in_range_cidr(graph.entity.ip, "169.254.0.0/16"),1,0))
  $benchmark = sum(if(net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15"),1,0))
  $cgnat = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.64.0.0/10"),1,0))

Wenn Sie einen ungewöhnlichen oder unerwarteten Bereich weiter untersuchen möchten, können Sie eine UDM-Entitätssuche ausführen:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15")

Verbreitung

Die Verbreitung ist immer vom Typ DERIVED_CONTEXT.

Die folgende UDM-Entitätssuche identifiziert Domainnamen, die selten beobachtet werden. Diese Domains sind während des Zeitraums der Abfrage (day_max = 1) jeweils maximal einem eindeutigen Asset pro Tag und über die letzten 10 Tage (rolling_max = 1) maximal einem eindeutigen Asset zugeordnet.

Dieses Muster ist nützlich, um Domains mit begrenzter Interaktion in Ihrer Umgebung zu erkennen:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return specific TLDs where the FQDN is more than X characters
//graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
graph.entity.domain.prevalence.rolling_max = 1
graph.entity.domain.prevalence.day_max = 1

Alternativ können Sie dies in eine aggregierte Suche nach UDM-Entitätsstatistiken umwandeln und die Ergebnisse aggregieren:

graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
$domain = graph.entity.domain.name
$length = strings.length(graph.entity.domain.name)
$tld = strings.extract_domain(graph.entity.domain.name)
graph.entity.domain.prevalence.day_max = 1
graph.entity.domain.prevalence.rolling_max = 1
match:
  $domain, $tld, $length
limit:
  10

Einfache Suchen nach UDM-Entitätsfeldern

Hier sind weitere Beispiele für die Verwendung des Features „Entitätskontext in der Suche“ in Google SecOps, basierend auf verfügbaren Quellen:

  • graph.entity.hostname
  • graph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"
  • principal.ip
  • principal.hostname="baz"
  • principal.ip="1.2.3.4"
  • network.dns.questions.name="youtube.com"

Pivotierung von Entitätsfeldern

Verwenden Sie Entitätsfelder, um zu pivotieren und verwandte Daten zu untersuchen. Beispiele für Pivot-Felder:

  • network.email.to
  • network.email.cc
  • principal.process.file.fileMetadata.pe.importHash
  • principal.process.file.sha256
  • network.dns.questions.name

Informationen zu dynamischen Feldern

Die Quellen verweisen auf dynamische strukturierte Felder mit Präfixen wie additional. Sie können in UDM-Ereignissen nach diesen Feldern suchen.

Hinweise zur Zugriffssteuerung

Das System legt ein Limit von 50 Ereignissen für globale Kontextdaten fest. Sowohl globale als auch eingeschränkte Nutzer können die Daten sehen.

Die folgenden Quellen liefern globale Kontextdaten:

Globale Kontextdaten Wo ein Nutzer diese Daten sehen oder damit interagieren kann Wer sie sehen kann
Safe Browsing - Suche
- Regeln
Alle Nutzer
VirusTotal-Beziehungen - Suche
- Regeln
Alle Nutzer
WHOIS - Suche
- Regeln
Alle Nutzer
Großbuchstabe - Suche
- Regeln
Alle Nutzer
Open Source Intel IOC (OPEN_SOURCE_INTEL_IOC) - Suche
- Regeln
Alle Nutzer
Mandiant Fusion IoC (MANDIANT_FUSION_IOC) - Suche
- Regeln
- Aufkommende Bedrohungen
Alle Nutzer

Beschränkungen

  • Volumenlimits: Limit von 1 Million für kumulative Ergebnisse für zeitbezogene und zeitunabhängige Daten.
  • Globale Kontextdaten: Für sensible globale Kontextdaten wie UPPERCASE_VT_PROTECTED, MANDIANT_FUSION_IOC und VIRUS_TOTAL_CONNECTIONS gilt ein Limit von 50 Zeilen.
  • Datenkonsistenz: Die Daten zu „Last Seen“ können bis zu 2 Stunden verzögert sein. Bei verknüpften Entitäten wird möglicherweise nur eine Teilmenge der in einem Ereignis aufgeführten Entitäten angezeigt.
  • Nicht unterstützte Funktionen:

    • Reverse-Lookups für Entitätsfelder, gruppierte Feldsuchen, geringe Verbreitung und Heatmap.
    • Sie können keine Joins zwischen Entitätskontext- und Ereignisabfragen verwenden.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten