Mostrando entradas con la etiqueta seguridad y alta disponibilidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta seguridad y alta disponibilidad. Mostrar todas las entradas

15 feb 2016

Ataques Man-in-the-middle (Cain & Abel, Ettercap)


En esta práctica de seguridad vamos a demostrar un ataque de tipo MiTM (Man in the middle) que consiste en meterse en la comunicación de 2 hosts con el fin de interceptar alguna información (por ejemplo, las credenciales para conectarse a un servidor).

El ejemplo de este ataque que vamos a ver es ARP spoofing o ARP poisoning, que consiste en envenenar la tabla ARP de la víctima, haciéndola creer que se comunica con el servidor, cuando en realidad envía la información al atacante.

Para ello vamos a emplear Cain & Abel (o simplemente Cain, disponible en su web oficial), que es una herramienta para la recuperación de contraseñas y que presenta múltiples funcionalidades a parte de la que vamos a mostrar.

Mi entorno de la primera prueba contendrá 3 máquinas virtuales en el rango 172.17.0.0/16:
  • Windows Server 2008 R2 - 172.17.0.1/16 - el servidor ftp (con FileZilla Server).
  • Windows 7 Ultimate - 172.17.0.2/16 - la víctima que se va a conectar al servidor.
  • Windows 8.1 Pro - 172.17.0.3/16 - el "malo", con Cain.
1. Instalación de Cain & Abel

Una vez descargado, abrimos el instalador. El proceso de instalación no tiene ninguna complejidad:


Mantengo el directorio de instalación por defecto y espero a que se extraigan los archivos:



Para poder "esnifar" el tráfico de nuestra red, es decir, utilizarla en modo monitor, tendremos que instalar WinPcap:



Una vez instalado, abrimos el programa y entramos en la ventana de Configuración:


Aquí marcamos la casilla Start Sniffer on startup con el fin de escanear la red al abrir el programa:


Ya deberíamos poder visualizar las redes detectadas y los hosts que estas contienen:



2. FileZilla Server y prueba con Wireshark

Si estamos en el cliente o servidor que interviene en la comunicación, podemos interceptar los paquetes directamente, sin necesidad de recurrir al Man in the middle. Aquí una pequeña prueba.

Instalo FileZilla Server en mi máquina Windows 2008 R2 y lo abro:


Añado un usuario para poder conectarme desde el cliente (no nos olvidamos de establecerle un directorio home):


Desde la máquina cliente (Windows 7 en mi caso), voy a iniciar el escaneo (filtrando el tráfico ftp), y al intervenir esta máquina en la comunicación, podremos captar los paquetes directamente, sin tener que realizar ningún ataque:


Y desde la misma máquina me conecto a nuestro servidor ftp:


Y ya tenemos los paquetes con las credenciales de nuesto usuario capturados:



3. ARP Spoofing con Cain (en Windows 8.1)

Ahora bien, si queremos hacer lo mismo, pero desde otra máquina que no interviene en la comuncación entre el cliente y servidor, tendremos que realizar el ataque Man in the middle, concretamente ARP Spoofing.

Abrimos Cain y vamos a la pestaña Sniffer. Pulsamos el botón indicado para ver las @IP registradas en la red:


En la siguiente ventana podemos elegir el rango a escanear. Sólamente voy a analizar las @IP del servidor y cliente que vamos a atacar:


Aquí vamos a establecer los hosts entre los que nos vamos a meter para interceptar el tráfico. Elegimos uno en la parte izquierda, y en la derecha, una vez que allí aparezca. El programa nos avisa de si nuestro equipo no rinde igual que un router, podría entorpecer la conexión entre los hosts o incluso producir una denegación del servicio (al no redirigir los paquetes a sus destinatarios legítimos suficientemente rápido).


Para iniciar el ataque ARP Spoofing, pulsamos sobre el icono amarillo:


Su estado cambiará de Idle a Poisoning:


Ahora me voy a conectar al servidor ftp desde la máquina Windows 7:


Y veré que en la pestaña inferior Passwords tenemos una contraseña nueva, que es la que acabo de introducir:


