03 - PLT.3 - Formatos de Inteligência (STIX-TAXII)
video: https://youtu.be/... no frontmatter da nota.PLT.3 - Formatos de Inteligência (STIX-TAXII)
Controle PLT.3 do grupo PLT (Plataformas de Inteligência de Ameaças) do Framework CTH, derivado do Capítulo 8 do PDF de referência. Define os padrões STIX 2.1 e TAXII 2.1 como vocabulário comum de representação e transporte da inteligência no programa. O controle sustenta DAT, PLT.1 e PLT.2 ao garantir que indicadores, entidades e relacionamentos circulem entre ferramentas e organizações sem integrações customizadas frágeis.
1. Contexto e Posicionamento no Framework CTH
O STIX (Structured Threat Information Expression) e o TAXII (Trusted Automated Exchange of Intelligence Information) são os padrões internacionais, mantidos no âmbito do OASIS, para representar e trocar informações de ameaças. Sem a adoção desses padrões, a interoperabilidade entre MISP, OpenCTI, SIEM, plataformas comerciais, ISACs e agências depende de scripts ad hoc que quebram a cada mudança de formato. O STIX fornece o vocabulário estruturado e o TAXII define o protocolo de troca automatizada sobre HTTPS.
Dentro do grupo PLT, este controle é a camada de interoperabilidade que liga a gestão de fontes do PLT.4, o compartilhamento do PLT.1, o conhecimento do PLT.2 e a política de divulgação do PLT.5. A regra operacional do Framework CTH é que toda importação e toda exportação de inteligência entre sistemas deve ocorrer em STIX 2.1, com TAXII 2.1 quando houver troca automatizada. Formatos proprietários são tolerados apenas na fronteira, com conversão documentada para STIX no primeiro ponto de ingestão.
2. Por Que Padronizar Representação e Transporte
A padronização resolve dois problemas distintos que costumam ser confundidos. O primeiro é semântico, porque ferramentas diferentes nomeiam conceitos parecidos de formas diferentes, e o STIX estabelece objetos e propriedades com significado único. O segundo é logístico, porque transferir grandes volumes de inteligência de forma segura, incremental e rastreável exige um protocolo próprio, papel do TAXII.
O benefício aparece em situações concretas do dia a dia. Um indicador recebido de um ISAC em STIX chega com fonte, validade, marcação TLP e relacionamento com a campanha, pronto para enriquecer o grafo do OpenCTI sem leitura manual. A mesma informação em CSV sem cabeçalho padronizado demanda interpretação humana, não tem marcação confiável e não carrega validade, forçando a equipe a decidir atributos críticos sob pressão. A tabela abaixo resume as famílias de objetos STIX 2.1.
| Família | Objetos representativos | Função |
|---|---|---|
| SDO (STIX Domain Objects) | threat-actor, intrusion-set, malware, tool, attack-pattern, campaign, infrastructure, vulnerability, indicator | Descrevem os conceitos analíticos da ameaça |
| SCO (STIX Cyber-observable Objects) | ipv4-addr, ipv6-addr, domain-name, file, url, email-addr, network-traffic, windows-registry-key, mutex | Registram a evidência técnica observável |
| SRO (STIX Relationship Objects) | relationship, sighting | Ligam objetos e registram observações de uso no mundo real |
| Containers | report, grouping, observed-data, malware-analysis | Agrupam objetos em produtos e conjuntos de evidência |
| Suporte | identity, location, marking-definition, language-content | Identificam origem, contexto e regras de divulgação |
3. STIX Patterning em Resumo
O campo pattern do objeto indicator usa a linguagem STIX Patterning para expressar condições de correspondência, convertíveis em consultas de SIEM ou regras de detecção. Um pattern combina propriedades de observáveis com operadores de comparação, lógica e funções de tempo. O vocabulário essencial cabe em poucos operadores, e a leitura correta de patterns é competência mínima para quem consome feeds.
[domain-name:value = 'portal-falso.example']
[ipv4-addr:value = '198.51.100.7' AND network-traffic:dst_port = 443]
[file:hashes.'SHA-256' = 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3' OR
file:name LIKE '%invoice%.exe']
[domain-name:value = 'painel-atacante.example'
AND created >= '2025-01-01T00:00:00.000Z']
Recomendações práticas reduzem erros de consumo. Prefira patterns simples por indicador, porque expressões gigantes dificultam a conversão automática; valide a sintaxe na ingestão, rejeitando objetos malformados; e mantenha tabela de conversão para a linguagem do SIEM, documentando equivalências e limitações de cada operador.
4. TAXII 2.1 e o Fluxo de Consumo
O TAXII define uma API REST sobre HTTPS com endpoints padronizados. O cliente descobre os serviços pelo endpoint de discovery, escolhe um api-root, lista as collections disponíveis e consome objetos por intervalo de tempo. Cada collection agrupa um conjunto de dados, e a resposta traz os objetos STIX paginados, com possibilidade de consulta ao manifest para metadados.
| Endpoint | Função | Exemplo de uso |
|---|---|---|
| /taxii2/ | Discovery, lista api-roots | Primeira chamada do cliente para mapear o serviço |
| {api-root}/collections/ | Lista coleções disponíveis | Selecionar coleção por TLP ou por tema |
| {api-root}/collections/{id}/objects/ | Objetos STIX da coleção | Consumo incremental com filtro added_after |
| {api-root}/collections/{id}/manifest/ | Metadados dos objetos | Contagem e verificação de novidade antes do download |
O fluxo de consumo incremental é a prática que evita reprocessamento e sobrecarga. A sequência recomendada para cada fonte TAXII é a seguinte:
- Consultar discovery e autenticar com credenciais dedicadas à fonte.
- Listar collections e registrar quais são elegíveis pela política de TLP da organização.
- Consumir objetos com added_after do último checkpoint persistido.
- Validar cada objeto contra o esquema STIX 2.1 antes de inserir na plataforma.
- Atualizar o checkpoint e registrar volume, erros e marcações recebidas.
# Consumo incremental de uma collection TAXII 2.1
curl -s --user "${TAXII_USER}:${TAXII_PASS}" \
"https://taxii.parceiro.example/api/collections/${COLECAO}/objects/?added_after=2025-01-10T00:00:00.000Z"
As credenciais TAXII merecem tratamento equivalente às demais chaves de API. Cada fonte deve ter usuário próprio, com escopo somente leitura e rotação periódica, porque chaves compartilhadas entre fontes impedem rastrear o consumo por parceiro e dificultam a revogação pontual quando um acesso é desativado. Registre a rotação no calendário de segurança e teste o consumo logo após cada troca, para confirmar que o checkpoint incremental segue avançando.
5. Diferenças entre STIX 2.0 e STIX 2.1
A versão 2.1 é o alvo do Framework CTH, e saber o que mudou evita equívocos de migração. Plataformas antigas ainda emitem 2.0, e conversores robustos tratam a transição. A tabela resume as mudanças com impacto operacional.
| Aspecto | STIX 2.0 | STIX 2.1 |
|---|---|---|
| Observáveis | SCO sem identificador próprio, presos a observed-data | SCO com ID próprio, relacionáveis e reutilizáveis |
| Novos objetos | Conjunto básico | malware-analysis, note, opinion, grouping, language-content |
| Objeto incident | Presente | Removido da especificação |
| Sighting | Restrito | Ampliado, com contagem e registro de última vista |
| Marcações | Marcação de objeto básica | Granular markings aprimoradas por trecho de conteúdo |
6. Exemplo de Objeto STIX Simplificado
O bundle abaixo traz um indicator mínimo, com padrão de domínio, validade, rótulos e marcação TLP:AMBER referenciada por marking-definition. Esse é o nível de informação que um feed maduro entrega por objeto, e a ausência de qualquer um desses campos na ingestão deve gerar alerta de qualidade.
{
"type": "bundle",
"id": "bundle--7b6f5a1e-0d2c-4f8a-9c1e-6a2b4d8e0f11",
"objects": [
{
"type": "indicator",
"spec_version": "2.1",
"id": "indicator--c3d1a2f4-5b6e-4c7d-8a9b-0f1e2d3c4b5a",
"created": "2025-01-12T10:00:00.000Z",
"modified": "2025-01-12T10:00:00.000Z",
"created_by_ref": "identity--f4311d2f-7a1c-4e1f-9c2d-0b1a2c3d4e5f",
"name": "Dominio de phishing contra banco parceiro",
"pattern": "[domain-name:value = 'portal-cobranca-falsa.example']",
"pattern_type": "stix",
"valid_from": "2025-01-12T10:00:00.000Z",
"valid_until": "2025-02-12T10:00:00.000Z",
"labels": ["phishing", "malicious-activity"],
"object_marking_refs": ["marking-definition--55d920e0-6eb1-4f76-a51b-1d1b3f8a4317"]
}
]
}
7. Limitações Práticas e Compatibilidade
O padrão é bom apenas quanto à adoção real das fontes. Muitos feeds públicos entregam apenas listas de IOC em CSV, sem contexto, sem validade e sem marcação, e a conversão técnica para STIX não cria o contexto que nunca existiu. Nesses casos, o conector deve registrar a fonte como origem, aplicar marcação padrão conservadora e marcar o material como candidato a enriquecimento, em vez de fingir qualidade inexistente.
A compatibilidade entre plataformas também exige atenção contínua. Conversões do modelo de eventos do MISP para STIX nem sempre preservam todos os contextos, e versões legadas, como feeds que ainda publicam 2.0, demandam mapeamento explícito. Testes de ida e volta, exportando e importando amostras entre as plataformas da organização, fazem parte da validação trimestral do pipeline de inteligência.
8. Integração no Pipeline da Biblioteca
Na arquitetura da seção PLT, o STIX 2.1 é o formato canônico de troca e o TAXII 2.1 é o transporte. O MISP do PLT.1 exporta eventos e atributos em STIX para o OpenCTI do PLT.2, que mantém entidades nativas no mesmo padrão e publica coleções TAXII para consumidores internos e parceiros. As fontes do PLT.4 são priorizadas quando suportam STIX/TAXII, e a marcação do PLT.5 viaja junto com os objetos como marking-definition.
| Etapa do pipeline | Papel do STIX/TAXII | Controle relacionado |
|---|---|---|
| Ingestão de fontes | Consumo incremental por TAXII com validação de esquema | PLT.4 |
| Armazenamento tático | Exportação STIX dos eventos e atributos | PLT.1 |
| Conhecimento analítico | Entidades e relacionamentos nativos em STIX 2.1 | PLT.2 |
| Compartilhamento | Coleções TAXII por nível de TLP para parceiros | PLT.5 |
9. Implementação Prática e Salvaguardas por Nível
O Framework CTH organiza as salvaguardas do controle em três níveis cumulativos. A implantação deve registrar evidência de cada marco, incluindo amostras de objetos validados e logs de consumo. A tabela resume os objetivos e entregáveis.
| Nível | Salvaguarda | Entregável verificável |
|---|---|---|
| Básico | PLT.3.1: exportar e importar STIX 2.1 em MISP e OpenCTI, com mapeamento de taxonomias para markings | Amostra de ida e volta validada |
| Básico | PLT.3.2: duas fontes TAXII 2.1 ativas, com validação periódica de conexão e qualidade | Checkpoints e métricas de consumo |
| Intermediário | PLT.3.3: validação automática de esquema, marcações obrigatórias, validade e consistência de relacionamentos | Regras de rejeição aplicadas em ingestão |
| Intermediário | PLT.3.4: conectores customizados para fontes proprietárias, com conversão para STIX 2.1 documentada | Código e mapeamento de campos versionados |
| Avançado | PLT.3.5: servidor TAXII próprio por TLP, com monitoramento de consumo por parceiro | Logs de acesso por coleção e consumidor |
10. Erros Comuns e Pontos de Atenção
Os erros abaixo comprometem a interoperabilidade que o controle existe para garantir. Cada item traz o efeito observável e a correção recomendada.
- Tratar CSV convertido a STIX como inteligência com contexto; efeito: grafo com entidades vazias; correção: rotular como sem contexto e priorizar enriquecimento.
- Aceitar objetos sem marcação TLP por simplicidade; efeito: risco de divulgação indevida; correção: rejeitar ou aplicar marking padrão conservador na ingestão.
- Consumir coleções inteiras sem added_after; efeito: reprocessamento e sobrecarga; correção: checkpoints incrementais persistidos por fonte.
- Manter 2.0 e 2.1 misturados sem política; efeito: perda de campos e bugs silenciosos; correção: normalizar para 2.1 no primeiro ponto de entrada.
- Patterns complexos demais para conversão no SIEM; efeito: indicadores que nunca acionam; correção: padrões simples e tabela de conversão testada.
- Servidor TAXII aberto sem controle de coleção; efeito: exposição de conteúdo restrito; correção: autenticação por parceiro e coleções segregadas por TLP.
11. Integração com Outros Controles do Framework CTH
O PLT.3 é a linguagem comum que permite aos demais controles conversar sem perda de informação. DAT define os atributos que os objetos SCO carregam, AUT consome indicators via TAXII para alimentar detecção contínua, e MET mede a qualidade das trocas por volume validado, taxa de rejeição e latência entre publicação e consumo. Na comunidade, a participação em ISACs do PLT.5 depende diretamente de este controle estar operando, porque a troca mútua em STIX/TAXII é a moeda aceita por parceiros maduros.
No plano de maturidade, o marco Básico exige exportação e importação STIX 2.1 em produção e duas fontes TAXII ativas; o Intermediário exige validação automática de objetos e conectores de conversão documentados; o Avançado exige servidor TAXII próprio com coleções segregadas por TLP e monitoramento de consumo. A métrica de fechamento é a proporção de inteligência circulando em formato padronizado, que deve tender a cem por cento das trocas automatizadas.