Raccogli i log di Halcyon Anti-Ransomware
Questo documento spiega come importare i log di Halcyon Anti-Ransomware in Google Security Operations utilizzando Google Cloud Storage V2.
Halcyon è una piattaforma anti-ransomware che utilizza l'AI per rilevare, prevenire e ripristinare gli attacchi ransomware. Genera avvisi per gli eventi di rilevamento di ransomware, i tentativi di crittografia e le azioni di ripristino. Il parser esegue il mapping dei campi di log in formato JSON al modello UDM (Unified Data Model), gestendo i tipi di eventi come le operazioni sui file, l'attività utente e i risultati di sicurezza.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Un progetto GCP con l'API Storage Cloud abilitata
- Autorizzazioni per creare e gestire bucket GCS e policy IAM
- Accesso privilegiato alla console Halcyon con funzionalità di esportazione dei log
Crea un bucket Cloud Storage
- Vai alla console Google Cloud.
- Seleziona il tuo progetto o creane uno nuovo.
- Nel menu di navigazione, vai a Cloud Storage > Bucket.
- Fai clic su Crea bucket.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio halcyon-logs)Tipo di località Scegli in base alle tue esigenze (regione, a due regioni, multiregionale) Località Seleziona la località (ad esempio us-central1)Classe di archiviazione Standard (consigliata per i log ad accesso frequente) Controllo dell'accesso Uniforme (consigliato) Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione Fai clic su Crea.
Esporta i log di Halcyon in Google Cloud Storage
Halcyon supporta l'esportazione dei dati di log in formato JSON. Utilizza uno dei seguenti approcci per inviare i log a GCS.
Opzione A: esporta i log utilizzando l'API Halcyon e caricali in GCS
- Accedi alla console di gestione Halcyon.
- Vai a Impostazioni > Accesso API e genera una chiave API con autorizzazioni di lettura.
- Copia e salva la chiave API.
- Utilizza uno script pianificato o una funzione Cloud Run per chiamare l'API REST Halcyon, recuperare i log degli eventi e scriverli in GCS in formato JSON.
Opzione B: configura l'integrazione SIEM e inoltra i log a GCS
- Accedi alla console di gestione Halcyon.
- Vai a Impostazioni > Integrazioni > SIEM.
- Configura la destinazione di esportazione dei log per scrivere gli eventi in formato JSON in una directory locale o in uno spazio di archiviazione intermedio.
Utilizza una funzione Cloud Run per caricare periodicamente i log nel bucket GCS.
- Assicurati che i file esportati siano in formato JSON.
- Ogni file deve contenere uno o più record di eventi.
Recupera il account di servizio Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Halcyon Anti Ransomware come Tipo di log.
Fai clic su Recupera service account. Verrà visualizzato un indirizzo email del account di servizio univoco, ad esempio:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia l'indirizzo email. Lo utilizzerai nel prossimo passaggio.
Concedi le autorizzazioni IAM al account di servizio Google SecOps
- Vai a Cloud Storage > Bucket.
- Fai clic sul nome del bucket.
- Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps.
- Assegna ruoli: seleziona Visualizzatore oggetti Storage.
Fai clic su Salva.
- Se prevedi di utilizzare l'opzione di eliminazione (elimina i file trasferiti), concedi il ruolo Amministratore oggetti Storage anziché Visualizzatore oggetti Storage.
Configura un feed in Google SecOps per importare i log di Halcyon Anti-Ransomware
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Halcyon Anti-Ransomware logs). - Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Halcyon Anti Ransomware come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
Campo Valore URI del bucket di archiviazione gs://halcyon-logs/halcyon/events/Opzione di eliminazione dell'origine Seleziona l'opzione di eliminazione in base alle tue preferenze Età massima dei file (giorni) Il valore predefinito è 180 giorni Spazio dei nomi dell'asset Lo spazio dei nomi dell'asset Etichette di importazione L'etichetta da applicare agli eventi di questo feed - Sostituisci
halcyon-logscon il nome effettivo del bucket GCS. - Includi sempre la barra finale (
/) alla fine dell'URI.
- Sostituisci
Fai clic su Avanti.
Esamina la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mapping UDM
| Campo log | Mapping UDM | Funzione logica |
|---|---|---|
| sshd, tty, euid, dataType, filterName, totalOccurrences, occurredAt, count, occurrences.IncorrectPasswords, occurrences.FailedPassword, occurrences.AuthFailure, policyMode, action | additional.fields | Unito alle etichette create da ogni campo, se presente; i campi totalOccurrences, count, occurrences convertiti in stringa |
| dnsArtifact.uri | network.dns.questions | Unito all'array di domande contenente il nome |
| asset.id | principal.asset.asset_id | Concatenato come "ASSET:" + asset.id |
| asset.kind | principal.asset.attribute.labels | Unito a asset_kind_label creato da asset.kind |
| asset.name | principal.asset.hostname | Valore copiato direttamente |
| ipArtifact.ipAddress | principal.asset.ip | Valore copiato direttamente |
| summary.applicationName | principal.application | Valore copiato direttamente |
| phost, asset.name | principal.hostname | Valore di phost se presente, sovrascritto da asset.name se presente |
| ipArtifact.ipAddress | principal.ip | Valore copiato direttamente |
| process.commandLine | principal.process.command_line | Valore copiato direttamente |
| modifiedFilePath, artifact.filePath, process.artifact.filePath, processes.artifact.filePath | principal.process.file.full_path | Valore impostato su modifiedFilePath se presente, sovrascritto da artifact.filePath se presente, sovrascritto da process.artifact.filePath se presente, sovrascritto da processes.artifact.filePath se presente (virgolette rimosse per processes.artifact.filePath) |
| lastOccurredAt | principal.process.file.last_seen_time | Convertito utilizzando il filtro data con formato ISO8601 |
| process.artifact.kind, artifact.kind, primaryProcess.artifact.kind | principal.process.file.mime_type | Valore di process.artifact.kind se presente, sovrascritto da artifact.kind se presente, sovrascritto da primaryProcess.artifact.kind se presente |
| artifact.sha256, process.artifact.sha256, processes.artifact.sha256 | principal.process.file.sha256 | Valore di artifact.sha256 se presente, sovrascritto da process.artifact.sha256 se presente, sovrascritto da processes.artifact.sha256 se presente |
| process.parentPid | principal.process.parent_pid | Valore copiato direttamente |
| process.pid | principal.process.pid | Valore copiato direttamente |
| user_displayname | principal.user.user_display_name | Valore copiato direttamente |
| user | principal.user.userid | Valore copiato direttamente |
| summary.artifact.filePath | target.file.full_path | Valore copiato direttamente |
| summary.artifact.sha256 | target.file.sha256 | Valore copiato direttamente |
| primaryProcess.commandLine | target.process.command_line | Valore copiato direttamente dopo aver rimosso le virgolette |
| primaryProcess.kind | target.process.file.mime_type | Valore copiato direttamente |
| primaryProcess.parentPid | target.process.parent_process.pid | Valore copiato direttamente |
| primaryProcess.pid | target.process.pid | Valore copiato direttamente |
| uid | target.user.userid | Valore copiato direttamente |
| id | target.asset_id | Concatenato come "ASSET:" + id |
| action | security_result.action | Convertito in maiuscolo se l'azione è "Block" o "Allow" |
| reason.exitCode | security_result.action_details | Valore copiato direttamente |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | Unito alle etichette create da ogni campo, se presente; barre rovesciate rimosse per dxpRule |
| dxpRuleType | security_result.rule_type | Valore copiato direttamente |
| ipArtifact.version | security_result.rule_version | Valore copiato direttamente |
| msg, reason.cause | security_result.summary | Valore di msg se presente, sovrascritto da reason.cause se presente |
| timestamp | metadata.event_timestamp | Convertito utilizzando il filtro data con i formati MMM gg HH:mm:ss o MMM g HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | Impostato su FILE_UNCATEGORIZED se has_principal e has_target_file; USER_UNCATEGORIZED se has_principal e has_target; STATUS_UPDATE se has_principal; altrimenti GENERIC_EVENT (flag derivati dalle origini) |
| kind | metadata.product_event_type | Valore copiato direttamente |
| gupid, guid | metadata.product_log_id | Valore di gupid se presente, sovrascritto da guid se presente |
| metadata.product_name | Impostato su "Halcyon Anti Ransomware" | |
| metadata.vendor_name | Impostato su "Halcyon" |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.