Raccogliere i log IOC MISP

Supportato in:

Panoramica

Questo parser estrae gli indicatori di compromissione dai dati MISP formattati come JSON o CSV. Analizza l'input, mappa i campi all'UDM, gestisce vari tipi di indicatori di compromissione (IP, dominio, hash dei file e così via) e arricchisce i dati con il contesto dell'intelligence sulle minacce, come attendibilità e gravità. Il parser esegue anche una logica specifica per diversi formati di dati e gestisce i casi con campi mancanti o non supportati.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso privilegiato a MISP.

Configura un feed in Google SecOps per importare i log di MISP Threat Intelligence

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log MISP).
  4. Seleziona Webhook come Tipo di origine.
  5. Seleziona MISP Threat Intelligence come Tipo di log.
  6. Fai clic su Avanti.
  7. (Facoltativo) Specifica i valori per i seguenti parametri di input:
    • Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio \n.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. Copia e memorizza la chiave segreta. Non potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
  12. Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
  13. Fai clic su Fine.

Crea una chiave API per il feed webhook

  1. Vai alla console Google Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso alla chiave API all'API Google Security Operations.

Specifica l'URL dell'endpoint

  1. Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. Attiva l'autenticazione specificando la chiave API e la chiave segreta nell'intestazione personalizzata nel seguente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Consiglio: specifica la chiave API come intestazione anziché nell'URL.

  3. Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Sostituisci quanto segue:

    • ENDPOINT_URL: l'URL dell'endpoint del feed.
    • API_KEY: la chiave API per l'autenticazione in Google Security Operations.
    • SECRET: la chiave segreta che hai generato per autenticare il feed.

Attivare l'invio di richieste HTTP a un URL esterno in MISP

  1. Accedi al computer su cui è stato eseguito il deployment di MISP.
  2. Modifica il file config.php in app/Config/.
  3. Trova la configurazione rest_client_enable_arbitrary_urls e impostala su True. none 'rest_client_enable_arbitrary_urls' => true
  4. Salva il file.

Configurare il webhook in MISP per Google SecOps

  1. Accedi a MISP Threat Intelligence.
  2. Vai a Amministrazione > Fluidi di lavoro > Elenca moduli.
  3. Seleziona Webhook.
  4. Vai alla colonna Azione e fai clic su Attiva.
  5. Vai a Flusso di lavoro > Elenca attivatori.
  6. Seleziona l'attivatore webhook che preferisci.
  7. Seleziona Webhook dall'elenco dei moduli.
  8. Trascina il file nell'area di lavoro.
  9. Collega l'input all'output dell'attivatore.
  10. Nel modulo Webhook, compila i seguenti campi:
    • URL: inserisci ENDPOINT_URL, seguito da API_KEY e SECRET.
    • Metodo di richiesta HTTP: seleziona POST
  11. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
