Samy Kamkar (um famoso pesquisador de segurança conhecido por criar diversos dispositivos de ataque sofisticados, como um keylogger em um carregador de celular USB) apresentou uma nova técnica de ataque chamada "NAT slipstreaming".
O ataque permite, ao abrir uma página web em um navegador, o estabelecimento de uma conexão do servidor do atacante com qualquer porta UDP ou TCP no sistema do usuário, localizada atrás do tradutor de endereços. O kit de ferramentas do ataque está publicado no GitHub.
O método baseia-se em enganar o mecanismo de rastreamento de conexão ALG (Application Level Gateway) em tradutores de endereços ou firewalls, que é usado para organizar o encaminhamento NAT de protocolos que usam várias portas de rede (uma para dados e outra para controle), como SIP, H323, IRC DCC e FTP.
O ataque é aplicável a usuários que se conectam à rede usando endereços internos na faixa da intranet (192.168.xx, 10.xxx) e permite que quaisquer dados sejam enviados para qualquer porta (sem cabeçalhos HTTP).
Para realizar um ataque, basta que a vítima execute o código JavaScript preparado pelo atacante , por exemplo, abrindo uma página no site do atacante ou visualizando um anúncio malicioso em um site legítimo.
Na primeira etapa, o atacante obtém informações sobre o endereço interno do usuário, que pode ser determinado pelo WebRTC ou, caso o WebRTC esteja desativado, por meio de ataques de força bruta com tempo de resposta medido ao solicitar uma imagem oculta (para hosts existentes, uma tentativa de solicitar uma imagem é mais rápida do que para hosts inexistentes devido ao tempo de espera antes de retornar uma resposta TCP RST).
Na segunda etapa, o código JavaScript executado no navegador da vítima gera uma grande solicitação HTTP POST (que não cabe em um único pacote) para o servidor do atacante, usando um número de porta de rede não padrão para iniciar o ajuste dos parâmetros de fragmentação TCP e do tamanho do MTU na pilha TCP da vítima.
Em resposta, o servidor do atacante retorna um pacote TCP com a opção MSS (Tamanho Máximo do Segmento), que determina o tamanho máximo do pacote recebido. No caso do UDP, a manipulação é semelhante, mas depende do envio de uma grande solicitação TURN do WebRTC para desencadear a fragmentação em nível de IP.
«O NAT Slipstreaming explora o navegador do usuário em conjunto com o mecanismo de rastreamento de conexão Application Level Gateway (ALG) integrado ao NAT, roteadores e firewalls, ao encadear a extração de IP interno por meio de um ataque de tempo ou WebRTC, descoberta de fragmentação de IP remoto automatizado e MTU, TCP tamanho do pacote massaging, uso indevido da autenticação TURN, controle preciso dos limites do pacote e confusão de protocolo de abuso de navegador ", disse Kamkar em uma análise.
A ideia principal é que, conhecendo os parâmetros de fragmentação, você pode enviar uma grande requisição HTTP, cuja cauda será incluída no segundo pacote . Ao mesmo tempo, a cauda recebida do segundo pacote é selecionada para excluir os cabeçalhos HTTP e é truncada para os dados que correspondem inteiramente a outro protocolo para o qual a travessia de NAT é suportada.
No terceiro estágio, usando a manipulação acima, o código JavaScript gera e envia uma solicitação HTTP especialmente selecionada (ou TURN para UDP) para a porta TCP 5060 do servidor do invasor, que, após fragmentação, será dividida em dois pacotes: a pacote com cabeçalhos HTTP e parte dos dados e um pacote SIP válido com o IP interno da vítima.
O sistema de rastreamento de conexões na pilha de rede considerará este pacote como o início de uma sessão SIP e permitirá o encaminhamento de pacotes para qualquer porta selecionada pelo atacante, presumindo que essa porta seja usada para transmissão de dados.
O ataque pode ser realizado independentemente do navegador utilizado . Para resolver o problema, os desenvolvedores da Mozilla sugeriram bloquear o envio de solicitações HTTP para as portas de rede 5060 e 5061, associadas ao protocolo SIP.
Os desenvolvedores dos motores Chromium, Blink e WebKit também pretendem implementar uma medida de proteção semelhante.
Fonte: https://samy.pl