Skip to main content

Catálogo de fontes

Esta página descreve as nove fontes de enriquecimento disponíveis hoje. A lista não é fixa no código do console, a tela em Enriquece → Enriquecimento → Catálogo sempre reflete exatamente o que a sua instalação tem registrado, então use GET /api/collectors/enrichment/enrichers (ou a própria tela) como fonte da verdade se este texto ficar desatualizado.

Tabela do cliente (chave exata), table_exact

Modopor evento
Egressonenhum
Tipos de chaveip, domain, url, file_hash, cve, mac, user, container_id
Requer configuração externa?Não

Casa a chave do evento contra a sua própria tabela, por igualdade exata. É o enricher genérico: como você define os campos da tabela livremente, ele serve para qualquer contexto que você já tenha em planilha ou export de outro sistema, usuário → departamento, hostname → dono, hash → veredito interno, CVE → prioridade de patch da sua empresa.

Os campos que ele devolve são exatamente os que você colocou em cada linha da tabela, não há uma lista fixa.

Tabela do cliente (CIDR, prefixo mais específico), table_cidr

Modopor evento
Egressonenhum
Tipos de chaveip
Requer configuração externa?Não

Casa um IP contra a sua tabela de faixas de rede (CIDR), sempre pelo prefixo mais específico. Se a tabela tem 10.0.0.0/16 e 10.0.5.0/24, um evento com IP 10.0.5.7 recebe o resultado do /24, não o do /16. É a fonte certa para plano de endereçamento corporativo, inventário de rede exportado de uma ferramenta de gestão, ou listas de bloqueio distribuídas em CIDR.

Veja o passo a passo completo em Como enriquecer um evento.

GeoIP / ASN (MaxMind), geoip

Modopor evento
Egressonenhum
Tipos de chaveip
Requer configuração externa?Sim, uma base .mmdb montada no worker

País, cidade, coordenadas e ASN a partir de uma base MaxMind (GeoLite2-City, GeoLite2-Country ou GeoLite2-ASN, gratuitas com conta; ou as GeoIP2 comerciais). Não faz rede nenhuma: o arquivo é aberto por mmap e a consulta custa microssegundos, por isso é a fonte certa para alimentar a detecção em voo (_centralops.enrichment.geo.country_iso ne "BR" é uma regra válida).

A base não vem com o produto

A licença da MaxMind não permite redistribuir o arquivo. Baixe-o com a sua conta, monte o diretório no worker (ENRICH_GEOIP_DIR, padrão /var/lib/centralops/geoip) e, na fonte, informe só o nome do arquivo (file: GeoLite2-City.mmdb) e o kind (city, country ou asn). Um caminho com diretório é recusado. Para cidade e ASN no mesmo evento, crie duas fontes, uma por base.

CampoDescrição
country_iso / country_name / continent_codePaís (city, country)
city / subdivision / subdivision_isoCidade e estado (city)
latitude / longitude / accuracy_radius_kmCoordenadas aproximadas (city)
timezoneFuso IANA (city)
asn / asn_orgAutonomous System e sua organização (asn)

TAXII 2.1, taxii

Um conector, qualquer plataforma de threat intel

TAXII 2.1 é padrão OASIS, e MISP, OpenCTI, Anomali, ThreatConnect e EclecticIQ falam todos ele. Se a sua plataforma expõe uma coleção TAXII, este enricher a consome sem precisar de conector específico. Suporte a STIX/TAXII 2.1 é critério de avaliação padrão de TIP no mercado.

Modopor evento
Egressointerno (buscamos a lista; nada do seu ambiente sai)
Tipos de chaveip, domain, url, file_hash, mac
Requer configuração externa?Sim, URL do servidor, id da coleção e credencial

Baixa periodicamente uma coleção TAXII e a materializa como tabela local. Por rodar por evento, alimenta as regras de detecção em pipeline.

Quando usar este em vez do conector do OpenCTI: sempre que a plataforma não for OpenCTI, ou quando você quiser evitar acoplamento à API interna dele. O conector do OpenCTI fala GraphQL, que é a API deles e mudou de schema entre 5.x e 6.x. Em compensação, ele traz campos próprios (score do OpenCTI, marcações TLP resolvidas) que o TAXII entrega de forma menos completa, porque as dependências dentro do bundle nem sempre vêm resolvidas.

Campos que devolve:

CampoDescrição
kindTipo de chave normalizado
stix_idId do Indicator STIX
indicator_nameNome do indicador
confidenceConfiança 0 a 100
valid_from / valid_untilJanela de validade
kill_chain_phasesFases, ex.: command-and-control
labelsRótulos STIX, ex.: malicious-activity
has_markingsHá marcação (TLP) a respeitar
created / modifiedDatas do objeto STIX
sourceSempre "taxii"

Configuração:

CampoObrigatórioO que é
urlSimSó o endereço base, ex.: https://tip.exemplo
api_rootNão (padrão /taxii2/)Caminho da api-root. Varia por plataforma (/taxii2/, /api/v21/)
collectionSimId da coleção a consumir
auth_modeNão (padrão bearer)bearer, basic ou none. O padrão OASIS sugere basic; plataformas comerciais costumam usar bearer
usernameSó para basicO usuário. A senha é a credencial da fonte
min_confidenceNão (padrão 0)Piso de confiança do indicador
page_size / max_pagesNãoPaginação e teto por carga
note
Por que url e api_root são campos separados

O guard de egresso do projeto recusa URL com caminho, de propósito, e é ele que aplica a allowlist de host e CIDR. Como a api-root do TAXII sempre tem caminho, juntar os dois exigiria afrouxar o guard justamente no campo que viaja com a credencial no header Authorization. Separados, a base passa pela allowlist e o caminho é validado à parte.

O que é descartado na carga, e por quê:

  • Indicador revogado ou fora da validade. Intel vencida é a maior fonte de falso positivo num feed, e filtrar aqui evita depender de alguém lembrar de escrever a condição em toda regra nova. Cada descarte é contado por motivo (expired, revoked, low_confidence, unsupported_pattern) no registro de carga da aba Execução e na métrica collector_enrich_indicators_skipped_total; e um indicador que vence depois da carga deixa de casar no ato (reason="expired_at_lookup"), sem esperar a próxima carga.
  • Indicador abaixo do min_confidence.
  • Padrão STIX composto (AND/OR). Casar um evento contra ele exigiria avaliar a expressão inteira; avaliar só o primeiro termo daria hit errado em silêncio.
  • Objetos que não são indicator. O filtro match[type]=indicator roda no servidor, então malware, campanhas e relacionamentos nem trafegam.

OpenCTI, opencti

Configure em Enriquecimento → Fontes antes de usar numa regra

Este enricher precisa saber o endereço da sua instância e ter uma credencial. Isso é uma fonte configurada: crie uma em Enriquecimento → Fontes, e depois a regra da política só cita o nome dela. A credencial vai uma única vez, o servidor a cifra, e nem a API nem a tela a devolvem, o que você vê depois é só "credencial cadastrada".

Modopor evento
Egressointerno (a instância é sua)
Tipos de chaveip, domain, url, file_hash, mac
Requer configuração externa?Sim. URL da sua instância + token de API

Sincroniza periodicamente os indicadores (observáveis) da sua instância própria do OpenCTI para uma tabela local, e casa a chave do evento contra ela. Por rodar por evento, o resultado alimenta as regras de detecção em pipeline, diferente de uma consulta remota, que chegaria tarde demais para isso. Como a instância é sua, nenhum dado do seu ambiente sai para fora.

Campos que devolve:

CampoDescrição
scoreScore do OpenCTI (0 a 100)
entity_typeTipo do observável (IPv4-Addr, Domain-Name, StixFile, ...)
kindTipo de chave normalizado (ip, domain, url, file_hash, mac)
opencti_idId interno do observável no OpenCTI
created_at / updated_atDatas de criação e última atualização
markingsMarcações TLP/PAP
labelsRótulos atribuídos no OpenCTI
created_byQuem reportou o indicador (o feed ou o analista)
sourceSempre "opencti", indica de onde veio o dado

Configuração:

CampoObrigatórioO que é
urlSimEndereço base da sua instância, ex.: https://opencti.interno
presetNão (padrão ip)O que buscar. Veja a tabela abaixo
page_sizeNão (padrão 500)Itens por página ao sincronizar
max_pagesNão (padrão 40)Teto de páginas por atualização. Protege contra uma instância muito grande drenar o ciclo inteiro
min_scoreNão (padrão 0)Só traz indicadores com score igual ou acima deste valor

A credencial não aparece aqui: ela é um campo próprio da fonte configurada, não da configuração.

Escolha o preset pelo tipo de indicador

