Recopila registros de eventos de Cortex XDR de Palo Alto
En este documento, se explica cómo transferir registros de eventos de Palo Alto Cortex XDR a Google Security Operations con Google Cloud Storage. El analizador extrae datos de eventos de seguridad de los registros JSON de Cortex XDR de Palo Alto Networks. Normaliza los datos en el modelo de datos unificado (UDM) asignando campos, convirtiendo tipos de datos y enriqueciendo eventos con metadatos, como el proveedor, el producto y los tipos de eventos, según la lógica condicional vinculada a los campos event_type y event_sub_type. También controla las conexiones de red, las operaciones de archivos y registros, la información de procesos y la actividad del usuario.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Google Cloud El almacenamiento está configurado y activo en tu entorno de Google Cloud
- Acceso con privilegios a Google Cloud y permisos adecuados
- Acceso con privilegios a Cortex XDR de Palo Alto
Crea un Google Cloud bucket de Storage
- Accede a la consola de Google Cloud .
Ve a la página Buckets de Cloud Storage.
Haz clic en Crear.
En la página Crear un bucket, ingresa la información de tu bucket. Después de cada uno de los siguientes pasos, haz clic en Continuar para avanzar al siguiente paso:
En la sección Primeros pasos, haz lo siguiente:
- Ingresa un nombre único que cumpla con los requisitos de nombre del bucket (por ejemplo, cortex-xdr-events-secops).
Para habilitar el espacio de nombres jerárquico, haz clic en la flecha de expansión para expandir la sección Optimizar las cargas de trabajo orientadas a archivos y con uso intensivo de datos y, luego, selecciona Habilitar el espacio de nombres jerárquico en este bucket.
Para agregar una etiqueta de bucket, haz clic en la flecha de expansión para expandir la sección Etiquetas.
Haz clic en Agregar etiqueta y especifica una clave y un valor para tu etiqueta.
En la sección Eligir dónde almacenar tus datos, haz lo siguiente:
- Selecciona un tipo de ubicación
Usa el menú del tipo de ubicación para seleccionar una Ubicación en la que se almacenarán de forma permanente los datos de objetos de tu bucket.
Para configurar la replicación entre bucket, expande la sección Configura la bucket entre buckets.
En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Autoclass para la administración automática de clases de almacenamiento de los datos de tu bucket.
En la sección Elige cómo controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos del bucket.
En la sección Elige cómo proteger los datos de objetos, haz lo siguiente:
- Selecciona cualquiera de las opciones de Protección de datos que desees configurar para tu bucket.
- Para elegir cómo se encriptarán los datos de tus objetos, haz clic en la flecha desplegable Encriptación de datos y selecciona un método de encriptación de datos.
Haz clic en Crear.
Configura una regla de Administración del ciclo de vida de los objetos en el bucket de destino recién creado para borrar objetos después de 7 días:
- En la lista Buckets de Cloud Storage, haz clic en el nombre de tu bucket.
- Selecciona la pestaña Ciclo de vida y, luego, haz clic en Agregar una regla.
- En la sección Selecciona una acción, selecciona Borrar objeto.
- En la sección Selecciona condiciones del objeto, selecciona Edad y establece el valor en
7días. - Haz clic en Guardar.
Configura el reenvío de eventos de Cortex XDR
- Accede a la IU web de Cortex XDR.
- Ve a Configuración > Configuraciones > Administración de datos > Reenvío de eventos.
- Activa las licencias en la sección Activación.
- Habilita el reenvío de eventos de GB para exportar los registros analizados de Cortex XDR Pro por GB a un SIEM externo para su almacenamiento.
- Habilita el reenvío de eventos de Endpoints para exportar datos de extremos sin procesar para Cortex XDR Pro EP y Cloud Endpoints.
- Guarda la selección.
- Copia la ruta de acceso al almacenamiento que se muestra.
- Genera y descarga el token web JSON de la cuenta de servicio, que contiene la clave de acceso.
- Guárdala en una ubicación segura.
Configura Google Cloud Secret Manager
- Accede a GCP.
- Ve a la página de Secret Manager.
- Si es la primera vez que lo haces, se te pedirá que habilite la API de Secret Manager.
- Crea un secreto llamado EVENT_FRWD_CRTX_KEY y copia el contenido del archivo JSON xdr_sa_key.json que descargaste como el valor del secreto.
Configura feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de eventos de Cortex XDR de PANW).
- Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona Palo Alto Cortex XDR Events como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio como la Cuenta de servicio de Chronicle.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI del bucket de almacenamiento: Google Cloud URL del bucket de almacenamiento (por ejemplo,
gs://cortex-xdr-events-secops/). Esta URL debe terminar con una barra inclinada final. Opciones de eliminación del código fuente: Selecciona No borrar los archivos transferidos.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.
- URI del bucket de almacenamiento: Google Cloud URL del bucket de almacenamiento (por ejemplo,
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Después de crear el feed, búscalo en la lista Feeds y haz clic en los tres puntos de acción que se encuentran a la derecha de la línea.
Selecciona Inhabilitar feed.
Configura el acceso a Secret JSON en Cloud Storage
- Accede a GCP.
- Ve a la página de Secret Manager.
- Selecciona el secreto EVENT_FRWD_CRTX_KEY.
- Ve a la pestaña Permisos.
- Proporciona acceso de administrador de objetos de almacenamiento y lector de buckets heredados de almacenamiento al bucket cortex-xdr-events-secops creado anteriormente.
Configura los permisos de Google SecOps para Cloud Storage
- Ve a IAM y administración > IAM.
- Ubica la cuenta de servicio de Chronicle.
- Otorga acceso de Visualizador de objetos de Storage (roles/storage.objectViewer) al bucket cortex-xdr-events-secops creado anteriormente.
Configura la transferencia de registros de eventos de PANW Cortex XDR a Cloud Storage del proyecto
- En Google Cloud, ve a APIs y servicios > Biblioteca.
- Habilita las APIs de Cloud Run y Artifact Registry.
- Para abrir Cloud Shell, haz clic en el ícono de la barra de navegación superior.
Descarga un código personalizado con el siguiente comando:
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.gitPara ir al directorio, ejecuta el siguiente comando:
cd google-cloud-cortex-chronicle/Abre el archivo
env.propertiescon un editor comovi.Proporciona los siguientes detalles de configuración:
REGION=us-central1 # Update according to your project region REPO_NAME=panw-chronicle IMAGE_NAME=sync_cortex_bucket GCP_PROJECT_ID=chrxxxxxxxxx # Update according to your project ID JOB_NAME=cloud-run-job-cortex-data-sync # The Cloud Job name ROJECT_NUMBER=80xxxxx9 # Update according to your project number # JOB ENV VARIABLES SRC_BUCKET=xdr-us-xxxxx-event-forwarding # Update with the Cortex XDR GCS bucket name DEST_BUCKET=cortex-xdr-events-secops # Update with the GCS name of the bucket you created SECRET_NAME=EVENT_FRWD_CRTX_KEY # Need to match the secret you created JOB_SCHEDULE_MINS=30Otorga los permisos necesarios al script
deploy.sh:chmod 744 deploy.shEjecuta la secuencia de comandos
deploy.sh:./deploy.shIdentifica la cuenta de servicio de Cloud Job utilizada en el resultado de la secuencia de comandos.
Otorga a la cuenta de servicio de Cloud Job el permiso de Secret Manager Secret Ancestor para acceder al secreto que creaste antes (como en nuestro ejemplo, EVENT_FRWD_CRTX_KEY).
Ve a Secret Manager > EVENT_FRWD_CRTX_KEY (secreto) > Permisos.
En la plataforma de Google SecOps, ve a Configuración de SIEM > Feeds > Nombre del feed de eventos de XDR > Habilitar feed.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
action_file_path |
target.file.full_path |
Asignada directamente |
action_file_size |
target.file.size |
Se asigna y convierte directamente en un número entero sin signo. |
action_local_ip |
principal.ip |
Se asignan y combinan directamente con otras direcciones IP. |
action_local_port |
principal.port |
Se asigna y convierte directamente en un número entero |
action_module_path |
target.process.file.full_path |
Asignada directamente |
action_network_connection_id |
network.session_id |
Asignada directamente |
action_network_protocol |
network.ip_protocol |
Se cambió el nombre a protocol_number_src, se analizó con parse_ip_protocol.include y se asignó a network.ip_protocol. |
action_process_image_command_line |
target.process.command_line |
Asignada directamente |
action_process_image_md5 |
target.process.file.md5 |
Asignada directamente |
action_process_image_path |
target.process.file.full_path |
Asignada directamente |
action_process_image_sha256 |
target.process.file.sha256 |
Asignada directamente |
action_process_os_pid |
target.process.pid |
Se asigna y convierte directamente en una cadena. |
action_process_user_sid |
target.user.windows_sid |
Asignada directamente |
action_process_username |
target.user.userid, target.administrative_domain |
Se convierten a minúsculas, se analizan para determinar el dominio y el usuario, y se asignan según corresponda. |
action_registry_data |
target.registry.registry_value_data |
Asignada directamente |
action_registry_key_name |
target.registry.registry_key |
Asignada directamente |
action_registry_value_name |
target.registry.registry_value_name |
Asignada directamente |
action_remote_ip |
target.ip |
Se asignan y combinan directamente con otras direcciones IP. |
action_remote_port |
target.port |
Se asigna y convierte directamente en un número entero |
action_total_download |
network.received_bytes |
Se asigna y convierte directamente en un número entero sin signo. |
action_total_upload |
network.sent_bytes |
Se asigna y convierte directamente en un número entero sin signo. |
agent_hostname |
principal.hostname, observer.hostname |
En minúsculas y asignado |
agent_ip_addresses |
observer.ip |
Se analiza como JSON, se divide en IPs individuales y se combina. |
agent_os_sub_type |
target.platform_version |
Asignada directamente |
event_id |
metadata.product_log_id |
Asignada directamente |
event_sub_type |
metadata.product_event_type |
Se convirtió en cadena y se usó para la asignación condicional de metadata.event_type y metadata.product_event_type. |
event_timestamp |
metadata.event_timestamp, timestamp |
Se convierte en una cadena, se analiza como una marca de tiempo UNIX_MS y se asigna. |
event_type |
metadata.event_type |
Se convirtió en cadena y se usó para la asignación condicional de metadata.event_type y metadata.product_event_type. |
os_actor_process_command_line |
principal.process.command_line |
Asignada directamente |
os_actor_process_image_md5 |
principal.process.file.md5 |
Asignada directamente |
os_actor_process_image_path |
principal.process.file.full_path |
Asignada directamente |
os_actor_process_image_sha256 |
principal.process.file.sha256 |
Asignada directamente |
os_actor_process_instance_id |
principal.process.product_specific_process_id |
Tiene el prefijo "PAN:" y se asigna. |
os_actor_process_os_pid |
principal.process.pid |
Se convirtió en una cadena y se asignó |
os_actor_primary_user_sid |
principal.user.windows_sid |
Se asigna si comienza con "S-" o "s-". |
os_actor_primary_username |
principal.user.userid, principal.administrative_domain |
Se convierten a minúsculas, se analizan para determinar el dominio y el usuario, y se asignan según corresponda. |
_action |
security_result.action |
Se combinó en _security_result y, luego, se asignó |
metadata.log_type |
metadata.log_type |
Se codifica de forma rígida como "PAN_CORTEX_XDR_EVENTS". |
metadata.product_name |
metadata.product_name |
Está codificado como "Cortex XDR". |
metadata.vendor_name |
metadata.vendor_name |
Está codificado como "PAN". |
target.platform |
target.platform |
Se establece en "WINDOWS" si agent_os_sub_type contiene "Windows". |
action_user_session_id |
event.idm.read_only_udm.network.session_id |
Se asignó desde el registro de cambios |
action_username |
event.idm.read_only_udm.principal.user.user_display_name |
Se asignó desde el registro de cambios |
agent_ip_addresses |
event.idm.read_only_udm.principal.ip y event.idm.read_only_udm.principal.asset.ip |
Se asignó desde el registro de cambios |
agent_os_sub_type |
event.idm.read_only_udm.principal.platform_version |
Se asignó desde el registro de cambios |
agent_id |
event.idm.read_only_udm.principal.asset.asset_id y event.idm.read_only_udm.principal.asset_id |
Se asignó desde el registro de cambios |
agent_os_type |
event.idm.read_only_udm.principal.platform |
Se asignó desde el registro de cambios |
action_process_token |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_process_fds |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_process_termination_date |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_process_termination_code |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_network_stats_is_last |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_user_is_local_session |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_user_status |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
event_version |
event.idm.read_only_udm.metadata.product_version |
Se asignó desde el registro de cambios |
action_file_previous_file_path |
event.idm.read_only_udm.principal.file.full_path |
Se asignó desde el registro de cambios |
agent_interface_map.ipv4 |
event.idm.read_only_udm.observer.ip |
Se asignó desde el registro de cambios |
agent_interface_map.mac |
event.idm.read_only_udm.observer.mac |
Se asignó desde el registro de cambios |
action_file_last_writer_actor |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_file_device_type |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_file_previous_file_name |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_file_name |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
agent_id |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
agent_version |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
agent_os_type |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
os_actor_thread_thread_id |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_file_type |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_file_prev_type |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
os_actor_process_signature_status |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
os_actor_process_logon_id |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
agent_content_version |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
action_module_image_size |
event.idm.read_only_udm.target.file.size |
Se asignó desde el registro de cambios |
action_file_md5 |
event.idm.read_only_udm.target.file.md5 |
Se asignó desde el registro de cambios |
action_file_sha256 |
event.idm.read_only_udm.target.file.sha256 |
Se asignó desde el registro de cambios |
action_module_md5 |
target.process.file.md5 |
Se asignó desde el registro de cambios |
action_module_sha256 |
target.process.file.sha256 |
Se asignó desde el registro de cambios |
metadata.event_type |
GENERIC_EVENT. |
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.