Recopila registros de Halcyon Anti-Ransomware
En este documento, se explica cómo transferir registros de Halcyon Anti-Ransomware a Google Security Operations con Google Cloud Storage V2.
Halcyon es una plataforma anti-ransomware que usa IA para detectar, prevenir y recuperarse de ataques de ransomware. Genera alertas para eventos de detección de ransomware, intentos de encriptación y acciones de recuperación. El analizador asigna los campos de registro con formato JSON al modelo de datos unificado (UDM) y controla los tipos de eventos, como las operaciones de archivos, la actividad del usuario y los resultados de seguridad.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un proyecto de GCP con la API de Cloud Storage habilitada
- Permisos para crear y administrar buckets de GCS y políticas de IAM
- Acceso con privilegios a la consola de Halcyon con capacidades de exportación de registros
Crea un bucket de Google Cloud Storage
- Ve a la consola de Google Cloud.
- Selecciona tu proyecto o crea uno nuevo.
- En el menú de navegación, ve a Cloud Storage > Buckets.
- Haz clic en Crear bucket.
Proporciona los siguientes detalles de configuración:
Parámetro de configuración Valor Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, halcyon-logs).Tipo de ubicación Elige según tus necesidades (regional, birregional o multirregional) Ubicación Selecciona la ubicación (por ejemplo, us-central1).Clase de almacenamiento Estándar (recomendado para los registros a los que se accede con frecuencia) Control de acceso Uniforme (recomendado) Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención Haz clic en Crear.
Exporta registros de Halcyon a Google Cloud Storage
Halcyon admite la exportación de datos de registro en formato JSON. Usa uno de los siguientes enfoques para entregar registros a GCS.
Opción A: Exporta registros con la API de Halcyon y súbelos a GCS
- Accede a la consola de administración de Halcyon.
- Ve a Configuración > Acceso a la API y genera una clave de API con permisos de lectura.
- Copia y guarda la clave de API.
- Usa una secuencia de comandos programada o una función de Cloud Run para llamar a la API de REST de Halcyon, recuperar los registros de eventos y escribirlos en GCS en formato JSON.
Opción B: Configura la integración del SIEM y reenvía los datos a GCS
- Accede a la consola de administración de Halcyon.
- Ve a Configuración > Integraciones > SIEM.
- Configura el destino de exportación de registros para escribir eventos con formato JSON en un directorio local o en un almacenamiento intermedio.
Usa una función de Cloud Run para subir registros a tu bucket de GCS de forma periódica.
- Asegúrate de que los archivos exportados estén en formato JSON.
- Cada archivo debe contener uno o más registros de eventos.
Recupera la cuenta de servicio de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- Haz clic en Configura un feed único.
- Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona Halcyon Anti Ransomware como el Tipo de registro.
Haz clic en Obtener cuenta de servicio. Se mostrará un correo electrónico de cuenta de servicio único, por ejemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia esta dirección de correo electrónico. la usarás en el próximo paso.
Otorga permisos de IAM a la cuenta de servicio de Google SecOps
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket.
- Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar entidades: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
- Asignar roles: Selecciona Visualizador de objetos de Storage.
Haz clic en Guardar.
- Si planeas usar la opción de eliminación (borrar archivos transferidos), otorga el rol de Administrador de objetos de almacenamiento en lugar del rol de Visualizador de objetos de almacenamiento.
Configura un feed en Google SecOps para transferir registros de Halcyon Anti-Ransomware
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Halcyon Anti-Ransomware logs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona Halcyon Anti Ransomware como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
Campo Valor URI del bucket de almacenamiento gs://halcyon-logs/halcyon/events/Opción de eliminación de la fuente Selecciona la opción de eliminación según tu preferencia. Antigüedad máxima del archivo (días) El valor predeterminado es de 180 días. Espacio de nombres del recurso El espacio de nombres del recurso Etiquetas de transferencia Es la etiqueta que se aplicará a los eventos de este feed. - Reemplaza
halcyon-logspor el nombre real de tu bucket de GCS. - Siempre incluye la barra diagonal final (
/) al final del URI.
- Reemplaza
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| sshd, tty, euid, dataType, filterName, totalOccurrences, occurredAt, count, occurrences.IncorrectPasswords, occurrences.FailedPassword, occurrences.AuthFailure, policyMode, action | additional.fields | Se combinan con las etiquetas creadas a partir de cada campo, si están presentes; los campos totalOccurrences, count y occurrences se convierten en cadenas |
| dnsArtifact.uri | network.dns.questions | Se combinó con un array de preguntas que contiene el nombre. |
| asset.id | principal.asset.asset_id | Se concatena como "ASSET:" + asset.id |
| asset.kind | principal.asset.attribute.labels | Se combinó con asset_kind_label creado a partir de asset.kind |
| asset.name | principal.asset.hostname | El valor se copió directamente. |
| ipArtifact.ipAddress | principal.asset.ip | El valor se copió directamente. |
| summary.applicationName | principal.application | El valor se copió directamente. |
| phost, asset.name | principal.hostname | Valor de phost si está presente, anulado por asset.name si está presente |
| ipArtifact.ipAddress | principal.ip | El valor se copió directamente. |
| process.commandLine | principal.process.command_line | El valor se copió directamente. |
| modifiedFilePath, artifact.filePath, process.artifact.filePath, processes.artifact.filePath | principal.process.file.full_path | Valor establecido en modifiedFilePath si está presente, reemplazado por artifact.filePath si está presente, reemplazado por process.artifact.filePath si está presente, reemplazado por processes.artifact.filePath si está presente (se quitaron las comillas de processes.artifact.filePath) |
| lastOccurredAt | principal.process.file.last_seen_time | Se convirtió con el filtro de fecha con el formato ISO8601 |
| process.artifact.kind, artifact.kind, primaryProcess.artifact.kind | principal.process.file.mime_type | Valor de process.artifact.kind si está presente, reemplazado por artifact.kind si está presente, reemplazado por primaryProcess.artifact.kind si está presente |
| artifact.sha256, process.artifact.sha256, processes.artifact.sha256 | principal.process.file.sha256 | Valor de artifact.sha256 si está presente, reemplazado por process.artifact.sha256 si está presente, reemplazado por processes.artifact.sha256 si está presente |
| process.parentPid | principal.process.parent_pid | El valor se copió directamente. |
| process.pid | principal.process.pid | El valor se copia directamente. |
| user_displayname | principal.user.user_display_name | El valor se copió directamente. |
| usuario | principal.user.userid | El valor se copia directamente. |
| summary.artifact.filePath | target.file.full_path | El valor se copió directamente. |
| summary.artifact.sha256 | target.file.sha256 | El valor se copia directamente. |
| primaryProcess.commandLine | target.process.command_line | Valor copiado directamente después de quitar las comillas |
| primaryProcess.kind | target.process.file.mime_type | El valor se copió directamente. |
| primaryProcess.parentPid | target.process.parent_process.pid | El valor se copió directamente. |
| primaryProcess.pid | target.process.pid | El valor se copió directamente. |
| uid | target.user.userid | El valor se copia directamente. |
| id | target.asset_id | Se concatena como "ASSET:" + ID |
| acción | security_result.action | Se escribe en mayúsculas si la acción es "Block" o "Allow". |
| reason.exitCode | security_result.action_details | El valor se copia directamente. |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | Se combina con las etiquetas creadas a partir de cada campo, si están presentes. Se quitan las barras inversas para dxpRule. |
| dxpRuleType | security_result.rule_type | El valor se copió directamente. |
| ipArtifact.version | security_result.rule_version | El valor se copia directamente. |
| msg, reason.cause | security_result.summary | Valor del mensaje si está presente, anulado por reason.cause si está presente |
| timestamp | metadata.event_timestamp | Se convirtió con el filtro de fecha con los formatos MMM dd HH:mm:ss o MMM d HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | Se establece en FILE_UNCATEGORIZED si tiene principal y tiene archivo de destino; USER_UNCATEGORIZED si tiene principal y tiene destino; STATUS_UPDATE si tiene principal; de lo contrario, GENERIC_EVENT (marcas derivadas de fuentes) |
| kind | metadata.product_event_type | El valor se copia directamente. |
| gupid, guid | metadata.product_log_id | Valor de gupid si está presente, anulado por guid si está presente |
| metadata.product_name | Establece el valor en "Halcyon Anti Ransomware". | |
| metadata.vendor_name | Se estableció en "Halcyon". | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
Asignado desde el registro de cambios |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Se asignó desde el registro de cambios |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Se asignó desde el registro de cambios |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Se asignó desde el registro de cambios |
action |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
filterName |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
policyMode |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
euid |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
occurredAt |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
guid |
event.idm.read_only_udm.metadata.product_log_id |
Se asignó desde el registro de cambios |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
Se asignó desde el registro de cambios |
count |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Se asignó desde el registro de cambios |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Se asignó desde el registro de cambios |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Se asignó desde el registro de cambios |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
Se asignó desde el registro de cambios |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
Se asignó desde el registro de cambios |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
Se asignó desde el registro de cambios |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
Se asignó desde el registro de cambios |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
Se asignó desde el registro de cambios |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
Se asignó desde el registro de cambios |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
Se asignó desde el registro de cambios |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
Se asignó desde el registro de cambios |
summary.applicationName |
event.idm.read_only_udm.principal.application |
Se asignó desde el registro de cambios |
process.pid |
event.idm.read_only_udm.principal.process.pid |
Se asignó desde el registro de cambios |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
Se asignó desde el registro de cambios |
reason.cause |
event.idm.read_only_udm.security_result.summary |
Se asignó desde el registro de cambios |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
Se asignó desde el registro de cambios |
uid |
event.idm.read_only_udm.target.user.userid |
Se asignó desde el registro de cambios |
tty |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
sshd |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
phost |
event.idm.read_only_udm.principal.hostname |
Se asignó desde el registro de cambios |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
Se asignó desde el registro de cambios |
msg |
event.idm.read_only_udm.security_result.summary |
Se asignó desde el registro de cambios |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
Se asignó desde el registro de cambios |
user |
event.idm.read_only_udm.principal.user.userid |
Se asignó desde el registro de cambios |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.