Formattare i dati di log come UDM
Tutti gli eventi Unified Data Model (UDM) hanno un insieme di campi e messaggi comuni che i partner possono compilare indipendentemente dal tipo di evento. Questi campi includono:
- Entità: dispositivi, utenti e processi coinvolti in un evento.
- Metadati evento: quando si è verificato l'evento, il tipo di evento, la relativa origine e così via.
- Metadati di rete: metadati di rete di alto livello per eventi orientati alla rete, nonché dettagli del protocollo all'interno dei messaggi secondari:
- Metadati email: informazioni nei campi A, Da, Cc, Ccn e altri campi email.
- Metadati HTTP: Method, referral_url, useragent e così via.
- Risultati di sicurezza: qualsiasi classificazione o azione eseguita da un prodotto di sicurezza.
- Metadati aggiuntivi: qualsiasi dato evento importante specifico del fornitore che non può essere rappresentato adeguatamente nelle sezioni formali del modello UDM può essere aggiunto utilizzando un campo del payload JSON in formato libero.
Le sezioni seguenti descrivono come codificare e formattare gli eventi per il modello di dati unificato (UDM).
Codifica UDM
Gli eventi UDM devono essere inviati a Google Security Operations utilizzando uno dei seguenti formati:
Ai fini di questo documento, i campi sono rappresentati utilizzando una notazione a punti. Ad esempio, la seguente sintassi JSON:
{"menu":
{
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"}
]
}
}
}
È documentato come segue:
menu.id = "file"
menu.value = "File"
menu.popup.menuitem.value = "New"
menu.popup.menuitem.onclick = "CreateNewDoc()"
Formattazione di un evento UDM
Per formattare un evento UDM in modo da renderlo pronto per l'invio a Google, devi completare i seguenti passaggi:
- Specifica il tipo di evento: il tipo di evento selezionato determina i campi da includere nell'evento.
- Specifica il timestamp dell'evento: specifica il timestamp dell'evento.
- Specifica dei nomi (entità): ogni evento deve includere almeno un nome che descriva un dispositivo o un utente partecipante coinvolto nell'evento.
- Specifica del risultato di sicurezza: (Facoltativo) specifica i risultati di sicurezza includendo dettagli sui rischi e sulle minacce alla sicurezza rilevati da un sistema di sicurezza, nonché le azioni intraprese per mitigare questi rischi e minacce.
- Compila il resto delle informazioni sugli eventi obbligatori e facoltativi utilizzando i campi evento UDM.
Specifica del tipo di evento
Il valore più importante definito per qualsiasi evento inviato in formato UDM è il tipo di evento, specificato utilizzando uno dei possibili valori disponibili per Metadata.event_type. Sono inclusi valori come PROCESS_OPEN, FILE_CREATION, USER_CREATION, NETWORK_DNS e così via (per l'elenco completo, consulta Metadata.event_type. Per ogni tipo di evento devi compilare anche un insieme di altri campi e valori con le informazioni correlate all'evento originale. Per informazioni dettagliate sui campi da includere per ogni tipo di evento UDM, consulta la sezione Campi obbligatori e facoltativi per ogni tipo di evento UDM. L'esempio seguente mostra come specificare PROCESS_OPEN come tipo di evento utilizzando la notazione di testo Proto3:
metadata {
event_type: PROCESS_OPEN
}
Specifica del timestamp evento
Devi specificare il timestamp GMT per qualsiasi evento inviato in formato UDM utilizzando Metadata.event_timestamp. Il timbro deve essere codificato utilizzando uno dei seguenti standard:
- Per JSON, utilizza RFC 3339
- Timestamp Proto3
L'esempio seguente illustra come specificare il timestamp utilizzando il formato RFC 3339. Per questo esempio, aaaa-mm-ggThh:mm:ss+hh:mm: anno, mese, giorno, ora, minuto, secondo e lo scarto rispetto all'ora UTC. Lo scarto da UTC è di meno 8 ore, il che indica il fuso orario PST.
metadata {
event_timestamp: "2019-09-10T20:32:31-08:00"
}
Specifica dei nomi (entità)
Per ogni evento UDM, devi definire uno o più sostantivi. Un sostantivo rappresenta un partecipante o una persona giuridica in un evento UDM. Un sostantivo potrebbe essere, ad esempio, il dispositivo/utente che esegue l'attività descritta in un evento o il dispositivo/utente che è il target di questa attività descritta nell'evento. I nomi possono essere anche allegati o URL. Infine, un nome può essere utilizzato anche per descrivere un dispositivo di sicurezza che ha osservato l'attività descritta nell'evento (ad esempio, un proxy email o un router di rete).
Un evento UDM deve avere uno o più dei seguenti sostantivi specificati:
principal: rappresenta l'entità che agisce o il dispositivo che genera l'attività descritta nell'evento. Il principale deve includere almeno un dettaglio della macchina (nome host, MAC, IP, porta, identificatori specifici del prodotto come un GUID della macchina CrowdStrike) o un dettaglio dell'utente (ad esempio il nome utente) e, facoltativamente, i dettagli del processo. NON deve includere nessuno dei seguenti campi: email, file, chiavi o valori del Registro di sistema.
Se tutti gli eventi si verificano sulla stessa macchina, questa deve essere descritta solo in principal. La macchina non deve essere descritta anche in target o in src.
L'esempio seguente illustra come possono essere compilati i campi principal:
principal {
hostname: "jane_win10"
asset_id: "Sophos.AV:C070123456-ABCDE"
ip: "10.0.2.10"
port: 60671
user { userid: "john.smith" }
}
L'esempio riportato sopra descrive tutto ciò che è noto sul dispositivo e sull'utente che era l'attore principale descritto nell'evento. Questo esempio include l'indirizzo IP e il numero di porta del dispositivo, nonché il nome host. Include anche un identificatore della risorsa specifico del fornitore (di Sophos), ovvero un identificatore univoco generato dal prodotto per la sicurezza di terze parti.
target: rappresenta un dispositivo di destinazione a cui fa riferimento l'evento o un oggetto sul dispositivo di destinazione. Ad esempio, in una connessione del firewall dal dispositivo A al dispositivo B, A è descritto come principale e B come target. Per un'iniezione di processo da parte del processo C nel processo target D, il processo C è descritto come principale e il processo D come target.
Principale e target in UDM
L'esempio seguente illustra come vengono compilati i campi per un target:
target {
ip: "198.51.100.31"
port: 80
}
Anche in questo caso, se sono disponibili ulteriori informazioni, ad esempio nome host, indirizzi IP aggiuntivi, indirizzi MAC, identificatori di asset proprietari e così via, devono essere inclusi anche in target.
Sia principal che target (nonché altri sostantivi) possono fare riferimento ad attori sulla stessa macchina. Ad esempio, il processo A (principale) in esecuzione sulla macchina X agisce sul processo B (target) anche sulla macchina X.
- src: rappresenta un oggetto di origine su cui viene eseguito un'azione da parte del partecipante, insieme al contesto del dispositivo o del processo per l'oggetto di origine (la macchina in cui risiede l'oggetto di origine). Ad esempio, se l'utente U copia il file A sulla macchina X nel file B sulla macchina Y, sia il file A sia la macchina X verranno specificati nella parte src dell'evento UDM.
- intermediary:rappresenta i dettagli su uno o più dispositivi intermedi che elaborano l'attività descritta nell'evento. Sono inclusi i dettagli del dispositivo relativi a un server proxy, un server di inoltro SMTP e così via.
- observer:rappresenta un dispositivo di osservazione (ad esempio uno sniffer di pacchetti o uno scanner di vulnerabilità basato sulla rete), che non è un intermediario diretto, ma che osserva e genera report sull'evento in questione.
- about: utilizzato per memorizzare i dettagli di tutti gli oggetti a cui fa riferimento l'evento che non sono descritti in altro modo in participant, src, target, intermediary o observer. Ad esempio, potrebbe essere utilizzato per monitorare quanto segue:
- Allegati di file email
- Domini/URL/IP incorporati nel corpo di un'email
- DLL caricate durante un evento PROCESS_LAUNCH
Le sezioni delle entità degli eventi UDM includono informazioni sui vari partecipanti (dispositivi, utenti, oggetti come URL, file e così via) descritti nell'evento. L'UDM di Google Security Operations ha requisiti obbligatori per quanto riguarda il completamento dei campi Noun. Questi requisiti sono descritti in Campi obbligatori e facoltativi per ogni tipo di evento UDM. L'insieme di campi delle entità da compilare varia in base al tipo di evento.
Specifica del risultato di sicurezza
Se vuoi, puoi specificare i risultati di sicurezza compilando i campi SecurityResult, inclusi i dettagli sui rischi e sulle minacce alla sicurezza rilevati dal sistema di sicurezza, nonché le azioni intraprese per mitigare questi rischi e minacce. Di seguito sono riportati alcuni esempi di tipi di eventi di sicurezza che richiedono la compilazione dei campi SecurityResult:
- Un proxy per la sicurezza delle email ha rilevato un tentativo di phishing (MAIL_PHISHING) e ha bloccato (BLOCK) l'email.
- Un firewall proxy per la sicurezza delle email ha rilevato due allegati infetti (SOFTWARE_MALICIOUS) e li ha messi in quarantena e disinfettati (QUARANTINE, ALLOW_WITH_MODIFICATION), quindi ha inoltrato l'email disinfettata.
- Un sistema SSO ha facilitato un accesso (AUTH_VIOLATION) che è stato bloccato (BLOCK).
- Una sandbox per il malware ha rilevato spyware (SOFTWARE_MALICIOUS) in un allegato cinque minuti dopo che il file è stato recapitato (ALLOW) all'utente nella Posta in arrivo.