Pular para o conteúdo
Todos os conceitos

Túnel por ICMP

O ping tem um corpo livre, e dá para esconder dados nele para sair sem passar pelo caminho normal.

O ICMP é o protocolo do ping. Um ping manda uma mensagem "echo request" (tipo 8) e espera um "echo reply" (tipo 0) de volta, só para saber se a outra máquina responde. Cada mensagem tem um identifier (que agrupa uma conversa) e um sequence number (que numera os pacotes daquela conversa), e depois um corpo. Num ping normal, o corpo é só um enchimento, um padrão de bytes que se repete, sem significado.

A sacada do atacante: esse corpo é livre. Um programa pode colocar ali pedaços de um arquivo, de uma senha ou de qualquer coisa, e mandar para uma máquina de fora. Isso é um túnel por ICMP: os dados saem escondidos dentro de pings, por um caminho que muitos firewalls deixam aberto porque "é só ping".

Como ler numa captura:

  1. Filtre icmp. Separe as conversas pelo identifier: a conversa estranha costuma ter o corpo diferente de um ping normal (por exemplo, só caracteres de 0 a 9 e a a f, que é hexadecimal).
  2. Use os echo request (tipo 8) que saem da máquina suspeita. Ordene pelo sequence number, porque os pacotes podem chegar fora de ordem, e use cada número uma vez só (um pode ter sido reenviado).
  3. Junte os corpos e decodifique. Se for hexadecimal, From Hex; o resultado ainda pode estar misturado com XOR ou Base64, como em qualquer dado escondido.

É o mesmo raciocínio da exfiltração por DNS: um protocolo de serviço, que ninguém olha com atenção, virando porta de saída. Quem defende procura o padrão: muitos pacotes ICMP para um só endereço de fora, com corpo que muda a cada pacote em vez de repetir.

Aparece nestes desafios