Esegui ricerche nel contesto dell'entità

Supportata in:

La funzionalità Contesto 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 di eventi standard Unified Data Model (UDM), questa funzionalità risponde alla necessità di eseguire ricerche oltre i dati sugli eventi UDM, incluso il contesto delle entità UDM, e fornisce informazioni più approfondite sugli incidenti di sicurezza.

Vantaggi principali

  • Gli analisti della sicurezza e i threat hunter possono eseguire query sulle informazioni contestuali relative alle entità.
  • Facilitare l'analisi delle cause principali, la ricerca delle minacce e la network forensics.
  • 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 dai 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 generale 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à, ad esempio 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 componenti secondari come Tendenza nel tempo, Filtro snapshot, Aggregazioni ed Eventi. Le entità sono suddivise in entità con data ed entità senza data, visualizzate in schede separate.
  • Visualizza aggregati: gli aggregati vengono visualizzati per i campi, in modo simile alla ricerca di eventi UDM. Le aggregazioni sono ulteriormente suddivise in tipi di contesto: contesto dell'entità, contesto derivato e contesto globale.

Interfaccia dei risultati di ricerca di Entity Context Graph

L'interfaccia dei risultati di ricerca del grafico di contesto delle entità (ECG) fornisce diverse schede per aiutarti ad analizzare i dati di contesto delle entità:

  • Scheda Risultati: mostra Timed Data e Timeless Data.

    • Dati temporizzati: mostra le entità che avevano un valore per metadata.interval.end_time durante l'importazione.
    • Dati senza tempo: mostra le entità che non avevano un valore per metadata.interval.end_time.

    L'interfaccia mostra le entità con o senza un intervallo di tempo, fino al numero massimo di risultati configurato.

  • 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 all'interno di ogni bucket temporale. Puoi utilizzare il cursore per aumentare o diminuire lo zoom dell'intervallo di tempo.

    • Entità modificate totali: l'Entity Context Graph (ECG) archivia i dati in bucket temporali entro il loro periodo di validità. Inoltre, copia questi dati nel bucket temporale successivo, a condizione che l'entità rimanga valida (in base a end_time). Questo grafico si aggiorna ogni volta che una proprietà dell'entità cambia tra due bucket temporali.

Caso d'uso: indaga su un account utente compromesso

Considera il seguente scenario: un analista della sicurezza deve indagare su un account utente potenzialmente compromesso (email@company.com). Segui questi passaggi per esaminare il problema:

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

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

  3. Esegui query: utilizza Contesto dell'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 i nomi host, gli indirizzi IP e gli 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. Aggregati di recensioni: identifica pattern e anomalie nei dati di contesto delle entità, distribuiti in Contesto entità, Contesto derivato e Contesto globale.

Per cercare i dati di 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 di 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 gli asset, Mail_id per gli utenti, File_name per gli hash/file e Domain_name e IP_address per i domini.

Esempi di contesto dell'entità nella ricerca

Questa sezione fornisce esempi pratici per l'utilizzo della funzionalità Contesto 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 dell'ora mostra i dati attivi all'interno del grafico delle entità, non quando i dati di contesto sono stati importati.

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

Esempio: Visualizza ENTITY_TYPE distinti

Per espandere la ricerca di entità UDM, puoi includere l'origine 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: perfeziona 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 come la 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 asset che hanno eseguito l'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 di contesto delle entità con i timestamp first_seen e last_seen:

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

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

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)

Domini rilevati 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 di 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

ENTITY_TYPES derivato di IP_ADDRESS può rappresentare entità interne o esterne.

La seguente ricerca di statistiche delle entità UDM identifica i IP_ADDRESSES osservati di recente e utilizza 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 di 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 di entità UDM identifica i nomi di dominio osservati raramente. Questi domini sono associati nello specifico a un massimo di un asset distinto al giorno, durante la finestra temporale della query (day_max = 1), e a un massimo di un asset distinto nei 10 giorni precedenti (rolling_max = 1).

Questo pattern è utile per rilevare i domini con un'interazione limitata 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 trasformarla in una ricerca aggregata di statistiche delle entità UDM 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 dell'entità nella ricerca in Google SecOps, in base alle fonti 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 entità

Utilizza i campi delle entità per creare tabelle pivot ed esplorare i dati correlati. Esempi di campi pivot:

  • 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 degli accessi

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

Le seguenti fonti forniscono dati di contesto globali:

Dati di contesto globali Dove un utente può visualizzare o interagire con questi dati Chi può vederlo
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 intelligence open source (OPEN_SOURCE_INTEL_IOC) - Ricerca
- Regole
Tutti gli utenti
Mandiant Fusion IoC (MANDIANT_FUSION_IOC) - Ricerca
- Regole
- Minacce emergenti
Tutti gli utenti

Limitazioni

  • Limiti di volume: limite di 1 milione di risultati cumulativi per i dati con e senza data.
  • Dati di contesto globali: esiste un limite di 50 righe per i dati di contesto globali sensibili, come UPPERCASE_VT_PROTECTED, MANDIANT_FUSION_IOC e VIRUS_TOTAL_CONNECTIONS.
  • Coerenza dei dati: i dati relativi all'ultimo rilevamento possono subire un ritardo fino a 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, prevalenza bassa e mappa termica.
    • Non puoi unire query di contesto di entità e query di eventi.

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