Entitätskontext-Suchen durchführen
Mit der Funktion „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 Suchvorgängen, die auf das Standard-UDM-Ereignisschema (Unified Data Model) beschränkt sind, wird mit dieser Funktion die Notwendigkeit berücksichtigt, über UDM-Ereignisdaten hinaus zu suchen, einschließlich des UDM-Entitätskontexts, und tiefere Einblicke in Sicherheitsvorfälle zu erhalten.
Hauptvorteile
- Sicherheitsanalysten und Threat Hunter können Kontextinformationen zu Entitäten abfragen.
- Unterstützung bei der Ursachenanalyse, der Suche nach Bedrohungen und der forensischen Analyse
- 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 nutzen, um auf folgende Weise Statistiken aus Ihren Suchergebnissen zu erhalten:
- 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 bietet eine allgemeine Zusammenfassung der in Ihrer Suche gefundenen Einheiten. Dabei werden Informationen aus der Suchanfrage 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. - Tab „Entität“ verwenden: Auf dem Tab Entität werden alle empfangenen Ereignisse mit Entitätskontext aufgeführt, einschließlich Unterkomponenten wie „Trend im Zeitverlauf“, „Snapshot-Filter“, „Aggregationen“ und „Ereignisse“. Die Entitäten werden in zeitbezogene und zeitlose Entitäten unterteilt, die auf separaten Tabs angezeigt werden.
- Aggregate ansehen: Aggregate werden für Felder angezeigt, ähnlich wie bei der UDM-Ereignissuche. Die Aggregationen werden weiter in Kontexttypen unterteilt: Entity Context, Derived Context und Global Context.
Kontextdiagramm für Entitäten in der Search Console
Die Search Console für den Entity Context Graph (ECG) bietet mehrere Tabs, mit denen Sie Kontextdaten von Entitäten analysieren können:
Tab „Ergebnisse“: Hier werden
Timed DataundTimeless Dataangezeigt.- Zeitbezogene Daten: Hier werden Entitäten angezeigt, für die bei der Aufnahme ein Wert für
metadata.interval.end_timevorhanden war. - Zeitlose Daten: Hier werden Einheiten angezeigt, für die kein Wert für
metadata.interval.end_timevorhanden war.
In der Search Console werden maximal 10.000 zeitbezogene oder zeitlose Dateneinträge angezeigt.
- Zeitbezogene Daten: Hier werden Entitäten angezeigt, für die bei der Aufnahme ein Wert für
Tab „Benachrichtigungen“: Hier werden alle Benachrichtigungen zu den in der Suche gefundenen Entitäten angezeigt.
Tab „Übersicht“: Hier werden Informationen zur Entität in der Suchanfrage angezeigt.
Diagramm „Aktivität im Zeitverlauf“:
Hier sehen Sie die Anzahl der Entitäten und den Entitätskontext, die in den einzelnen Zeiträumen gültig sind. Mit dem Schieberegler können Sie den Zeitraum vergrößern oder verkleinern.
Insgesamt geänderte Entitäten: Im Entity Context Graph (ECG) werden Daten in Zeiträumen innerhalb ihres Gültigkeitszeitraums gespeichert. Die Daten werden auch in den nächsten Zeitabschnitt kopiert, sofern die Einheit gültig bleibt (basierend auf
end_time). Dieses Diagramm wird aktualisiert, wenn sich eine Attribut einer Einheit zwischen zwei Zeitabschnitten ändert.
Anwendungsfall: Kompromittiertes Nutzerkonto untersuchen
Stellen Sie sich das folgende Szenario vor: Ein Sicherheitsanalyst muss ein potenziell kompromittiertes Nutzerkonto (email@company.com) untersuchen. So gehen Sie vor:
Gehackten Nutzer identifizieren: Eine Benachrichtigung weist darauf hin, dass der Nutzer mit der E‑Mail-Adresse email@company.com als verdächtiges Konto identifiziert wurde.
Kontextinformationen zu Entitäten erfassen: Kontextdaten zum Nutzer abrufen, um den Umfang und die Auswirkungen zu verstehen.
Abfragen ausführen: Verwenden Sie Entitätskontext in der Suche, um die folgenden Abfragen auszuführen:
graph.entity.user.email_addresses = "email@company.com", um Informationen über den Nutzer abzurufen.graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context", um den Produktnamen und andere Metadaten zu prüfen.
Tab „Übersicht“ analysieren: Auf dem Tab Übersicht wird die Zusammenfassung der Einheit für den Nutzer angezeigt, einschließlich:
- Prüfen Sie die Zeitstempel von
First Seen HourundLast Seen Hour.
- Prüfen Sie die Zeitstempel von
- Prüfen Sie Hostnamen, IP-Adressen und MAC-Adressen (falls verfügbar).
- Hardwaremodell, Betriebssystemplattform und Plattformversion prüfen.
Tab „Ereignisse“ aufrufen: Hier können Sie die zugehörigen Ereignisse für diesen Nutzer ansehen, einschließlich Anmeldeversuchen und Anomalien.
Zusammenfassungen von Rezensionen: Muster und Anomalien in Kontextdaten von Entitäten erkennen, die in „Entitätenkontext“, „Abgeleiteter Kontext“ und „Globaler Kontext“ unterteilt sind.
Beispiele für Suchanfragen
Wenn Sie nach Daten zum Entitätskontext 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 sind bestimmte Felder erforderlich, z. B.
Principal_ipfür Assets,Mail_idfür Nutzer,File_namefür Hashes/Dateien sowieDomain_nameundIP_addressfür Domains.
Beispiele für den Entitätskontext in der Suche
In diesem Abschnitt finden Sie praktische Beispiele für die Analyse von Entitätsstatistiken mit der Funktion „UDM Entity Context“.
UDM-Entitätsstatistiken durchsuchen
Wenn Sie verfügbare Kontextquellen und ‑typen aufrufen möchten, führen Sie die folgende Suche nach UDM Entity-Statistiken in UDM Search 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 Entity Graph angezeigt, nicht der Zeitpunkt, zu dem die Kontextdaten aufgenommen wurden.
Da für die UDM Entity Search die standardmäßige UDM Search-Benutzeroberfläche verwendet wird, können Sie Funktionen wie den Bereich Aggregations (zum Anzeigen der höchsten oder niedrigsten Werte), die Ergebnistabelle und die erweiterten Ergebnisse von UDM Stats nutzen.
Beispiel: „View distinct ENTITY_TYPE“
Um die UDM-Entitätssuche zu erweitern, können Sie die Protokollquelle, den Namespace und ein Ergebnis-Array einfügen, um die beobachteten unterschiedlichen ENTITY_TYPEs so darzustellen:
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 der Pivot-Funktion 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:
first_seen- undlast_seen-Zeitstempel für jedeENTITY_TYPEPrevalence: Die Anzahl der Assets, die auf eine bestimmteENTITY_TYPEzugegriffen haben.
First Seen Hour- und Last Seen Hour-Zeitstempel
Google SecOps führt statistische Analysen für eingehende Daten durch und reichert Datensätze zum Kontext von Entitäten mit first_seen- und last_seen-Zeitstempeln an:
- 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 aufgezeichnet.
Nutzer mit einer ersten Sichtbarkeitsstunde in den letzten 7 Tagen:
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)
In den letzten 7 Tagen beobachtete Datei (Hashes):
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)
ENTITY_TYPE steht für einen FILE-Hash, 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 Einheiten darstellen.
Mit der folgenden Suche nach UDM Entity Stats werden kürzlich beobachtete IP_ADDRESSES identifiziert und mit Aggregatfunktionen (im Ergebnisbereich) nach CIDR-Block gezählt:
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 genauer untersuchen möchten, können Sie eine UDM-Entitätssuche durchfü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 Häufigkeit ist immer vom Typ DERIVED_CONTEXT.
Mit der folgenden UDM-Entitätssuche werden Domainnamen ermittelt, die selten beobachtet werden. Diese Domains sind im Abfragezeitraum (day_max = 1) maximal einem eindeutigen Asset pro Tag und in den letzten 10 Tagen (rolling_max = 1) maximal einem eindeutigen Asset zugeordnet.
Dieses Muster ist nützlich, um Domains mit eingeschränkter 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 eine aggregierte Suche nach UDM-Entitätsstatistiken durchführen 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 Suche nach UDM-Entitätsfeldern
Hier sind weitere Beispiele für die Verwendung der Funktion „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 anhand von Entitätsfeldern
Mit Attributfeldern können Sie verwandte Daten analysieren. Beispiele für Pivot-Felder:
network.email.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.dns.questions.name
Dynamische Felder
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 kann es sehen? |
|---|---|---|
| Safe Browsing | – Suche – Regeln |
Alle Nutzer*innen |
| VirusTotal Relationships | – Suche – Regeln |
Alle Nutzer*innen |
| WHOIS | – Suche – Regeln |
Alle Nutzer*innen |
| Großbuchstaben | – Suche – Regeln |
Alle Nutzer*innen |
Open Source Intel – IOC (OPEN_SOURCE_INTEL_IOC) |
– Suche – Regeln |
Alle Nutzer*innen |
Mandiant Fusion IoC (MANDIANT_FUSION_IOC) |
– „Suche“ „Regeln“ „Aufkommende Bedrohungen“ |
Alle Nutzer*innen |
Beschränkungen
- Volumenbeschränkungen: Für kumulative Ergebnisse für zeitbezogene und zeitlose Daten gilt ein Limit von 1 Million.
- Globale Kontextdaten: Für sensible globale Kontextdaten wie
UPPERCASE_VT_PROTECTED,MANDIANT_FUSION_IOCundVIRUS_TOTAL_CONNECTIONSgilt ein Limit von 50 Zeilen. - Datenkonsistenz: Die Daten zum letzten Aufruf können bis zu 2 Stunden verzögert sein. Bei verknüpften Entitäten kann nur eine Teilmenge der in einem Ereignis aufgeführten Entitäten angezeigt werden.
Nicht unterstützte Funktionen:
- Rückwärtssuchen in Entitätsfeldern, gruppierte Feldersuchen, geringe Häufigkeit und Heatmap.
- Sie können keine Joins zwischen Entitätskontext und Ereignisabfragen erstellen.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten