Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - SPECTRE (Detecção em Memória Volátil)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

SPECTRE (Detecção em Memória Volátil)

Nota da subpasta 04 - Ferramentas de Análise de Memória e DFIR, no Capítulo 24 (Ferramentas e Plataformas Atualizadas).
Trata da detecção de ameaças em memória volátil em tempo real: coleta contínua, motor de análise e alerta, como complemento runtime da análise forense post-mortem.
Dialoga com a nota de Volatility 3 da mesma subpasta, que analisa o dump após o fato, e com as notas de Elastic, Wazuh e Splunk da pasta 02, que recebem os alertas produzidos.

1. Contexto e Posicionamento na Biblioteca

O EDR tradicional observa o endpoint de fora da memória: eventos de processo, arquivo, rede e registro, coletados em modo usuário ou por callbacks do kernel. Essa cobertura é ampla, mas cega para o que acontece apenas dentro da memória de processos, e é exatamente nesse espaço que vivem as técnicas mais valiosas do adversário sofisticado: injeção de código, hollowing, carregamento refletivo e credenciais coletadas da memória do LSASS. A detecção em memória volátil em tempo real, representada aqui pelo SPECTRE, fecha esse espaço cego olhando diretamente para dentro da RAM, de forma contínua, enquanto a ameaça ainda está viva.

Antes de avançar, um alerta de vocabulário obrigatório: o nome SPECTRE coincide com a família de vulnerabilidades de CPU descoberta em 2018, e não há relação entre os dois assuntos. Nesta biblioteca, Spectre aparece nas discussões de hardware, e o SPECTRE desta nota é a abordagem de detecção em memória, tema que dialoga diretamente com a nota de Volatility 3 da mesma subpasta: uma olha para dentro da memória durante a execução, a outra analisa a memória preservada após o fato.

2. Detecção Runtime versus Análise Forense Post-Mortem

A diferença fundamental entre as duas disciplinas é o tempo, e dela derivam todas as outras. A análise post-mortem reconstrói o passado a partir de um instante capturado, com profundidade máxima e zero chance de perder o que ficou gravado no dump, mas com a ameaça possivelmente já executada. A detecção runtime observa o presente, com visão fragmentada por amostragem e janelas entre varreduras, mas com a chance de interromper o adversário no meio da cadeia. As duas não competem: o alerta runtime é o que dispara a captura forense que confirma e documenta.

Dimensão Detecção runtime (SPECTRE) Análise forense post-mortem (Volatility 3)
Objetivo Interromper a ameaça durante a execução Reconstruir e documentar o que ocorreu
Momento Contínuo, durante a operação Pós-fato, sobre instante capturado
Latência de resposta Segundos a minutos Horas a dias
Cobertura temporal Fragmentada, sujeita a janelas Completa para o instante da captura
Impacto no host Overhead contínuo de coleta e análise Pontual, concentrado na aquisição
Papel no caso Gera o alerta e dispara a contenção Confirma, amplia e produz o laudo

A leitura operacional da tabela é de arquitetura de defesa em camadas. O runtime encurta o tempo de permanência do adversário, que é a métrica que mais importa em resposta a incidentes, e o post-mortem garante que o que foi interrompido seja entendido, mapeado em ATT&CK e convertido em detecção nova. Um SOC que tem apenas o post-mortem descobre intrusões no relatório trimestral; um SOC que tem apenas o runtime contém sem entender e repete o mesmo incidente na semana seguinte.

A tabela também explica por que as duas notas da subpasta seguem a mesma superfície em direções opostas. O SPECTRE trabalha contra o tempo de permanência, e o Volatility 3 trabalha contra a dúvida interpretativa, e um programa de DFIR maduro precisa dos dois laços: o laço curto que contém e o laço longo que documenta, testa e transfere a detecção para a frota inteira.

3. Arquitetura: Coleta Contínua, Motor de Análise e Alerta

A arquitetura típica se organiza em três planos. O plano de coleta contínua vive no host, como agente em modo kernel ou como sensor assistido por virtualização, e produz duas fontes: amostras periódicas das regiões de memória dos processos e um fluxo de eventos de memória, como mudanças de proteção de páginas e carregamentos de módulos não assinados. O plano de análise processa essas fontes em três níveis complementares: assinaturas YARA sobre o conteúdo das regiões, heurísticas estruturais como páginas executáveis sem arquivo de suporte e anomalias na ancestralidade de processos, e pontuação de risco que combina os níveis anteriores. O plano de alerta conecta a análise ao SOC, enriquecendo o alerta com contexto do processo e disparando ações automáticas pré-aprovadas, como a captura imediata de um dump do processo suspeito.