Attribute.category event.idm.entity.metadata.threat.category_details Mappato direttamente da Attribute.category nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato nel percorso di analisi JSON.
Attribute.comment event.idm.entity.metadata.threat.summary Mappato direttamente da Attribute.comment nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato nel percorso di analisi JSON.
Attribute.deleted event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.deleted e aggiunto come campo di rilevamento con chiave "Attributo eliminato". Utilizzato nel percorso di analisi JSON.
Attribute.event_id event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.event_id e aggiunto come campo di rilevamento con chiave "Attributo event_id". Utilizzato nel percorso di analisi JSON.
Attribute.first_seen event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.first_seen e aggiunto come campo di rilevamento con chiave "Attributo first_seen". Utilizzato nel percorso di analisi JSON.
Attribute.id event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.id e aggiunto come campo di rilevamento con la chiave "ID attributo" o "ID attributo $$" a seconda del percorso di analisi. Utilizzato nei percorsi di analisi CSV e JSON.
Attribute.timestamp event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.timestamp e aggiunto come campo di rilevamento con chiave "Attribute timestamp". Utilizzato nel percorso di analisi JSON.
Attribute.to_ids event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Attribute.to_ids e aggiunto come campo di rilevamento con la chiave "Attributo to_ids". Utilizzato nel percorso di analisi JSON.
Attribute.type log_type Mappato direttamente da Attribute.type nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato come campo provvisorio e in seguito utilizzato per compilare altri campi UDM. Utilizzato nel percorso di analisi JSON.
Attribute.uuid event.idm.entity.metadata.product_entity_id Mappato direttamente da Attribute.uuid nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato nel percorso di analisi JSON.
Attribute.value Multiplo Il valore di questo campo viene utilizzato per compilare diversi campi UDM a seconda del valore di Attribute.type (o log_type se derivato da Attribute.type):
- event.idm.entity.entity.hostname se type è "domain".
- event.idm.entity.entity.file.md5 se type è "md5".
- event.idm.entity.entity.file.sha1 se type è "sha1".
- event.idm.entity.entity.file.sha256 se type è "sha256".
- event.idm.entity.entity.resource.name se type è "mutex".
- event.idm.entity.entity.registry.registry_key se type è "regkey".
- event.idm.entity.entity.user.email_addresses se type è "threat-actor".
- event.idm.entity.entity.url se type è "uri" o "url".
- event.idm.entity.entity.file.full_path se type è "nomefile".
: analizzato per IP e porta se type è "ip-dst|port", "ip-dst" o "ip-src". Utilizzato nel percorso di analisi JSON.
column1 event.idm.entity.metadata.product_entity_id Mappato direttamente da column1 nel percorso di analisi CSV.
column14 Parte di event.idm.entity.metadata.threat.description Concatenato con description per formare la descrizione finale nei metadati della minaccia. Utilizzato nel percorso di analisi CSV.
column16 event.idm.entity.metadata.threat.threat_feed_name, event.ioc.feed_name Mappata direttamente da column16. Utilizzato nel percorso di analisi CSV.
column18 event.idm.entity.metadata.threat.severity_details, event.ioc.raw_severity Mappata direttamente da column18. Utilizzato nel percorso di analisi CSV.
column21 Parte di event.idm.entity.metadata.threat.description, event.ioc.description Utilizzato come base per la descrizione, successivamente concatenato con event_info. Utilizzato nel percorso di analisi CSV.
column3 Parte di event.ioc.categorization Mappato direttamente da column3 e concatenato con "IOC" per formare la classificazione finale. Utilizzato nel percorso di analisi CSV.
column4 event.idm.entity.metadata.description Mappata direttamente da column4. Utilizzato nel percorso di analisi CSV.
column5 Multiplo Il valore di questo campo viene utilizzato per compilare diversi campi UDM a seconda del campo column4 (che viene mappato a type):
- event.idm.entity.entity.hostname se type è "domain".
: analizzato per IP e porta se type è "ip-dst|port", "ip-dst" o "ip-src".
- event.idm.entity.entity.file.md5 se type è "md5".
- event.idm.entity.entity.file.sha1 se type è "sha1".
- event.idm.entity.entity.file.sha256 se type è "sha256".
- event.idm.entity.entity.resource.name se type è "mutex".
- event.idm.entity.entity.registry.registry_key se type è "regkey".
- event.idm.entity.entity.user.email_addresses se type è "threat-actor".
- event.idm.entity.entity.url se type è "uri" o "url".
- event.idm.entity.entity.file.full_path se type è "nomefile". Utilizzato nel percorso di analisi CSV.
column6 event.idm.entity.metadata.threat.summary Mappata direttamente da column6. Utilizzato nel percorso di analisi CSV.
column8 event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analizzata come timestamp UNIX. Utilizzato nel percorso di analisi CSV.
date description event.idm.entity.metadata.threat.description Mappato direttamente da description nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato nel percorso di analisi JSON.
event_creator_email event.idm.entity.entity.labels.value Mappato direttamente da event_creator_email e aggiunto come etichetta con la chiave "event_creator_email". Utilizzato nel percorso di analisi JSON.
event_id Feed.publish event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Feed.publish e aggiunto come campo di rilevamento con chiave "Pubblicazione feed". Utilizzato nel percorso di analisi JSON.
first_seen event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analizzata come timestamp nel formato "aaaa-MM-ggTHH:mm:ssZZ". Utilizzato nel percorso di analisi JSON.
id info event.idm.entity.metadata.description Mappato direttamente da info nell'oggetto JSON nidificato all'interno del campo "data". Utilizzato nel percorso di analisi JSON.
last_seen event.ioc.active_timerange.end Analizzata come timestamp nel formato "yyyy-MM-ddTHH:mm:ssZZ". Utilizzato nel percorso di analisi JSON.
Org.name event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Org.name e aggiunto come campo di rilevamento con la chiave "Nome dell'organizzazione". Utilizzato nel percorso di analisi JSON.
published event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da published e aggiunto come campo di rilevamento con chiave "published". Utilizzato nel percorso di analisi JSON.
Tag.colour event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.colour e aggiunto come campo di rilevamento con chiave "colore tag". Utilizzato nel percorso di analisi JSON.
Tag.exportable event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.exportable e aggiunto come campo di rilevamento con la chiave "tag esportabile". Utilizzato nel percorso di analisi JSON.
Tag.hide_tag event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.hide_tag e aggiunto come campo di rilevamento con chiave "tag hide_tag". Utilizzato nel percorso di analisi JSON.
Tag.id event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.id e aggiunto come campo di rilevamento con chiave "tag id". Utilizzato nel percorso di analisi JSON.
Tag.is_custom_galaxy event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.is_custom_galaxy e aggiunto come campo di rilevamento con la chiave "tag is_custom_galaxy". Utilizzato nel percorso di analisi JSON.
Tag.is_galaxy event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.is_galaxy e aggiunto come campo di rilevamento con la chiave "tag is_galaxy". Utilizzato nel percorso di analisi JSON.
Tag.isinherited event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.isinherited e aggiunto come campo di rilevamento con la chiave "tag isinherited". Utilizzato nel percorso di analisi JSON.
Tag.name event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.name e aggiunto come campo di rilevamento con chiave "nome tag". Utilizzato nel percorso di analisi JSON.
Tag.numerical_value event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.numerical_value e aggiunto come campo di rilevamento con chiave "tag numerical_value". Utilizzato nel percorso di analisi JSON.
Tag.user_id event.idm.entity.metadata.threat.detection_fields.value Mappato direttamente da Tag.user_id e aggiunto come campo di rilevamento con chiave "tag user_id". Utilizzato nel percorso di analisi JSON.
threat_level_id event.idm.entity.entity.labels.value Mappato direttamente da threat_level_id e aggiunto come etichetta con la chiave "threat_level_id". Utilizzato nel percorso di analisi JSON.
timestamp event.idm.entity.metadata.collected_timestamp, event.idm.entity.metadata.interval.start_time Analizzata come timestamp UNIX. Utilizzato nel percorso di analisi CSV.
uuid event.idm.entity.metadata.vendor_name Impostato su "MISP" dall'analizzatore. Impostato su "MISP" dall'analizzatore. Impostato su un valore predefinito molto lontano nel futuro (253402300799 secondi dall'epoca). Determinato dal parser in base al campo type o log_type. Può essere "FILE", "DOMAIN_NAME", "IP_ADDRESS", "MUTEX", "RESOURCE" o "USER". Può essere dedotto da Attribute.comment o Attribute.value a seconda di Attribute.type. Analizzata da Attribute.value o column5 se il tipo è correlato all'IP. Analizzata da Attribute.value o column5 se il tipo è "ip-dst|port". Dedotto da column3 nell'analisi CSV o da Attribute.category nell'analisi JSON. Derivato da column21 e column14 nell'analisi CSV. Derivato da column8 o first_seen. Derivata da last_seen. Dedotto da description utilizzando un pattern Grok. Dedotto da column16 o impostato su "MISP". Derivata da column18. Analizzata da Attribute.value o column5 se il tipo è correlato all'IP. Analizzata da Attribute.value o column5 se il tipo è "ip-dst|port". Derivato da Attribute.value o column5 se il tipo è "domain". Derivato dal campo confidence, che viene estratto dal campo description. I valori possono essere "HIGH_CONFIDENCE", "MEDIUM_CONFIDENCE", "LOW_CONFIDENCE" o "UNKNOWN_CONFIDENCE". Mappato direttamente dal campo confidence, che viene estratto dal campo description. Mappato direttamente dal campo threat_level, che deriva da column18 nel percorso di analisi CSV. Mappato direttamente dal campo feed_name, che deriva da column16 nel percorso di analisi CSV. Derivato da column21 e column14 nell'analisi CSV. Dedotto da column6 nell'analisi CSV o da Attribute.comment nell'analisi JSON. Vengono aggiunti diversi campi come campi di rilevamento con le relative chiavi. Diversi campi vengono aggiunti come etichette con le relative chiavi. Copiato dal campo timestamp di primo livello nel log non elaborato.

Modifiche

2023-09-26

  • Sono stati mappati "published", "Feed.publish", "Org.name", "Attribute.id", "Attribute.event_id", "Attribute.to_ids", "Attribute.timestamp", "Attribute.comment", "Attribute.deleted", "Attribute.first_seen" e tutti i "tag.names" a "threat.detection_fields".

2023-08-17

  • Correzione di bug :
  • È stata aggiunta una condizione per eseguire un'operazione "gsub" che rimuove i backslash aggiuntivi solo quando il log non è JSON.

2023-07-20

  • Correzione bug :
  • È stato modificato il valore "metadata.entity_type" in "MUTEX" quando il log è di tipo mutex.

2023-07-04

  • Parser appena creato.