Coletar registros de IOC do Anomali ThreatStream

Compatível com:

Este documento explica como ingerir registros de IOC do Anomali ThreatStream no Google Security Operations usando uma API. O analisador transforma os dados de IOC do formato JSON ou CEF em um modelo de dados unificado (UDM). Primeiro, o código tenta analisar a entrada como JSON e, se não for possível, verifica o prefixo "CEF:" para processá-la como uma mensagem CEF, extraindo atributos de IOC e mapeando-os para campos UDM.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Acesso privilegiado a um locatário empresarial do Anomali ThreatStream.

Criar um usuário de API dedicado

  1. Faça login no ThreatStream. Mude para a interface clássica se você estiver no Anomali Enterprise.
  2. Acesse Administração > Usuários.
  3. Clique em + Adicionar usuário ou selecione uma conta de serviço.
  4. Preencha os seguintes detalhes:
    • E-mail: endereço de e-mail da conta de serviço (por exemplo, anomali_ioc_secops@example.com).
    • Origem da autenticação: selecione Padrão.
    • Tipo de usuário: selecione Usuário da API.
    • Função: selecione Somente leitura (suficiente para listar indicadores).
  5. Clique em Salvar.
  6. Um e-mail de ativação é enviado para a nova conta. Conclua a ativação.

Gerar chave de API

  1. Faça login no ThreatStream como o usuário da API.
  2. Acesse avatar do perfil > Minhas chaves de API.
  3. Clique em Gerar nova chave.
  4. Insira uma Descrição (por exemplo,Google SecOps export).
  5. Clique em Salvar.
  6. Copie e salve o valor da chave exibido em Chave em um local seguro. O valor da chave não será mostrado novamente.
  1. Acesse Administração > Configurações da organização.
  2. Selecione a guia Lista de permissão de IP.
  3. Clique em + Adicionar.
  4. Digite o endereço do seu locatário do Google SecOps e clique em Salvar.

Configurar feeds

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Anomali TS IOC).
  4. Selecione API de terceiros como o Tipo de origem.
  5. Selecione o tipo de registro Anomali.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Nome de usuário: insira o usuário da API recém-criado.
    • Secret: insira a chave de API gerada e copiada anteriormente.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