1. Sensor no host amostra regioes de memoria dos processos em cadencia definida
2. Sensor emite eventos de memoria: mprotect executavel, modulo nao assinado, unlinked page
3. Motor de analise aplica assinaturas YARA sobre o conteudo das regioes amostradas
4. Motor aplica heuristicas: RWX sem arquivo de suporte, ancestralidade anomala, entropia alta
5. Motor combina sinais em pontuacao de risco por processo
6. Pontuacao acima do limiar gera alerta enriquecido com processo, regiao e regra
7. Acao automatica pre-aprovada: snapshot de memoria do processo enfileirado para analise
8. Alerta segue ao SIEM e ao caso de IR com a evidencia anexada

O detalhe que separa uma implementação séria de um protótipo está no plano de alerta: a ação automática de capturar a memória do processo no momento do alerta. Sem essa ação, o alerta chega ao analista minutos depois, a região suspeita já foi desalocada, e o caso fica sem evidência técnica além do próprio alerta. Com essa ação, cada alerta vem acompanhado de um dump do processo que o Volatility 3, conforme a nota da mesma subpasta, consome diretamente para confirmar e expandir.

O plano de coleta admite duas arquiteturas de sensor, e a escolha define cobertura e risco ao mesmo tempo. O agente em modo kernel coleta com alta fidelidade e integração natural com o EDR, ao custo de acoplamento com cada versão do sistema operacional; a coleta assistida por virtualização observa a memória de fora da máquina virtual, ao custo de visibilidade parcial e de infraestrutura dedicada de hypervisor. Implementações sérias combinam as duas fontes, usando o evento do agente como gatilho rápido e a amostra profunda da camada de virtualização como confirmação.

4. Casos de Uso: Rootkits e Injeção de Código em Memória

O caso de uso canônico é o rootkit em modo kernel que esconde processos do sistema. Um processo removido da lista encadeada ativa do kernel é invisível para o gerenciador de tarefas, para o EDR que enumera processos e para a maioria das ferramentas de resposta, mas as suas páginas continuam residentes e executando. A varredura de memória em tempo real cruza as duas visões, o que a enumeração estrutural do kernel enxerga contra o que existe fisicamente nas páginas, e a divergência entre elas é a assinatura da ocultação, técnica associada a T1055.003 no ATT&CK.

O segundo caso é a injeção e o hollowing em processos legítimos, o padrão clássico de loader e de frameworks de C2 como o Cobalt Strike com carregamento refletivo. Um svchost.exe legítimo não possui páginas executáveis graváveis sem suporte em arquivo, e a presença de região RWX desacompanhada, somada a ancestralidade anômala, é o gatilho típico. O terceiro caso é a coleta de credenciais na memória, em que a regra de assinatura aponta ferramentas conhecidas de extração do LSASS e as heurísticas apontam acesso anômalo ao processo de autenticação, conexão direta com o uso de Mimikatz em campanhas públicas de ransomware.

O quarto caso é a caça por beacon de C2 residente, e ele conecta a detecção runtime à CTI. Configurações de beacon, chaves e padrões de alocação de frameworks conhecidos viram regras YARA no motor de conteúdo, e cada campanha relevante descrita nos relatórios de intelligence vira atualização do conjunto de regras. É nesse ponto que a detecção em memória deixa de ser genérica e passa a refletir as ameaças que importam para o negócio específico da organização.

5. Sinais de Detecção e Regras de Correlação

Para que o motor de análise produza alerta de qualidade, os sinais precisam ser declarados e combinados de forma consciente, e não empilhados. Os sinais estruturais olham para a geometria da memória do processo, como páginas executáveis graváveis sem arquivo de suporte e módulos carregados fora do caminho padrão. Os sinais de conteúdo aplicam assinaturas YARA sobre as regiões amostradas, e os sinais comportamentais olham para a ancestralidade e para o histórico do processo, como um processo de sistema que começa a abrir sockets depois de uma mudança de proteção. A pontuação de risco existe para combinar sinais fracos isolados em alerta forte quando coincidem no mesmo processo e na mesma janela de tempo.

  • Região RWX sem arquivo de suporte em processo que não empacota código por natureza.
  • Módulo executável carregado em região desalocável fora do caminho de carregamento padrão do sistema.
  • Processo removido da lista ativa do kernel, porém residente e executando nas páginas.
  • Mudança de proteção para executável em região que antes guardava dados, seguida de execução.
  • Acesso a processo sensível, como o LSASS, por processo sem histórico legítimo de depuração.
  • Ancestralidade anômala, como processo de sistema com pai de aplicativo de usuário final.

