Recopila registros de IOC de Anomali ThreatStream
En este documento, se explica cómo transferir registros de IOC de Anomali ThreatStream a Google Security Operations a través de una API. El analizador transforma los datos de los IOC del formato JSON o CEF en un modelo de datos unificado (UDM). Primero, el código intenta analizar la entrada como JSON y, si no lo logra, busca el prefijo "CEF:" para procesarla como un mensaje CEF, extraer los atributos de IOC y asignarlos a los campos de UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso con privilegios a un arrendatario empresarial de Anomali ThreatStream
Crea un usuario de API exclusivo
- Accede a ThreatStream. Cambia a la IU clásica si usas Anomali Enterprise.
- Ve a Administración > Usuarios.
- Haz clic en + Agregar usuario (o selecciona una cuenta de servicio existente).
- Completa los siguientes detalles:
- Correo electrónico: Dirección de correo electrónico de la cuenta de servicio (por ejemplo,
anomali_ioc_secops@example.com
) - Fuente de autenticación: Selecciona Estándar.
- User Type: Selecciona API User.
- Rol: Selecciona Solo lectura (suficiente para listar indicadores).
- Correo electrónico: Dirección de correo electrónico de la cuenta de servicio (por ejemplo,
- Haz clic en Guardar.
- Se envía un correo electrónico de activación a la cuenta nueva. Completa la activación.
Genera una clave de API
- Accede a ThreatStream como el usuario de la API.
- Ve a avatar de perfil > Mis claves de API.
- Haz clic en Generar clave nueva.
- Ingresa 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 vuelve a mostrar.
Recomendación: Incluye la IP del recopilador en la lista de entidades permitidas
- Ve a Administración > Configuración de la organización.
- Selecciona la pestaña Lista de IPs permitidas.
- Haz clic en + Agregar.
- Ingresa la dirección de tu arrendatario de Google SecOps y haz clic en Guardar.
Configura feeds
- Ve a SIEM Settings > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Anomali TS IOC
). - Selecciona API de terceros como el Tipo de origen.
- Selecciona el tipo de registro Anomali.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre de usuario: Ingresa el usuario de la API recién creado.
- Secreto: Ingresa la clave de API generada que copiaste antes.
- Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Haz clic en Siguiente.
- Revisa la 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 |
---|---|---|
obj.asn |
entity.administrative_domain | El campo asn en el registro sin procesar se asigna al campo administrative_domain en el objeto de entidad de UDM. |
obj.confidence |
ioc.confidence_score | El campo de confianza en el registro sin procesar se asigna al campo confidence_score en el 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 la entidad UDM. |
obj.created_ts |
entity.metadata.creation_timestamp | El campo created_ts en el registro sin procesar se asigna al campo creation_timestamp en el objeto de entidad de UDM. |
obj.created_ts |
ioc.active_timerange.start | El campo created_ts en el registro sin procesar se asigna al campo start en el objeto ioc de UDM. |
obj.created_ts |
entity.metadata.threat.first_discovered_time | El campo created_ts en el registro sin procesar se asigna al campo first_discovered_time en el objeto de amenaza de UDM. |
obj.expiration_ts |
entity.metadata.interval.end_time | El campo expiration_ts en el registro sin procesar se asigna al campo end_time en el objeto de entidad de 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 del UDM. |
obj.ip |
entity.entity.ip | El campo ip del registro sin procesar se combina con el campo ip del objeto de la entidad del 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 de categorización 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 del UDM. |
obj.latitude |
entity.entity.location.region_latitude | El campo de latitud en el registro sin procesar se asigna al campo region_latitude en el objeto de entidad del 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 del UDM. |
obj.meta.detail2 |
ioc.description | El campo detail2 del registro sin procesar se asigna al campo description del objeto IOC del UDM. |
obj.meta.detail2 |
entity.metadata.threat.description | El campo detail2 del registro sin procesar se asigna al campo description del objeto de amenaza del UDM. |
obj.meta.severity |
ioc.raw_severity | El campo de gravedad en el registro sin procesar se asigna al campo raw_severity en el 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 del UDM. Si la gravedad es "muy alta", se asigna a "CRÍTICA". |
obj.meta.severity |
entity.metadata.threat.severity_details | El campo de gravedad en el registro sin procesar se asigna al campo severity_details en el 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 en el registro sin procesar se asigna al campo administrative_domain en el objeto de entidad de UDM. |
obj.resource_uri |
entity.metadata.threat.url_back_to_product | El campo resource_uri en el registro sin procesar se asigna al campo url_back_to_product en el objeto de amenaza del UDM. |
obj.retina_confidence |
entity.metadata.threat.confidence_score | El campo retina_confidence en el registro sin procesar se asigna al campo confidence_score en el objeto de amenaza de UDM. |
obj.source |
ioc.feed_name | El campo de origen en el registro sin procesar se asigna al campo feed_name en el objeto ioc de UDM. |
obj.source |
entity.metadata.threat.threat_name | El campo de origen en el registro sin procesar se asigna al campo threat_name en el 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 en el registro sin procesar se asigna al campo sha1 en el objeto de entidad del UDM si el subtipo es "SHA1". |
obj.subtype |
entity.entity.file.sha256 | El campo de subtipo en el registro sin procesar se asigna al campo sha256 en el objeto de entidad del UDM si el subtipo es "SHA256". |
obj.tags |
entity.metadata.source_labels | El campo de etiquetas del registro sin procesar se asigna al campo source_labels del objeto de entidad de UDM. |
obj.tags.id |
entity.metadata.source_labels | El campo id del array 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 en el array de etiquetas del registro sin procesar se asigna al campo source_labels en el objeto de la entidad del 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 en el registro sin procesar se asigna al campo detection_fields en el 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 del UDM si el tipo es "md5". |
obj.type |
entity.entity.hostname | El campo de tipo en el registro sin procesar se asigna al campo de nombre de host en el objeto de entidad del UDM si el tipo es "dominio". |
obj.type |
entity.entity.ip | El campo type del registro sin procesar se combina con el campo ip del objeto de entidad del 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 del UDM si el tipo es "url" o "string". |
obj.type |
entity.entity.user.email_addresses | El campo de tipo en el registro sin procesar se combina con el campo email_addresses en el objeto de entidad del 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 del UDM. Si el tipo es "ip" o "ipv6", se asigna a "IP_ADDRESS". Si el tipo es "dominio", 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 "cadena", se asigna a "URL". Si el tipo es "correo electrónico", 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 de UDM. |
obj.value |
entity.entity.ip | El campo de valor en el registro sin procesar se combina con el campo de IP en el objeto de entidad del 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 en el registro sin procesar se combina con el campo ip en el objeto de entidad del UDM si el campo ip_field_not_exists es verdadero y el campo de valor es una dirección IP. |
obj.value |
entity.entity.url | El campo de valor en el registro sin procesar se asigna al campo de URL en el objeto de entidad del UDM si el campo de tipo es "url" o "string". |
obj.value |
ioc.domain_and_ports.domain | El campo de valor en el registro sin procesar se asigna al campo de dominio en el objeto IOC del UDM si el campo de tipo no es "ip". |
obj.value |
ioc.ip_and_ports.ip_address | El campo de valor en el registro sin procesar se asigna al campo ip_address en el objeto IOC del UDM si el campo de tipo es "ip" y el campo de IP está vacío. |
cn1 |
ioc.confidence_score | El campo cn1 en el registro sin procesar se asigna al campo confidence_score en el objeto ioc de UDM. |
cn2 |
entity.metadata.threat.rule_id | El campo cn2 en el registro sin procesar se asigna al campo rule_id en el objeto de amenaza de UDM. |
cs1 |
ioc.raw_severity | El campo cs1 en el registro sin procesar se asigna al campo raw_severity en el objeto ioc de UDM. |
cs2 |
entity.metadata.threat.threat_name | El campo cs2 en el registro sin procesar se asigna al campo threat_name en el objeto de amenaza de UDM. |
cs3 |
entity.metadata.threat.threat_status | El campo cs3 en el registro sin procesar se asigna al campo threat_status en el objeto de amenaza de UDM. Si el campo cs3 es "activo", se asigna a "ACTIVE". Si el campo cs3 está "borrado", 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 en el registro sin procesar se asigna al campo administrative_domain en el objeto de entidad de UDM. |
cs5 |
ioc.description | El campo cs5 del registro sin procesar se asigna al campo de descripción del objeto IOC del 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 en el registro sin procesar se asigna al campo product_name en el objeto de entidad del UDM. |
device_vendor |
entity.metadata.vendor_name | El campo device_vendor del registro sin procesar se asigna al campo vendor_name del objeto de la entidad del 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 de UDM. |
msg |
entity.metadata.threat.summary | El campo msg en el registro sin procesar se asigna al campo summary en el objeto de amenaza de UDM. |
shost |
entity.entity.hostname | El campo shost en el registro sin procesar se asigna al campo hostname en el objeto de la entidad de 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 de 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 del UDM se establece en "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 del UDM se establece en "LOW_CONFIDENCE" si el campo confidence_score es menor o igual a 50. |
entity.metadata.threat.confidence | MEDIUM_CONFIDENCE | El campo de confianza del objeto de amenaza del UDM se establece en "MEDIUM_CONFIDENCE" si el campo confidence_score es mayor que 50 y menor o igual que 74. |
entity.metadata.threat.confidence | UNKNOWN_CONFIDENCE | El campo de confianza del objeto de amenaza del UDM se establece en "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 la entidad del UDM se establece en "ANOMALI_IOC". |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.