NetCatTest

Malware & Ameaças

QUANTUMINSERT: como GCHQ e NSA exploravam uma corrida TCP

Uma análise de QUANTUMINSERT por camadas: resposta concorrente, números de sequência, sobreposição de bytes e um detector didático sem envio de tráfego.

Por Daniel Felipe 7 min leitura

QUANTUMINSERT transforma uma corrida de rede em uma decisão de confiança: qual resposta o cliente aceita como se tivesse vindo do servidor? O tema é interessante porque a técnica não começa com acesso à senha da vítima nem com a substituição completa de um roteador. Ela explora a diferença entre observar uma comunicação e conseguir inserir dados nela antes da resposta legítima.

Esta análise trata de uma capacidade histórica discutida no acervo Snowden e de uma reprodução independente. A declaração técnica de Eric King ao tribunal britânico relaciona QUANTUM ao uso por NSA e GCHQ. Isso não atribui a ferramenta ao MI6. O SIS participa hoje do National Cyber Force, mas parceria institucional não transfere a autoria de cada ferramenta entre agências.

O que está documentado e o que é reconstrução

A pesquisa da Fox-IT, publicada em 2015, descreve um monitor que observa requests HTTP e um emissor que tenta entregar uma resposta falsa antes do servidor. A equipe publicou capturas e código de reprodução e detecção. Esse material é uma implementação de pesquisadores, não o código-fonte original da ferramenta de inteligência.

A distinção importa: um documento pode descrever intenção, uma captura pode demonstrar comportamento e um experimento pode provar viabilidade em um laboratório. Nenhum desses objetos, isoladamente, comprova que uma agência operou uma conexão observada em 2026. As seções de cálculo e o exemplo Python abaixo são modelos didáticos originais, usados para explicar propriedades do protocolo.

Man-on-the-side: o atacante acrescenta uma resposta

Em um modelo man-on-the-side, a resposta legítima pode continuar chegando. O atacante observa dados suficientes da sessão e injeta uma resposta concorrente. Isso difere de um intermediário que controla o caminho inteiro e substitui ou descarta o tráfego original. A existência de duas versões conflitantes do mesmo intervalo de bytes é uma pista dessa diferença.

Cliente envia uma request HTTP
        ↓
Monitor observa a sessão
        ↓
Resposta concorrente ──┐
                      ├── cliente recebe duas versões
Resposta legítima ─────┘
        ↓
Reconstrução do fluxo e interpretação HTTP

Os limites estão em camadas diferentes. IP identifica origem e destino; portas selecionam sockets; TCP organiza o fluxo; HTTP interpreta status, headers e corpo. Se a aplicação aceita texto HTTP sobre um canal sem autenticação criptográfica, a aparência de um endereço de origem não prova quem produziu os dados.

Números de sequência representam bytes, não pacotes

Considere uma sessão fictícia em que o cliente espera bytes a partir da posição 5.000. Um segmento carrega 20 bytes e cobre o intervalo de 5.000 a 5.019. Outro pode começar em 5.010 e cobrir somente parte desse intervalo. Não basta comparar números iniciais iguais: sobreposições parciais também precisam ser analisadas.

A especificação TCP atual é a referência para sequência, confirmação e processamento do fluxo. Em uma análise real, inclua estabelecimento da sessão, direção, janelas, retransmissões e wrap dos números de sequência. Um relatório que trata número de pacote do Wireshark como sequência TCP compara objetos diferentes.

A pergunta técnica é: dois segmentos propõem bytes diferentes para a mesma posição do fluxo? Uma retransmissão pode repetir bytes legítimos ou segmentá-los de outro modo. Logo, diferenças de tamanho não equivalem automaticamente a diferenças de conteúdo. O detector deve comparar a região comum e preservar a evidência original.

Detector local de sobreposição, sem enviar tráfego

O código abaixo trabalha em memória com duas mensagens sintéticas. Não abre sockets e não implementa injeção. A posição foi simplificada para um intervalo curto que não atravessa o wrap de 32 bits; também não representa SYN ou FIN. Ele demonstra apenas a comparação dos bytes na interseção de dois segmentos.

def comparar(primeiro, segundo):
    seq_a, dados_a = primeiro
    seq_b, dados_b = segundo
    inicio = max(seq_a, seq_b)
    fim = min(seq_a + len(dados_a), seq_b + len(dados_b))
    if inicio >= fim:
        return 'SEM_SOBREPOSICAO'
    parte_a = dados_a[inicio - seq_a:fim - seq_a]
    parte_b = dados_b[inicio - seq_b:fim - seq_b]
    return 'CONFLITO' if parte_a != parte_b else 'REPETICAO_COMPATIVEL'