En esta prueba atacamos tanto al cliente como al servidor -envenenando sus tablas ARP-, hecho que podemos demostrar visualizando sus tablas ARP.

Cliente (172.17.0.2):


Servidor (172.17.0.1):


Recordemos que la @IP del "malo" es 172.17.0.3, y, como podemos ver, el cliente asocia su dirección física con la @IP del servidor y el sevidor la asocia con @IP del cliente. Es por eso que aparece 2 veces en cada tabla.

4. DNS Spoofing

Mi servidor DNS (172.17.0.1) resuelve el nombre asir2.com a sí mismo. Mediante este ataque conseguiremos que lo resuelva a otra @IP, por ejemplo a la del atacante. Este ataque, al igual que el anterior, es un Man in the middle y es muy sencillo realizarlo.

Primero tendremos que envenenar la tabla ARP de nuestra víctima (máquina Windows 7). Para ello, al igual que antes, seleccionamos el servidor (DNS, en este caso el mismo que antes) y el cliente, que también va a ser el mismo:



Pulsamos el botón amarillo para iniciar el envenenamiento:


Ahora seleccionaremos "ARP-DNS" y añadiremos una entrada nueva. Aquí es donde vamos a especificar qué nombre vamos a spoofear y a qué dirección IP:



Para finalizar, una pequeña prueba desde la máquina Windows 7. Con un ping compruebo que asir2.com ahora se resuelve a 172.17.0.3, en vez de a 172.17.0.1. Si no es así, ejecutamos ipconfig /flushdns para limpiar la caché DNS del cliente:



5. ARP Spoofing con Ettercap (en Kali Linux)


Ettercap es una herramienta de seguridad gratuita y de código abierto, que permite realizar ataques Man in the middle en redes locales (LAN). Viene preinstalado en Kali, por lo que omitiré el proceso de su instalación.

En esta prueba, la @IP del "malo" va a ser 172.17.0.5/16, mientras que las del cliente y servidor se mantienen (172.17.0.2/16 y 172.17.0.1/16).

Iniciamos Unified sniffing y seleccionamos nuestra interfaz, para poder escanear los hosts de la red a continuación:



Comenzamos el escaneo de los hosts seleccionando la opción correspondiente (Hosts -> Scan for hosts):


Puede tardar un rato, dependiendo del tamaño de nuestra red. Al final se añadirán los hosts detectados a la lista:


Abrimos la lista de hosts desde el menú o utilizando el atajo de teclado (Ctrl + H):


A continuación seleccionaremos los objetivos del ataque, es decir, los hosts entre la comunicación de los cuales nos vamos a meter:



Desde el menú principal del programa abrimos Mitm -> ARP posoning, marcamos la casilla Sniff remote connections y aceptamos para iniciar el ataque:



Para asegurarnos de que el ataque ha sido exitoso, podemos visualizar las tablas arp de las víctimas. La tabla arp del cliente:


La tabla arp del servidor:


Abrimos Wireshark en Kali, iniciamos el escaneo y desde la máquina cliente (172.17.0.2) nos conectamos al servidor ftp (172.17.0.1):


Y, efectivamente, logramos captar los paquetes con las credenciales que viajan entre las 2 máquinas víctimas:



6. Medidas contra este tipo de ataques
  • Emplear herramientas como ARPWatch (en Linux) o DecaffeinatID (en Windows) que permiten realizar un seguimiento de nuestra tabla arp, avisándonos si aparecen @MAC duplicadas.
  • Utilizar entradas ARP estáticas. En sistemas Windows lo permite el comando netsh interface ipv4 add neighbors "Nombre de nuestra conexión" "Dirección IP" "Dirección MAC".
  • Y, por supuesto, siempre cuando sea posible evitar que personas no autorizadas se conecten a nuestra red.

25 nov 2015

La seguridad de redes inalámbricas. ¿Qué tan seguras son?



1. Introducción

