Recopilar registros de IOC de Anomali ThreatStream
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
- Inicia sesión en ThreatStream. Cambia a la interfaz de usuario clásica si tienes Anomali Enterprise.
- Vaya a Administración > Usuarios.
- Haz clic en + Añadir usuario (o selecciona una cuenta de servicio).
- 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).
- Correo: dirección de correo de la cuenta de servicio (por ejemplo,
- Haz clic en Guardar.
- Se envía un correo de activación a la nueva cuenta. Completa la activación.
Generar clave de API
- Inicia sesión en ThreatStream como usuario de la API.
- Ve a avatar de perfil > Mis claves de API.
- Haga clic en Generar clave nueva.
- Escribe una descripción (por ejemplo,
Google SecOps export
). - Haz clic en Guardar.
- 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.
Recomendación: incluir en la lista de permitidos la IP del recolector
- Ve a Administración > Configuración de la organización.
- Selecciona la pestaña Lista de permitidas de IPs.
- Haz clic en + Añadir.
- Introduce la dirección de tu arrendatario de Google SecOps y haz clic en Guardar.
Configurar feeds
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir nuevo.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo,
Anomali TS IOC
). - Seleccione API de terceros como Tipo de fuente.
- Seleccione el tipo de registro Anomali.
- Haz clic en Siguiente.
- 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.
- Haz clic en Siguiente.
- 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.