Coletar registros do Halcyon Anti-Ransomware
Este documento explica como ingerir registros do Halcyon Anti-Ransomware no Google Security Operations usando o Google Cloud Storage V2.
A Halcyon é uma plataforma antiransomware que usa IA para detectar, prevenir e recuperar ataques de ransomware. Ele gera alertas para eventos de detecção de ransomware, tentativas de criptografia e ações de recuperação. O analisador mapeia campos de registro formatados em JSON para o modelo de dados unificado (UDM), processando tipos de eventos como operações de arquivo, atividade do usuário e resultados de segurança.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Um projeto do GCP com a API Cloud Storage ativada
- Permissões para criar e gerenciar buckets do GCS e políticas do IAM
- Acesso privilegiado ao console do Halcyon com recursos de exportação de registros
Criar um bucket do Google Cloud Storage
- Acesse o Console do Google Cloud.
- Selecione seu projeto ou crie um novo.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
Configuração Valor Nomeie seu bucket Insira um nome globalmente exclusivo (por exemplo, halcyon-logs)Tipo de local Escolha de acordo com suas necessidades (região, birregional, multirregional) Local Selecione o local (por exemplo, us-central1).Classe de armazenamento Padrão (recomendado para registros acessados com frequência) Controle de acesso Uniforme (recomendado) Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção Clique em Criar.
Exportar registros do Halcyon para o Google Cloud Storage
O Halcyon permite exportar dados de registro no formato JSON. Use uma das seguintes abordagens para enviar registros ao GCS.
Opção A: exportar registros usando a API Halcyon e fazer upload para o GCS
- Faça login no console de gerenciamento do Halcyon.
- Acesse Configurações > Acesso à API e gere uma chave de API com permissões de leitura.
- Copie e salve a chave de API.
- Use um script programado ou uma função do Cloud Run para chamar a API REST do Halcyon, buscar os logs de eventos e gravá-los no GCS no formato JSON.
Opção B: configurar a integração com o SIEM e encaminhar para o GCS
- Faça login no console de gerenciamento do Halcyon.
- Acesse Configurações > Integrações > SIEM.
- Configure o destino de exportação de registros para gravar eventos formatados em JSON em um diretório local ou armazenamento intermediário.
Usar uma função do Cloud Run para fazer upload periódico de registros para o bucket do GCS.
- Verifique se os arquivos exportados estão no formato JSON.
- Cada arquivo precisa conter um ou mais registros de eventos.
Recuperar a conta de serviço do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Halcyon Anti Ransomware como o Tipo de registro.
Clique em Get Service Account. Um e-mail exclusivo da conta de serviço será exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie o endereço de e-mail. Você vai usá-la na próxima etapa.
Conceder permissões do IAM à conta de serviço do Google SecOps
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket.
- Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar principais: cole o e-mail da conta de serviço do Google SecOps.
- Atribuir papéis: selecione Leitor de objetos do Storage.
Clique em Salvar.
- Se você planeja usar a opção de exclusão (excluir arquivos transferidos), conceda o papel de Administrador de objetos do Storage em vez de Leitor de objetos do Storage.
Configurar um feed no Google SecOps para ingerir registros do Halcyon Anti-Ransomware
- Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Halcyon Anti-Ransomware logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Halcyon Anti Ransomware como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
Campo Valor URI do bucket de armazenamento gs://halcyon-logs/halcyon/events/Opção de exclusão da origem Selecione a opção de exclusão de acordo com sua preferência. Idade máxima do arquivo (dias) O padrão é 180 dias. Namespace do recurso O namespace do recurso Rótulos de ingestão O rótulo a ser aplicado aos eventos deste feed - Substitua
halcyon-logspelo nome real do bucket do GCS. - Sempre inclua a barra final (
/) no final do URI.
- Substitua
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
| sshd, tty, euid, dataType, filterName, totalOccurrences, occurredAt, count, occurrences.IncorrectPasswords, occurrences.FailedPassword, occurrences.AuthFailure, policyMode, action | additional.fields | Mesclado com rótulos criados de cada campo, se houver. Os campos totalOccurrences, count e occurrences são convertidos em string. |
| dnsArtifact.uri | network.dns.questions | Mesclado com a matriz de perguntas que contém o nome |
| asset.id | principal.asset.asset_id | Concatenado como "ASSET:" + asset.id |
| asset.kind | principal.asset.attribute.labels | Mesclado com asset_kind_label criado de asset.kind |
| asset.name | principal.asset.hostname | Valor copiado diretamente |
| ipArtifact.ipAddress | principal.asset.ip | Valor copiado diretamente |
| summary.applicationName | principal.application | Valor copiado diretamente |
| phost, asset.name | principal.hostname | Valor de phost, se houver, substituído por asset.name, se houver |
| ipArtifact.ipAddress | principal.ip | Valor copiado diretamente |
| process.commandLine | principal.process.command_line | Valor copiado diretamente |
| modifiedFilePath, artifact.filePath, process.artifact.filePath, processes.artifact.filePath | principal.process.file.full_path | Valor definido como modifiedFilePath, se presente, substituído por artifact.filePath, se presente, substituído por process.artifact.filePath, se presente, substituído por processes.artifact.filePath, se presente (aspas removidas para processes.artifact.filePath) |
| lastOccurredAt | principal.process.file.last_seen_time | Convertido usando o filtro de data com o formato ISO8601 |
| process.artifact.kind, artifact.kind, primaryProcess.artifact.kind | principal.process.file.mime_type | Valor de process.artifact.kind, se presente, substituído por artifact.kind, se presente, substituído por primaryProcess.artifact.kind, se presente |
| artifact.sha256, process.artifact.sha256, processes.artifact.sha256 | principal.process.file.sha256 | Valor de artifact.sha256, se houver, substituído por process.artifact.sha256, se houver, substituído por processes.artifact.sha256, se houver |
| process.parentPid | principal.process.parent_pid | Valor copiado diretamente |
| process.pid | principal.process.pid | Valor copiado diretamente |
| user_displayname | principal.user.user_display_name | Valor copiado diretamente |
| usuário | principal.user.userid | Valor copiado diretamente |
| summary.artifact.filePath | target.file.full_path | Valor copiado diretamente |
| summary.artifact.sha256 | target.file.sha256 | Valor copiado diretamente |
| primaryProcess.commandLine | target.process.command_line | Valor copiado diretamente após a remoção das aspas |
| primaryProcess.kind | target.process.file.mime_type | Valor copiado diretamente |
| primaryProcess.parentPid | target.process.parent_process.pid | Valor copiado diretamente |
| primaryProcess.pid | target.process.pid | Valor copiado diretamente |
| uid | target.user.userid | Valor copiado diretamente |
| ID | target.asset_id | Concatenado como "ASSET:" + id |
| ação | security_result.action | Em maiúsculas se a ação for "Bloquear" ou "Permitir" |
| reason.exitCode | security_result.action_details | Valor copiado diretamente |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | Mesclado com rótulos criados de cada campo, se houver. Barras invertidas removidas para dxpRule |
| dxpRuleType | security_result.rule_type | Valor copiado diretamente |
| ipArtifact.version | security_result.rule_version | Valor copiado diretamente |
| msg, reason.cause | security_result.summary | Valor de msg, se presente, substituído por reason.cause, se presente |
| timestamp | metadata.event_timestamp | Convertido usando o filtro de data com os formatos MMM dd HH:mm:ss ou MMM d HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | Defina como FILE_UNCATEGORIZED se has_principal e has_target_file; USER_UNCATEGORIZED se has_principal e has_target; STATUS_UPDATE se has_principal; caso contrário, GENERIC_EVENT (sinalizações derivadas de fontes) |
| kind | metadata.product_event_type | Valor copiado diretamente |
| gupid, guid | metadata.product_log_id | Valor de gupid, se presente, substituído por guid, se presente |
| metadata.product_name | Defina como "Halcyon Anti Ransomware" | |
| metadata.vendor_name | Defina como "Halcyon". | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
Mapeado do registro de alterações |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Mapeado do registro de alterações |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mapeado do registro de alterações |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Mapeado do registro de alterações |
action |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
filterName |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
policyMode |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
euid |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
occurredAt |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
guid |
event.idm.read_only_udm.metadata.product_log_id |
Mapeado do registro de alterações |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
Mapeado do registro de alterações |
count |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mapeado do registro de alterações |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Mapeado do registro de alterações |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Mapeado do registro de alterações |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de alterações |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de alterações |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
Mapeado do registro de alterações |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
Mapeado do registro de alterações |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
Mapeado do registro de alterações |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
Mapeado do registro de alterações |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
Mapeado do registro de alterações |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
Mapeado do registro de alterações |
summary.applicationName |
event.idm.read_only_udm.principal.application |
Mapeado do registro de alterações |
process.pid |
event.idm.read_only_udm.principal.process.pid |
Mapeado do registro de alterações |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
Mapeado do registro de alterações |
reason.cause |
event.idm.read_only_udm.security_result.summary |
Mapeado do registro de alterações |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
Mapeado do registro de alterações |
uid |
event.idm.read_only_udm.target.user.userid |
Mapeado do registro de alterações |
tty |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
sshd |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de alterações |
phost |
event.idm.read_only_udm.principal.hostname |
Mapeado do registro de alterações |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
Mapeado do registro de alterações |
msg |
event.idm.read_only_udm.security_result.summary |
Mapeado do registro de alterações |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
Mapeado do registro de alterações |
user |
event.idm.read_only_udm.principal.user.userid |
Mapeado do registro de alterações |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.