Page cover

🔁ICMP Tunneling con SOCKS

El túnel ICMP encapsula su tráfico dentro de ICMP packetsarchivos que contienen echo requestsy responses. El túnel ICMP solo funcionaría cuando se permitan respuestas de ping dentro de una red con firewall. Cuando a un host dentro de una red con firewall se le permite hacer ping a un servidor externo, puede encapsular su tráfico dentro de la solicitud de eco de ping y enviarlo a un servidor externo. El servidor externo puede validar este tráfico y enviar una respuesta adecuada, lo cual es extremadamente útil para la filtración de datos y la creación de túneles dinámicos hacia un servidor externo.

Usaremos la herramienta ptunnel-ng para crear un túnel entre nuestro servidor Ubuntu y nuestro host de ataque. Una vez que se crea un túnel, podremos enviar nuestro tráfico a través del archivo ptunnel-ng client. Podemos iniciar el ptunnel-ng serverhost dinámico de destino. Comencemos configurando ptunnel-ng.


Configuración y uso de ptunnel-ng

Si ptunnel-ng no está en nuestro host de ataque, podemos clonar el proyecto usando git.

Clonación de Ptunnel-ng

Túnel ICMP con SOCKS

afsh4ck@kali$ git clone https://github.com/utoni/ptunnel-ng.git

Una vez que el repositorio de ptunnel-ng se clona en nuestro host de ataque, podemos ejecutar el autogen.shscript ubicado en la raíz del directorio de ptunnel-ng.

Construyendo Ptunnel-ng con Autogen.sh

afsh4ck@kali$ sudo ./autogen.sh 

Después de ejecutar autogen.sh, ptunnel-ng se puede utilizar desde el lado del cliente y del servidor. Ahora necesitaremos transferir el repositorio desde nuestro host de ataque al host de destino. Como en apartados anteriores, podemos utilizar SCP para transferir los archivos.

Transferencia de Ptunnel-ng al host Pivot

afsh4ck@kali$ scp -r ptunnel-ng ubuntu@10.129.202.64:~/

Con ptunnel-ng en el host de destino, podemos iniciar el lado del servidor del túnel ICMP usando el comando directamente debajo.

Iniciar el servidor ptunnel-ng en el host de destino

La siguiente dirección IP -r debe ser la IP en la que queremos que ptunnel-ng acepte conexiones. En este caso, cualquier IP a la que podamos acceder desde nuestro host de ataque sería la que usaríamos. Nos beneficiaríamos si usáramos este mismo pensamiento y consideración durante un compromiso real.

De vuelta en el host de ataque, podemos intentar conectarnos al servidor ptunnel-ng ( -p <ipAddressofTarget>), pero asegurarnos de que esto suceda a través del puerto local 2222 ( -l2222). Conectarnos a través del puerto local 2222 nos permite enviar tráfico a través del túnel ICMP.

Conexión al servidor ptunnel-ng desde el host de ataque

Con el túnel ICMP ptunnel-ng establecido exitosamente, podemos intentar conectarnos al objetivo usando SSH a través del puerto local 2222 ( -p2222).

Túnel de conexión SSH a través de un túnel ICMP

Si se configura correctamente, podremos ingresar credenciales y tener una sesión SSH a través del túnel ICMP.

En el lado del cliente y del servidor de la conexión, notaremos que ptunnel-ng nos brinda registros de sesión y estadísticas de tráfico asociadas con el tráfico que pasa a través del túnel ICMP. Esta es una forma en que podemos confirmar que nuestro tráfico pasa del cliente al servidor utilizando ICMP.

Visualización de estadísticas de tráfico de túneles

También podemos usar este túnel y SSH para realizar un reenvío de puertos dinámico que nos permita usar cadenas proxy de varias maneras.

Habilitar Port Forwarding a través de SSH

Podríamos usar Proxychains con Nmap para escanear objetivos en la red interna (172.16.5.x). Según nuestros descubrimientos, podemos intentar conectarnos con el objetivo.

Proxychains a través del túnel ICMP


Consideraciones sobre el análisis del tráfico de red

Es importante que confirmemos que las herramientas que estamos utilizando funcionan según lo anunciado y que las hemos configurado y estamos operando correctamente. En el caso de tunelizar el tráfico a través de diferentes protocolos que se enseñan en esta sección con tunelización ICMP, podemos beneficiarnos de analizar el tráfico que generamos con un analizador de paquetes como Wireshark. Mire de cerca el breve clip a continuación.

En la primera parte de este clip, se establece una conexión a través de SSH sin utilizar un túnel ICMP. Podemos notar que se captura tráfico TCP y SSHv2

El comando utilizado en el clip: ssh ubuntu@10.129.202.64

En la segunda parte de este clip, se establece una conexión a través de SSH mediante un túnel ICMP. Observe el tipo de tráfico que se captura cuando se realiza esto.

Comando utilizado en el clip: ssh -p2222 -lubuntu 127.0.0.1


Caso práctico

Utilizando los conceptos aprendidos hasta ahora, conéctate al objetivo y establece un túnel ICMP. Vaya al DC (172.16.5.19, victor:pass@123) y envía el contenido de C:\Users\victor\Downloads\flag.txt como respuesta.

Paso 1: Envio de ptunnel-ng al host

Paso 2: Conexión al host de pivoting por SSH

Ver interfaces de red en el host

Vemos que hay una red interna: 172.16.5.129

Paso 3: Verificar la conectividad entre el host de pivoting y el DC

En el host de pivoting (10.129.147.39), verifica si puedes acceder al puerto 3389 del DC (172.16.5.19) utilizando telnet o nc:

Si no hay respuesta, puede haber un problema de firewall o políticas de red bloqueando el acceso.

Paso 4: Abrir el túnel desde el host de Pivoting hacia el DC

Nos aseguramos de estar utilizando la dirección correcta del DC. La configuración debe redirigir el tráfico hacia el DC (172.16.5.19).

Paso 5: Conexión desde el host de atacante

Paso 6: Conexión al DC por RDP

En una nueva terminal, ejecutamos xfreerdp a través del tunel ICMP: localhost:13389

Bummm! Obtenemos una conexión con el DC y podemos leer la flag sin problema 🏆

Última actualización

¿Te fue útil?