Esegui una ricerca di dati del contesto delle entità

Supportato in:

La funzionalità Contesto delle entità nella ricerca migliora le indagini sulla sicurezza e la risposta agli incidenti consentendo agli utenti di cercare e visualizzare gli eventi di contesto correlati alle entità all'interno del proprio account Google Security Operations. A differenza delle ricerche limitate allo schema degli eventi Unified Data Model (UDM) standard, questa funzionalità soddisfa la necessità di cercare oltre i dati degli eventi UDM, incluso il contesto delle entità UDM, e fornisce insight più approfonditi sugli incidenti di sicurezza.

Vantaggi principali

  • Gli analisti della sicurezza e i threat hunter possono eseguire query sulle informazioni contestuali relative alle entità.
  • Aiuta l'analisi delle cause principali, la ricerca di minacce e la scienza digitale forense.
  • Gli utenti possono eseguire ricerche statistiche sul contesto delle entità per comprendere i pattern di telemetria e le entità interessate tramite l'analisi della telemetria.

Puoi utilizzare il contesto delle entità per ottenere informazioni dettagliate dai tuoi risultati di ricerca nei seguenti modi:

  • Esegui ricerche utilizzando i nomi dei campi delle entità UDM: crea le query di ricerca utilizzando i nomi dei campi delle entità UDM. Ad esempio, per trovare tutti gli eventi di contesto associati a un nome host specifico, crea una ricerca utilizzando graph.entity.hostname.
  • Accedi alla scheda Panoramica: la scheda Panoramica fornisce un riepilogo di alto livello delle entità trovate nella ricerca, sfruttando le informazioni della query inserita da un utente per visualizzare le informazioni. La pagina Panoramica mostra informazioni per i tipi di entità, come DOMAIN_NAME, IP_ADDRESS, ASSET, USER, FILE, GROUP e RESOURCE.
  • Utilizza la scheda Entità: la scheda Entità elenca tutti gli eventi di contesto delle entità ricevuti, inclusi i sottocomponenti come Tendenza nel tempo, Filtro snapshot, Aggregazioni ed Eventi. Le entità sono suddivise in entità temporizzate e senza tempo, visualizzate in schede separate.
  • Visualizza gli aggregati: gli aggregati vengono visualizzati per i campi, in modo simile alla ricerca degli eventi UDM. Le aggregazioni sono ulteriormente suddivise in tipi di contesto: Contesto delle entità, Contesto derivato e Contesto globale.

Search Console del grafico del contesto delle entità

Search Console del grafico del contesto delle entità (ECG) fornisce diverse schede per aiutarti ad analizzare i dati del contesto delle entità:

  • Scheda Risultati: mostra Timed Data e Timeless Data.

    • Timed Data: mostra le entità che avevano un valore per metadata.interval.end_time durante l'importazione.
    • Timeless Data: mostra le entità che non avevano un valore per metadata.interval.end_time.

    Search Console mostra un massimo di 10.000 voci di dati temporizzati o senza tempo.

  • Scheda Avvisi: mostra tutti gli avvisi associati alle entità trovate nella ricerca.

  • Scheda Panoramica: presenta informazioni sull'entità nella query di ricerca.

  • Grafico Attività nel tempo:

    • Mostra il numero di Entità e il Contesto delle entità validi in ogni bucket di tempo. Puoi utilizzare il cursore per ingrandire o ridurre l'intervallo di tempo.

    • Entità totali modificate: il grafico del contesto delle entità (ECG) archivia i dati in bucket di tempo all'interno del periodo di validità. Copia anche questi dati nel bucket di tempo successivo, a condizione che l'entità rimanga valida (in base a end_time). Questo grafico viene aggiornato ogni volta che una proprietà di un'entità cambia tra due bucket di tempo.

Caso d'uso: esaminare un account utente compromesso