legitimo = (5000, b'HTTP/1.1 200 OK\r\n')
concorrente = (5000, b'HTTP/1.1 302 Found\r\n')
assert comparar(legitimo, concorrente) == 'CONFLITO'
assert comparar(legitimo, legitimo) == 'REPETICAO_COMPATIVEL'
assert comparar((100, b'abc'), (101, b'bc')) == 'REPETICAO_COMPATIVEL'
assert comparar((100, b'abc'), (101, b'XX')) == 'CONFLITO'
print('quatro controles locais aprovados')

max encontra o início comum; min encontra o fim comum. Os slices transformam posições do fluxo em offsets dentro de cada payload. A comparação final decide se a retransmissão é compatível ou se existe conflito. É uma explicação mais precisa do que alertar sobre qualquer segmento duplicado.

Para evoluir o detector, use um parser de captura existente, limite memória por conexão e trate gaps e encerramento da sessão. Não elimine os pacotes conflitantes ao normalizar a captura. A reconstrução escolhida pelo IDS pode divergir da escolhida pelo cliente; justamente essa diferença precisa ficar disponível ao analista.

HTTP, TLS e HSTS protegem fronteiras diferentes

Uma resposta HTTP concorrente pode tentar mudar a navegação do cliente. Isso não demonstra, por si, exploração do navegador. Redirecionamento, chegada a um conteúdo e execução de código são eventos diferentes. A cadeia de evidências deve mostrar qual dessas fronteiras foi efetivamente atravessada.

Com TLS autenticado, bytes inseridos no transporte não se tornam automaticamente mensagens de aplicação válidas: precisam satisfazer as verificações do canal. A RFC 8446 descreve o modelo de TLS 1.3. Erros de validação, aceitação de certificados indevidos ou comprometimento do endpoint mudam o cenário, mas não devem ser presumidos para explicar um caso histórico de HTTP.

HSTS, definido na RFC 6797, ajuda o navegador a exigir HTTPS segundo a política conhecida para o domínio. Verifique aquisição da política e cobertura dos domínios realmente usados. Um redirect de HTTP para HTTPS protege uma etapa posterior; a primeira request HTTP ainda precisa ser considerada no modelo de ameaça.

Como interpretar os sinais sem atribuição apressada

SinalHipótese inicialValidação necessária
Mesma região TCP com bytes diferentesConflito de reconstrução ou resposta concorrenteDireção, posição da captura e comportamento do cliente
TTL diferenteCaminho ou origem diferenteBaseline, rota e balanceamento
Redirect inesperadoAlteração da navegaçãoRequest original, cadeia de redirects e destino
Somente resposta falsa no ponto observadoVisibilidade incompleta ou controle do caminhoOutra posição de captura e perdas

TTL é uma característica de contexto. Roteamento e infraestrutura legítima também mudam essa observação. Um sistema de detecção deve conservar as explicações alternativas em vez de transformar uma anomalia em assinatura de agência. Para estudar detectores históricos, consulte o material de detecção publicado pela Fox-IT.

Um laboratório profissional precisa de resultado esperado

Comece com fixtures: retransmissão idêntica, segmentação diferente com bytes iguais, conflito total e conflito parcial. O exemplo acima cobre essas classes básicas. Em seguida, use capturas autorizadas com hashes, horários e um cliente conhecido. Defina qual interpretação o cliente teve; a simples existência de um alerta não comprova que o conteúdo concorrente foi aceito.

Meça também falsos negativos provocados por captura truncada, offload e perda. Um sensor que recebe só uma versão da resposta não pode detectar a disputa a partir daquele material. Registre a posição e as limitações do sensor. Isso transforma a ausência de alerta em uma observação delimitada, em vez de uma garantia sem fundamento.

Por que o caso continua útil em 2026

O valor do caso é ensinar a seguir confiança entre transporte e aplicação. APIs internas, consoles administrativos e integrações antigas podem manter caminhos sem autenticação adequada mesmo quando o site público usa HTTPS. A revisão deve seguir a conexão inteira, inclusive redirects e políticas do cliente.

QUANTUMINSERT é uma aula sobre corrida, reconstrução e autenticação do canal. Sua atribuição histórica precisa de documentos; sua análise técnica precisa de bytes; a avaliação de impacto precisa observar o cliente. Essa separação permite estudar uma ferramenta de inteligência sem inventar capacidades modernas ou resultados que a captura não demonstrou.

Escrito por

Daniel Felipe é criador do NetCatTest e produz conteúdos sobre cibersegurança, privacidade digital, OSINT, laboratórios autorizados e ferramentas para estudo técnico responsável.

Compartilhar

Enviar este artigo