🔁SOCKS5 Tunneling con Chisel
Chisel es una herramienta de tunelización basada en TCP/UDP escrita en Go que utiliza HTTP para transportar datos protegidos mediante SSH. Chisel
puede crear una conexión de túnel cliente-servidor en un entorno restringido por firewall. Consideremos un escenario en el que tenemos que canalizar nuestro tráfico a un servidor web en la red 172.16.5.0
/ 23
(red interna). Tenemos el Controlador de Dominio con la dirección 172.16.5.19
. Nuestro host de ataque no puede acceder directamente a esto, ya que nuestro host de ataque y el controlador de dominio pertenecen a segmentos de red diferentes. Sin embargo, dado que hemos comprometido el servidor Ubuntu, podemos iniciar un servidor Chisel en él que escuchará en un puerto específico y reenviará nuestro tráfico a la red interna a través del túnel establecido.
Configuración y uso de Chisel
Antes de que podamos usar Chisel, debemos tenerlo en nuestro host de ataque. Si no tenemos Chisel en nuestro host de ataque, podemos clonar el repositorio del proyecto usando el comando directamente debajo:
Necesitaremos el lenguaje de programación Go
instalado en nuestro sistema para construir el binario Chisel. Con Go instalado en el sistema, podemos movernos a ese directorio y usarlo go build
para construir el binario Chisel.
Construyendo el binario Chisel
Puede resultar útil tener en cuenta el tamaño de los archivos que transferimos a los objetivos de las redes de nuestros clientes, no sólo por motivos de rendimiento sino también para considerar la detección. Dos recursos beneficiosos para complementar este concepto en particular son la publicación del blog de Oxdf " Tunneling with Chisel and SSF " y el tutorial de la caja de IppSec Reddish
. IppSec comienza su explicación de Chisel, construyendo el binario y reduciendo el tamaño del binario en la marca 24:29 de su video .
Una vez creado el binario, podemos usar SCP
para transferirlo al host dinámico de destino.
Transferencia de binarios de Chisel a Pivot Host
Luego podemos iniciar el listener de Chisel en el host.
Ejecutando el servidor Chisel en el host Pivot
El oyente Chisel escuchará las conexiones entrantes en el puerto 1234
usando SOCKS5 ( --socks5
) y las reenviará a todas las redes a las que se puede acceder desde el host pivote. En nuestro caso, el host pivot tiene una interfaz en la red 172.16.5.0/23, lo que nos permitirá llegar a hosts en esa red.
Podemos iniciar un cliente en nuestro host de ataque y conectarnos al servidor Chisel.
Conexión al servidor Chisel
Como puede ver en el resultado anterior, el cliente Chisel ha creado un túnel TCP/UDP a través de HTTP protegido mediante SSH entre el servidor Chisel y el cliente y ha comenzado a escuchar en el puerto 1080. Ahora podemos modificar nuestro archivo proxychains.conf ubicado en /etc/proxychains.conf
y agregue 1080
el puerto al final para que podamos usar cadenas proxy para pivotar usando el túnel creado entre el puerto 1080 y el túnel SSH.
Edición y confirmación de proxychains.conf
Podemos usar cualquier editor de texto que queramos para editar el archivo proxychains.conf
y luego confirmar nuestros cambios de configuración usando tail
.
Ahora, si usamos cadenas de proxy con RDP, podemos conectarnos al DC en la red interna a través del túnel que hemos creado para el host Pivot.
Pivoting hacia el DC
Pivoting inverso de Chisel
En el ejemplo anterior, utilizamos la máquina comprometida (Ubuntu) como nuestro servidor Chisel, listada en el puerto 1234. Aun así, puede haber escenarios en los que las reglas del firewall restrinjan las conexiones entrantes a nuestro objetivo comprometido. En tales casos, podemos utilizar Chisel con la opción inversa.
Cuando el servidor Chisel está --reverse
habilitado, los controles remotos pueden tener el prefijo con R
para indicar invertido. El servidor escuchará y aceptará conexiones, y serán enviadas mediante proxy a través del cliente, que especificó el control remoto. Los controles remotos inversos que se especifiquen R:socks
escucharán en el puerto de calcetines predeterminado del servidor (1080) y finalizarán la conexión en el proxy SOCKS5 interno del cliente.
Iniciaremos el servidor en nuestro host de ataque con la opción --reverse
.
Iniciando el servidor Chisel en nuestro host de ataque
Luego nos conectamos desde Ubuntu (host pivote) a nuestro host de ataque, usando la opción R:socks
Conectando el cliente Chisel a nuestro host de ataque
Podemos usar cualquier editor que queramos para editar el archivo proxychains.conf y luego confirmar nuestros cambios de configuración usando tail
.
Edición y confirmación de proxychains.conf
Si usamos proxychains con RDP, podemos conectarnos al DC en la red interna a través del túnel que hemos creado para el host Pivot.
Caso práctico
Usando los conceptos enseñados en esta sección, conéctese al objetivo y establezca un túnel SOCKS5 que pueda usarse para RDP en el controlador de dominio (172.16.5.19
, victor:pass@123
). Envía el contenido de C:\Users\victor\Documents\flag.txt como respuesta.
Creación y envío del binario de Chisel
Ejecutar Chisel
En el servidor:
En Kali:
Proxychains y RDP
Última actualización