A correlação com o SIEM transforma o alerta do sensor em detecção de frota. O exemplo abaixo, ilustrativo, agrega eventos de memória por host e processo em janelas de dez minutos, e o padrão de agregação é o que importa, porque os nomes de ActionType variam por produto e versão.

DeviceEvents
| where Timestamp > ago(1d)
| where ActionType in ("MemoryProtectedAllocation", "ReflectiveLoad", "ProcessModifiedAllocatedMemory")
| summarize Eventos = count() by DeviceName, InitiatingProcessFileName, bin(Timestamp, 10m)
| where Eventos >= 3
| order by Eventos desc

O resultado da agregação alimenta duas ações distintas. O host com pontuação isolada entra como caso individual, e o padrão que repete em vários hosts vira caça por hipótese, com a memória confirmando o que a telemetria suspeita, fechando o circuito com as notas de metodologia de hunting da biblioteca.

6. Limitações, Overhead e Ajuste de Cadência

O custo da detecção runtime é estrutural, e não um detalhe de implementação. A leitura contínua da memória de processos consome CPU e banda de memória proporcionais à frequência e à profundidade da varredura, e a análise de conteúdo com assinaturas é o componente mais pesado do ciclo. Além disso, a detecção é probabilística por construção: o que acontece entre duas janelas de varredura pode passar sem ser visto, e a ameaça que permanece menos tempo residente do que a cadência de varredura tem chance real de não ser amostrada. Essas são as limitações que o post-mortem não tem, e é por isso que as disciplinas se complementam em vez de competir.

Cadência de varredura Overhead típico no host Janela de fuga da ameaça Perfil de uso
30 segundos Alto, sentido em hosts comuns Quase nula para ameaças residentes Servidores críticos e hosts de alta exposição
5 minutos Moderado, imperceptível em desktops Pequena, sujeita a ameaças rápidas Frota padrão de estações
Por evento Baixo em repouso, picos sob atividade Depende da qualidade do gatilho Gatilhos de mprotect e carregamento de módulo

Há ainda limitações de cobertura e de privacidade que o projeto deve declarar. A complexidade do kernel varia por versão e por sistema operacional, e técnicas que dependem de estruturas internas precisam de atualização a cada ciclo de patches, sob risco de falso negativo silencioso. Na privacidade, a varredura de memória lê o que os usuários têm em RAM, incluindo senhas em formulários e conteúdo pessoal, o que exige tratamento de dados compatível com a LGPD, escopo de coleção documentado e retenção mínima dos conteúdos capturados, um ponto que poucos programas de detecção formalizam antes da primeira auditoria.

O falso positivo merece tratamento de programa, e não de ajuste pontual. A linha de base por grupo de hosts, servidores com JIT, estações de desenvolvedor e desktops padrão, é o que permite calibrar o limiar de pontuação sem abrir janela de detecção, e a amostragem semanal de alertas encerrados como falso positivo produz a curva de qualidade do sensor. Sem esse ciclo, o sensor morre de credibilidade em poucos meses, e o programa perde a única fonte que enxerga dentro da memória.

7. Exemplo de Fluxo de Detecção

O cenário: um host de finanças recebe um documento com macro, e o loader decide carregar o beacon apenas em memória, sem tocar o disco além do próprio documento. O EDR não vê processo filho anômalo com linha de comando suspeita, porque o carregamento é refletivo. O fluxo abaixo descreve a detecção do SPECTRE no desenho típico.

1. Macro executa e injeta o loader no processo host legítimo
2. Evento do sensor: regiao do processo recebe protecao RWX via mprotect
3. Heuristica marca: pagina executavel gravavel sem arquivo de suporte
4. Varredura de conteudo na regiao encontra strings de configuracao de C2
5. Pontuacao de risco ultrapassa o limiar de alerta
6. Alerta enriquecido publicado no SIEM com processo, regiao e regra YARA
7. Acao pre-aprovada: dump do processo capturado e hash registrado
8. Dump processado no Volatility 3: ancestralidade, IOC de C2 e escopo confirmados
9. Contencao do host aprovada pelo IR com evidencia tecnica em anexo