El Wi-Fi es una tecnología de conexión de dispositivos electrónicos de forma inalámbrica. Actualmente es muy extendida y empleada en la inmensa mayoría de domicilios, oficinas, restaurantes, hoteles, etc.

1.1. Un poco de historia

Esta tecnología surgió de la necesidad de estandarizar las conexiones inalámbricas, para ser empleada en numerosos dispositivos diferentes. Buscando ello, en 1999, varias empresas (entre ellas Nokia) se unieron para crear WECA (Wireless Ethernet Compatibility Alliance, actualmente con el nombre de Wi-Fi Alliance).

En abril de 2000 WECA certifica la interoperabilidad de equipos con la norma IEEE 802.11b, bajo la marca Wi-Fi. Esto significa que el usuario tiene la garantía de que todos los dispositivos con ese sello puedan trabajar juntos sin problemas, independientemenete de su fabricante.

A medida que pasaban los años, han ido mejorando la velocidad máxima de transmisión inalámbrica, al igual que los rangos de alcance.

En lo único que se diferencia una red wifi de una red Ethernet (evidentemente a parte de que una es inalámbrica y la otra cableada) es en la forma de transmitir las tramas y paquetes de datos; el resto se afirma que es idéntico. Como consecuencia, las redes inalámbricas (que cumplen la norma IEEE 802.11) son completamente compatibles con las redes locales cableadas (LAN, IEEE 802.3).

1.2. Estándares más comunes

Hoy en día los estándares IEEE 802.11b, IEEE 802.11g e IEEE 802.11n disfrutan de una aceptación internacional con la banda de 2.4 GHz y velocidades de hasta 11 Mbit/s, 54 Mbit/s y 300 Mbit/s respectivamente.


También se empieza a manejar el estándar IEEE 802.11ac (conocido también como WIFI Gigabit) que emplea la banda de 5 GHz, siendo esta más limpia que la 2.4 GHz, ya que no hay más dispositivos que operen en ella. Mejora las tasas de transferencia hasta 433 Mbit/s y el máximo teórico es de 1.3 Gbit/s, empleando 3 antenas.

Fuente: Wikipedia


1.3. Tipos de seguridad inalámbrica

WEP 

WEP (Wired Equivalent Privacy: seguridad equivalente a la cableada) es un estándar de seguridad implementado en septiembre de 1999, y basándose en claves de 64 bits. Más tarde se aumentó la longitud de la clave (la clave de 128 bits es la más usada en este estándar).

A pesar de las revisiones del algoritmo y el incremento de la longitud de la clave, a medida que pasaran lo años, se descubrieron vulnerabilidades importantes. También fue debido al incremento de la potencia de cálculo de los ordenadores que cada vez fuese más fácil explotar esas vulnerabilidades.

En 2005, el FBI hizo una demostración pública (con el fin de concienciar de la debilidad del protocolo) rompiendo las contraseñas WEP en cuestión de minutos, empleando herramientas libremente disponibles.

Hoy en día, el protocolo WEP sigue siendo altamente vulnerable, a pesar de los intentos de parchearlo. La Alianza Wi-Fi oficialmente "jubiló" WEP en el año 2004.

WPA

WPA (Wi-Fi Protected Access) fue la respuesta y sustitución directa de la "Wi-Fi Alliance" ante el número de vulnerabilidades cada vez mayor encontradas en el protocolo WEP. La configuración más común es WPA-PSK (Pre-Shared Key; clave pre-compartida). Esas claves tienen 256 bits de longitud, que supone un incremento significativo comparando con las claves del protoclo WEP.

En WPA se incluyó la comprobación de la integridad de los mensajes (para impedir que un atacante altere los paquetes que viajan entre el punto de acceso y el cliente) y el empleo de TKIP (protocolo de la integridad de la clave temportal), que más adelante se habrá sustituido por AES (estándar avanzado del cifrado).

A pesar de todas las mejoras de este protocolo, WPA fue desarrollado con el fin de implementarse como sistitución en los dispositivos que integraban WEP. Es por ello que llevaba algunos elementos de WEP que también resultaron ser vulnerables a ataques.

Finalmente, WPA tuvo el mismo destino que su antecesor, WEP. Se hicieron múltiples demostraciones públicas de la explotación de sus vulnerabilidades. Curiosamente, en la mayor parte de ataques no se atacaba directamente el algoritmo WPA, sino el sistema WPS (Wi-Fi Protected Setup), diseñado con el fin de hacer las conexiones inalámbricas más sencillas.

WPA2

En 2006, WPA fue oficialmente sustituido por WPA2. Uno de los cambios más significativos fue el uso obligatorio de los algoritmos AES y la introducción del CCMP (Counter Cipher Mode with Block Chaining Message Authentication Code Protocol: un protocolo nuevo de autenticación) como sustituto de TKIP. Aunque este último también se mantiene en WPA2 para la interoperabilidad con los dispositivos WPA.

Actualmente, la vulnerabilidad conocida más importante de WPA2 requiere que el atacante ya este autorizado en la red. Es por ello que supone una preocupación para entornos de grandes empresas, no tanto para los domésticos. Una vez que el atacante esté dentro de la red, puede lograr acceder a ciertas claves y con ello realizar ataques a otros dispositivos de la red.

Desgraciadamente, una parte importante de los puntos de acceso inalámbricos que emplean WPA2, siguen implementando el protocolo WPS, que sigue siendo igual de vulnerable que el WPS de la 1ª versión del protocolo. Con la capacidad computacional de los ordenadores modernos se necesita entre 2 y 14 horas para penetrar un punto de acceso que presenta esa vulnerabilidad, empleando un ataque de fuerza bruta. Debemos desactivar WPS siempre cuando sea posible. Y mejor si flasheamos nuestro router con un firmware que no contenga esa funcionalidad, para deshacernos por completo de ese vector del ataque.

La lista de tipos de seguridad Wi-Fi (de más seguro a más vulnerable)

1. WPA2 + AES
2. WPA + AES
3. WPA + TKIP/AES
4. WPA + TKIP
5. WEP
6. Red abierta (sin seguridad)

Lo ideal sería deshabilitar WPS y seleccionar WPA2 + AES. Cualquier otra opción de la lista supone la presencia de vulnerabilidades importantes (unas más y otras menos).

Fuente (inglés): howtogeek.com

No vamos a entrar en las consecuencias de que un tercero pueda entrar en tu red inalámbrica. Sólo recuerda: sólo tú, el dueño del punto de acceso, te haces responsable de todas las acciones realizadas bajo tu conexión. Por ello tenemos que ser conscientes de lo importante que es securizar nuestras redes.

La información que viene a continuación es ofrecida sólo para fines educativos de auditar la seguridad de nuestras redes. Todas las pruebas serán realizadas en un entorno simulado, con dispositivos de mi propiedad, y en ningún momento en uno ajeno (al menos no sin el permiso otorgado por el dueño). No me hago responsable de ningún daño ni el uso de esta información con fines ilegales o delictivos.


2. Auditorías de seguridad wireless con Kali Linux

Kali Linux es una distribución basada en Debian GNU/Linux, diseñada principalmente para la auditoría y seguridad informática. Incluye herramientas para una multitud de áreas y análisis de ciberseguridad, incluyendo la auditoría de redes inalámbricas.

Kali Linux fue desarrollado por Mati Aharoni y Devon Kearns a partir de la reescritura del famoso BackTrack, su antecesor (que también fue desarrollado por Offensive Security Ltd.).

2.1. Descifrar claves WEP de un punto de acceso con Kali

El proceso en sí no es nada complejo. Sin embargo, en el camino nos pueden surgir varias complicaciones.

Antes que nada, necesitaríamos una tarjeta inalámbrica que soporte el modo monitor (también a veces llamado modo promiscuo) que nos permitirá la captura y análisis incluso de las redes en las que no estamos autorizados. Estas suelen ser los adaptadores wifi externos, aunque también lo soportan algunos integrados.

a) Ponemos nuestra tarjeta inalámbrica en modo monitor. 

