Recolha registos de IOCs do Anomali ThreatStream

Compatível com:

Este documento explica como carregar registos de IOCs do Anomali ThreatStream para o Google Security Operations através de uma API. O analisador transforma os dados de IOC do formato JSON ou CEF num modelo de dados unificado (UDM). O código tenta primeiro analisar a entrada como JSON e, se não for bem-sucedido, procura o prefixo "CEF:" para processá-la como uma mensagem CEF, extraindo atributos de IOC e mapeando-os para campos UDM.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Acesso privilegiado a um inquilino empresarial do Anomali ThreatStream

Crie um utilizador da API dedicado

  1. Inicie sessão no ThreatStream. Mude para a IU clássica se estiver no Anomali Enterprise.
  2. Aceda a Administração > Utilizadores.
  3. Clique em + Adicionar utilizador (ou selecione uma conta de serviço existente).
  4. Preencha os seguintes detalhes:
    • Email: endereço de email da conta de serviço (por exemplo, anomali_ioc_secops@example.com).
    • Origem de autorização: selecione Padrão.
    • Tipo de utilizador: selecione Utilizador da API.
    • Função: selecione Apenas leitura (suficiente para listar indicadores).
  5. Clique em Guardar.
  6. É enviado um email de ativação para a nova conta. Conclua a ativação.

Gere uma chave da API

  1. Inicie sessão no ThreatStream como utilizador da API.
  2. Aceda ao avatar do perfil > As minhas chaves de API.
  3. Clique em Gerar nova chave.
  4. Introduza uma Descrição (por exemplo,Google SecOps export).
  5. Clique em Guardar.
  6. Copie e guarde o valor da chave apresentado em Chave num local seguro. O valor da chave não é apresentado novamente.
  1. Aceda a Administração > Definições da organização.
  2. Selecione o separador Lista de autorizações de IPs.
  3. Clique em + Adicionar.
  4. Introduza o endereço do inquilino do Google SecOps e clique em Guardar.

Configure feeds

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, introduza 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 registo Anomali.
  6. Clicar em Seguinte.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Nome de utilizador: introduza o utilizador da API recém-criado.
    • Secret: introduza a chave da API gerada e copiada anteriormente.
    • Espaço de nomes do recurso: o espaço de nomes do recurso.
    • Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
  8. Clicar em Seguinte.
  9. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento do UDM Lógica