Considera il seguente scenario: un analista della sicurezza deve esaminare un account utente potenzialmente compromesso (email@azienda.com). Segui questi passaggi per eseguire l'indagine:

  1. Identifica l'utente compromesso: un avviso segnala che l'indirizzo email dell'utente email@company.com è stato identificato come account sospetto.

  2. Raccogli informazioni sul contesto delle entità: raccogli dati contestuali sull'utente per comprendere l'ambito e l'impatto.

  3. Esegui query: utilizza Contesto delle entità nella ricerca per eseguire le seguenti query:

    • graph.entity.user.email_addresses = "email@company.com" per recuperare informazioni sull'utente.
    • graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context" per controllare il nome del prodotto e altri metadati.
  4. Analizza la scheda Panoramica: la scheda Panoramica mostra il riepilogo dell'entità per l'utente, tra cui:

    • Controlla i timestamp First Seen Hour e Last Seen Hour.
  • Esamina nomi host, indirizzi IP e indirizzi MAC (se disponibili).
  • Ispeziona il modello hardware, la piattaforma del sistema operativo e la versione della piattaforma.
  1. Esamina la scheda Eventi: visualizza gli eventi associati a questo utente, inclusi i tentativi di accesso e le anomalie.

  2. Esamina gli aggregati: identifica pattern e anomalie nei dati del contesto delle entità, distribuiti in Contesto delle entità, Contesto derivato e Contesto globale.

Per cercare i dati del contesto delle entità, utilizza i nomi dei campi delle entità UDM nelle query di ricerca:

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

I risultati della ricerca mostrano informazioni chiave sulle entità, tra cui:

  • Metadati entità
  • Metriche (First Seen Hour, Last Seen Hour)
  • Relazioni (Entity, Direction, Entity_label, Entity_type, Relationship)
  • A seconda del tipo di entità, campi specifici, come Principal_ip per le risorse, Mail_id per gli utenti, File_name per gli hash/file e Domain_name e IP_address per i domini.

Esempi di contesto delle entità nella ricerca

Questa sezione fornisce esempi pratici per creare la funzionalità Contesto delle entità UDM per analizzare le statistiche delle entità.

Per visualizzare le origini e i tipi di contesto disponibili, esegui la seguente ricerca delle statistiche delle entità UDM nella ricerca UDM:

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

Il selettore di intervallo di tempo mostra i dati attivi all'interno del grafico delle entità, non quando sono stati importati i dati di contesto.

Poiché la ricerca delle entità UDM utilizza l'interfaccia di ricerca UDM standard, puoi utilizzare funzionalità come il riquadro Aggregazioni (per visualizzare i valori massimi o minimi), la tabella dei risultati e i risultati espansi delle statistiche UDM.

Esempio: visualizzare ENTITY_TYPE distinti

Per espandere la ricerca delle entità UDM, puoi includere la sorgente log, lo spazio dei nomi e un array di risultati per mostrare i ENTITY_TYPE distinti osservati, come segue:

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

Esempio: perfezionare l'insieme di entità

Puoi perfezionare un insieme specifico di entità utilizzando la funzionalità di pivot della ricerca UDM. Questo perfezionamento genera quindi una query YARA-L simile alla seguente:

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"

Contesto derivato

Google SecOps fornisce i seguenti tipi di contesto derivato:

  • Timestamp first_seen e last_seen per ogni ENTITY_TYPE
  • Prevalence: il numero di risorse che hanno avuto accesso a un determinato ENTITY_TYPE

Timestamp First Seen Hour e Last Seen Hour

Google SecOps esegue un'analisi statistica dei dati in entrata e arricchisce i record del contesto delle entità con i timestamp first_seen e last_seen:

  • Il campo first_seen_time acquisisce l'ora in cui un'entità è stata visualizzata per la prima volta nell'ambiente del cliente.
  • Il campo last_seen_time registra l'ora dell'osservazione più recente di questa entità.

Utenti con un'ora di prima visualizzazione negli ultimi 7 giorni:

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

Domini visualizzati per la prima volta negli ultimi 7 giorni:

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)

