Utilizzare i dati di Sensitive Data Protection nelle analisi sensibili al contesto

Questo documento mostra come utilizzare i dati contestuali delle entità di Sensitive Data Protection e di origini log aggiuntive per ottenere una comprensione contestuale dell'impatto e della portata di una potenziale minaccia durante l'esecuzione di un'indagine.

Il caso d'uso descritto in questo documento rileva l'esecuzione di un file dannoso da parte di un utente (MITRE ATT&CK Technique T1204.002) e se l'utente ha accesso anche a dati sensibili altrove sulla rete.

Questo esempio richiede che i seguenti dati siano stati importati e normalizzati in Google Security Operations:

  • Dati sull'attività utente utilizzando i log di rete ed EDR.
  • Relazioni di risorse da origini dati come Google Cloud IAM Analysis.
  • Log di Sensitive Data Protection che contengono etichette sul tipo e sulla sensibilità dei dati archiviati.

Google Security Operations deve essere in grado di analizzare i dati non elaborati in record di eventi e entità Unified Data Model (UDM).

Per informazioni sull'importazione di dati di Sensitive Data Protection in Google Security Operations, consulta Esportazione di dati di Sensitive Data Protection nelle operazioni di sicurezza di Google.

Dati di Analisi Google Cloud IAM

I dati del log di Google Cloud IAM Analysis in questo esempio identificano gli utenti dell'organizzazione e acquisiscono le relazioni che ciascun utente ha con gli altri sistemi sulla rete. Di seguito è riportato uno snippet di un log di analisi IAM archiviato come record di entità UDM. Archivia le informazioni sull'utente, mikeross, che amministra una tabella BigQuery denominata analytics:claim.patients.

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP IAM Analysis"
metadata.entity_type: "USER"
entity.user.userid: "mikeross"
relations[2].entity.resource.name: "analytics:claim.patients"
relations[2].entity.resource.resource_type: "TABLE"
relations[2].entity_type: "RESOURCE"
relations[2].relationship: "ADMINISTERS"

Dati di Sensitive Data Protection

I dati di log di Sensitive Data Protection in questo esempio archiviano le informazioni su una tabella BigQuery. Di seguito è riportato uno snippet di un log di Sensitive Data Protection archiviato come record di entità UDM. Rappresenta la tabella BigQuery denominata analytics:claim.patients con l'etichetta Predicted InfoType US_SOCIAL_SECURITY_NUMBER, a indicare che nella tabella sono memorizzati i codici fiscali degli Stati Uniti.

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP DLP CONTEXT"
metadata.entity_type: "RESOURCE"
metadata.description: "RISK_HIGH"
entity.resource.resource_type: "TABLE"
entity.resource.resource_subtype: "BigQuery Table"
entity.resource.attribute.cloud.environment"GOOGLE_CLOUD_PLATFORM"
entity.resource.attribute.labels[0].key: "Sensitivity Score"
entity.resource.attribute.labels[0].value: "SENSITIVITY_HIGH"
entity.resource.attribute.labels[1].key: "Predicted InfoType"
entity.resource.attribute.labels[1].value: "US_SOCIAL_SECURITY_NUMBER"
entity.resource.product_object_id: "analytics:claim.patients"

Eventi proxy web

L'evento del proxy web in questo esempio acquisisce l'attività di rete. Il seguente snippet è di un log del proxy web Zscaler archiviato come record di eventi UDM. Acquisisce un evento di download di rete di un file eseguibile dall'utente con il valore userid mikeross dove il valore received_bytes è 514605.

metadata.log_type = "ZSCALER_WEBPROXY"
metadata.product_name = "NSS"
metadata.vendor_name = "Zscaler"
metadata.event_type = "NETWORK_HTTP"
network.http.response_code = 200
network.received_bytes = 514605
principal.user.userid = "mikeross"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"

Eventi EDR

L'evento EDR in questo esempio acquisisce l'attività su un dispositivo endpoint. Il seguente snippet è di un log EDR CrowdStrike Falcon archiviato come record di eventi UDM. Acquisisce un evento di rete che coinvolge l'applicazione Microsoft Excel e un utente con il valore userid mikeross.

metadata.log_type = "CS_EDR"
metadata.product_name = "Falcon"
metadata.vendor_name = "Crowdstrike"
metadata.event_type = "NETWORK_HTTP"
target.process.file.full_path = "\\Device\\HarddiskVolume1\\Program Files\\C:\\Program Files\\Microsoft Office\\Office16\\EXCEL.exe"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"
target.user.userid = "mikeross"

Nota che esistono informazioni comuni in questi record, sia l'identificatore utente mikeross sia il nome della tabella, analytics:claim.patients. La sezione successiva di questo documento illustra in che modo questi valori vengono utilizzati nella regola per unire i record.

Regola del motore di rilevamento in questo esempio

Questa regola di esempio rileva l'esecuzione di un file dannoso da parte di un utente (tecnica MITRE ATT&CK T1204.002).