O preset filtra no servidor do OpenCTI. Uma tabela de IP não baixa hashes e URLs para descartar depois, o que muda bastante o tempo de sincronização numa base grande.

PresetTraz
ipIPv4-Addr e IPv6-Addr
domainDomain-Name e Hostname
urlUrl
file_hashStixFile e Artifact (SHA-256, MD5, ...)
macMac-Addr
all_observablesTodos os tipos acima numa tabela só
indicatorsIndicadores STIX em vez de observáveis. Veja abaixo

O preset indicators é o que muda o jogo

Um observável responde "esse IP está na base". Um indicador responde "esse IP é C2 conhecido, ativo, com confiança 80". A diferença aparece em quatro campos extras:

CampoPor que importa
valid_until e revokedIndicador expirado ou revogado é descartado na carga, e o descarte é contado por motivo no registro de carga. Um indicador que vence depois da carga deixa de casar no ato (expired_at_lookup). Intel vencida é a maior fonte de falso positivo em feed de threat intel: sem esse corte, o alerta dispara por um IP que foi C2 há dois anos e hoje pertence a uma CDN
confidenceSepara o que um analista marcou como confiável do que entrou por importação automática
detectionO indicador foi marcado como acionável para detecção
kill_chain_phasesA fase (command-and-control, delivery, exfiltration). É o que transforma um hit em contexto acionável no SIEM

Indicadores com padrão STIX composto (AND/OR) são pulados de propósito: casar um evento contra eles exigiria avaliar a expressão inteira, e uma avaliação parcial daria hit errado em silêncio.

Confira a query contra a sua versão do OpenCTI antes de usar em produção

O schema GraphQL do OpenCTI mudou entre as versões 5.x e 6.x. Se a sincronização não trouxer nada, esse é o primeiro lugar a checar. O campo query na configuração aceita uma query própria, que é a saída para instâncias divergentes.

VirusTotal, virustotal

Configure em Enriquecimento → Fontes antes de usar numa regra

Como o OpenCTI, este enricher exige credencial. Crie uma fonte configurada em Enriquecimento → Fontes com a sua chave de API; a regra depois cita só o nome dela. A chave sobe uma única vez e é cifrada pelo servidor, a API nunca a devolve.

Modopor lote
Egressoenvia a terceiro
Tipos de chaveip, domain, file_hash
Requer configuração externa?Sim, chave de API

Consulta a reputação de um indicador na API v3 do VirusTotal. Por rodar por lote, o resultado chega ao evento antes de ele ser roteado, mas não alimenta as regras de detecção em pipeline, que já rodaram por evento antes desse enriquecimento acontecer.

Campos que devolve:

CampoDescrição
malicious / suspicious / harmless / undetectedQuantas engines classificaram o indicador em cada categoria
total_enginesTotal de engines que responderam
malicious_ratiomalicious / total_engines, de 0.0 a 1.0
reputationScore de reputação da comunidade VirusTotal
last_analysis_dateData (epoch) da última análise
tagsTags atribuídas pelo VirusTotal
sourceSempre "virustotal"

Configuração:

CampoObrigatórioO que é
key_kindNão (padrão ip)ip, domain ou file_hash. Uma instância do enricher resolve um tipo por vez
max_keys_per_batchNão (padrão 25)Teto de indicadores consultados por lote

A chave de API não aparece na tabela porque não é configuração: é o campo Credencial da fonte, que sobe uma vez e o servidor cifra.

A chave pública libera só 4 consultas por minuto

Sem um when restritivo na regra, um lote de 200 eventos com indicadores distintos consome a cota diária de uma chave gratuita em segundos. Restrinja a regra para consultar só o que precisa, por exemplo apenas indicadores que uma regra anterior já marcou como desconhecido.

O gate when é avaliado antes da chamada, então o que ele barra não sai da sua infraestrutura nem gasta cota.

Toda consulta ao VirusTotal envia um indicador do seu ambiente (um IP, um hash) para fora. Confirme que isso é aceitável para o tipo de dado antes de habilitar.

AbuseIPDB, abuseipdb

Configure em Enriquecimento → Fontes antes de usar numa regra

Exige chave de API. Crie a fonte configurada com a chave; a regra cita só o nome dela.

Modopor lote
Egressoenvia a terceiro
Tipos de chaveip
Requer configuração externa?Sim, chave de API (plano gratuito: 1.000 consultas/dia)