File (hash) osservati negli ultimi 7 giorni:

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 rappresenta un hash FILE, ad esempio entity.file.hash. All'interno dell'oggetto hash, il tipo può essere uno dei seguenti:

  • md5
  • sha1
  • sha256

Per cercare un hash specifico, puoi eseguire una ricerca delle entità UDM per il tipo di hash specificato:

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

Indirizzi IP

I ENTITY_TYPES derivati di IP_ADDRESS possono rappresentare entità interne o esterne.

La seguente ricerca delle statistiche delle entità UDM identifica gli IP_ADDRESSES osservati di recente e utilizza le funzioni aggregate (nella sezione dei risultati) per contarli in base al blocco CIDR:

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))

Per esaminare ulteriormente un intervallo insolito o imprevisto, puoi eseguire una ricerca delle entità UDM:

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")

Prevalenza

La prevalenza è sempre di tipo DERIVED_CONTEXT.

La seguente ricerca delle entità UDM identifica i nomi di dominio osservati raramente. Questi domini sono associati in modo specifico a al massimo una risorsa distinta al giorno, durante la finestra temporale della query (day_max = 1) e al massimo una risorsa distinta negli ultimi 10 giorni (rolling_max = 1).

Questo pattern è utile per rilevare i domini con interazioni limitate nel tuo ambiente:

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

In alternativa, puoi trasformare questa ricerca in una ricerca delle statistiche delle entità UDM aggregate e aggregare i risultati:

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

Ricerche di base dei campi delle entità UDM

Di seguito sono riportati altri esempi di utilizzo della funzionalità Contesto delle entità nella ricerca in Google SecOps, in base alle origini disponibili:

  • 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"

Pivot dai campi delle entità

Utilizza i campi delle entità per eseguire il pivot ed esplorare i dati correlati. Esempi di campi pivot includono:

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

Informazioni sui campi dinamici

Le origini fanno riferimento a campi strutturati dinamici con prefissi, ad esempio additional. Puoi cercare questi campi all'interno degli eventi UDM.

Considerazioni sul controllo dell'accesso

Il sistema impone un limite di 50 eventi sui dati di contesto globale. Sia gli utenti globali sia quelli con ambito possono visualizzare i dati.

Le seguenti origini forniscono dati di contesto globale:

Dati di contesto globale Dove un utente può visualizzare o interagire con questi dati Chi può vederli
Navigazione sicura - Ricerca
- Regole
Tutti gli utenti
Relazioni di VirusTotal - Ricerca
- Regole
Tutti gli utenti
WHOIS - Ricerca
- Regole
Tutti gli utenti
Maiuscolo - Ricerca
- Regole
Tutti gli utenti
IOC di Open Source Intel (OPEN_SOURCE_INTEL_IOC) - Ricerca
- Regole
Tutti gli utenti
IOC di Mandiant Active Breach (MANDIANT_ACTIVE_BREACH_IOC) - Corrispondenze IOC Tutti gli utenti. I risultati vengono filtrati per gli IOC, associati agli eventi che rientrano negli ambiti di accesso ai dati dell'utente.
IOC di Mandiant Fusion (MANDIANT_FUSION_IOC) - Ricerca
- Regole
- Minacce emergenti
Tutti gli utenti

Limitazioni

  • Limiti di volume: limite di 1 milione di risultati cumulativi per i dati temporizzati e senza tempo
  • Dati di contesto globale: esiste un limite di 50 righe per i dati di contesto globale sensibili, come UPPERCASE_VT_PROTECTED, MANDIANT_ACTIVE_BREACH_IOC, MANDIANT_FUSION_IOC, e VIRUS_TOTAL_CONNECTIONS.
  • Coerenza dei dati: i dati dell'ultima visualizzazione possono avere un ritardo massimo di 2 ore. Le entità correlate possono mostrare solo un sottoinsieme delle entità elencate in un evento.
  • Funzionalità non supportate:

    • Ricerche inverse sui campi delle entità, ricerche di campi raggruppati, bassa prevalenza e mappa termica.
    • Non puoi eseguire un'unione tra le query del contesto delle entità e degli eventi.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.