Google EL TIPO DE INFORMATICA: Hacking
Mostrando entradas con la etiqueta Hacking. Mostrar todas las entradas
Mostrando entradas con la etiqueta Hacking. Mostrar todas las entradas

domingo, 1 de febrero de 2015

Conseguir Claves WEP en Mac OS X con Aircrack-ng

Este tema de romper claves WEP en redes WiFi no es nada nuevo, todos sabemos lo vulnerable que es WEP y lo rápido que se puede conseguir la clave o "key" una vez se logra capturar suficiente tráfico. Pero en este post veremos como hacerlo en Mac OS X usando la herramienta nativa de diagnostico de redes inalámbricas (Wireless Diagnostic) para capturar paquetes y luego "Aircrack-NG" para descifrar o calcular la clave en base a los datos capturados. Generalmente para el escaneo de redes inalámbricas, la captura de los datos y/o inyección de datos se utilizan programas como KisMAC, pero generalmente estos programas no funcionan con los drivers de la tarjeta WiFi de Mac OS X, por lo que usualmente se utilizan tarjetas externas USB con drivers que soporten. Pero si no tenemos otra tarjeta o drivers compatibles, podemos usar esta utilidad del sistema, nos permitirá conseguir la información necesaria de la red y también capturar los datos para descifrar la clave WEP. Lo que no podremos hacer con con esta utilidad es inyectar trafico a la red, así que si la red no es muy activa tendremos que durar mucho tiempo capturando hasta que se consiga una cantidad de suficiente de paquetes. Pero para muchos casos podremos usar esta herramienta nativa, así que empecemos.

Conseguir Información de la Red

Lo primero que necesitaremos es información de la red que queremos "auditar", o a fin de cuentas conectarnos. Lo que buscaremos será el canal en que transmite, el nombre de la red (o SSID) y el BSSID, que seria el Mac Address del router inalámbrico que transmite la red. Para esto usaremos como les dije la herramienta del sistema para diagnostico de Redes Inalámbricas, para abrirla presionamos la tecla "option" y manteniéndola presionada hacemos clic encima del icono que nos muestra las redes inalámbricas (en el menu de arriba), luego hacemos clic en "Open Wireless Diagnostic", como se muestra mas abajo:

Herramienta de Diagnostico Wireless
Herramienta de Diagnostico Wireless del Sistema

Se les pedirá escribir el usuario/password de un usuario con privilegios administrativos en el equipo, luego abrirá la siguiente ventana. Abrirá una especie de "Wizard" que se usa para determinar problemas de conexión, pero esto no es lo que usaremos. Junto a esta aplicación el sistema tiene una ventana de utilidades, para acceder a ella haremos clic en "Windows" (en el menú superior) y seleccionaremos "Utilities", como se ve mas abajo:

Mac OS X Wireless Diagnostic

Esto nos traerá la ventana que necesitamos. Como verán esta herramienta tiene varias opciones que nos resultaran de mucha utilidad. Tiene varios tabs: Info, Frame Capture, Logging, Wi-Fi Scan, Perfomance. Primeramente utilizaremos la opción "Wi-Fi Scan", que como ya se imaginaran usaremos para escanear y detectar las redes wi-fi cercanas y conseguir la  información que necesitamos. Hacemos clic en "Scan Now" y veremos un listado con las redes WiFi, donde buscaremos alguna que utilice WEP:

Redes WiFi

Ahora que tenemos identificada la red que queremos "auditar", podemos empezar a capturar datos. Como les había comentado al inicio, para conseguir la clave necesitamos capturar todo el trafico posible. Nos movemos a la sección "Frame Capture". Solo tenemos que seleccionar el canal (Channel) en que transmite la red (en el ejemplo del gráfico anterior, se encuentra en el canal 1) y hacemos clic en "Start". Con esto empezara a hacer la captura de los datos, dependiendo de que tan activa este la red este proceso puede tomar desde varios minutos hasta varias horas, mientras mas tiempo estemos capturando mas posibilidades de capturar.

Captura de Datos WiFi


Luego de que haya pasado un tiempo considerable detenemos la captura. Nos generara un archivo en el Desktop con extension ".wcap", el nombre estara compuesto por la fecha de creación, por ejemplo "150131_223736.wcap" (año - mes - mes). Este archivo contiene los datos que capturamos en el canal que especificamos. Ahora podemos pasar a intentar calcular el key usando aircrack-ng.


Aircrack-NG

Aircrack es toda una suite de herramientas para auditoría de redes inalámbricas, tiene herramientas para la captura de datos (lo que hicimos anteriormente con la herramienta del sistema), para inyección de trafico entre otras, pero como les comente antes, algunas no funcionan con los drivers de Mac OS X. Pero si tenemos suerte, no necesitaremos inyectar trafico. En caso de que no tengan Aircrack instalado, pueden instalarlo con Homebrew (y si no lo han utilizado Hombrew aquí les digo como instalarlo, es bastante sencillo). Para instalarlo utilizan el siguiente comando:

 brew install aircrack-ng

Bien, ya con Aircrack instalado, solo tenemos que ejecutarlo sobre el archivo que contiene la captura que hicimos. Este archivo contendrá muchos datos, no solo de la red en cuestión sino de todas las redes que estén en el área transmitiendo en el canal que hicimos la captura. Así que le indicaremos a Aircrack el BSSID de la red que queremos que nos descifre el Key, así que ejecutaremos:

$ aircrack-ng -b bssid-de-la-red archivo-capturado.wcap

Con la opción "-b" le indicamos el BSSID de la red, seguido del archivo capturado. Si se capturaron suficientes paquetes, Aircrack calculara en unos segundos la clave. En caso de que no hayan suficientes, aircrack les dirá que necesita más paquetes (IVs) para poder calcularla. En ese caso necesitarán hacer la captura nuevamente pero por mas tiempo. En el caso de este ejemplo, deje la captura por unos 40 minutos y mi archivo de captura alcanzó unos 900 MBs, al ejecutar aircrack solo necesito unos segundos para calcular la clave:

Aircrack calculando Clave WEP