La regola assegna un punteggio di rischio più elevato a un rilevamento quando l'utente ha accesso anche a dati sensibili altrove nella rete. La regola mette in correlazione le seguenti informazioni:

  • Attività utente, ad esempio il download o l'avvio di un file eseguibile.
  • La relazione tra le risorse, ad esempio la relazione dell'utente con una tabella BigQuery.
  • Presenza di informazioni sensibili nella risorsa a cui ha accesso un utente, ad esempio il tipo di dati archiviati nella tabella BigQuery.

Di seguito è riportata una descrizione di ciascuna sezione della regola di esempio.

  • La sezione events specifica il pattern di dati cercato dalla regola e include quanto segue:

    • Il Gruppo 1 e il Gruppo 2 identificano gli eventi di rete ed EDR che acquisiscono il download di una grande quantità di dati o di un file eseguibile correlato anche all'attività nell'applicazione Excel.
    • Il Gruppo 3 identifica i record in cui l'utente identificato nella rete e negli eventi EDR dispone anche dell'autorizzazione per una tabella BigQuery.
    • Il Gruppo 4 identifica i record di Sensitive Data Protection per la tabella BigQuery a cui ha accesso l'utente.

    Ogni gruppo di espressioni utilizza la variabile $table_name o $user per unire i record relativi alla stessa tabella utente e di database.

  • Nella sezione outcome, la regola crea una variabile $risk_score e imposta un valore in base alla sensibilità dei dati nella tabella. In questo caso, controlla se i dati sono etichettati con l'US_SOCIAL_SECURITY_NUMBERinfoType Sensitive Data Protection.

    La sezione outcome imposta anche variabili aggiuntive come $principalHostname e $entity_resource_name. Queste variabili vengono restituite e archiviate con il rilevamento in modo che, quando le visualizzi in Google Security Operations, tu possa visualizzare i valori delle variabili anche come colonne.

  • La sezione condition indica che il pattern cerca tutti i record UDM specificati nella sezione events.

  rule high_risk_user_download_executable_from_macro {
 meta:
   author = "Google Cloud Security Demos"
   description = "Executable downloaded by Microsoft Excel from High Risk User"
   severity = "High"
   technique = "T1204.002"

 events:
   //Group 1. identify a proxy event with suspected executable download
   $proxy_event.principal.user.userid = $user
   $proxy_event.target.url =  /.*\.exe$/ or
   $proxy_event.network.received_bytes > 102400

   //Group 2. correlate with an EDR event indicating Excel activity
   $edr_event.target.user.userid  = $user
   $edr_event.target.process.file.full_path = /excel/ nocase
   $edr_event.metadata.event_type = "NETWORK_HTTP"

   //Group 3. Use the entity to find the permissions
   $user_entity.graph.entity.user.userid = $user
   $user_entity.graph.relations.entity.resource.name = $table_name

   //Group 4. the entity is from Cloud DLP data
   $table_context.graph.entity.resource.product_object_id = $table_name
   $table_context.graph.metadata.product_name = "GCP DLP CONTEXT"

 match:
    $user over 5m

 outcome:
   //calculate risk score
   $risk_score = max(
       if( $table_context.graph.entity.resource.attribute.labels.value = "US_SOCIAL_SECURITY_NUMBER", 80)
       )
   $technique = array_distinct("T1204.002")
   $principalHostname = array_distinct($proxy_event.principal.hostname)
   $principalIp = array_distinct($proxy_event.principal.ip)
   $principalMac = array_distinct($proxy_event.principal.mac)
   $targetHostname = array_distinct($proxy_event.target.hostname)
   $target_url = array_distinct($proxy_event.target.url)
   $targetIp = array_distinct($proxy_event.target.ip)
   $principalUserUserid =  array_distinct($proxy_event.principal.user.userid)
   $entity_resource_name = array_distinct($table_context.graph.entity.resource.name)

condition:
   $proxy_event and $edr_event and $user_entity and $table_context
}

Informazioni sul rilevamento

Se testi la regola su dati esistenti e questo identifica il modello di attività specificato nella definizione, viene generato un rilevamento. Nel riquadro Rilevamento viene visualizzato il rilevamento generato dopo il test della regola. Nel riquadro Rilevamento vengono visualizzati anche i record di eventi ed entità che hanno portato alla creazione di un rilevamento da parte della regola. In questo esempio vengono visualizzati i seguenti record:

  • Entità UDM Analisi Google Cloud IAM
  • Entità UDM di Sensitive Data Protection
  • Evento UDM proxy web Zscaler
  • Evento UDM Falcon EDR CrowdStrike

Nel riquadro Rilevamento, seleziona un evento o un record di entità per visualizzare i dettagli.

Il rilevamento memorizza anche le variabili definite nella sezione outcome della regola. Per visualizzare le variabili nel riquadro Rilevamento, seleziona Colonne, quindi seleziona uno o più nomi di variabili dal menu Colonne. Le colonne selezionate vengono visualizzate nel riquadro Rilevamento.

Passaggi successivi

Per scrivere regole personalizzate, consulta la Panoramica del linguaggio YARA-L 2.0.

Per creare analisi sensibili al contesto personalizzate, consulta Creare analisi sensibili al contesto.

Per utilizzare dati e analisi delle minacce predefiniti, consulta Utilizzo dei rilevamenti selezionati da Google Security Operations.