Raccogliere 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 recuperare i dati dagli attacchi ransomware. Genera avvisi per eventi di rilevamento di ransomware, tentativi di crittografia e azioni di recupero. Il parser mappa i campi dei log in formato JSON al modello UDM (Unified Data Model), gestendo tipi di eventi come operazioni sui file, attività utente e 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 Google 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 univoco globale (ad esempio halcyon-logs).Tipo di località Scegli in base alle tue esigenze (regione singola, a due regioni, multiregionale) Località Seleziona la posizione (ad esempio, us-central1).Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente) Controllo dell'accesso Uniforme (consigliato) Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione Fai clic su Crea.
Esportare 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 su 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 eventi e scriverli in GCS in formato JSON.
Opzione B: configura l'integrazione SIEM e inoltra a GCS
- Accedi alla console di gestione Halcyon.
- Vai a Impostazioni > Integrazioni > SIEM.
- Configura la destinazione di esportazione dei log per scrivere 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.
Recuperare 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 Ottieni service account. Verrà visualizzata un'email del account di servizio univoca, 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'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 Storage Object Admin anziché Storage Object Viewer.
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 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 del 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.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | 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 e 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 | Unita con 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 per 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 |
| utente | 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 subito dopo la rimozione delle 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 |
| azione | security_result.action | In maiuscolo se l'azione è "Blocca" o "Consenti" |
| reason.exitCode | security_result.action_details | Valore copiato direttamente |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | Unite alle etichette create da ogni campo, se presenti; 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 per 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 ha_principal e has_target_file; USER_UNCATEGORIZED se ha_principal e has_target; STATUS_UPDATE se ha_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 | Imposta su "Halcyon Anti Ransomware" | |
| metadata.vendor_name | Imposta su "Halcyon" | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
Mappato dal log delle modifiche |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Mappato dal log delle modifiche |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mappato dal log delle modifiche |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Mappato dal log delle modifiche |
action |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
filterName |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
policyMode |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
euid |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
occurredAt |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
guid |
event.idm.read_only_udm.metadata.product_log_id |
Mappato dal log delle modifiche |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
Mappato dal log delle modifiche |
count |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mappato dal log delle modifiche |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Mappato dal log delle modifiche |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Mappato dal log delle modifiche |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mappato dal log delle modifiche |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
Mappato dal log delle modifiche |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
Mappato dal log delle modifiche |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
Mappato dal log delle modifiche |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
Mappato dal log delle modifiche |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
Mappato dal log delle modifiche |
summary.applicationName |
event.idm.read_only_udm.principal.application |
Mappato dal log delle modifiche |
process.pid |
event.idm.read_only_udm.principal.process.pid |
Mappato dal log delle modifiche |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
Mappato dal log delle modifiche |
reason.cause |
event.idm.read_only_udm.security_result.summary |
Mappato dal log delle modifiche |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
Mappato dal log delle modifiche |
uid |
event.idm.read_only_udm.target.user.userid |
Mappato dal log delle modifiche |
tty |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
sshd |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
phost |
event.idm.read_only_udm.principal.hostname |
Mappato dal log delle modifiche |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
Mappato dal log delle modifiche |
msg |
event.idm.read_only_udm.security_result.summary |
Mappato dal log delle modifiche |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
Mappato dal log delle modifiche |
user |
event.idm.read_only_udm.principal.user.userid |
Mappato dal log delle modifiche |
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.