Raccogliere i log IOC di Anomali ThreatStream
Questo documento spiega come importare i log IOC di Anomali ThreatStream in Google Security Operations utilizzando un'API. Il parser trasforma i dati IOC dal formato JSON o CEF in un modello UDM (Unified Data Model). Il codice tenta innanzitutto di analizzare l'input come JSON e, se non riesce, verifica la presenza del prefisso "CEF:" per elaborarlo come messaggio CEF, estraendo gli attributi IOC e mappandoli nei campi UDM.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Accesso con privilegi a un tenant aziendale Anomali ThreatStream
Crea un utente API dedicato
- Accedi a ThreatStream. Passa alla UI classica se utilizzi Anomali Enterprise.
- Vai ad Amministrazione > Utenti.
- Fai clic su + Aggiungi utente (o seleziona un account di servizio esistente).
- Completa i seguenti dettagli:
- Email: l'indirizzo email del service account (ad esempio,
anomali_ioc_secops@example.com
). - Auth Source (Origine autenticazione): seleziona Standard.
- Tipo di utente: seleziona Utente API.
- Ruolo: seleziona Sola lettura (sufficiente per elencare gli indicatori).
- Email: l'indirizzo email del service account (ad esempio,
- Fai clic su Salva.
- Al nuovo account viene inviata un'email di attivazione. Completa l'attivazione.
Genera chiave API
- Accedi a ThreatStream come utente API.
- Vai all'avatar del profilo > Le mie chiavi API.
- Fai clic su Genera nuova chiave.
- Inserisci una Descrizione (ad esempio,
Google SecOps export
). - Fai clic su Salva.
- Copia e salva il valore della chiave visualizzato nella sezione Chiave in una posizione sicura. Il valore della chiave non viene più visualizzato.
Consigliato: IP del raccoglitore della lista consentita
- Vai ad Amministrazione > Impostazioni organizzazione.
- Seleziona la scheda Lista consentita di indirizzi IP.
- Fai clic su + Aggiungi.
- Inserisci l'indirizzo del tuo tenant Google SecOps e fai clic su Salva.
Configurare i feed
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Anomali TS IOC
). - Seleziona API di terze parti come Tipo di origine.
- Seleziona il tipo di log Anomali.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Nome utente: inserisci l'utente API appena creato.
- Secret: inserisci la chiave API generata e copiata in precedenza.
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Fai clic su Avanti.
- Rivedi la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
obj.asn |
entity.administrative_domain | Il campo asn nel log non elaborato viene mappato al campo administrative_domain nell'oggetto entità UDM. |
obj.confidence |
ioc.confidence_score | Il campo confidence nel log non elaborato viene mappato al campo confidence_score nell'oggetto UDM ioc. |
obj.country |
entity.location.country_or_region | Il campo paese nel log non elaborato viene mappato al campo country_or_region nell'oggetto entità UDM. |
obj.created_ts |
entity.metadata.creation_timestamp | Il campo created_ts nel log non elaborato viene mappato al campo creation_timestamp nell'oggetto entità UDM. |
obj.created_ts |
ioc.active_timerange.start | Il campo created_ts nel log non elaborato viene mappato al campo start nell'oggetto UDM ioc. |
obj.created_ts |
entity.metadata.threat.first_discovered_time | Il campo created_ts nel log non elaborato viene mappato al campo first_discovered_time nell'oggetto minaccia UDM. |
obj.expiration_ts |
entity.metadata.interval.end_time | Il campo expiration_ts nel log non elaborato è mappato al campo end_time nell'oggetto entità UDM. |
obj.expiration_ts |
ioc.active_timerange.end | Il campo expiration_ts nel log non elaborato è mappato al campo end nell'oggetto UDM ioc. |
obj.id |
entity.metadata.product_entity_id | Il campo id nel log non elaborato viene mappato al campo product_entity_id nell'oggetto entità UDM. |
obj.ip |
entity.entity.ip | Il campo ip nel log non elaborato viene unito al campo ip nell'oggetto entità UDM. |
obj.ip |
ioc.ip_and_ports.ip_address | Il campo ip nel log non elaborato è mappato al campo ip_address nell'oggetto UDM ioc. |
obj.itype |
ioc.categorization | Il campo itype nel log non elaborato è mappato al campo di classificazione nell'oggetto UDM ioc. |
obj.itype |
entity.metadata.threat.category_details | Il campo itype nel log non elaborato viene unito al campo category_details nell'oggetto minaccia UDM. |
obj.latitude |
entity.entity.location.region_latitude | Il campo della latitudine nel log non elaborato viene mappato al campo region_latitude nell'oggetto entità UDM. |
obj.longitude |
entity.entity.location.region_longitude | Il campo della longitudine nel log non elaborato viene mappato al campo region_longitude nell'oggetto entità UDM. |
obj.meta.detail2 |
ioc.description | Il campo detail2 nel log non elaborato viene mappato al campo description nell'oggetto UDM ioc. |
obj.meta.detail2 |
entity.metadata.threat.description | Il campo detail2 nel log non elaborato viene mappato al campo della descrizione nell'oggetto minaccia UDM. |
obj.meta.severity |
ioc.raw_severity | Il campo gravità nel log non elaborato viene mappato al campo raw_severity nell'oggetto UDM ioc. |
obj.meta.severity |
entity.metadata.threat.severity | Il campo gravità nel log non elaborato viene mappato al campo gravità nell'oggetto minaccia UDM. Se la gravità è "molto alta", viene mappata su "CRITICA". |
obj.meta.severity |
entity.metadata.threat.severity_details | Il campo gravità nel log non elaborato viene mappato al campo severity_details nell'oggetto minaccia UDM. |
obj.modified_ts |
entity.metadata.threat.last_updated_time | Il campo modified_ts nel log non elaborato viene mappato al campo last_updated_time nell'oggetto minaccia UDM. |
obj.org |
entity.entity.administrative_domain | Il campo org nel log non elaborato viene mappato al campo administrative_domain nell'oggetto entità UDM. |
obj.resource_uri |
entity.metadata.threat.url_back_to_product | Il campo resource_uri nel log non elaborato viene mappato al campo url_back_to_product nell'oggetto minaccia UDM. |
obj.retina_confidence |
entity.metadata.threat.confidence_score | Il campo retina_confidence nel log non elaborato viene mappato al campo confidence_score nell'oggetto minaccia UDM. |
obj.source |
ioc.feed_name | Il campo di origine nel log non elaborato è mappato al campo feed_name nell'oggetto UDM ioc. |
obj.source |
entity.metadata.threat.threat_name | Il campo di origine nel log non elaborato viene mappato al campo threat_name nell'oggetto minaccia UDM. |
obj.status |
entity.metadata.threat.threat_status | Il campo di stato nel log non elaborato viene mappato al campo threat_status nell'oggetto minaccia UDM. |
obj.subtype |
entity.entity.file.sha1 | Il campo del sottotipo nel log non elaborato viene mappato al campo sha1 nell'oggetto entità UDM se il sottotipo è "SHA1". |
obj.subtype |
entity.entity.file.sha256 | Il campo subtype nel log non elaborato viene mappato al campo sha256 nell'oggetto entità UDM se il sottotipo è "SHA256". |
obj.tags |
entity.metadata.source_labels | Il campo dei tag nel log non elaborato è mappato al campo source_labels nell'oggetto entità UDM. |
obj.tags.id |
entity.metadata.source_labels | Il campo id nell'array di tag del log non elaborato viene mappato al campo source_labels nell'oggetto entità UDM. |
obj.tags.name |
entity.metadata.source_labels | Il campo name nell'array tags del log non elaborato viene mappato al campo source_labels nell'oggetto entità UDM. |
obj.threatscore |
entity.metadata.threat.risk_score | Il campo threatscore nel log non elaborato viene mappato al campo risk_score nell'oggetto minaccia UDM. |
obj.threat_type |
entity.metadata.threat.detection_fields | Il campo threat_type nel log non elaborato viene mappato al campo detection_fields nell'oggetto minaccia UDM. |
obj.type |
entity.entity.file.md5 | Il campo type nel log non elaborato viene mappato al campo md5 nell'oggetto entità UDM se il tipo è "md5". |
obj.type |
entity.entity.hostname | Se il tipo è "domain", il campo type nel log non elaborato viene mappato al campo hostname nell'oggetto entità UDM. |
obj.type |
entity.entity.ip | Il campo tipo nel log non elaborato viene unito al campo ip nell'oggetto entità UDM se il tipo è "ip" o "ipv6". |
obj.type |
entity.entity.url | Il campo tipo nel log non elaborato viene mappato al campo URL nell'oggetto entità UDM se il tipo è "url" o "stringa". |
obj.type |
entity.entity.user.email_addresses | Il campo type nel log non elaborato viene unito al campo email_addresses nell'oggetto entità UDM se il tipo è "email". |
obj.type |
entity.metadata.entity_type | Il campo type nel log non elaborato viene mappato al campo entity_type nell'oggetto entità UDM. Se il tipo è "ip" o "ipv6", viene mappato a "IP_ADDRESS". Se il tipo è "domain", viene mappato a "DOMAIN_NAME". Se il tipo è "md5" o il campo itype contiene "md5", viene mappato a "FILE". Se il tipo è "url" o "string", viene mappato a "URL". Se il tipo è "email", viene mappato a "USER". In caso contrario, viene mappato a "UNKNOWN_ENTITYTYPE". |
obj.uuid |
entity.additional.fields | Il campo uuid nel log non elaborato viene mappato al campo fields nell'oggetto entità UDM. |
obj.value |
entity.entity.ip | Il campo del valore nel log non elaborato viene unito al campo ip nell'oggetto entità UDM se il campo del tipo è "ip" e il campo ip è vuoto. |
obj.value |
entity.entity.ip | Il campo valore nel log non elaborato viene unito al campo ip nell'oggetto entità UDM se il campo ip_field_not_exists è true e il campo valore è un indirizzo IP. |
obj.value |
entity.entity.url | Il campo valore nel log non elaborato viene mappato al campo URL nell'oggetto entità UDM se il campo tipo è "url" o "stringa". |
obj.value |
ioc.domain_and_ports.domain | Il campo valore nel log non elaborato viene mappato al campo dominio nell'oggetto UDM ioc se il campo tipo non è "ip". |
obj.value |
ioc.ip_and_ports.ip_address | Il campo del valore nel log non elaborato viene mappato al campo ip_address nell'oggetto UDM ioc se il campo type è "ip" e il campo ip è vuoto. |
cn1 |
ioc.confidence_score | Il campo cn1 nel log non elaborato è mappato al campo confidence_score nell'oggetto UDM ioc. |
cn2 |
entity.metadata.threat.rule_id | Il campo cn2 nel log non elaborato è mappato al campo rule_id nell'oggetto minaccia UDM. |
cs1 |
ioc.raw_severity | Il campo cs1 nel log non elaborato è mappato al campo raw_severity nell'oggetto UDM ioc. |
cs2 |
entity.metadata.threat.threat_name | Il campo cs2 nel log non elaborato viene mappato al campo threat_name nell'oggetto minaccia UDM. |
cs3 |
entity.metadata.threat.threat_status | Il campo cs3 nel log non elaborato viene mappato al campo threat_status nell'oggetto minaccia UDM. Se il campo cs3 è "active", viene mappato su "ACTIVE". Se il campo cs3 è "cleared" (compensato), viene mappato su "CLEARED" (COMPENSATO). Se il campo cs3 è "falsePositive" o "falsepos", viene mappato su "FALSE_POSITIVE". Se il campo cs3 è "threat_status_unspecified", viene mappato a "THREAT_STATUS_UNSPECIFIED". |
cs4 |
entity.entity.administrative_domain | Il campo cs4 nel log non elaborato viene mappato al campo administrative_domain nell'oggetto entità UDM. |
cs5 |
ioc.description | Il campo cs5 nel log non elaborato viene mappato al campo della descrizione nell'oggetto UDM ioc. |
cs5 |
entity.metadata.threat.detection_fields | Il campo cs5 nel log non elaborato è mappato al campo detection_fields nell'oggetto minaccia UDM. |
cs5 |
entity.metadata.threat.description | Il campo cs5 nel log non elaborato viene mappato al campo della descrizione nell'oggetto minaccia UDM. |
cs6 |
entity.metadata.threat.category_details | Il campo cs6 nel log non elaborato viene unito al campo category_details nell'oggetto minaccia UDM. |
device_product |
entity.metadata.product_name | Il campo device_product nel log non elaborato viene mappato al campo product_name nell'oggetto entità UDM. |
device_vendor |
entity.metadata.vendor_name | Il campo device_vendor nel log non elaborato viene mappato al campo vendor_name nell'oggetto entità UDM. |
device_version |
entity.metadata.product_version | Il campo device_version nel log non elaborato viene mappato al campo product_version nell'oggetto entità UDM. |
msg |
entity.metadata.threat.summary | Il campo msg nel log non elaborato viene mappato al campo summary nell'oggetto minaccia UDM. |
shost |
entity.entity.hostname | Il campo shost nel log non elaborato viene mappato al campo hostname nell'oggetto entità UDM. |
shost |
entity.entity.url | Il campo shost nel log non elaborato è mappato al campo url nell'oggetto entità UDM. |
shost |
ioc.domain_and_ports.domain | Il campo shost nel log non elaborato è mappato al campo domain nell'oggetto UDM ioc. |
src |
entity.entity.ip | Il campo src nel log non elaborato viene unito al campo ip nell'oggetto entità UDM. |
src |
ioc.ip_and_ports.ip_address | Il campo src nel log non elaborato è mappato al campo ip_address nell'oggetto UDM ioc. |
entity.metadata.threat.confidence | HIGH_CONFIDENCE | Il campo confidenza nell'oggetto minaccia UDM è impostato su "HIGH_CONFIDENCE" se il campo confidence_score è maggiore o uguale a 75. |
entity.metadata.threat.confidence | LOW_CONFIDENCE | Il campo confidenza nell'oggetto minaccia UDM è impostato su "LOW_CONFIDENCE" se il campo confidence_score è minore o uguale a 50. |
entity.metadata.threat.confidence | MEDIUM_CONFIDENCE | Il campo confidenza nell'oggetto minaccia UDM è impostato su "MEDIUM_CONFIDENCE" (confidenza media) se il campo confidence_score è maggiore di 50 e minore o uguale a 74. |
entity.metadata.threat.confidence | UNKNOWN_CONFIDENCE | Il campo confidenza nell'oggetto minaccia UDM è impostato su "UNKNOWN_CONFIDENCE" se il campo confidence_score non è un numero intero valido. |
entity.metadata.vendor_name | ANOMALI_IOC | Il campo vendor_name nell'oggetto entità UDM è impostato su "ANOMALI_IOC". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.