Reputação de IP por relatos da comunidade: abuse_confidence_score (0–100), quantos relatos e de quantos usuários, a última data, e o contexto de rede (ISP, tipo de uso, país, Tor). IPs privados, loopback e link-local nunca saem para o provedor.

MISS tem semântica: a API responde para qualquer IP público, inclusive um sem nenhum relato. Um IP sem relatos, ou com score abaixo de min_confidence_score, é tratado como não encontrado — assim o negative caching funciona e a regra só casa o que interessa. Para "qualquer relato", deixe min_confidence_score em 0; para "provável abuso", use 75.

CampoDescrição
abuse_confidence_scoreConfiança de abuso, 0 a 100
total_reports / num_distinct_usersRelatos na janela e usuários distintos
last_reported_atÚltimo relato (ISO)
country_code / usage_type / isp / domain / hostnamesContexto de rede
is_tor / is_whitelistedNó Tor; allowlist do provedor
sourceSempre "abuseipdb"

Configuração: max_age_days (padrão 90), min_confidence_score (padrão 0), max_keys_per_batch (padrão 25), requests_per_minute (60) e requests_per_day (1.000, o plano gratuito). Com N workers usando a mesma chave, divida as cotas por N.

AlienVault OTX, otx

Configure em Enriquecimento → Fontes antes de usar numa regra

Exige chave de API (gratuita). Uma instância resolve um tipo de chave por vez: crie uma fonte por tipo se precisar de IP e domínio.

Modopor lote
Egressoenvia a terceiro
Tipos de chaveip, domain, file_hash, url
Requer configuração externa?Sim, chave de API

Pulses da comunidade OTX que citam o indicador: quantos, os nomes mais recentes, adversário, famílias de malware, tags e setores; mais reputation e se o OTX considera o indicador benigno (whitelisted, com as fontes em validation). MISS = nenhum pulse; um indicador que aparece só na allowlist do OTX também é MISS, para que uma regra "casou pulse" nunca dispare por ele.

CampoDescrição
pulse_count / pulsesQuantos pulses e os nomes (até max_pulses)
tags / adversaries / malware_families / industriesUnião do que os pulses declaram
first_seen / last_seenPulse mais antigo e modificação mais recente
reputationReputação OTX
whitelisted / validationO OTX considera benigno; fontes da allowlist
sourceSempre "otx"

Configuração: key_kind (padrão ip), max_pulses (5), max_keys_per_batch (25), requests_per_minute (60). URLs são escapadas no caminho; IPv6 é detectado pelo valor.

GreyNoise, greynoise

Modopor lote
Egressoenvia a terceiro
Tipos de chaveip
Requer configuração externa?Opcional no plano community (sem chave, ~50/dia; com chave gratuita, ~100/dia); obrigatória no enterprise

O enricher de redução de ruído: noise = o IP está escaneando a internet inteira (não é tráfego dirigido a você); riot = é um serviço legítimo conhecido (CDN, DNS público, atualização de SO). Os dois são motivo para não acordar o analista, e por isso o GreyNoise costuma ser a primeira regra da política, marcando o evento com uma tag que as regras seguintes usam no when para pular a consulta cara.

tier: community usa /v3/community/<ip>; tier: enterprise usa /v2/noise/context/<ip> e devolve também actor, tags de comportamento, CVEs exploradas, VPN/bot/spoofable, ASN, país e organização. MISS = o GreyNoise nunca viu o IP, que é informação: tráfego dirigido, não ruído. Por isso o negative TTL é curto (1 h).

CampoDescrição
noise / riot / classificationRuído de internet; serviço conhecido; benign/malicious/unknown
name / linkServiço (riot) ou actor (enterprise); página no GreyNoise
first_seen / last_seenObservações
tags / cve / vpn / bot / spoofableComportamento (enterprise)
country_code / asn / organizationRede (enterprise)
tier / sourceDe onde veio; sempre "greynoise"

Configuração: tier (padrão community), max_keys_per_batch (25), requests_per_minute (10), requests_per_day (100). No enterprise, suba as cotas para o seu plano.

Comum aos quatro provedores remotos

A cota é respeitada antes da requisição: o que passa do limite fica sem enriquecimento neste ciclo e é reperguntado no próximo, nunca gravado como "limpo". Um 429 trava o lote pelo Retry-After do provedor e abre o breaker da fonte; credencial recusada aparece como erro de autenticação no registro de atividade, não como "nada casou". IPs privados nunca saem da sua infraestrutura.

Próximos passos