Entitätskontextsuchen durchführen
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.
Entitätskontext in der Suche verwenden
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,GROUPundRESOURCEangezeigt. - 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 DataundTimeless Dataangezeigt.- Zeitbezogene Daten: Hier werden Entitäten angezeigt, die während der Erfassung einen Wert für
metadata.interval.end_timehatten. - Zeitunabhängige Daten: Hier werden Entitäten angezeigt, die keinen Wert für
metadata.interval.end_timehatten.
Auf der Benutzeroberfläche werden zeitbezogene oder zeitunabhängige Entitäten bis zur konfigurierten maximalen Anzahl von Ergebnissen angezeigt.
- Zeitbezogene Daten: Hier werden Entitäten angezeigt, die während der Erfassung einen Wert für
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:
Kompromittierten Nutzer identifizieren: Eine Benachrichtigung weist darauf hin, dass die E‑Mail-Adresse email@company.com als verdächtiges Konto identifiziert wurde.
Informationen zum Entitätskontext erfassen: Rufen Sie Kontextdaten zum Nutzer ab, um den Umfang und die Auswirkungen zu ermitteln.
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.
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 HourundLast Seen Hour.
- Prüfen Sie die Zeitstempel
- Prüfen Sie Hostnamen, IP-Adressen und MAC-Adressen (falls verfügbar).
- Prüfen Sie das Hardwaremodell, die Betriebssystemplattform und die Plattformversion.
Tab „Ereignisse“ prüfen: Sehen Sie sich die zugehörigen Ereignisse für diesen Nutzer an, einschließlich Anmeldeversuchen und Anomalien.
Aggregate prüfen: Ermitteln Sie Muster und Anomalien in den Entitätskontextdaten, die in Entitätskontext, abgeleiteten Kontext und globalen Kontext unterteilt sind.
Beispiele für Suchanfragen
Wenn Sie nach Entitätskontextdaten suchen möchten, verwenden Sie in Ihren Suchanfragen UDM-Entitätsfeldnamen:
graph.entity.hostnamegraph.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_ipfür Assets,Mail_idfür Nutzer,File_namefür Hashes/Dateien undDomain_nameundIP_addressfü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.
UDM-Entitätsstatistiken suchen
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_seenundlast_seenfür jedenENTITY_TYPE Prevalence: Die Anzahl der Assets, die auf einen bestimmtenENTITY_TYPEzugegriffen 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_timewird die Stunde erfasst, in der eine Entität zum ersten Mal in der Kundenumgebung gesehen wurde. - Im Feld
last_seen_timewird 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:
md5sha1sha256
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.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"principal.ipprincipal.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.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.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_IOCundVIRUS_TOTAL_CONNECTIONSgilt 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