Recolha registos de IOCs do Anomali ThreatStream
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
- Inicie sessão no ThreatStream. Mude para a IU clássica se estiver no Anomali Enterprise.
- Aceda a Administração > Utilizadores.
- Clique em + Adicionar utilizador (ou selecione uma conta de serviço existente).
- 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).
- Email: endereço de email da conta de serviço (por exemplo,
- Clique em Guardar.
- É enviado um email de ativação para a nova conta. Conclua a ativação.
Gere uma chave da API
- Inicie sessão no ThreatStream como utilizador da API.
- Aceda ao avatar do perfil > As minhas chaves de API.
- Clique em Gerar nova chave.
- Introduza uma Descrição (por exemplo,
Google SecOps export
). - Clique em Guardar.
- Copie e guarde o valor da chave apresentado em Chave num local seguro. O valor da chave não é apresentado novamente.
Recomendado: adicione o IP do coletor à lista de autorizações
- Aceda a Administração > Definições da organização.
- Selecione o separador Lista de autorizações de IPs.
- Clique em + Adicionar.
- Introduza o endereço do inquilino do Google SecOps e clique em Guardar.
Configure feeds
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, introduza um nome para o feed (por exemplo,
Anomali TS IOC
). - Selecione API de terceiros como o Tipo de origem.
- Selecione o tipo de registo Anomali.
- Clicar em Seguinte.
- 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.
- Clicar em Seguinte.
- 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.