05 - CTI.5 - Processamento e Normalização de Dados
video: https://youtu.be/... no frontmatter da nota.CTI.5 - Processamento e Normalização de Dados
Nota do grupo COL (Ciclo de Inteligência: Planejamento e Coleta) da seção 15 - Framework CTH - Controles.
Deriva do Capítulo 9 do PDF de referência (controle CTI.5) e da fase de processamento do ciclo de CTI da seção 2.8.
Converte a coleta bruta de OSINT e fontes técnicas em dados estruturados, enriquecidos e prontos para análise.
1. Contexto e Posicionamento no Framework CTH
O controle CTI.5 fecha o grupo COL e ocupa a posição de ponte entre a coleta (CTI.3 e CTI.4) e a análise do ciclo de inteligência. O Capítulo 9 do Framework CTH descreve o problema com precisão: os dados brutos chegam em formatos inconsistentes, com taxonomias conflitantes e confiabilidade variável, e sem processamento rigoroso não podem ser correlacionados, analisados nem transformados em inteligência acionável. A normalização para formatos padronizados e o enriquecimento com contexto convertem essa massa dispersa em um repositório coeso e consultável.
No ciclo de CTI da seção 2.8, o processamento é a etapa que torna os dados utilizáveis pela análise, incluindo extração de indicadores e padronização de formatos como STIX e TAXII. Sem essa etapa, o programa acumula feeds sem integração, alertas sem contexto e relatórios sem dados, três sintomas que aparecem juntos quando o pipeline não existe. O investimento aqui tem retorno direto: cada melhoria de qualidade de dados se multiplica em todas as detecções, buscas e análises que consumirão o repositório.
2. Etapas do Pipeline de Processamento
O pipeline de processamento organiza-se em seis etapas sequenciais, cada uma com entrada, transformação e saída definidas. A disciplina de separar as etapas facilita a observabilidade e a correção de defeitos, porque permite medir onde o fluxo perde qualidade.
| Etapa | O que faz | Entrada típica | Saída esperada |
|---|---|---|---|
| Parse e extração | Interpreta o formato bruto e extrai indicadores e metadados | JSON de feed, texto de relatório, CSV | Lista de indicadores com fonte e horário |
| Normalização | Padroniza formatos de IP, domínio, hash, URL e timestamp | Indicadores em formatos variados | Indicadores canônicos, prontos para comparação |
| Deduplicação | Identifica e consolida objetos repetidos entre fontes | Indicadores canônicos | Registros únicos com todas as fontes preservadas |
| Enriquecimento | Acrescenta GeoIP, WHOIS e RDAP, reputação, DNS e contexto de campanha | Registros únicos | Indicadores com metadados expandidos |
| Classificação e TLP | Aplica marcação de sensibilidade e confiança | Registros enriquecidos | Objetos rotulados para compartilhamento controlado |
| Armazenamento | Persiste no repositório e distribui aos consumidores | Objetos rotulados | Plataformas (PLT.x) e SIEM alimentados |
A ordem importa. Deduplicar antes de normalizar compara strings diferentes que são o mesmo objeto; enriquecer antes de deduplicar paga API repetidamente pelo mesmo indicador; classificar depois de armazenar expõe informação antes de rotular. Pipeline bem ordenado é mais barato, mais rápido e mais seguro.
3. Normalização de Indicadores
A normalização define a forma canônica de cada tipo de indicador, condição para que deduplicação, busca e correspondência funcionem. As regras a seguir cobrem os tipos mais comuns e evitam os erros clássicos de comparação.
| Tipo | Regra de normalização | Antes | Depois |
|---|---|---|---|
| Endereço IP | Forma canônica, sem zeros supérfluos, IPv6 comprimido | 203.000.113.066 | 203.0.113.66 |
| Domínio | Caixa baixa, ponto final removido, punycode preservado | WWW.Exemplo.Com.BR. | www.exemplo.com.br |
| Hash | Caixa baixa, algoritmo registrado | A3F9... | a3f9... |
| URL | Esquema e hospedeiro em caixa baixa; parâmetros rastreadores removidos na variante de comparação | http://Loja.Exemplo.com/?utm_source=x&id=7 | http://loja.exemplo.com/?id=7 |
| Timestamp | UTC em ISO 8601 com sufixo Z | 11/04/2025 11:42 | 2025-04-11T11:42:00Z |
A questão da URL merece nota técnica: existem duas variantes úteis e ambas devem ser mantidas. A URL completa, com todos os parâmetros, preserva a evidência da campanha; a URL base, com caminho e sem parâmetros, permite comparar infraestrutura e agrupar campanhas que reutilizam o mesmo hospedeiro. Guardar apenas uma das variantes reduz a capacidade analítica do repositório.
O trecho abaixo implementa as regras básicas em Python e pode servir de núcleo para o parser.
import ipaddress
from urllib.parse import urlparse, urlunparse, parse_qsl, urlencode
def normalizar_ip(valor):
return str(ipaddress.ip_address(valor.strip()))
def normalizar_dominio(valor):
return valor.strip().rstrip(".").lower()
def normalizar_url(valor, remover_rastreadores=True):
partes = urlparse(valor.strip())
pares = parse_qsl(partes.query, keep_blank_values=True)
if remover_rastreadores:
pares = [(k, v) for k, v in pares if not k.lower().startswith("utm_")]
consulta = urlencode(pares)
return urlunparse((partes.scheme.lower(), partes.netloc.lower(),
partes.path, partes.params, consulta, ""))
4. Enriquecimento Típico
O enriquecimento adiciona o contexto que transforma um indicador isolado em informação comparável. Cada tipo de enriquecimento responde uma pergunta específica e tem custo próprio, o que exige cache e priorização para não estourar cota de API.
| Enriquecimento | Pergunta respondida | Fonte típica | Cuidado operacional |
|---|---|---|---|
| GeoIP | De onde vem a infraestrutura | Base local ou API | Bloqueio por país gera falsos positivos com CDN |
| WHOIS e RDAP | Quando e como o domínio foi registrado | RDAP gratuito | Registrar idade e mudanças recentes |
| Reputação | O que o indicador fez em outros ambientes | Serviços agregados | Herança de reputação em IP compartilhado |
| Resolução DNS e DNS passivo | Para onde o domínio resolveu e com quem coocorre | DNS passivo contratado | Preservar histórico, não só o estado atual |
| Hash em repositórios | Prevalência e família associada | Repositórios e serviços agregadores | Custo de consulta por hash e cache obrigatório |
| Contexto de campanha | A qual cluster ou ator o indicador se liga | Plataforma de CTI | Exige objetos e relacionamentos bem modelados |
O enriquecimento também é o ponto onde o pipeline mais custa dinheiro e latência. Cache com tempo de vida definido, por exemplo uma semana para reputação e um mês para idade de registro, reduz drasticamente o volume de consultas, e a fila de prioridade garante que indicadores de alta relevância sejam enriquecidos primeiro.
5. Qualidade no Processamento
A qualidade do processamento se mede pelo efeito a jusante: falsos positivos gerados por parser ruim, indicadores vencidos que poluem buscas e fontes sobrepostas que inflam contagens. O parser ruim é o mais insidioso, porque extrai "domínios" de rodapés de e-mail e IPs de exemplos de documentação; extratores precisam de regras de exclusão e de amostragem humana periódica para calibrar.
A idade do indicador é o segundo fator. Um IOC de C2 tem vida útil curta, e o CTI.5.4 trata o decaimento temporal como componente do score de confiança. A formulação do Framework CTH pondera confiabilidade da fonte com peso de 40 por cento, corroboração por múltiplas fontes com 25 por cento, idade com 20 por cento e validação interna com 15 por cento. O exemplo abaixo mostra o cálculo para dois indicadores.
| Componente | Peso | IOC A, confirmado internamente | IOC B, fonte única com 60 dias |
|---|---|---|---|
| Confiabilidade da fonte | 0,40 | 90 x 0,40 = 36,0 | 70 x 0,40 = 28,0 |
| Corroboração multi-fonte | 0,25 | 80 x 0,25 = 20,0 | 20 x 0,25 = 5,0 |
| Idade (decaimento) | 0,20 | 90 x 0,20 = 18,0 | 30 x 0,20 = 6,0 |
| Validação interna | 0,15 | 100 x 0,15 = 15,0 | 0 x 0,15 = 0,0 |
| Score final | 1,00 | 89,0 | 39,0 |
A sobreposição de fontes é o terceiro fator. Dezenas de agregadores republicam os mesmos IOC de origem, e contar "confirmado em 15 fontes" quando todas derivam de uma só é erro estatístico clássico. O registro de deduplicação deve preservar a linhagem, guardando quais fontes contribuíram e qual a independência real entre elas, insumo que o CTI.5.3 exige e que a gestão de fontes do PLT.4 consome.
6. Automação do Pipeline
O CTI.5.5 define o alvo: um pipeline ETL contínuo que executa normalização, enriquecimento, deduplicação e scoring à medida que os dados chegam, com métricas de volume, latência, taxa de erro e qualidade de saída. Na prática, a automação se apoia em três elementos: agendamento declarativo, filas entre etapas e tratamento de erro com reprocessamento. A configuração abaixo ilustra um pipeline descrito em YAML.
pipeline_cti:
agendamento: "*/30 * * * *"
etapas:
- nome: ingestao
entradas: [taxii_servidor, urlhaus, otx, relatorios_parseados]
saida: fila.bruto
- nome: parse_extracao
regras: [regex_ioc, validador_stix]
quarentena: "objetos_invalidos"
- nome: normalizacao
padrao: "STIX 2.1, tipos ip-addr, domain-name, file.sha256, url"
- nome: desduplicacao
chave: "sha256 do objeto canonico"
preserva: [fontes_contribuintes, primeiro_visto, ultimo_visto]
- nome: enriquecimento
servicos: [geoip, rdap, reputacao, dns_passivo]
cache_ttl_horas: {geoip: 168, rdap: 720, reputacao: 168}
- nome: tlp_e_scoring
tlp_default: "AMBER"
scoring_pesos: {fonte: 0.40, corroboracao: 0.25, idade: 0.20, interna: 0.15}
- nome: armazenamento
destinos: [plataforma_compartilhamento, plataforma_cti, tabelas_siem]
metricas: [volume_entrada, volume_saida, latencia_p95_min, taxa_erro, iocs_por_fonte]
alerta_erro: "canal-interno-cti"
O tratamento de erro merece atenção especial. Objetos inválidos vão para quarentena com motivo, e não para o lixo; etapas são idempotentes, de modo que reprocessar um lote não duplique registros; e falhas de enriquecimento não bloqueiam o fluxo, apenas deixam o indicador avançar com o contexto disponível e sinalizam pendência. Pipeline sem essas propriedades quebra silenciosamente, exatamente na semana em que a organização mais precisa dele.
7. Saída Pronta para Análise e para as Plataformas
A saída do processamento tem dois consumidores simultâneos. O primeiro é humano: o analista do CTI precisa de objetos completos, com indicador canônico, contexto enriquecido, confiança, TLP e linhagem de fontes, de modo que a análise comece da informação e não da limpeza. O segundo é automatizado: as plataformas (PLT.x) e o SIEM consomem objetos em formatos padronizados, STIX 2.1, atributos de plataforma de compartilhamento e tabelas de referência carregadas no SIEM para correspondência em tempo de busca.
A tabela abaixo resume os destinos e o formato esperado em cada um.
| Consumidor | Formato de entrega | Uso típico |
|---|---|---|
| Analistas de CTI | Objetos com contexto na plataforma de CTI (PLT.2) | Análise, atribuição e produção de relatórios |
| Plataforma de compartilhamento (PLT.1) | Atributos com tags, TLP e score | Compartilhamento com ISAC e parceiros |
| SIEM e EDR | Tabelas de referência e feeds de IOC | Correspondência em busca e retro-buscas |
| SOAR e playbooks (AUT.x) | Endpoint ou mensagem com objeto canônico | Enriquecimento e decisão automatizada de triagem |
| Threat Hunters (TH.x) | Clusters e relacionamentos exportáveis | Hipóteses de caça baseadas em infraestrutura |
Latência é requisito de desenho, não detalhe. Indicadores de campanha ativa precisam chegar ao SIEM em minutos; enriquecimento profundo pode levar horas sem prejuízo. Separar o caminho rápido, do IOC técnico ao bloqueio e à busca, do caminho completo, do objeto contextualizado à análise, evita que a velocidade exigida pela operação sacrifique a profundidade exigida pela inteligência.
8. Implementação Prática e Salvaguardas por Nível
O Framework CTH organiza o controle em cinco salvaguardas progressivas, resumidas a seguir.
| Nível | Salvaguarda | Escopo prático |
|---|---|---|
| Básico | CTI.5.1 | Normalização automática de todos os IOCs ingeridos: IP canônico, domínio em caixa baixa, hash em caixa baixa, timestamp em UTC, com validação antes da ingestão |
| Básico | CTI.5.2 | Enriquecimento automático de reputação via APIs agregadoras, com cache para evitar chamadas repetidas |
| Intermediário | CTI.5.3 | Deduplicação com consolidação de metadados e preservação das fontes originais |
| Intermediário | CTI.5.4 | Scoring de confiança com pesos documentados, incluindo decaimento temporal e validação interna, revisado semestralmente |
| Avançado | CTI.5.5 | Pipeline ETL contínuo com métricas de volume, latência, taxa de erro e qualidade de saída |
A implantação pode começar com um único script agendado que normalize e deduplique um feed, evoluir para enriquecimento com cache e, por fim, automatizar o fluxo completo. O marco de qualidade intermediário é simples de verificar: nenhum indicador chega à plataforma sem formato canônico, fonte identificada e score atribuído, e qualquer analista consegue responder de onde veio um registro em menos de um minuto.
9. Erros Comuns e Pontos de Atenção
- Parser permissivo demais: extrair tudo que parece IOC infla o repositório de falsos positivos e queima a confiança dos consumidores de detecção.
- Deduplicação que perde linhagem: consolidar registros descartando fontes impede auditoria, corrompe o score de corroboração e esconde fontes de baixa qualidade.
- Enriquecimento sem cache: cota de API esgotada em dias, latência alta e pipeline parado por custeio são o desfecho típico.
- Ausência de decaimento: indicadores de anos atrás aparecendo com o mesmo peso de campanhas ativas poluem buscas e bloqueios.
- Pipeline sem observabilidade: falhas silenciosas de ingestão passam despercebidas até que um incidente revele a lacuna.
- Marca TLP ausente ou errada: dados coletados como AMBER distribuídos sem marcação vazam para fóruns e quebram a confiança dos parceiros (PLT.5).
- Normalização destrutiva: descartar parâmetros da URL ou histórico de DNS no próprio processo elimina evidência que a análise precisaria depois.
Cada erro tem antídoto barato se corrigido cedo: validação com quarentena no parse, linhagem obrigatória na deduplicação, cache com tempo de vida explícito, decaimento no score, métricas por etapa e marcação TLP desde a ingestão. O custo de não corrigir aparece multiplicado na análise e na detecção.
10. Integração com Outros Controles do Framework CTH
| Controle | Relação com CTI.5 |
|---|---|
| CTI.1 (PIRs) | Os EEIs da cascata definem o que o pipeline precisa entregar de contexto |
| CTI.2 (Avaliação de Ameaças) | O repositório normalizado permite atualizar perfis com infraestrutura consolidada |
| CTI.3 e CTI.4 (Coleta) | Recebem e processam tudo que OSINT e fontes técnicas capturam |
| PLT.1 (MISP) | Atributos, tags e taxonomias dependem da normalização e da deduplicação |
| PLT.2 (Plataforma de CTI) | Observáveis, relacionamentos e scoring alimentam o grafo analítico |
| PLT.3 (STIX-TAXII) | STIX 2.1 é o formato alvo da normalização e o meio de intercâmbio |
| PLT.5 (TLP) | A marcação de sensibilidade entra no pipeline e governa a distribuição |
| SIM.x e TH.x | Detecções e caças consomem tabelas canônicas e clusters do repositório |
| DAT.5 (Qualidade e Retenção) | Compartilha princípios de qualidade, retenção e observabilidade de dados |
O processamento é o controle que decide se a coleta se torna inteligência ou custo. Quando o pipeline entrega objetos canônicos, enriquecidos, rotulados e rastreáveis, a análise começa adiante da fase de limpeza, o hunting encontra infraestrutura agrupada em vez de listas soltas, e cada real investido em fontes se converte em resposta defensiva mensurável.