obj.asn entity.administrative_domain O campo "asn" no registro bruto é mapeado para o campo "administrative_domain" no objeto da entidade UDM.
obj.confidence ioc.confidence_score O campo "confidence" no registro bruto é mapeado para o campo "confidence_score" no objeto ioc do UDM.
obj.country entity.location.country_or_region O campo "country" no registro bruto é mapeado para o campo "country_or_region" no objeto da entidade UDM.
obj.created_ts entity.metadata.creation_timestamp O campo "created_ts" no registro bruto é mapeado para o campo "creation_timestamp" no objeto da entidade UDM.
obj.created_ts ioc.active_timerange.start O campo "created_ts" no registro bruto é mapeado para o campo "start" no objeto UDM ioc.
obj.created_ts entity.metadata.threat.first_discovered_time O campo "created_ts" no registro bruto é mapeado para o campo "first_discovered_time" no objeto de ameaça do UDM.
obj.expiration_ts entity.metadata.interval.end_time O campo "expiration_ts" no registro bruto é mapeado para o campo "end_time" no objeto da entidade UDM.
obj.expiration_ts ioc.active_timerange.end O campo "expiration_ts" no registro bruto é mapeado para o campo "end" no objeto ioc da UDM.
obj.id entity.metadata.product_entity_id O campo "id" no registro bruto é mapeado para o campo "product_entity_id" no objeto da entidade UDM.
obj.ip entity.entity.ip O campo "ip" no registro bruto é mesclado ao campo "ip" no objeto da entidade UDM.
obj.ip ioc.ip_and_ports.ip_address O campo "ip" no registro bruto é mapeado para o campo "ip_address" no objeto UDM ioc.
obj.itype ioc.categorization O campo "itype" no registro bruto é mapeado para o campo "categorization" no objeto UDM ioc.
obj.itype entity.metadata.threat.category_details O campo "itype" no registro bruto é mesclado ao campo "category_details" no objeto de ameaça do UDM.
obj.latitude entity.entity.location.region_latitude O campo de latitude no registro bruto é mapeado para o campo "region_latitude" no objeto da entidade UDM.
obj.longitude entity.entity.location.region_longitude O campo de longitude no registro bruto é mapeado para o campo "region_longitude" no objeto da entidade UDM.
obj.meta.detail2 ioc.description O campo "detail2" no registro bruto é mapeado para o campo "description" no objeto ioc da UDM.
obj.meta.detail2 entity.metadata.threat.description O campo "detail2" no registro bruto é mapeado para o campo "description" no objeto de ameaça da UDM.
obj.meta.severity ioc.raw_severity O campo "severity" no registro bruto é mapeado para o campo "raw_severity" no objeto UDM ioc.
obj.meta.severity entity.metadata.threat.severity O campo de gravidade no registro bruto é mapeado para o campo de gravidade no objeto de ameaça do UDM. Se a gravidade for "muito alta", ela será mapeada como "CRÍTICA".
obj.meta.severity entity.metadata.threat.severity_details O campo "gravidade" no registro bruto é mapeado para o campo "severity_details" no objeto de ameaça do UDM.
obj.modified_ts entity.metadata.threat.last_updated_time O campo "modified_ts" no registro bruto é mapeado para o campo "last_updated_time" no objeto de ameaça da UDM.
obj.org entity.entity.administrative_domain O campo "org" no registro bruto é mapeado para o campo "administrative_domain" no objeto de entidade do UDM.
obj.resource_uri entity.metadata.threat.url_back_to_product O campo "resource_uri" no registro bruto é mapeado para o campo "url_back_to_product" no objeto de ameaça da UDM.
obj.retina_confidence entity.metadata.threat.confidence_score O campo "retina_confidence" no registro bruto é mapeado para o campo "confidence_score" no objeto de ameaça da UDM.
obj.source ioc.feed_name O campo de origem no registro bruto é mapeado para o campo "feed_name" no objeto UDM ioc.
obj.source entity.metadata.threat.threat_name O campo de origem no registro bruto é mapeado para o campo "threat_name" no objeto de ameaça do UDM.
obj.status entity.metadata.threat.threat_status O campo "status" no registro bruto é mapeado para o campo "threat_status" no objeto de ameaça da UDM.
obj.subtype entity.entity.file.sha1 O campo "subtype" no registro bruto é mapeado para o campo "sha1" no objeto da entidade UDM se o subtipo for "SHA1".
obj.subtype entity.entity.file.sha256 O campo "subtype" no registro bruto é mapeado para o campo "sha256" no objeto da entidade UDM se o subtipo for "SHA256".
obj.tags entity.metadata.source_labels O campo "tags" no registro bruto é mapeado para o campo "source_labels" no objeto da entidade UDM.
obj.tags.id entity.metadata.source_labels O campo "id" na matriz de tags do registro bruto é mapeado para o campo "source_labels" no objeto da entidade UDM.
obj.tags.name entity.metadata.source_labels O campo "name" na matriz de tags do registro bruto é mapeado para o campo "source_labels" no objeto da entidade UDM.
obj.threatscore entity.metadata.threat.risk_score O campo "threatscore" no registro bruto é mapeado para o campo "risk_score" no objeto de ameaça do UDM.
obj.threat_type entity.metadata.threat.detection_fields O campo "threat_type" no registro bruto é mapeado para o campo "detection_fields" no objeto de ameaça do UDM.
obj.type entity.entity.file.md5 O campo "type" no registro bruto é mapeado para o campo "md5" no objeto de entidade da UDM se o tipo for "md5".
obj.type entity.entity.hostname O campo "type" no registro bruto é mapeado para o campo "hostname" no objeto de entidade da UDM se o tipo for "domain".
obj.type entity.entity.ip O campo "type" no registro bruto é mesclado ao campo "ip" no objeto de entidade da UDM se o tipo for "ip" ou "ipv6".
obj.type entity.entity.url O campo "type" no registro bruto é mapeado para o campo "url" no objeto da entidade UDM se o tipo for "url" ou "string".
obj.type entity.entity.user.email_addresses O campo "type" no registro bruto é mesclado ao campo "email_addresses" no objeto de entidade da UDM se o tipo for "email".
obj.type entity.metadata.entity_type O campo "type" no registro bruto é mapeado para o campo "entity_type" no objeto de entidade do UDM. Se o tipo for "ip" ou "ipv6", ele será mapeado como "IP_ADDRESS". Se o tipo for "domain", ele será mapeado para "DOMAIN_NAME". Se o tipo for "md5" ou o campo "itype" contiver "md5", ele será mapeado para "FILE". Se o tipo for "url" ou "string", ele será mapeado como "URL". Se o tipo for "e-mail", ele será mapeado como "USER". Caso contrário, ele será mapeado como "UNKNOWN_ENTITYTYPE".
obj.uuid entity.additional.fields O campo "uuid" no registro bruto é mapeado para o campo "fields" no objeto da entidade UDM.
obj.value entity.entity.ip O campo "value" no registro bruto é mesclado ao campo "ip" no objeto da entidade UDM se o campo "type" for "ip" e o campo "ip" estiver vazio.
obj.value entity.entity.ip O campo "value" no registro bruto é mesclado ao campo "ip" no objeto da entidade UDM se o campo "ip_field_not_exists" for verdadeiro e o campo "value" for um endereço IP.
obj.value entity.entity.url O campo "value" no registro bruto é mapeado para o campo "url" no objeto da entidade UDM se o campo "type" for "url" ou "string".
obj.value ioc.domain_and_ports.domain O campo "value" no registro bruto é mapeado para o campo "domain" no objeto de IOC da UDM se o campo "type" não for "ip".
obj.value ioc.ip_and_ports.ip_address O campo "value" no registro bruto é mapeado para o campo "ip_address" no objeto UDM ioc se o campo "type" for "ip" e o campo "ip" estiver vazio.
cn1 ioc.confidence_score O campo cn1 no registro bruto é mapeado para o campo confidence_score no objeto UDM ioc.
cn2 entity.metadata.threat.rule_id O campo "cn2" no registro bruto é mapeado para o campo "rule_id" no objeto de ameaça da UDM.
cs1 ioc.raw_severity O campo "cs1" no registro bruto é mapeado para o campo "raw_severity" no objeto UDM ioc.
cs2 entity.metadata.threat.threat_name O campo "cs2" no registro bruto é mapeado para o campo "threat_name" no objeto de ameaça do UDM.
cs3 entity.metadata.threat.threat_status O campo cs3 no registro bruto é mapeado para o campo threat_status no objeto de ameaça da UDM. Se o campo cs3 for "active", ele será mapeado como "ACTIVE". Se o campo cs3 for "cleared", ele será mapeado como "CLEARED". Se o campo cs3 for "falsePositive" ou "falsepos", ele será mapeado como "FALSE_POSITIVE". Se o campo cs3 for "threat_status_unspecified", ele será mapeado para "THREAT_STATUS_UNSPECIFIED".
cs4 entity.entity.administrative_domain O campo "cs4" no registro bruto é mapeado para o campo "administrative_domain" no objeto da entidade UDM.
cs5 ioc.description O campo "cs5" no registro bruto é mapeado para o campo "description" no objeto ioc da UDM.
cs5 entity.metadata.threat.detection_fields O campo cs5 no registro bruto é mapeado para o campo detection_fields no objeto de ameaça da UDM.
cs5 entity.metadata.threat.description O campo "cs5" no registro bruto é mapeado para o campo "description" no objeto de ameaça da UDM.
cs6 entity.metadata.threat.category_details O campo "cs6" no registro bruto é mesclado ao campo "category_details" no objeto de ameaça do UDM.
device_product entity.metadata.product_name O campo "device_product" no registro bruto é mapeado para o campo "product_name" no objeto da entidade UDM.
device_vendor entity.metadata.vendor_name O campo "device_vendor" no registro bruto é mapeado para o campo "vendor_name" no objeto da entidade UDM.
device_version entity.metadata.product_version O campo "device_version" no registro bruto é mapeado para o campo "product_version" no objeto da entidade UDM.
msg entity.metadata.threat.summary O campo "msg" no registro bruto é mapeado para o campo "summary" no objeto de ameaça do UDM.
shost entity.entity.hostname O campo "shost" no registro bruto é mapeado para o campo "hostname" no objeto da entidade UDM.
shost entity.entity.url O campo "shost" no registro bruto é mapeado para o campo "url" no objeto da entidade UDM.
shost ioc.domain_and_ports.domain O campo "shost" no registro bruto é mapeado para o campo "domain" no objeto UDM ioc.
src entity.entity.ip O campo "src" no registro bruto é mesclado ao campo "ip" no objeto de entidade da UDM.
src ioc.ip_and_ports.ip_address O campo "src" no registro bruto é mapeado para o campo "ip_address" no objeto UDM ioc.
entity.metadata.threat.confidence HIGH_CONFIDENCE O campo "confidence" no objeto de ameaça da UDM é definido como "HIGH_CONFIDENCE" se o campo "confidence_score" for maior ou igual a 75.
entity.metadata.threat.confidence LOW_CONFIDENCE O campo de confiança no objeto de ameaça da UDM é definido como "LOW_CONFIDENCE" se o campo "confidence_score" for menor ou igual a 50.
entity.metadata.threat.confidence MEDIUM_CONFIDENCE O campo de confiança no objeto de ameaça da UDM é definido como "MEDIUM_CONFIDENCE" se o campo "confidence_score" for maior que 50 e menor ou igual a 74.
entity.metadata.threat.confidence UNKNOWN_CONFIDENCE O campo "confidence" no objeto de ameaça da UDM é definido como "UNKNOWN_CONFIDENCE" se o campo "confidence_score" não for um número inteiro válido.
entity.metadata.vendor_name ANOMALI_IOC O campo "vendor_name" no objeto da entidade UDM é definido como "ANOMALI_IOC".

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.