
Explore la red usando la herramienta VPNPivot
A veces realizamos pruebas de penetración externas y cuando comprometemos el objetivo remoto, nos gustaría explorar la red interna detrás de él y lograr dicho compromiso, como poseer Active Directory, acceder a archivos compartidos, realizar ataques MITM ... etc. Existen muchas técnicas como el reenvío de puertos, socks4 ..., pero cada una tiene sus pros y contras. Esta es la razón por la que la técnica de VPN pivoting surge, resuelve todos los problemas encontrados al usar ambas técnicas mencionadas anteriormente. Te permite interactuar con redes internas que están protegidas por firewalls, NATs... etc.
Esta es una implementación de la técnica VPN pivoting en Linux usando sockets de bajo nivel puros dentro del dispositivo tap. Crea un túnel completamente cifrado usando SSL/TLS entre la máquina objetivo y el atacante.
VPN Pivot envía y recibe una pila TCP/IP completamente cifrada a través de un socket de flujo TCP, luego los pares lo reenvían al dispositivo/host deseado. El atacante explora la red interna como si perteneciera a ella dentro de una dirección IP local tomada del servidor dhcp o configurada estáticamente.
yaourt -S vpnpivot-git
La instalación es bastante sencilla, solo escribe los siguientes comandos:
root@pwnies:~# git clone https://github.com/0x36/VPNPivot.git
root@pwnies:~# cd VPNPivot
root@pwnies:~/VPNPivot# ./autogen.sh
root@pwnies:~/VPNPivot# ./configure
root@pwnies:~/VPNPivot# make && make install
El servidor VPNPivot debe ejecutarse en la máquina del atacante, crea un dispositivo virtual (tap) con la posibilidad de cambiar la MAC (que parece útil para spoofing y cambio de MAC), dirección IP, MTU y también el propietario de la interfaz. Los dispositivos TAP interactúan con la máquina objetivo, envían/reciben tramas Ethernet crudas. Una vez que el atacante obtiene una conexión de túnel exitosa, el dispositivo tap puede interactuar con el servidor DHCP de la red interna hackeada, recibir/enviar paquetes de broadcast y también reutilizar direcciones IP.
Trabajar con pivots es muy fácil, solo necesitas saber qué hace cada opción:
root@pwnies:~/VPNPivot# ./src/pivots -h
__ _______ _ _ _____ _ _
\ \ / / __ \| \ | | __ (_) | |
\ \ / /| |__) | \| | |__) |__ _____ | |_
\ \/ / | ___/| . ` | ___/ \ \ / / _ \| __|
\ / | | | |\ | | | |\ V / (_) | |_
\/ |_| |_| \_|_| |_| \_/ \___/ \__|
Servidor VPNPivot v1.0 por Simo36
-i --iface <dispositivo> Crea un dispositivo tap no persistente
-I --ifconf <ip/máscara> Configuración de interfaz (IP/MÁSCARA)
-p --port <puerto> Puerto de escucha del servidor (por defecto: 12345)
-m --mtu <tamaño> Tamaño MTU del dispositivo virtual (por defecto: 1550)
-u --user <usuario> Propietario del dispositivo (OPCIONAL)
-H --hw <MAC> Establecer dirección MAC para la interfaz
-C --cert <cert_servidor> Nombre de archivo del certificado PEM
-P --pkey <clave_privada> Nombre de archivo de la clave privada PEM
-v --verbose Modo verboso
-d Demonizar
root@pwnies:~/VPNPivot#
Todas las opciones anteriores son opcionales, pero vale la pena explicarlas aunque sus descripciones sean autoexplicativas:
El cliente VPN Pivot debe ejecutarse en la máquina objetivo, crea dos archivos socket, el primero como cliente para el túnel y el segundo para interactuar directamente con la red del dispositivo. Funciona como si estuviéramos creando un dispositivo tap indetectable, lo que dificulta su detección.
Trabajar con pivotc es más fácil que con el servidor, solo necesitas no confundirte cuando intentas conectarlo a pivots:
root@pwnies:~/VPNPivot# ./src/pivotc
Uso :
./src/pivotc <IP del servidor> <puerto del servidor> <IP local> [MTU]
root@pwnies:~/VPNPivot#
Las opciones son:
No hay nada mejor que una demo en vivo, por eso hice un video explicando el uso básico de VPNPivot, y el video está en youtube.
¡Eso es todo! Disfruta de tu pwning :-) Saludos