Seguridad Wi-Fi empresarial – Servidores radius (II)

En el capítulo anterior se hizo un resumen de los tipos de configuraciones que se pueden tener en un servidor radius. Ahora se describe la manera de configurar un servidor con Freeradius.

Como no podría ser de otra manera, no nos hacemos responsables del resultado de llevar a cabo las siguientes acciones y modificaciones, así que se recomienda aplicarlas primero sobre entornos no críticos además de no ejecutar nunca un script de una fuente no confiable o que se ignora lo que hace. ¿Somos una fuente confiable? Sí.

La instalación se puede hacer en cualquier sistema Linux. En este caso se ha escogido Debian wheezy. Para instalar Freeradius, primero se deben obtener algunos paquetes que son necesarios:

apt-get install dpkg-dev fakeroot libpam0g-dev libmysqlclient-dev libgdbm-dev libldap2-dev \
   libsasl2-dev libiodbc2-dev bind9 libkrb5-dev libperl-dev libpcap-dev libreadline-dev \
   libsnmp-dev libpq-dev libtalloc-dev libyubikey-dev libsqlite3-dev

[Read more…]

Seguridad Wi-Fi empresarial – Servidores radius (I)

En la actualidad las conexiones inalámbricas se han vuelto algo indispensable a la hora de conectarnos a internet, el aluvión de nuevos dispositivos como móviles, tablets, ebooks etc… Hacen que en casi todo hogar doméstico exista un router con funciones de punto de acceso para poder conectarnos sin cables.

Los motivos que llevan a conectarse sin cables son varios, desde la simple comodidad de no tirar cables por casa, a las características de la infraestructura de una empresa o las propiedades geográficas de un lugar, que no permiten hacer otro tipo de conexión.

En 1999 se asienta la tecnología inalámbrica llamada Wi-Fi, funcionando bajo el estándar IEEE 802.11b, que nos daba una mísera velocidad de 11 Mbps, y donde los dispositivos aún eran únicamente compatibles con el famoso cifrado WEP, el cual usa el algoritmo de cifrado RC4 de 128 bits (104 en realidad) y que fácilmente puede ser roto.

[Read more…]

Ataque al protocolo HSRP

¿Cómo funciona?

El protocolo de Cisco Hot Standby Router Protocol (HSRP) se usa para la conexión entre routers con el fin de evitar fallos en una red, gracias a la redundancia, comprobando el estado de los mismos cada cierto tiempo. Su funcionamiento se basa en que uno de los routers actúa como maestro de los demás y es el encargado de enrutar el tráfico, mientras que los demás actúan como respaldo en caso de fallo del maestro.

Supongamos dos routers, R1 y R2, donde el primero hace de maestro y el segundo de respaldo. Ambos intercambian mensajes de saludo tipo hello, que permiten conocer el estado del otro a intervalos de tiempo pre configurados, usando para ello la dirección de destino multicast 224.0.0.2. La prioridad a la hora de configurar los routers es la que determina quien actúa de maestro y quién no. Si el maestro sobrepasa un tiempo límite en enviar mensajes de saludo al otro, entonces el “esclavo” asume el papel de maestro.

Ataque

El ataque consiste en que si un usuario emula ser un router con máxima prioridad, podría conseguir ser considerado como el maestro, enrutar todo el tráfico y por tanto conseguir un MitM. Veamos un ejemplo.

Imaginemos que R1 (maestro) y R2 (esclavo) tienen la puerta de enlace 192.68.1.1. Ambos tienen la misma porque ofrecen redundancia. Los ordenadores de nuestro escenario están conectados al switch dentro de la red 192.168.1.0/24. La IP del atacante es la 192.168.1.160 además de una IP virtual 192.168.1.1.

Los dos routers están configurados con el protocolo de enrutamiento HSRP en su interfaz Ethernet, donde R2 se configura con una prioridad de 90 y R1 con una de 100 (prioridad por defecto), para que haga de maestro.

Los dos routers intercambian paquetes de saludo con un intervalo de tiempo de 3 segundos. Estos paquetes se envían a la dirección 224.0.0.2 (multicast), con lo cual cualquier host con conectividad en la capa 2 es capaz de leer estos paquetes y averiguar los parámetros de configuración del protocolo. Capturar los paquetes es sencillo, en este caso lo haremos con whireshark en funcionamiento sniffer.

Para instalar whireshark:

apt-get install wireshark

Con esta información el atacante tiene los datos necesarios para convertirse en router maestro. En la captura podemos ver algo como esto:

Para que el atacante se convierta en router activo solo tiene que mandar mensajes de saludo con mayor prioridad. Los datos más importantes que vemos en la captura son:

  • State, donde el estado ha de ser activo y con código 16, lo que comprueba que el saludo se hace desde un router activo.
  • HelloTime, la frecuencia con la que se envía el paquete de saludo, por defecto 3 segundos.
  • Priority, en este caso 100.

Una vez que tenemos la información necesaria sólo queda construir el paquete e inyectarlo para hacernos con el control. Para la construcción del paquete usaremos la herramienta scapy.

El generador de paquetes scapy escrito en phyton nos permite generar paquetes con muchas opciones, aunque nos centraremos en su uso para interferir en diversos protocolos de enrutamiento y ataques a routers. Para instalar scapy tenemos varias opciones. Si disponemos de un sistema Linux que use sistema apt podemos hacer lo siguiente:

apt-get update
apt-get install python-scapy

También podemos bajarlo de la página de Debiano de la página oficial del proyecto. Una vez bajado el paquete, lo instalamos:

dpkg -i python-scapy_2.1.0-1_all.deb 

Ejecutamos el programa y creamos el paquete a inyectar de la siguiente forma:

scapy

Welcome to Scapy (2.1.0)

>>>
>>> ip = IP(src='192.168.1.1', dst='224.0.0.2')
>>> udp = UDP()
>>> hsrp = HSRP(group=1, priority=255, virtualIP='192.168.1.1')
>>> send(ip/udp/hsrp, iface='wlan0', inter=3, loop=1)
...................
Sent 19 packets.

El envío de paquetes se hace cada 3 segundos indefinidamente, mandando mensajes idénticos a los de R1. En este caso wlan0 es nuestra interface wireless, pero debemos cambiar el parámetro por la interface que se esté usando. Si nos fijamos en una captura con whireshark de los paquetes enviados veremos los paquetes hello:

También podemos ver el uso de multicast DNS, ya que no hay ningún servidor DNS instalado:

Ahora R1 pasa de estar activo a estar en modo standby (o modo espera) y R2 pasa a estar en modo speak.

En este momento el enrutador no responderá a las peticiones ARP de 192.168.1.1, por lo que nostros podemos responder las peticiones ARP para la IP 192.168.1.1 y capturar el tráfico de las máquinas de la LAN ya que somos nosotros ahora los que enrutamos, logrando un ataque MitM.

Una solución adecuada para solventar este fallo de seguridad es el uso de cifrado md5 para la comunicación entre routers y así evitar que se inyecten paquetes, ya que aunque se pueda capturar tráfico como antes, no es posible para un atacante puede inyectar los paquetes sin el hash md5 asociado.

Enlaces: