Raccogli i log di Tanium Threat Response
Questo documento spiega come importare i log di Tanium Threat Response in Google Security Operations utilizzando la funzionalità di esportazione nativa di AWS S3 di Tanium Connect. Tanium Threat Response produce avvisi di rilevamento delle minacce, risultati delle indagini e dati di risposta agli incidenti in formato JSON, che possono essere esportati direttamente in S3 utilizzando Tanium Connect senza richiedere funzioni Lambda personalizzate. Il parser trasforma i dati JSON non elaborati di Tanium Threat Response in un modello dei dati unificato (UDM). Innanzitutto, tenta di analizzare il messaggio in arrivo come JSON, gestisce i potenziali errori, quindi estrae e mappa i campi pertinenti alla struttura UDM, inclusi i dettagli sull'host, l'utente, il processo, l'attività di rete e i risultati di sicurezza interessati.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Tanium Core Platform 7.0 o versioni successive
- Modulo Tanium Threat Response installato e configurato
- Modulo Tanium Connect installato con licenza valida
- Tanium Direct Connect 1.9.30 o versioni successive per le funzionalità di indagine
- Accesso privilegiato alla console Tanium con diritti amministrativi
- Accesso privilegiato ad AWS (S3, IAM)
Configura il account di servizio Tanium Threat Response
- Accedi alla console Tanium.
- Vai a Moduli > Risposta alle minacce.
- Fai clic su Impostazioni in alto a destra.
- Nella sezione Service account, configura quanto segue:
- Utente dell'account di servizio: seleziona un utente con le autorizzazioni Threat Response appropriate.
- Verifica che l'account disponga del privilegio del ruolo Connect User.
- Conferma l'accesso agli avvisi di Threat Response e ai dati delle indagini.
- Fai clic su Salva per applicare la configurazione del account di servizio.
Raccogli i prerequisiti di Tanium Threat Response
- Accedi alla Console Tanium come amministratore.
- Vai ad Amministrazione > Autorizzazioni > Utenti.
- Crea o identifica un utente dell'account di servizio con i seguenti ruoli:
- Ruolo Threat Response Administrator o Threat Response Read Only User.
- Connect User.
- Accesso ai gruppi di computer monitorati (consigliato: gruppo Tutti i computer).
- Autorizzazione Read Saved Question per i set di contenuti di Threat Response.
Configura il bucket AWS S3 e IAM per Google SecOps
- Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creazione di un bucket
- Salva il nome e la regione del bucket per riferimento futuro (ad esempio,
tanium-threat-response-logs). - Crea un utente seguendo questa guida dell'utente: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Policy sulle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Collega direttamente le policy
- Cerca e seleziona la policy AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configura la destinazione AWS S3 di Tanium Connect
- Accedi alla console Tanium.
- Vai a Moduli > Connetti.
- Fai clic su Crea connessione.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio
Threat Response Alerts to S3 for SecOps). - Descrizione: descrizione facoltativa (ad esempio,
Export threat detection alerts and investigation findings to AWS S3 for Google SecOps ingestion). - Attiva: seleziona questa opzione per attivare la connessione in modo che venga eseguita in base alla pianificazione.
- Nome: inserisci un nome descrittivo (ad esempio
- Fai clic su Avanti.
Configura l'origine della connessione
- Nella sezione Origine, fornisci i seguenti dettagli di configurazione:
- Tipo di origine: seleziona Domanda salvata.
- Domanda salvata: seleziona una delle seguenti domande salvate relative alla risposta alle minacce:
- Threat Response - Alerts per gli avvisi di rilevamento delle minacce.
- Threat Response - Investigation Results per i risultati dell'indagine.
- Threat Response - Intel Matches per le corrispondenze di threat intelligence.
- Threat Response - Endpoint Activity per attività sospette sugli endpoint.
- Threat Response - Network Connections per le minacce basate sulla rete.
- Gruppo di computer: seleziona Tutti i computer o gruppi di computer specifici da monitorare.
- Intervallo di aggiornamento: imposta un intervallo appropriato per la raccolta dei dati (ad esempio, 10 minuti per gli avvisi sulle minacce).
- Fai clic su Avanti.
Configura la destinazione AWS S3
- Nella sezione Destinazione, fornisci i seguenti dettagli di configurazione:
- Tipo di destinazione: seleziona AWS S3.
- Nome destinazione: inserisci un nome univoco (ad esempio
Google SecOps ThreatResponse S3 Destination). - Chiave di accesso AWS: inserisci la chiave di accesso AWS dal file CSV scaricato nel passaggio di configurazione di AWS S3.
- AWS Secret Access Key (Chiave di accesso segreta AWS): inserisci la chiave di accesso segreta AWS dal file CSV scaricato nel passaggio di configurazione di AWS S3.
- Nome bucket: inserisci il nome del bucket S3 (ad esempio
tanium-threat-response-logs). - Regione: seleziona la regione AWS in cui si trova il bucket S3.
- Prefisso chiave: inserisci un prefisso per gli oggetti S3 (ad esempio,
tanium/threat-response/).
- Fai clic su Avanti.
Configura i filtri
- Nella sezione Filtri, configura le opzioni di filtro dei dati:
- Invia solo nuovi elementi: seleziona questa opzione per inviare solo i nuovi avvisi sulle minacce dall'ultima esportazione.
- Filtri delle colonne: se necessario, aggiungi filtri basati su attributi specifici degli avvisi (ad esempio, filtra in base alla gravità dell'avviso, al tipo di minaccia o allo stato dell'indagine).
- Fai clic su Avanti.
Formatta i dati per AWS S3
- Nella sezione Formato, configura il formato dei dati:
- Formato: seleziona JSON.
- Opzioni:
- Includi intestazioni: deseleziona questa opzione per evitare le intestazioni nell'output JSON.
- Includi celle vuote: seleziona in base alle tue preferenze.
- Opzioni avanzate:
- Nome file: utilizza il nome predefinito basato sul timestamp.
- Compressione: seleziona Gzip per ridurre i costi di archiviazione e i tempi di trasferimento.
- Fai clic su Avanti.
Pianifica la connessione
- Nella sezione Pianificazione, configura la pianificazione dell'esportazione:
- Attiva pianificazione: seleziona questa opzione per attivare le esportazioni automatiche pianificate.
- Tipo di pianificazione: seleziona Ricorrente.
- Frequenza: seleziona Ogni 10 minuti per ricevere avvisi tempestivi di risposta alle minacce.
- Ora di inizio: imposta l'ora di inizio appropriata per la prima esportazione.
- Fai clic su Avanti.
Salva e verifica la connessione
- Esamina la configurazione della connessione nella schermata di riepilogo.
- Fai clic su Salva per creare la connessione.
- Fai clic su Test Connection (Verifica connessione) per verificare la configurazione.
- Se il test ha esito positivo, fai clic su Esegui ora per eseguire un'esportazione iniziale.
- Monitora lo stato della connessione nella pagina Panoramica di Connect.
Configura un feed in Google SecOps per importare i log di Tanium Threat Response
- Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
- Fai clic su + Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad es.
Tanium Threat Response logs). - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona Tanium Threat Response come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- URI S3:
s3://tanium-threat-response-logs/tanium/threat-response/ - Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- Età massima del file: includi i file modificati negli ultimi giorni. Il valore predefinito è 180 giorni.
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- URI S3:
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo del log | mappatura UDM | Logica |
|---|---|---|
| ID avviso | security_result.rule_instance | Il valore di questo campo viene preso dal campo "ID avviso" nel log non elaborato. |
| IP del computer | principal.ip | Il valore di questo campo viene preso dal campo "IP computer" nel log non elaborato. |
| IP del computer | target.ip | Il valore di questo campo viene preso dal campo "IP computer" nel log non elaborato. |
| Nome computer | principal.hostname | Il valore di questo campo viene preso dal campo "Nome computer" nel log non elaborato. |
| Nome computer | target.hostname | Il valore di questo campo viene preso dal campo "Nome computer" nel log non elaborato. |
| id | target.resource.attribute.labels | Il valore di questo campo viene preso dal campo "id" nel log non elaborato. La chiave è impostata come hardcoded su "id". |
| ID Intel | security_result.rule_id | Il valore di questo campo viene preso dal campo "Intel Id" nel log non elaborato. |
| Etichette Intel | security_result.description | Il valore di questo campo viene preso dal campo "Intel Labels" nel log non elaborato. |
| Nome dell'intelligence | security_result.summary | Il valore di questo campo viene preso dal campo "Intel Name" nel log non elaborato. |
| Nome dell'intelligence | security_result.threat_name | Il valore di questo campo viene preso dal campo "Intel Name" nel log non elaborato. |
| Tipo di intelligence | security_result.rule_type | Il valore di questo campo viene preso dal campo "Intel Type" nel log non elaborato. |
| MatchDetails.finding.system_info.bits | principal.asset.platform_software.bits | Il valore di questo campo viene preso dal campo "MatchDetails.finding.system_info.bits" nel log non elaborato. |
| MatchDetails.finding.system_info.os | principal.asset.platform_software.platform_version | Il valore di questo campo viene preso dal campo "MatchDetails.finding.system_info.os" nel log non elaborato. |
| MatchDetails.finding.system_info.patch_level | principal.asset.platform_software.platform_patch_level | Il valore di questo campo viene preso dal campo "MatchDetails.finding.system_info.patch_level" nel log non elaborato. |
| MatchDetails.finding.system_info.platform | principal.asset.platform_software.platform | Il valore di questo campo viene preso dal campo "MatchDetails.finding.system_info.platform" nel log non elaborato. |
| MatchDetails.match.contexts.0.event.registrySet.keyPath | target.registry.registry_key | Il valore di questo campo viene preso dal campo "MatchDetails.match.contexts.0.event.registrySet.keyPath" nel log non elaborato. |
| MatchDetails.match.contexts.0.event.registrySet.valueName | target.registry.registry_value_name | Il valore di questo campo viene preso dal campo "MatchDetails.match.contexts.0.event.registrySet.valueName" nel log non elaborato. |
| MatchDetails.match.properties.args | security_result.about.process.command_line | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.args" nel log non elaborato. |
| MatchDetails.match.properties.file.fullpath | target.process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.file.md5 | target.process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.file.sha1 | target.process.file.sha1 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.file.sha1" nel log non elaborato. |
| MatchDetails.match.properties.file.sha256 | target.process.file.sha256 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.file.sha256" nel log non elaborato. |
| MatchDetails.match.properties.fullpath | target.process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.local_port | principal.port | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.local_port" nel log non elaborato. |
| MatchDetails.match.properties.md5 | target.process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.args | security_result.about.process.command_line | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.args" nel log non elaborato. |
| MatchDetails.match.properties.parent.file.fullpath | target.process.parent_process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.parent.file.md5 | target.process.parent_process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.file.fullpath | target.process.parent_process.parent_process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.file.md5 | target.process.parent_process.parent_process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.full_path | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.md5 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5" nel log non elaborato. |
| MatchDetails.match.properties.parent.pid | target.process.parent_process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.pid" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.pid | target.process.parent_process.parent_process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.pid" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.pid" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.pid" nel log non elaborato. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.pid" nel log non elaborato. |
| MatchDetails.match.properties.pid | target.process.pid | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.pid" nel log non elaborato. |
| MatchDetails.match.properties.protocol | network.ip_protocol | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.protocol" nel log non elaborato. |
| MatchDetails.match.properties.remote_ip | target.ip | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.remote_ip" nel log non elaborato. |
| MatchDetails.match.properties.remote_port | target.port | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.remote_port" nel log non elaborato. |
| MatchDetails.match.properties.sha1 | target.process.file.sha1 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.sha1" nel log non elaborato. |
| MatchDetails.match.properties.sha256 | target.process.file.sha256 | Il valore di questo campo viene preso dal campo "MatchDetails.match.properties.sha256" nel log non elaborato. |
| MatchDetails.match.properties.user | target.administrative_domain | Il nome di dominio viene estratto dal campo "MatchDetails.match.properties.user" nel log non elaborato cercando un carattere barra rovesciata (""). I caratteri prima della barra rovesciata sono considerati il nome di dominio. |
| MatchDetails.match.properties.user | target.user.userid | Il nome utente viene estratto dal campo "MatchDetails.match.properties.user" nel log non elaborato cercando un carattere barra rovesciata (""). I caratteri dopo la barra rovesciata vengono considerati come nome utente. |
| Tecniche MITRE | security_result.threat_id | Il valore di questo campo viene preso dal campo "MITRE Techniques" nel log non elaborato. |
| params | security_result.detection_fields | Il valore di questo campo viene preso dal campo "params" nel log non elaborato. La chiave è impostata come hardcoded su "params_" concatenato con l'indice del parametro. |
| Timestamp | metadata.event_timestamp | Il valore di questo campo viene preso dal campo "Timestamp" nel log non elaborato. |
| N/D | is_alert | Questo campo è impostato come hardcoded su "true" se il campo "IP computer" nel log non elaborato non è vuoto. |
| N/D | metadata.log_type | Questo campo è impostato come hardcoded su "TANIUM_THREAT_RESPONSE". |
| N/D | metadata.product_event_type | Questo campo è impostato come hardcoded su "Tanium Signal". |
| N/D | metadata.product_name | Questo campo è impostato come hardcoded su "Threat Response". |
| N/D | metadata.vendor_name | Questo campo è impostato come hardcoded su "Tanium". |
| N/D | network.http.method | Questo campo è impostato come hardcoded su "POST" se il valore del campo "method" nel log non elaborato è "submit". |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.