Recopilar registros de IOC de Anomali ThreatStream

Disponible en:

En este documento se explica cómo ingerir registros de IOC de Anomali ThreatStream en Google Security Operations mediante una API. El analizador transforma los datos de IOC del formato JSON o CEF en un modelo de datos unificado (UDM). El código primero intenta analizar la entrada como JSON y, si no lo consigue, busca el prefijo "CEF:" para procesarla como un mensaje CEF, extraer los atributos de IOC y asignarlos a los campos de UDM.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a un arrendatario empresarial de Anomali ThreatStream

Crear un usuario de API específico

  1. Inicia sesión en ThreatStream. Cambia a la interfaz de usuario clásica si tienes Anomali Enterprise.
  2. Vaya a Administración > Usuarios.
  3. Haz clic en + Añadir usuario (o selecciona una cuenta de servicio).
  4. Añada los siguientes datos:
    • Correo: dirección de correo de la cuenta de servicio (por ejemplo, anomali_ioc_secops@example.com).
    • Fuente de autenticación: selecciona Estándar.
    • Tipo de usuario: selecciona Usuario de API.
    • Rol: selecciona Solo lectura (suficiente para listar indicadores).
  5. Haz clic en Guardar.
  6. Se envía un correo de activación a la nueva cuenta. Completa la activación.

Generar clave de API

  1. Inicia sesión en ThreatStream como usuario de la API.
  2. Ve a avatar de perfil > Mis claves de API.
  3. Haga clic en Generar clave nueva.
  4. Escribe una descripción (por ejemplo,Google SecOps export).
  5. Haz clic en Guardar.
  6. Copia y guarda el valor de la clave que se muestra en Clave en una ubicación segura. El valor de la clave no se volverá a mostrar.
  1. Ve a Administración > Configuración de la organización.
  2. Selecciona la pestaña Lista de permitidas de IPs.
  3. Haz clic en + Añadir.
  4. Introduce la dirección de tu arrendatario de Google SecOps y haz clic en Guardar.

Configurar feeds

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir nuevo.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Anomali TS IOC).
  4. Seleccione API de terceros como Tipo de fuente.
  5. Seleccione el tipo de registro Anomali.
  6. Haz clic en Siguiente.
  7. Especifique valores para los siguientes parámetros de entrada:
    • Nombre de usuario: introduce el usuario de la API que acabas de crear.
    • Secreto: introduce la clave de API generada que has copiado antes.
    • 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 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
