La mayoría de administradores de sistemas tienen una regla de oro y esta es, si funciona… no lo toques, no es lo más recomendado, pero es bastante extendida y existen muchas razones para que sea tan popular, una de las más comunes es la rotación en el mundo de IT, donde hay poco personal bien formado y los buenos profesionales son arrebatados de una empresa a otra a punta de cartera, esto genera una especie de teléfono roto donde una persona recibe el trabajo de otra, la mayoría de las veces sin mayores indicaciones y con la premisa de que funcione.
Conozco pocos profesionales que se atrevan a bloquear en su red conexiones salientes a puertos como el 80 o el 443, protocolos como el DNS o el ICMP y por eso es común que nos encontremos con escenarios idóneos para probar técnicas de bypass como la que presentaremos el día de hoy (si les llama la atención este contenido, podríamos generar otros bypass camuflando tráfico por el protocolo DNS u otros), que puede ser usada para saltarnos controles como el de portales cautivos, filtros de navegación o incluso sistemas de monitoreo.
Imagen 1: Topología de estudio.
Como se observa en la Imagen 1, la topología por utilizar consiste en:
KL Interno: Host virtualizado con Kali Linux (versión 2018.1)
KL Externo: Host virtualizado con Kali Linux (versión 2018.1)
RA: Router Cisco (IOS Versión 15.2)
RB: Router Cisco (IOS Versión 15.2)
SWA: Sin configuraciones.
SWB: Sin configuraciones.
En los hosts “KL Interno” y “KL Externo”, se descargó (imagen 2) e instaló “Hans – IP over ICMP”. A continuación, se puede observar el proceso realizado en el host “KL Interno”.
Descarga desde https://sourceforge.net/projects/hanstunnel/
Imagen 2: Descarga de Hans desde sourceforge.
Descompresión de los archivos (imagen 3).
Compilación de archivos (imagen 4).
Configuraciones Routers
Se realiza la configuración de RA e ISP (imagen 5).
ICMP (Internet Control Message Protocol)
Es utilizado para realizar notificaciones y diagnostico entre otras funciones en redes IPv4, definido en la RFC 792. El formato de los mensajes ICMP se puede observar en la imagen 6:
Los valores asignados para los campos “Tipo” y “Código”, son responsabilidad de la IANA (https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml).
Ejemplo mensaje ICMP enviado desde KL Interno a RA:
En este ejemplo (imagen 7) se enviaron 5 mensajes de prueba (echo request) y se recibieron 5 respuestas (echo reply).
Se realizó la captura de estos mensajes en el segmento ubicado entre RA y KL Interno como se observa en la Imagen 8.
En la Imagen 9 se puede apreciar los 5 mensajes enviados, con sus correspondientes respuestas.
Al analizar el primer mensaje enviado, se puede observar que este corresponde a un mensaje del tipo 8 (Echo Request) – Código 0. Además, se puede observar que existe un campo de relleno donde se le agrega carga al mensaje ICMP:
Más información: https://www.dragonjar.org/creando-un-tunel-ipv4-sobre-icmp-para-bypassear-controles.xhtml
Saludos.