Recoger registros de Uptycs EDR

Disponible en:

En este documento se explica cómo puede ingerir registros de Uptycs EDR en Google Security Operations mediante Amazon S3. El analizador transforma los registros JSON sin procesar en un modelo de datos unificado (UDM). Primero, extrae los campos del JSON, limpia y enriquece los datos y, a continuación, asigna la información pertinente a los campos de UDM correspondientes. Además, gestiona varios tipos de datos y casos límite para asegurar una representación precisa y coherente en el esquema de UDM.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Acceso privilegiado a Uptycs
  • Acceso con privilegios a AWS (S3, IAM)

Obtener los requisitos previos de Uptycs

  1. Inicia sesión en la consola de administración de Uptycs.
  2. Vaya a Configuración > Usuarios.
  3. Selecciona un usuario o crea un usuario de cuenta de servicio.
  4. Haz clic en Clave de API de usuario.
  5. Copia y guarda en un lugar seguro los siguientes detalles:
    • Clave de API
    • Secreto de API
    • ID de cliente
    • Dominio de la API (derivado de tu URL de Uptycs, por ejemplo, mystack.uptycs.io)

Configurar un segmento de AWS S3 y IAM para Google SecOps

  1. Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
  2. Guarda el nombre y la región del segmento para consultarlos más adelante (por ejemplo, uptycs-telemetry-export).
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros en Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para futuras consultas.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Añadir permisos.