obj.asn entity.administrative_domain O campo asn no registo não processado é mapeado para o campo administrative_domain no objeto de entidade UDM.
obj.confidence ioc.confidence_score O campo de confiança no registo não processado é mapeado para o campo confidence_score no objeto ioc da UDM.
obj.country entity.location.country_or_region O campo de país no registo não processado é mapeado para o campo country_or_region no objeto de entidade UDM.
obj.created_ts entity.metadata.creation_timestamp O campo created_ts no registo não processado é mapeado para o campo creation_timestamp no objeto de entidade UDM.
obj.created_ts ioc.active_timerange.start O campo created_ts no registo não processado é mapeado para o campo de início no objeto ioc do UDM.
obj.created_ts entity.metadata.threat.first_discovered_time O campo created_ts no registo não processado é 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 registo não processado é mapeado para o campo end_time no objeto de entidade UDM.
obj.expiration_ts ioc.active_timerange.end O campo expiration_ts no registo não processado é mapeado para o campo end no objeto ioc da UDM.
obj.id entity.metadata.product_entity_id O campo id no registo não processado é mapeado para o campo product_entity_id no objeto de entidade do UDM.
obj.ip entity.entity.ip O campo ip no registo não processado é unido ao campo ip no objeto de entidade UDM.
obj.ip ioc.ip_and_ports.ip_address O campo ip no registo não processado é mapeado para o campo ip_address no objeto ioc da UDM.
obj.itype ioc.categorization O campo itype no registo não processado é mapeado para o campo de categorização no objeto ioc da UDM.
obj.itype entity.metadata.threat.category_details O campo itype no registo não processado é unido ao campo category_details no objeto de ameaça do UDM.
obj.latitude entity.entity.location.region_latitude O campo de latitude no registo não processado é mapeado para o campo region_latitude no objeto da entidade UDM.
obj.longitude entity.entity.location.region_longitude O campo de longitude no registo não processado é mapeado para o campo region_longitude no objeto de entidade UDM.
obj.meta.detail2 ioc.description O campo detail2 no registo não processado é mapeado para o campo de descrição no objeto IOC da UDM.
obj.meta.detail2 entity.metadata.threat.description O campo detail2 no registo não processado é mapeado para o campo de descrição no objeto de ameaça da UDM.
obj.meta.severity ioc.raw_severity O campo de gravidade no registo não processado é mapeado para o campo raw_severity no objeto ioc da UDM.
obj.meta.severity entity.metadata.threat.severity O campo de gravidade no registo não processado é mapeado para o campo de gravidade no objeto de ameaça da UDM. Se a gravidade for "muito elevada", é mapeada para "CRÍTICO".
obj.meta.severity entity.metadata.threat.severity_details O campo de gravidade no registo não processado é 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 registo não processado é mapeado para o campo last_updated_time no objeto de ameaça da UDM.
obj.org entity.entity.administrative_domain O campo org no registo não processado é mapeado para o campo administrative_domain no objeto de entidade UDM.
obj.resource_uri entity.metadata.threat.url_back_to_product O campo resource_uri no registo não processado é mapeado para o campo url_back_to_product no objeto de ameaça do UDM.
obj.retina_confidence entity.metadata.threat.confidence_score O campo retina_confidence no registo não processado é mapeado para o campo confidence_score no objeto de ameaça do UDM.
obj.source ioc.feed_name O campo de origem no registo não processado é mapeado para o campo feed_name no objeto ioc da UDM.
obj.source entity.metadata.threat.threat_name O campo de origem no registo não processado é mapeado para o campo threat_name no objeto de ameaça do UDM.
obj.status entity.metadata.threat.threat_status O campo de estado no registo não processado é mapeado para o campo threat_status no objeto de ameaça do UDM.
obj.subtype entity.entity.file.sha1 O campo subtype no registo não processado é mapeado para o campo sha1 no objeto de entidade UDM se o subtipo for "SHA1".
obj.subtype entity.entity.file.sha256 O campo subtype no registo não processado é mapeado para o campo sha256 no objeto de entidade UDM se o subtype for "SHA256".
obj.tags entity.metadata.source_labels O campo de etiquetas no registo não processado é mapeado para o campo source_labels no objeto da entidade UDM.
obj.tags.id entity.metadata.source_labels O campo id na matriz de etiquetas do registo não processado é mapeado para o campo source_labels no objeto da entidade UDM.
obj.tags.name entity.metadata.source_labels O campo name na matriz de etiquetas do registo não processado é mapeado para o campo source_labels no objeto da entidade UDM.
obj.threatscore entity.metadata.threat.risk_score O campo threatscore no registo não processado é 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 registo não processado é mapeado para o campo detection_fields no objeto de ameaça do UDM.
obj.type entity.entity.file.md5 O campo de tipo no registo não processado é mapeado para o campo md5 no objeto de entidade UDM se o tipo for "md5".
obj.type entity.entity.hostname O campo de tipo no registo não processado é mapeado para o campo de nome do anfitrião no objeto de entidade UDM se o tipo for "domínio".
obj.type entity.entity.ip O campo de tipo no registo não processado é unido ao campo de IP no objeto de entidade UDM se o tipo for "ip" ou "ipv6".
obj.type entity.entity.url O campo de tipo no registo não processado é mapeado para o campo de URL no objeto de entidade UDM se o tipo for "URL" ou "string".
obj.type entity.entity.user.email_addresses O campo de tipo no registo não processado é unido ao campo email_addresses no objeto de entidade UDM se o tipo for "email".
obj.type entity.metadata.entity_type O campo de tipo no registo não processado é mapeado para o campo entity_type no objeto de entidade do UDM. Se o tipo for "ip" ou "ipv6", é mapeado para "IP_ADDRESS". Se o tipo for "domain", é mapeado para "DOMAIN_NAME". Se o tipo for "md5" ou o campo itype contiver "md5", é mapeado para "FILE". Se o tipo for "url" ou "string", é mapeado para "URL". Se o tipo for "email", é mapeado para "USER". Caso contrário, é mapeado para "UNKNOWN_ENTITYTYPE".
obj.uuid entity.additional.fields O campo uuid no registo não processado é mapeado para o campo fields no objeto da entidade UDM.
obj.value entity.entity.ip O campo de valor no registo não processado é unido ao campo ip no objeto da entidade UDM se o campo de tipo for "ip" e o campo ip estiver vazio.
obj.value entity.entity.ip O campo de valor no registo não processado é unido ao campo ip no objeto de entidade UDM se o campo ip_field_not_exists for verdadeiro e o campo de valor for um endereço IP.
obj.value entity.entity.url O campo de valor no registo não processado é mapeado para o campo de URL no objeto de entidade UDM se o campo de tipo for "URL" ou "string".
obj.value ioc.domain_and_ports.domain O campo de valor no registo não processado é mapeado para o campo de domínio no objeto IOC da UDM se o campo de tipo não for "ip".
obj.value ioc.ip_and_ports.ip_address O campo de valor no registo não processado é mapeado para o campo ip_address no objeto ioc da UDM se o campo de tipo for "ip" e o campo ip estiver vazio.
cn1 ioc.confidence_score O campo cn1 no registo não processado é mapeado para o campo confidence_score no objeto ioc da UDM.
cn2 entity.metadata.threat.rule_id O campo cn2 no registo não processado é mapeado para o campo rule_id no objeto de ameaça do UDM.
cs1 ioc.raw_severity O campo cs1 no registo não processado é mapeado para o campo raw_severity no objeto ioc da UDM.
cs2 entity.metadata.threat.threat_name O campo cs2 no registo não processado é mapeado para o campo threat_name no objeto de ameaça do UDM.
cs3 entity.metadata.threat.threat_status O campo cs3 no registo não processado é mapeado para o campo threat_status no objeto de ameaça do UDM. Se o campo cs3 for "active", é mapeado para "ACTIVE". Se o campo cs3 for "limpo", é mapeado para "CLEARED". Se o campo cs3 for "falsePositive" ou "falsepos", é mapeado para "FALSE_POSITIVE". Se o campo cs3 for "threat_status_unspecified", é mapeado para "THREAT_STATUS_UNSPECIFIED".
cs4 entity.entity.administrative_domain O campo cs4 no registo não processado é mapeado para o campo administrative_domain no objeto de entidade UDM.
cs5 ioc.description O campo cs5 no registo não processado é mapeado para o campo de descrição no objeto ioc da UDM.
cs5 entity.metadata.threat.detection_fields O campo cs5 no registo não processado é mapeado para o campo detection_fields no objeto de ameaça do UDM.
cs5 entity.metadata.threat.description O campo cs5 no registo não processado é mapeado para o campo de descrição no objeto de ameaça da UDM.
cs6 entity.metadata.threat.category_details O campo cs6 no registo não processado é unido ao campo category_details no objeto de ameaça do UDM.
device_product entity.metadata.product_name O campo device_product no registo não processado é mapeado para o campo product_name no objeto da entidade UDM.
device_vendor entity.metadata.vendor_name O campo device_vendor no registo não processado é mapeado para o campo vendor_name no objeto da entidade UDM.
device_version entity.metadata.product_version O campo device_version no registo não processado é mapeado para o campo product_version no objeto de entidade UDM.
msg entity.metadata.threat.summary O campo msg no registo não processado é mapeado para o campo de resumo no objeto de ameaça da UDM.
shost entity.entity.hostname O campo shost no registo não processado é mapeado para o campo hostname no objeto de entidade UDM.
shost entity.entity.url O campo shost no registo não processado é mapeado para o campo url no objeto de entidade UDM.
shost ioc.domain_and_ports.domain O campo shost no registo não processado é mapeado para o campo de domínio no objeto ioc da UDM.
src entity.entity.ip O campo src no registo não processado é unido ao campo ip no objeto da entidade UDM.
src ioc.ip_and_ports.ip_address O campo src no registo não processado é mapeado para o campo ip_address no objeto ioc da UDM.
entity.metadata.threat.confidence HIGH_CONFIDENCE O campo de confiança no objeto de ameaça da UDM está definido como "HIGH_CONFIDENCE" se o campo confidence_score for igual ou superior a 75.
entity.metadata.threat.confidence LOW_CONFIDENCE O campo de confiança no objeto de ameaça UDM está definido como "LOW_CONFIDENCE" se o campo confidence_score for inferior ou igual a 50.
entity.metadata.threat.confidence MEDIUM_CONFIDENCE O campo de confiança no objeto de ameaça da UDM está definido como "MEDIUM_CONFIDENCE" se o campo confidence_score for superior a 50 e inferior ou igual a 74.
entity.metadata.threat.confidence UNKNOWN_CONFIDENCE O campo de confiança no objeto de ameaça UDM está 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 está definido como "ANOMALI_IOC".

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