Primero, desde la terminal de Kali, ejecutamos airmon-ng para visualizar el nombre de nuestra tarjeta inalámbrica (por ejemplo wlan1). A continuación ejecutamos airmon-ng start wlan1 para iniciar el modo monitor en la interfaz wlan1. Se acaba de crear una nueva interfaz virtual, que viene a ser la interfaz especificada en modo monitor (tendrá el nombre de wlan1mon, por ejemplo). Lo podéis comprobar con iwconfig.



Puede que el programa nos notifique de posibles conflictos con otros procesos, indicando sus PID. Para evitar esos conflictos tendremos que matar los procesos especificados con kill pid_proceso.


b) Escaneamos las redes inalámbricas a nuestro alcance.

Para ello empleamos el comando airodump-ng wlan1mon. La opción -t filtra las redes por tipo de seguridad (wep, wpa, wpa2). Por ejemplo airodump-ng wlan1mon -t wep. Nos aparecerá una lista de puntos de acceso inalámbricos a nuestro alcance mostrando su BSSID (@MAC del punto de acceso), potencia de señal, #data, canal, tipo de cifrado y nombre del AP, entre otras cosas.


En este caso también especifico el canal que se escanea (-c 9).

c) Capturamos los datos de la red, guardándolos en un fichero.

La vulnerabilidad del protocolo WEP consiste en que, teniendo una determinada cantidad de datos (a partir de 30000) que capturamos de la red, podemos descifrar la clave en cuestión de minutos.

Para ello utilizamos el comando airodump-ng (el mismo que empleamos para escanear) con otros parámetros:
airodump-ng -w datos_wep -c 1 --bssid 12:34:56:78:90:AB wlan1mon (donde datos_wep es el fichero que almacenará los datos capturados, 1 es el canal del punto de acceso, 12:34:56:78:90:AB es su BSSID y wlan1mon nuestra interfaz-monitor).



Una vez ejecutado el comando anterior, veremos en pantalla el punto de acceso especificado con todas sus características. El valor que nos va a interesar es #data (que son los IVs, vectores de inicialización) y nuestro objetivo será incrementarlo hasta, al menos, 30000, para poder descifrar a partir de ello la contraseña.

Ya habréis visto que este valor incrementa muy lentamente, o no incrementa del todo (eso dependerá del tráfico que circula por la red). Podríamos esperar mucho tiempo a que incremente por sí mismo, pero hay una forma para acelerar este proceso.

d) Nos asociamos con el punto de acceso e incrementamos el valor #data.

Para asociarnos con el punto de acceso, abrimos una nueva terminal y ejecutamos aireplay-ng -1 0 -a 12:34:56:78:90:AB wlan1mon (donde 12:34:56:78:90:AB es el BSSID de nuestro AP y wlan1mon el nombre del adaptador wifi en modo monitor). Si la asociación es exitosa, saldrá el mensaje de "Association successfull :-)". Si no es así, algo ha ido mal.


Con el siguiente comando empezaremos a emitir las peticiones ARP de forma masiva, con lo que el valor #data de nuestro punto de acceso debería incrementar rápidamente:
aireplay-ng -3 -b 12:34:56:78:90:AB wlan1mon.




Voy a dejar que el valor de data incremente hasta 100000. Así tendremos el descrifrado asegurado:



Si esto no funciona, no nos quedaría otra que esperar hasta que #data incremente por si mismo (o dejar al vecino en paz ;)). Si logramos aumentar #data de manera considerable, procedemos con el siguiente paso.

e) Desciframos la clave a partir del #data obtenido.

Para ello vamos a emplear aircrack-ng que va a utilizar el fichero de datos (datos_wep en mi caso) donde hemos guardado los datos capturados del punto de acceso. El programa mostrará un mensaje si los datos no son suficientes para descifrar la clave, con el siguiente valor necesario para continuar.

Listamos los ficheros del directorio actual (ls) para ver el nombre exacto del fichero de datos (tendrá la extensión .cap).