Como pueden ver pude conseguir una buena cantidad de paquetes (43743 IV's) en la captura, y más abajo Aircrack muestra el Key. Solo hay que remover los dos puntos ":" entre cada par de caracteres y tendremos el Key de la red. Así de rápido se puede conseguir la clave de una red que utilice WEP, por esto es que tiene que evitar usarlo. Espero que esto les sea de utilidad.

Hasta el Próximo!

lunes, 24 de marzo de 2014

Crear un Access Point (Rogue AP) en Mac OS X y Captura de Datos con SSLStrip

En esta entrada veremos como crear un punto de acceso a Internet falso (o Rogue AP) en Mac OS Mavericks, usando la herramienta nativa de este sistema operativo para compartir Internet para crear una red Inalámbrica, configuraremos el Firewall del sistema para redireccionar todo el trafico que salga a traves de esta conexión a un puerto especifico en el equipo donde tendremos entonces la herramienta SSLStrip capturando el trafico. La función principal de SSLStrip no es solo la captura del trafico, sino mas bien permitir capturar datos en forma plana que generalmente se enviarían encriptados con SSL. Esto lo hace de la siguiente manera, cuando en una pagina, por ejemplo Facebook, hacemos clic en "Login" o "Acceder", se gestiona una sesión segura usando SSL (HTTPS) antes de enviar los datos digitados, lo que hace SSLStrip es que captura esa solicitud y evita que se establezca la sesión SSL, por lo que la conexión se mantiene en texto plano. Claro esto no siempre funciona, algunos sitios no permiten hacer el login si la conexión no es segura. La idea es mostrar porque debemos tener cuidado al conectarnos a una red Wireless abierta que encontremos, bien, habiendo dicho esto podemos empezar.

Creando la Red Wireless

Lo primero que haremos sera crear la red inalámbrica a la que queremos que las personas se conecten. Para esto compartiremos una conexión a Internet, esta conexión puede ser, por ejemplo, via un cable de red, o como en mi caso, puede ser a traves de un telefono celular via USB. Para esto iremos a System Preference --> Sharing. Veremos la siguiente ventana:

Comparitr Conexion Internet

Antes de activar la opción "Internet Sharing" de la sección de la izquierda debemos indicar cual sera la conexión que compartiremos y a traves de que medio la compartiremos. En nuestro caso, yo estoy compartiendo la conexión a Internet del Iphone a traves del cable USB, y la compartire a traves de la tarjeta Wi-Fi. Luego haremos clic en el boton "Wi-Fi Options..." para configurar el nombre de la red inalámbrica que crearemos y el password, como lo que queremos es hacer una red llamativa para que las personas se conecten, elegiremos como nombre "OPEN_INTERNET" o "OPEN_WIFI" y la configuraremos sin password, como se muestra en la próxima ventana:


Hacemos clic en OK y volveremos a la ventana anterior, donde seleccionaremos el recuadro "Internet Sharing" para habilitar esta conexión, con esto ya estaremos compartiendo nuestra conexión a Internet y regalando Internet al publico. Necesitamos ahora ver la interface que se creo para esta conexión Wireless y ver la dirección IP que tiene esta y que asignara a los usuarios, para esto ejecutamos en el comando "ifconfig" en una ventana Terminal, veremos algo como esto:



Como pueden ver, tengo ahora una interface llamada "bridge100", con la dirección IP 192.168.2.1, las computadoras que se conecten a esta red inalámbrica se le asignaran IP's en este mismo rango. Esta información la usaremos mas adelante cuando estemos configurando el Firewall.

UPDATE:

Si al habilitar "Internet Sharing" no les funciona (no ven que el icono del Wireless cambia en la barra), es posible que esten utilizando Mavericks o Yosemite. En mi caso, cuando migre a estas versiones dejo de funcionarme el Internet Sharing, pero se corrigio con "El Capitan" (10.11.1).

Configuración Firewall Mac OS

Bien, en este punto ya debemos tener personas conectadas a nuestra red, ahora necesitaremos redirigir todo el trafico HTTP o HTTPS que salga por esta conexión hacia el puerto en que estará escuchando SSLStrip. Para esto configuraremos algunas reglas en el Firewall de Mac OS, que a partir de Lion se maneja con el con pf, este manejador de paquetes viene de FreeBSD. La configuración de pf se encuentra en /etc/pf.conf,  pero las reglas del Firewall no se encuentran directamente en este archivo,  sino que que indican aqui los archivos que contienen las reglas. A estos archivos se les llama "Anclas" (anchor en ingles). Así que lo que haremos sera crear nuestro propio archivo ancla donde definiremos las reglas necesarias, y luego haremos referencia a ellos en pf.conf. Estos archivos "ancla" se crean generalmente en "/etc/pf.anchors/", el archivo que crearemos lo llamaremos "rdr.proxy" y lo crearemos ejecutando "sudo vim /etc/pf.anchors/rdr.proxy", el contenido de este archivo sera el siguiente:


rdr pass on bridge100 inet proto tcp from any to any port 80 -> 192.168.2.1 port 8080
rdr pass on bridge100 inet proto tcp from any to any port 443 -> 192.168.2.1 port 8080

pass in log quick on bridge100 proto { tcp, udp } from any to 192.168.2.1 port 8080 keep state
pass in log quick on bridge100 proto { udp } from any to 192.168.2.1 port 53 keep state
pass in log quick on bridge100 proto { icmp } from any to any keep state
pass out inet proto tcp from any to any keep state
pass out inet proto udp from any to any keep state

Con las primeras 2 reglas configuramos el "Redirect" del trafico hacia el puerto 8080, como ven indicamos a cual interface se aplicaran estas reglas que en este caso es a la interface que se creo cuando activamos el "Internet Sharing", que como vimos fue la interface "bridge100".  Las siguientes reglas lo que permiten es el acceso o abrir el acceso al puerto 8080 donde esperara SSLStrip por el trafico de las personas que usen esta red, tambien permitimos el acceso al puerto UDP 53 para que los equipos puedan hacer consultas DNS. Luego que hayamos copiado estas lineas en el archivo podemos guardarlo e irnos al archivo /etc/pf.conf, donde agregaremos las siguientes lineas:

rdr-anchor "rdr.proxy"
load anchor "rdr.proxy" from "/etc/pf.anchors/rdr.proxy"

Como ven primero definimos el archivo con la linea "rdr-anchor..." y luego le indicamos cargue este archivo y le indicamos la ubicación donde se encuentra. Al hacer estas modificaciones, el archivo /etc/pf.conf se veria de esta manera:


Archivo pf.conf

El Firewall del Mac OS  (pf) viene desactivado por defecto, así que aun no estarán habilitadas las reglas que acabamos de agregar, para esto tendremos que ejecutar el siguiente comando:

#sudo pfctl -ef /etc/pf.conf

Cuando ejecutemos este comando, habremos cargado las reglas y activado pf en el sistema. Hay que tener en cuenta que al habilitar esto, todo el trafico de las personas que esten conectadas a la red inalámbrica que acabamos de crear se estará redireccionando al puerto 8080, y como aun no tenemos SSLStrip corriendo en el sistema no podrán navegar. Así que seria mejor ejecutarlo cuando ya este instalado y corriendo SSLStrip, así que pasemos al siguiente paso.

Instalando SSLStrip 

Ya entramos en la ultima parte, ahora solo nos resta instalar SSLStrip para hacer la captura de los datos. Lo pueden descargar desde este link. Esta herramienta esta desarrollada en Python, pero para ejecutarla en Mac OS sera necesario instalar algunos componentes. Esto podemos instalarlo usando MacPorts, que es un manejador de paquetes similar a APT-GET en Linux. Si no lo tienen pueden descargarlo desde este link y seguir las instrucciones (su instalación es sencilla). Una vez lo tengan instalado solo debemos ejecutar:

$ sudo port install py-twisted-web2
$ sudo port install py-openssl

SSLStrip requiere Python 2.5 o superior, si tienen varias versiones de Python en el sistema, es posible que necesiten ejecutar los comandos anteriores indicando la version al lado de "py", por ejemplo "sudo port install py25-twisted-web", una vez instalados estos componentes, nos movemos a la carpeta donde descargamos SSLStrip y entonces ejecutamos:

$ sudo python sslstrip.py -l 8080 -w captura.log

Con esto iniciamos sslstrip escuchando en el puerto 8080 (con la opción -l) y le indicamos que todo lo que capture lo guarde a un archivo llamado "captura.log". Cuando ejecutemos este archivo sslstrip se mantendrá corriendo y capturando hasta que lo cancelemos, se vera como se muestra a continuación:

Ejecutando SSLStrip.py

Ahora solo tenemos que esperar que las personas que esten cerca se conecten a nuestro AP y SSLStrip empezara a capturar sus logins y passwords. Como los datos se van copiando al archivo "captura.lo", podemos abrir otra ventana de Terminal y ejecutar "tail -f captura.log" para ir viendo los datos según van siendo capturados. Entonces, cuando una persona se conecte, por ejemplo a Facebook, veremos los datos que introduce aparecer en el archivo captura.log como se muestra a continuación:



Como ven, el incauto conectado a mi red intento conectarse a facebook, y como vemos SSLStrip nos trajo el username que utilizo (usuario-conectado) y el password (misuperpassword01). A parte de SSLStrip se puede utilizar un proxy, como Burp Proxy (del cual les hable en este post) y así se podría incluso tener mas control sobre el trafico de las personas que se conecten. Bueno, hasta aqui este post, espero que les sea de utilidad y lo piensen mejor la próxima vez que vayan a conectarse a una red inalámbrica publica o que no sea de confianza (... y aunque sea de confianza).