obj.asn entity.administrative_domain El campo asn del registro sin procesar se asigna al campo administrative_domain del objeto de entidad UDM.
obj.confidence ioc.confidence_score El campo de confianza del registro sin procesar se asigna al campo confidence_score del objeto ioc de UDM.
obj.country entity.location.country_or_region El campo "country" del registro sin procesar se asigna al campo "country_or_region" del objeto de entidad UDM.
obj.created_ts entity.metadata.creation_timestamp El campo created_ts del registro sin procesar se asigna al campo creation_timestamp del objeto de entidad de UDM.
obj.created_ts ioc.active_timerange.start El campo created_ts del registro sin procesar se asigna al campo start del objeto ioc de UDM.
obj.created_ts entity.metadata.threat.first_discovered_time El campo created_ts del registro sin procesar se asigna al campo first_discovered_time del objeto de amenaza de UDM.
obj.expiration_ts entity.metadata.interval.end_time El campo expiration_ts del registro sin procesar se asigna al campo end_time del objeto de entidad UDM.
obj.expiration_ts ioc.active_timerange.end El campo expiration_ts del registro sin procesar se asigna al campo end del objeto ioc de UDM.
obj.id entity.metadata.product_entity_id El campo id del registro sin procesar se asigna al campo product_entity_id del objeto de entidad de UDM.
obj.ip entity.entity.ip El campo ip del registro sin procesar se combina con el campo ip del objeto de entidad UDM.
obj.ip ioc.ip_and_ports.ip_address El campo ip del registro sin procesar se asigna al campo ip_address del objeto ioc de UDM.
obj.itype ioc.categorization El campo itype del registro sin procesar se asigna al campo categorization del objeto ioc de UDM.
obj.itype entity.metadata.threat.category_details El campo itype del registro sin procesar se combina con el campo category_details del objeto de amenaza UDM.
obj.latitude entity.entity.location.region_latitude El campo de latitud del registro sin procesar se asigna al campo region_latitude del objeto de entidad UDM.
obj.longitude entity.entity.location.region_longitude El campo de longitud del registro sin procesar se asigna al campo region_longitude del objeto de entidad UDM.
obj.meta.detail2 ioc.description El campo detail2 del registro sin procesar se asigna al campo description del objeto ioc de UDM.
obj.meta.detail2 entity.metadata.threat.description El campo detail2 del registro sin procesar se asigna al campo description del objeto de amenaza de UDM.
obj.meta.severity ioc.raw_severity El campo de gravedad del registro sin procesar se asigna al campo raw_severity del objeto ioc de UDM.
obj.meta.severity entity.metadata.threat.severity El campo de gravedad del registro sin procesar se asigna al campo de gravedad del objeto de amenaza de UDM. Si la gravedad es "muy alta", se asigna a "CRÍTICA".
obj.meta.severity entity.metadata.threat.severity_details El campo de gravedad del registro sin procesar se asigna al campo severity_details del objeto de amenaza de UDM.
obj.modified_ts entity.metadata.threat.last_updated_time El campo modified_ts del registro sin procesar se asigna al campo last_updated_time del objeto de amenaza de UDM.
obj.org entity.entity.administrative_domain El campo org del registro sin procesar se asigna al campo administrative_domain del objeto de entidad UDM.
obj.resource_uri entity.metadata.threat.url_back_to_product El campo resource_uri del registro sin procesar se asigna al campo url_back_to_product del objeto de amenaza de UDM.
obj.retina_confidence entity.metadata.threat.confidence_score El campo retina_confidence del registro sin procesar se asigna al campo confidence_score del objeto de amenaza de UDM.
obj.source ioc.feed_name El campo de origen del registro sin procesar se asigna al campo feed_name del objeto ioc de UDM.
obj.source entity.metadata.threat.threat_name El campo de origen del registro sin procesar se asigna al campo threat_name del objeto de amenaza de UDM.
obj.status entity.metadata.threat.threat_status El campo de estado del registro sin procesar se asigna al campo threat_status del objeto de amenaza de UDM.
obj.subtype entity.entity.file.sha1 El campo de subtipo del registro sin procesar se asigna al campo sha1 del objeto de entidad de UDM si el subtipo es "SHA1".
obj.subtype entity.entity.file.sha256 El campo subtype del registro sin procesar se asigna al campo sha256 del objeto de entidad UDM si el subtipo es "SHA256".
obj.tags entity.metadata.source_labels El campo tags del registro sin procesar se asigna al campo source_labels del objeto de entidad UDM.
obj.tags.id entity.metadata.source_labels El campo id de la matriz de etiquetas del registro sin procesar se asigna al campo source_labels del objeto de entidad de UDM.
obj.tags.name entity.metadata.source_labels El campo name de la matriz tags del registro sin procesar se asigna al campo source_labels del objeto de entidad UDM.
obj.threatscore entity.metadata.threat.risk_score El campo threatscore del registro sin procesar se asigna al campo risk_score del objeto de amenaza de UDM.
obj.threat_type entity.metadata.threat.detection_fields El campo threat_type del registro sin procesar se asigna al campo detection_fields del objeto de amenaza de UDM.
obj.type entity.entity.file.md5 El campo type del registro sin procesar se asigna al campo md5 del objeto de entidad de UDM si el tipo es "md5".
obj.type entity.entity.hostname El campo de tipo del registro sin procesar se asigna al campo de nombre de host del objeto de entidad UDM si el tipo es "domain".
obj.type entity.entity.ip El campo de tipo del registro sin procesar se combina con el campo de IP del objeto de entidad de UDM si el tipo es "ip" o "ipv6".
obj.type entity.entity.url El campo type del registro sin procesar se asigna al campo url del objeto de entidad de UDM si el tipo es "url" o "string".
obj.type entity.entity.user.email_addresses El campo type del registro sin procesar se combina con el campo email_addresses del objeto de entidad de UDM si el tipo es "email".
obj.type entity.metadata.entity_type El campo type del registro sin procesar se asigna al campo entity_type del objeto de entidad UDM. Si el tipo es "ip" o "ipv6", se asigna a "IP_ADDRESS". Si el tipo es "domain", se asigna a "DOMAIN_NAME". Si el tipo es "md5" o el campo itype contiene "md5", se asigna a "FILE". Si el tipo es "url" o "string", se asigna a "URL". Si el tipo es "email", se asigna a "USER". De lo contrario, se asigna a "UNKNOWN_ENTITYTYPE".
obj.uuid entity.additional.fields El campo uuid del registro sin procesar se asigna al campo fields del objeto de entidad UDM.
obj.value entity.entity.ip El campo de valor del registro sin procesar se combina con el campo de IP del objeto de entidad de UDM si el campo de tipo es "ip" y el campo de IP está vacío.
obj.value entity.entity.ip El campo de valor del registro sin procesar se combina con el campo de IP del objeto de entidad de UDM si el campo ip_field_not_exists es true y el campo de valor es una dirección IP.
obj.value entity.entity.url El campo de valor del registro sin procesar se asigna al campo de URL del objeto de entidad de UDM si el campo de tipo es "url" o "string".
obj.value ioc.domain_and_ports.domain El campo de valor del registro sin procesar se asigna al campo de dominio del objeto ioc de UDM si el campo de tipo no es "ip".
obj.value ioc.ip_and_ports.ip_address El campo de valor del registro sin procesar se asigna al campo ip_address del objeto ioc de UDM si el campo type es "ip" y el campo ip está vacío.
cn1 ioc.confidence_score El campo cn1 del registro sin procesar se asigna al campo confidence_score del objeto ioc de UDM.
cn2 entity.metadata.threat.rule_id El campo cn2 del registro sin procesar se asigna al campo rule_id del objeto de amenaza de UDM.
cs1 ioc.raw_severity El campo cs1 del registro sin procesar se asigna al campo raw_severity del objeto ioc de UDM.
cs2 entity.metadata.threat.threat_name El campo cs2 del registro sin procesar se asigna al campo threat_name del objeto de amenaza de UDM.
cs3 entity.metadata.threat.threat_status El campo cs3 del registro sin procesar se asigna al campo threat_status del objeto de amenaza de UDM. Si el campo cs3 es "active", se asigna a "ACTIVE". Si el campo cs3 se "borra", se asigna a "CLEARED". Si el campo cs3 es "falsePositive" o "falsepos", se asigna a "FALSE_POSITIVE". Si el campo cs3 es "threat_status_unspecified", se asigna a "THREAT_STATUS_UNSPECIFIED".
cs4 entity.entity.administrative_domain El campo cs4 del registro sin procesar se asigna al campo administrative_domain del objeto de entidad UDM.
cs5 ioc.description El campo cs5 del registro sin procesar se asigna al campo de descripción del objeto ioc de UDM.
cs5 entity.metadata.threat.detection_fields El campo cs5 del registro sin procesar se asigna al campo detection_fields del objeto de amenaza de UDM.
cs5 entity.metadata.threat.description El campo cs5 del registro sin procesar se asigna al campo de descripción del objeto de amenaza de UDM.
cs6 entity.metadata.threat.category_details El campo cs6 del registro sin procesar se combina con el campo category_details del objeto de amenaza del UDM.
device_product entity.metadata.product_name El campo device_product del registro sin procesar se asigna al campo product_name del objeto de entidad UDM.
device_vendor entity.metadata.vendor_name El campo device_vendor del registro sin procesar se asigna al campo vendor_name del objeto de entidad UDM.
device_version entity.metadata.product_version El campo device_version del registro sin procesar se asigna al campo product_version del objeto de entidad UDM.
msg entity.metadata.threat.summary El campo msg del registro sin procesar se asigna al campo summary del objeto de amenaza de UDM.
shost entity.entity.hostname El campo shost del registro sin procesar se asigna al campo hostname del objeto de entidad UDM.
shost entity.entity.url El campo shost del registro sin procesar se asigna al campo url del objeto de entidad de UDM.
shost ioc.domain_and_ports.domain El campo shost del registro sin procesar se asigna al campo domain del objeto ioc de UDM.
src entity.entity.ip El campo src del registro sin procesar se combina con el campo ip del objeto de entidad UDM.
src ioc.ip_and_ports.ip_address El campo src del registro sin procesar se asigna al campo ip_address del objeto ioc de UDM.
entity.metadata.threat.confidence HIGH_CONFIDENCE El campo de confianza del objeto de amenaza de UDM se define como "HIGH_CONFIDENCE" si el campo confidence_score es mayor o igual que 75.
entity.metadata.threat.confidence LOW_CONFIDENCE El campo de confianza del objeto de amenaza de UDM se define como "LOW_CONFIDENCE" si el campo confidence_score es inferior o igual a 50.
entity.metadata.threat.confidence MEDIUM_CONFIDENCE El campo de confianza del objeto de amenaza de UDM se define como "MEDIUM_CONFIDENCE" si el campo confidence_score es superior a 50 e inferior o igual a 74.
entity.metadata.threat.confidence UNKNOWN_CONFIDENCE El campo de certeza del objeto de amenaza de UDM se define como "UNKNOWN_CONFIDENCE" si el campo confidence_score no es un número entero válido.
entity.metadata.vendor_name ANOMALI_IOC El campo vendor_name del objeto de entidad UDM se define como "ANOMALI_IOC".

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