Configurar la política y el rol de gestión de identidades y accesos para las subidas de S3

  1. En la consola de AWS, ve a IAM > Políticas.
  2. Haz clic en Crear política > pestaña JSON.
  3. Introduce la siguiente política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::uptycs-telemetry-export/*"
        },
        {
          "Sid": "AllowListBucket",
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::uptycs-telemetry-export"
        }
      ]
    }
    
    • Sustituye uptycs-telemetry-export si has introducido otro nombre de segmento.
  4. Haz clic en Siguiente > Crear política.

  5. Asigna un nombre a la política uptycs-s3-write-policy.

  6. Ve a Gestión de identidades y accesos > Usuarios.

  7. Selecciona el usuario creado para las exportaciones de Uptycs.

  8. Haz clic en Añadir permisos > Adjuntar políticas directamente.

  9. Busca y selecciona uptycs-s3-write-policy.

  10. Haz clic en Siguiente > Añadir permisos.

Configurar Uptycs Export Raw Telemetry

  1. Inicia sesión en la consola de Uptycs.
  2. Ve a la sección de configuración de exportación.
  3. Configura el destino de exportación de S3.
  4. Proporcione los siguientes detalles de configuración:
    • Tipo de exportación: selecciona Telemetría sin procesar.
    • Destino: selecciona Amazon S3.
    • Formato: selecciona JSON.
    • Contenedor de S3: introduce uptycs-telemetry-export.
    • Prefijo de ruta de S3: introduce telemetry/.
    • Región de AWS: selecciona la región de tu segmento.
    • ID de clave de acceso de AWS: introduce la clave de acceso del usuario de IAM.
    • Clave de acceso secreta de AWS: introduce la clave de acceso secreta.
    • Tipos de eventos: selecciona todos los tipos de telemetría necesarios.
  5. Prueba y habilita la exportación.

Crear un usuario de gestión de identidades y accesos de solo lectura para Google SecOps

  1. Ve a Consola de AWS > IAM > Usuarios.
  2. Haz clic en Add users (Añadir usuarios).
  3. Proporcione los siguientes detalles de configuración:
    • Usuario: introduce secops-reader.
    • Tipo de acceso: selecciona Clave de acceso – Acceso programático.
  4. Haz clic en Crear usuario.
  5. Asigna una política de lectura mínima (personalizada): Usuarios > lector-secops > Permisos > Añadir permisos > Asignar políticas directamente > Crear política.
  6. En el editor de JSON, introduce la siguiente política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::uptycs-telemetry-export/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::uptycs-telemetry-export"
        }
      ]
    }
    
  7. Asigna el nombre secops-reader-policy.

  8. Ve a Crear política > busca o selecciona > Siguiente > Añadir permisos.

  9. Ve a Credenciales de seguridad > Claves de acceso > Crear clave de acceso.

  10. Descarga el archivo CSV (estos valores se introducen en el feed).

Configurar un feed en Google SecOps para ingerir registros de Uptycs

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Uptycs EDR logs).
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Seleccione Uptycs EDR como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique valores para los siguientes parámetros de entrada:
    • URI de S3: s3://uptycs-telemetry-export/telemetry/
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es de 180 días.
    • ID de clave de acceso: clave de acceso de usuario con acceso al bucket de S3.
    • Clave de acceso secreta: clave secreta del usuario con acceso al segmento de S3.
    • Espacio de nombres de recursos: el espacio de nombres de recursos.
    • Etiquetas de ingestión: la etiqueta aplicada a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revise la nueva configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
osquery_raw_data.answer read_only_udm.network.dns.answers.name Valor tomado de osquery_raw_data.answer si osquery_raw_data.answer no está vacío.
osquery_raw_data.container_id read_only_udm.metadata.product_log_id Valor tomado de osquery_raw_data.container_id si osquery_raw_data.container_id no está vacío.
osquery_raw_data.local_address read_only_udm.principal.ip Valor tomado de osquery_raw_data.local_address si osquery_raw_data.local_address no está vacío y es una dirección IP válida.
osquery_raw_data.local read_only_udm.principal.ip De lo contrario, se tomará el valor de osquery_raw_data.local si no está vacío y es una dirección IP válida.
osquery_raw_data.local_port read_only_udm.principal.port Valor tomado de osquery_raw_data.local_port y convertido en un número entero si osquery_raw_data.local_port no está vacío.
osquery_raw_data.md5 read_only_udm.target.process.file.md5 Valor tomado de osquery_raw_data.md5 si osquery_raw_data.md5 no está vacío.
osquery_raw_data.port read_only_udm.target.port Valor tomado de osquery_raw_data.port y convertido en un número entero si osquery_raw_data.port no está vacío.
osquery_raw_data.question read_only_udm.network.dns.questions.name Valor tomado de osquery_raw_data.question si osquery_raw_data.question no está vacío.
osquery_raw_data.remote_address read_only_udm.intermediary.ip Valor tomado de osquery_raw_data.remote_address si osquery_raw_data.remote_address no está vacío.
osquery_raw_data.remote_port read_only_udm.intermediary.port Valor tomado de osquery_raw_data.remote_port y convertido en un número entero si osquery_raw_data.remote_port no está vacío.
osquery_raw_data.type read_only_udm.network.dns.questions.type Valor tomado de osquery_raw_data.type y convertido en un número entero si osquery_raw_data.type no está vacío.
osquery_raw_data.uid read_only_udm.principal.user.userid Valor tomado de osquery_raw_data.uid si osquery_raw_data.uid no está vacío y no es igual a "0".
osquery_raw_data.worker_instance_id read_only_udm.principal.user.userid De lo contrario, se toma el valor de osquery_raw_data.worker_instance_id si osquery_raw_data.worker_instance_id no está vacío.
upt_asset_group_id read_only_udm.principal.user.group_identifiers Valor tomado de upt_asset_group_id si upt_asset_group_id no está vacío.
upt_asset_group_name read_only_udm.principal.group.group_display_name Valor tomado de upt_asset_group_name si no está vacío.
upt_asset_id read_only_udm.principal.asset.asset_id Cadena concatenada "UPT ASSET ID:" con el valor de upt_asset_id si upt_asset_id no está vacío.
upt_hash read_only_udm.target.file.md5 Todas las apariciones de "-" se sustituyen por "" en upt_hash. A continuación, el valor se asigna a read_only_udm.target.file.md5 si upt_hash no está vacío.
upt_hostname read_only_udm.principal.hostname Valor tomado de upt_hostname si upt_hostname no está vacío.
upt_resource_type read_only_udm.target.resource.type Valor tomado de upt_resource_type si upt_resource_type no está vacío.
upt_time read_only_udm.metadata.event_timestamp.seconds Valor tomado de upt_time si upt_time no está vacío.
read_only_udm.metadata.event_type El valor es "PROCESS_LAUNCH" si osquery_raw_data.pid no está vacío. El valor es "NETWORK_DNS" si osquery_raw_data.question no está vacío. El valor es "GENERIC_EVENT" si event_type está vacío.
read_only_udm.metadata.log_type El valor es "UPTYCS_EDR".
read_only_udm.metadata.product_name El valor es "UPTYCS_EDR".
read_only_udm.metadata.vendor_name El valor es "UPTYCS".
read_only_udm.network.application_protocol El valor se define como "DNS" si osquery_raw_data.question no está vacío.
read_only_udm.security_result.action El valor es "ALLOW" si osquery_raw_data.return_code es igual a "SUCCESS" u osquery_raw_data.success es igual a "1".
read_only_udm.target.process.command_line Valor tomado de osquery_raw_data.cmdline si osquery_raw_data.cmdline no está vacío.
read_only_udm.target.process.file.full_path Valor tomado de osquery_raw_data.path si osquery_raw_data.path no está vacío.
read_only_udm.target.process.parent_process El valor se crea iterando en la matriz ancestor_list de osquery_raw_data.ancestor_list. De cada elemento de la matriz, se extraen la línea de comandos, la ruta completa del archivo y el PID, y se les da formato en una estructura JSON que representa la cadena de procesos.
read_only_udm.target.process.pid Valor tomado de osquery_raw_data.pid si osquery_raw_data.pid no está vacío.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.