O alerta produzido neste fluxo carrega os campos mínimos para o analista decidir sem voltar ao host, e o exemplo abaixo mostra a estrutura típica desse evento no desenho do SIEM.

{
  "sensor": "MEM-SENSOR-042",
  "host": "WS-FIN-118",
  "detector": "unbacked_exec_region",
  "processo": "svchost.exe (pid 4824)",
  "regiao": "0x1f8a0000 RWX sem arquivo de suporte",
  "assinatura": "beacon_probe_strings",
  "acao_automatica": "snapshot do processo capturado e enfileirado para analise",
  "severidade": "alta"
}

O alerta e o snapshot chegam ao SIEM no mesmo minuto, e é a correlação com o resto da telemetria do host que transforma um evento isolado em caso. O processo suspeito tocou algum arquivo, alguma rede e alguma identidade antes da detecção, e a consulta cruzada entre o alerta de memória e o SIEM é o que revela a cadeia completa, com o snapshot do processo servindo de evidência técnica para o laudo.

8. Erros Comuns e Pontos de Atenção

  • Confundir o SPECTRE desta nota com as vulnerabilidades de CPU Spectre e Meltdown; são assuntos completamente distintos e a confusão polui relatórios.
  • Tratar o alerta runtime como veredito final; o alerta é o início do caso, e a confirmação técnica vem da análise do snapshot no Volatility 3.
  • Fixar cadência de varredura sem medir o overhead real no percentil 95 dos hosts, sacrificando a experiência do usuário sem ganho proporcional de detecção.
  • Deixar a captura de snapshot fora da ação automática de alerta, perdendo a evidência volátil mais valiosa do caso minutos depois.
  • Ignorar o ajuste de linha de base para software com JIT e empacotamento legítimo, produzindo volume de falso positivo que mata a confiança no sensor.
  • Coletar conteúdo de memória sem tratar a dimensão de privacidade, expondo a organização a risco regulatório maior do que o risco mitigado.
  • Rodar a detecção em memória como única linha de defesa, desmontando telemetria de EDR e SIEM que sustentam o contexto do caso.
  • Esquecer que a janela entre varreduras existe e usar a ausência de alerta como prova de ausência de ameaça no host.
  • Aceitar o silêncio do sensor como evidência de host limpo em sensor recém-implantado, sem período de linha de base observado.
  • Tratar o snapshot automático do processo como coleta completa do host, quando ele não substitui o dump de memória física integral.

9. Integração com o Restante da Biblioteca

A nota de Volatility 3 da mesma subpasta é o par direto: o SPECTRE gera o alerta e captura o instante, e o Volatility expande o snapshot em laudo com técnica mapeada e IOC extraídos, que alimentam as notas de TIP da pasta 01. Os alertas pousam nas notas de Elastic, Wazuh e Splunk da pasta 02, onde o padrão do alerta vira regra de correlação com o resto da telemetria do host, e as ações pre-aprovadas do fluxo de alerta são o mesmo mecanismo de guardas que a nota de Heptagon desta subpasta formaliza como transições de resposta. O programa purple da pasta 03 valida o sensor da forma correta: emulações do Caldera e do Atomic Red Team com técnicas de injeção em memória verificam se a pontuação de risco dispara no limiar esperado.

A recomendação de desenho para o SOC é posicionar o sensor de memória como fonte de alerta de alta fidelidade e de captura automática de evidência, e não como substituto do EDR. O valor do sensor se realiza no circuito completo, alerta, snapshot, análise, contenção, detecção nova, e é esse circuito, e não a tecnologia isolada, que reduz o tempo de permanência do adversário, métrica que as notas de métricas de detecção e resposta da biblioteca tratam como o indicador central de maturidade operacional.

Uma nota de implementação fecha o desenho: a qualidade da pontuação de risco depende de linha de base por grupo de hosts, e não de um limiar único global. Servidores com empacotamento legítimo, estações de desenvolvedor e hosts de usuário padrão têm assinaturas de memória distintas, e o programa que calibra por grupo reduz o falso positivo sem abrir janela para o adversário, seguindo a mesma lógica de linha de base que as notas de UEBA e de detecção comportamental da biblioteca já defendem para o SIEM.