🔁ICMP Tunneling con SOCKS
El túnel ICMP encapsula su tráfico dentro de ICMP packets
archivos que contienen echo requests
y 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 server
host 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
Una vez que el repositorio de ptunnel-ng se clona en nuestro host de ataque, podemos ejecutar el autogen.sh
script ubicado en la raíz del directorio de ptunnel-ng.
Construyendo Ptunnel-ng con 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.
Si queremos transferir todo el repositorio y los archivos que contiene, necesitaremos usar la opción -r
con SCP.
Transferencia de Ptunnel-ng al host Pivot
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