Para iniciar aircrack-ng, ejecutamos aircrack-ng fichero_datos.cap. Aircrack comenzará a crackear la contraseña. Si la contraseña es encontrada, aparecerá el mensaje KEY FOUND! con la clave correspondiente en hexadecimal y código ASCII (se puede utilizar cualquiera de las dos para conectarse a la red).



2.2. Ataque al WPS con Reaver (fuerza bruta)

Recuerdo una vez más que cualquier punto de acceso que implemente WPS es altamente vulnerable a diferentes tipos de ataque. Y no influye el tipo de cifrado que usa (ya sea WEP, WPA ó WPA2).

En esta parte vamos a utilizar Reaver, una de las mejores herramientas de auditoría wireless en mucho tiempo. Antes de que WPA fuese implementado, cualquier red inalámbrica se podía romper con facilidad. Pero cuando se estandarizó ese protoclo, penetrar una red wifi se convirtió en una tarea mucho más complicada y, muchas veces, emplear un ataque de diccionario ha sido el único ataque viable.

Entonces apareció Reaver, que funciona a la perfección con los puntos de acceso con WPS (Wi-Fi Protected Setup). Como he dicho antes, esta función permite conectarse fácilmente a un punto de acceso utilizando un código PIN.

Si el router tiene habilitado WPS, ya no es necesario romper su cifrado para entrar en la red. WPS emplea códigos PIN sin cifrar. Reaver recorre un diccionario de códigos PIN, hasta econtrarse con uno válido. Aunque también puede realizar ataques de fuerza bruta.

a) Habilitamos el modo monitor en nuestro adaptador inalámbrico.


Primero, desde la terminal de Kali, ejecutamos airmon-ng para visualizar el nombre de nuestra tarjeta inalámbrica (por ejemplo wlan1). A continuación ejecutamos airmon-ng start wlan1 para iniciar el modo monitor en la interfaz wlan1. Se acaba de crear una nueva interfaz virtual, que viene a ser la interfaz especificada en modo monitor (tendrá el nombre de wlan1mon, por ejemplo). Lo podéis comprobar con iwconfig.





Puede que el programa nos notifique de posibles conflictos con otros procesos, indicando sus PID. Para evitar esos conflictos tendremos que matar los procesos especificados con kill pid_proceso.

                                   

b) Detectamos los routers de acceso con WPS habilitado.

Para ello utilizaremos el comando wash. Primero vamos a crear el directorio /etc/reaver y después ejecutaremos wash -i wlan1mon -C (C es mayúscula; wlan1mon es el nombre de tu interfaz-monitor).

Como resultado veremos la lista de los routers a nuestro alcance con WPS activado, con su dirección MAC (BSSID), nombre del punto de acceso (ESSID), canal, señal (cuanto más se acerca a 0, más fuerte es) y versión del protocolo.


Copiamos el BSSID del router que vayamos a atacar (lo necesitaremos después). Y antes de pasar al siguiente paso, nos aseguramos de que el proceso de la ventana anterior está parado (pulsar Ctrl+C dentro de esa ventana).

c) Iniciamos el ataque con Reaver.

Para ello, en una terminal nueva, vamos a ejecutar reaver -i wlan1mon -b AA:AA:AA:BB:BB:BB --vv (donde wlan1mon es nombre de nuestro adaptador inalámbrico y AA:AA:AA:BB:BB:BB el BSSID de nuestro objetivo).

Una vez iniciado el ataque, suele tardar entre 2 y 10 horas en conseguir un PIN correcto. Cuando lo consiga, aparecerá el mensaje "Pin cracked in X seconds", con el código PIN correspondiente, la clave del router y el nombre del punto de acceso atacado.

Tened en cuenta que esto tampoco funciona con todos los puntos de acceso con WPS activado, ya que algunos router bloquean los intentos de conexión tras varios intentos fallidos. Además algunos puntos de acceso no nos permitirán ni asociarse a ellos para iniciar el ataque.

Para finalizar, me gustaría decir que seais hackers de verdad, y utilicéis estos conocimientos para el bien vuestro y el de los demás. ¡Y nunca para aprovecharse de otras personas!

¡Saludos benignos! ;)