lunes, 8 de abril de 2013

Instalar desde 0 aplicación pyrit con Opencl


 Muy buenas chavales, como muy bien dice el título, vamos a aprovechar nuestra tarjeta gráfica (GPU) ATI mobility radeon, para acelerar el paso de los diccionarios frente a un handshake obtenido.

 Para empezar, os diré que dicha tarea ha sido dura de coj.... Pensaba que no lo conseguiría y acabé desesperado, pasando horas muertas frente a la pantalla, instalando un SO dual junto al Windows 7 (léase Ubuntu 12.04), creando una y otra vez lives Usb del Backtrack 5 r1, compilando y descompilando librerías ...que majas ellas, tomando colacaos fríos por culpa de estar pegado a ésto y otras lindeces que no paso a relatar por no hastiar al personal.

 En lo que a mi se refiere, para hacer este tutorial, he pasado muchas horas inútiles, que apenas han
servido para nada, para por fin, conseguir el objetivo, que me llevan a la siguiente conclusión:


                             POCO PREMIO PARA TANTO SACRIFICIO *

 * Más premio para quien tenga una buena tarjeta gráfica.

 Uno hasta aquí puede pensar "- y para qué voy a seguir leyendo". La respuesta es muy simple:

 Porque si tienes una buena gráfica, puedes conseguir el summum para auditar casi todas las redes existentes con seguridad WPA (siempre probando la seguridad de éstas sin ir con malas intenciones).

 No me hago responsable del uso que se le pueda dar a Pyrit.

 Sin más preámbulos, pasemos a la acción:

 Para entender todo un poco, vamos a relatar la función de cada programa y comandos utilizados para llevar todo a buen puerto.

 Para quien sea un poco entendido en el tema wireless, sabrá que para atacar una red con protección WPA, hace falta desautentificar al cliente legítimo, por activa o por pasiva para obtener un handshake, que a posteriori, utilizaremos para pasar un diccionario con la posible clave. ¿Y cómo se
consigue todo ésto ?. Pues con un adaptador usb wifi capacitado para modo monitor y con la suite de
aircrack-ng.

 Hacemos correr el airodump para filtrar la red que nos interesa y cuando estemos a la escucha, atacaremos por activa o por pasiva.

 Por pasiva, esperaremos a que el cliente se conecte, y si tenemos una buena señal, tendremos el saludo.

 Por activa, emplearemos el comando aireplay-ng para hacer caer al cliente o station, según se prefiera, para tener el saludo.

 En la shell (terminal) desde Linux, empleamos la siguiente orden:

 Si eres administrador (root): aireplay-ng -0 5 -a Bssid (mac del AP) -c (mac cliente) wlan0

 Si no eres administrador (root):  sudo aireplay-ng -0 5 -a Bssid (mac del AP) -c (mac cliente) wlan0

 aireplay-ng -0 : Ataque para desautentificar.
 5: La cantidad de desautentificaciones enviadas.
 wlan0: Interface que utiliza mi adaptador wifi por ser Realtek rtl8187.

 Si todo ha ido bien, en la parte superior derecha de la pantalla, debería aparecer un mensaje parecido a éste:

 WPA handshake XX:XX:XX:XX:XX:XX

 Para asegurarse de que el handshake es válido, debemos insertar la siguiente orden:

 aircrack-ng (nombre de la captura.cap)

 Y entonces veremos que realmente lo tenemos (WPA  1 handshake) y que aircrack se deja de ejecutar porque espera la ruta de un diccionario para iniciar la búsqueda.

 Allá por internet hay montones de diccionarios de toda índole y todos los colores, pero huelga decir que la gran mayoría no sirven para nada, sólo para ocupar un espacio inútil en nuestro disco duro. Como probamos la seguridad de nuestro mismo router y conocemos la clave, bajaremos un diccionario pequeño, de escasos megas y lo abriremos con un gestor para incluir nuestra clave  dentro de él. De esta forma,
 aircrack tarde o temprano nos entregará la clave.

 Ejecutamos en un terminal:

 aircrack-ng -w (ruta del diccionario.txt o .lst) (captura.cap)

 Aircrack empezará a buscar la clave, comparando cada una de ellas con el handshake (que no es otra cosa que la misma, pero encriptada), utilizando para ello, y aquí reside el quid de la cuestión que nos ocupa en este post, la velocidad de proceso de los núcleos de nuestro portátil (SSE).

 En mi caso, al tener un intel core i3 de cuatro núcleos, y sabiendo que cada uno de ellos puede procesarme unos 300 y pico de palabras por segundo, a la suma en total, obtengo una media irrisoria de 1280 palabras por segundo de media con algunos picos de 1300. Todo ello cargando a nuestra CPU de todo el trabajo de proceso y limitándole la memoria de forma evidente.

 Bueno, visto este previo, vamos a instalar todo lo necesario y explicar paso a paso como meterle caña a las ATI con Opencl gracias a Pyrit.

 Lo primero que haremos, es descargar desde windows 7 todas las aplicaciones (que no son muchas)
para ir empezando.

 El primer elegido es el Linux Live usb Creator (Lili para los amigos). El programa necesario para hacer booteable el Backtrack 5 r1 con cambios persistentes. Aquí tenemos el enlace de descarga:
 http://www.linuxliveusb.com/en/help/guide/preparation

 Pinchamos en la pestaña Download Get LiLi y en la siguiente pantalla descargamos.

 Ya tenemos una cosa. Ahora bajaremos la ISO de Backtrack 5 R1 desde su página oficial, peeeero
antes de hacerlo debemos saber que tipo de arquitectura tiene nuestro portátil u ordenador de sobremesa, 32 o 64 bits. Para saberlo desde Windows XP, haremos lo siguiente:

Hacemos click derecho en Mi Pc--Propiedades--Click pestaña Hardware--Administrador de Dispositivos--doble click en Procesador/es--doble click en el procesador que tengas--Pestaña Detalles.

 Si pone X86=32 bits     Si pone X64=64 Bits.

 Tambien puede ser que tengas tu procesador trabajando en 32 bits pero que sea compatible con 64, con lo cual tambien podrías trabajar con esta arquitectura.

 Desde Windows 7, haremos lo siguiente:

 Inicio--Todos los Programas--Accesorios--Herramientas del Sistema--Información del Sistema.

 Y en el apartado Tipo de sistema lo veremos: X86=32  o X64=64  bits.

 Visto ésto, entramos en la página oficial de Bactrack http://www.backtrack-linux.org/downloads/ , pasamos del botón Register and download y pinchamos en Download.


 En la siguiente pantalla, en Bactrack Release:  Elegimos Backtrack 5 R1

 En Windows Manager: Elegimos GNOME

 En Architecture (como ya lo sabemos) y yo tengo 64 bits en mi portátil con Windows 7: Elijo 64.

 Image Type: ISO

 Download Type: Direct.

 Veréis que en la misma pantalla a la derecha de las opciones, está el resumen de lo que queremos bajar (Image name, size, Desktop, etc ...) y justo debajo hay una pequeña casilla en blanco que debemos seleccionar. La activamos.


 Ahora la siguiente pantalla, automáticamente debería darnos el enlace de descarga para guardar el archivo en el disco duro.  Si no fuera así, haremos click en un pequeño enlace en naranja que reza "download link" y ya tendremos el enlace.

 Ponemos guardar y listo. Se nos descargará en la carpeta Descargas el archivo imagen .iso.

 Seguimos para bingo...

 Ahora lo que toca, es comprar una memoria usb con, al menos, 8 gb para hacer el live usb con cambios persistentes. En mi caso, un pequeñete Toshiba que es mu guapo.

 Lo formateamos en FAT32 en plan rápido, y ya lo tenemos listo para usar como cobaya de nuestro experimento, je je.

 Una vez instalado el Linux Live Usb Creator en nuestro sistema, lo ejecutamos. Aparecerá una interfaz gráfica con las siguientes opciones:



       Paso 1: Elija su unidad

 Elegimos nuestra memoria usb (Toshiba)

       Paso 2: Elija una fuente.

 Escogemos imágen Iso. (La iso que descargamos de Bactrack 5 r1)

 Es probable que al comprobar la distro, no sea compatible con las distribuciones que vienen preconfiguradas con Lili, pero no importa ya que utilizará la versión más adiente que de todas formas servirá.

        Paso 3: Tamaño de persistencia.

  Aparece una barra con el tamaño que deseamos añadir a nuestra live. Yo he utilizado poco más de 2 gb, que para lo que queremos es más que suficiente...

        Paso 4:  Opciones.

  Pasamos de activar nada.

        Paso 5: Creación.

  Pinchamos en el rayo Mcqueen para que empiece el proceso.

 Bueeeno, ya estamos en marcha. Esperaremos escasamente de 15 a 20 minutos para que se poche la Live.

 Una vez terminado, veremos que nuestro Backtrack ya está listo para usarse. Muy bien.  De ahora en adelante diremos adios a Windows y nos adentraremos en los abismos misteriosos del mundo Linux.

 Reiniciamos el ordenador con la memoria usb conectada, y al arrancar, antes de que nos cargue Windows, pulsaremos la tecla suprimir o Del para acceder a la configuración de la Bios. Buscamos el orden y preferencia de arranque del ordenador y seleccionamos en primer lugar que arranque con Usb y en segundo lugar con nuestro disco duro. Esto hará que si tenemos una memoria usb pinchada en el ordenador, al encender el sistema, primero leerá nuestra memoria usb y a falta de éste, seguirá con el disco duro como siempre. Hacemos un save and exit setup y nuestro ordenador reiniciará, ahora sí, con nuestro Backtrack en primer orden.

 Una vez aparezca el menú con diversas opciones, tendremos 30 segundos para pensar que coger.

 Sin más dilación, elegimos la opción "Persistent mode". El sistema arrancará y antes de entrar en entorno gráfico tendremos que escribir la siguiente orden:

  startx

  Nota: Veréis que Bactrack al iniciar el entorno gráfico, se queda como bloqueado y no responde a nada durante uno o dos minutos. No os preocupéis, es normal. Ya puedes poner el portátil en su sitio. Paciencia.

 Cosas que podemos y debemos hacer una vez dentro antes de compilar todo, importante cambiar la configuración del teclado que viene por defecto en inglés a español. Vamos a allá:

 Pinchamos en la pestaña System. Luego Preferences. En el menú desplegable, Keyboard y ahora la pestaña Layouts. Damos en el botón Add...

 En el apartado Country y Variants, elegimos nuestro idioma, usea Spain.

 En la pestaña By language, en Language seleccionamos Spanish, Castilian y en Variants cogemos Spain.

 Pulsamos el botón Add.

 Volvemos a la pantalla principal. Aquí tenemos que seleccionar el idioma USA y darle a Remove. Adios.

 Ya solo nos queda nuestro idioma. Pinchamos en Apply System-wide... y cerramos la pantalla con Close.
 Listo. Ya podemos teclear correctamente los caracteres de nuestro teclado.

 Lo siguiente que vamos a hacer es crear un acceso directo del navegador Firefox en el escritorio (Desktop). Para ello pinchamos en Applications-Internet y en el menú desplegable, hacemos click derecho en Firefox Web Browser. Add this launcher to desktop. Listo.

 Por qué no, hacemos lo mismo con Wicd Network Manager (gestor de conexiones a internet). Listo tambien.

 Ahora debemos conectarnos a internet para descargar librerías, actualizar Kernel y demás descargas necesarias. Lo de conectarse a internet ya es bastante obvio, cada cual lo hará a su manera.

 Ahora ya podemos meternos de lleno en el percal. Abrimos una terminal (shell). Pinchar el icono de pantalla negra que hay al lado de la pestaña System.

 Lo primero que haremos, es una actualización del sistema:

 apt-get update

 Ahora prepararemos el kernel source de Backtrack:

 prepare-kernel-sources
 cd /usr/src/linux
 cp -rf include/generated/* include/linux/

 Nota: Cada linea roja es una orden distinta.

 Bien, llegó la hora de instalar el driver de la tarjeta gráfica ATI.

 Descargamos el driver desde aquí: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx

 Actualmente el driver Catalyst va por la versión 13.1. Nos bajamos éste al escritorio (Desktop). Recordad que este driver es para Linux. No os descarguéis la versión Beta. Podría contener errores.

 Una vez descargado en el Desktop, lo descomprimís ahí mismo y renombráis el archivo .run a catalyst.run.
Más que nada para abreviar un poco el nombre del archivo. Ok.

 En la terminal:

 cd /root/Desktop/
 chmod +x catalyst.run
 ./catalyst.run

 Seguimos las instrucciones de la interfaz gráfica (instalación automática) y cuando termine, nos pedirá que reiniciemos. Le decimos que no y luego aparte en el terminal:

 reboot

 Volvemos a arrancar, siempre en modo persistente y ya tendremos el driver actualizado.

 Ahora nos descargamos el soporte open-cl para ati (AMD-APP-SDK) http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx
 En la pantalla que aparece, buscamos esta linea: To get the AMD APP SDK with OpenCL Support, go to Downloads. Le damos al enlace en rojo.

 Como tengo arquitectura 64 bits, descargo el archivo AMD-APP-SDK-v2.8-lnx64.tgz en el Desktop.
 Descomprimimos allí y renombramos con AMD-APP.sh.  Perfecto.


 Open terminal y:

 cd root/Desktop
 ./AMD-APP.sh

 Al terminar de instalar, nos aconseja que reiniciemos para que se reflejen los cambios. Pero pasamos un huevo y continuamos...

 Vamos a descargar ahora unas cuantas librerías (que majas ellas) para que todo ésto cuaje.

  apt-get install libroot-python-dev libboost-python-dev zlib1g-dev libssl-dev cmake libboost1.40-all-dev

 Armarse de paciencia, ésto tarda unos pocos minutos.

 Modifiquemos los parámetros Ati Stream.

  echo "ATISTREAMSDKROOT=/opt/AMDAPP
  export ATISTREAMSDKROOT" >> ~/.bashrc
  source ~/.bashrc

  Descargamos e instalamos la aplicación CALPP que necesita Pyrit:

 svn co https://calpp.svn.sourceforge.net/svnroot/calpp calpp
 cd calpp/trunk
 cmake .
 make
 make install

 Y por último ¡¡ descargamos e instalamos Pyrit con soporte Opencl (cpyrit) !!

 svn checkout http://pyrit.googlecode.com/svn/trunk/ /tmp/pyrit
 cd /tmp/pyrit/pyrit && python setup.py build && python setup.py install
 cd /tmp/pyrit/cpyrit_opencl && python setup.py build && python setup.py install

 Fantástico. Ya hemos terminado. Si todo ha funcionado bien pyrit debería reconocer nuestra ATI para trabajar con ella.

 pyrit list_cores

 La pantalla arrojará algo así: Open-cl device seems available. En mi caso, en el portátil aparece "Cedar" que es como se llama la gpu gráfica.


 Vamos a testearla con la siguiente orden:

  pyrit benchmark

 Y aquí me llevé el chasco. 3000 palabras por segundo. De ahí que dijera que poco premio para tanto quebradero de cabeza.

 Bueno. Lo importante es que ya tenemos el portátil con su Backtrack preparado con pyrit.

 Vamos a convertir la frase POCO PREMIO PARA TANTO SACRIFICIO por un QUE GOZADA TENER ESTO.

 Me compré una tarjeta gráfica ATI Mobility Radeon HD 6570 con 1 Gb de memoria GDDR3 Pci para el ordenador de sobremesa (te vas a enterar tú). Me compro otra memoria usb y repito el proceso de este tutorial y me reconoce la GPU con el nombre "Turks" y al hacer un benchmark me obsequia con 12.000 palabras por segundo. QUE GOZADA TENER ESTO.


 Vamos a probar un handshake con pyrit y el Backtrack de sobremesa.

 Debo aclarar una cosa. Pyrit es un poco reacio a reconocer handshakes. Me explico. Con una o dos desautentificaciones al AP podemos conseguir el saludo, reconocible perfectamente por Aircrack.
Aunque no estén todas las partes del saludo, podemos trabajar con un diccionario muy bien. No es así con Pyrit. Pyrit necesita de más desauntentificaciones para conseguir el handshake íntegro. Es así de caprichoso. ¿ Cómo podemos comprobar si un handshake es válido con Pyrit ?. Con la siguiente orden:

 pyrit -r (archivo de captura).cap analyze

 De esta manera está corrupto.


 Así es bueno.


 Bien. Ahora vamos a pasar un diccionario a pelo sin tablas Rainbow precomputadas.

 Como tenemos una tarjeta gráfica guapa que va a hacer todo el trabajo sucio por nosotros, insertaremos la siguiente orden:

 pyrit -r (archivo de captura).cap -i (ruta del diccionario) attack_passthrough

 Y aquí vamos con la novena maravilla del mundo...


 Bueno compañeros. Hasta aquí este manido tutorial para hacer funcionar las GPUS gráficas de las
tarjetas ATI con Pyrit. Espero haber sido bastante claro y ameno dentro de lo posible. He intentado ser explícito en la medida necesaria en cuanto a niveles de usuarios que recien empiezan con ésto y tambien para usuarios avanzados que habrán obviado muchos pasos de los aquí descritos.

 Por tanto, me sentiré satisfecho y orgulloso si este post os ha ayudado mucho, dentro de mis humildes conocimientos, que se resumen básicamente en probar, probar y probar. Y como no me quiero quedar en secreto con mis avances, los comparto con todos para, que al igual que yo, podáis ir avanzando en este gran mundo de la seguridad de la redes WiFi.

 No quiero extenderme mucho más en el tema. Sabéis perfectamente que aparte de ATI, tenemos tambien otras opciones para trabajar con Pyrit (no sólo de ATI vive el hombre). Quien posea una tarjeta gráfica Nvidia con soporte Cuda tambien disfrutará de sus grandes posibilidades. Lo que pasa es que este tema ya no me atañe, ya que para mí me dió menos problemas trabajar con ATI que con
Nvidia. Cada cual buscará su mejor camino.

 Y ya por último, unos pequeños baremos a tener en cuenta con Opencl device "Cedar" (portátil) y Opencl device "Turks" (sobremesa).

 ATI, con su gama de tarjetas HD Mobility Radeon, que yo sepa, son compatibles con Pyrit y Opencl, desde las 4850 en adelante.

 En el portátil tengo la HD 5470 de 512 megas y ningún problema. Menor proceso, pero bien.

 Un diccionario de 100 megas contiene 10 millones de palabras. A 3000 palabras por segundo, tarda
poco más de una hora.

 Si usamos la CPU del portátil con sus cuatro núcleos sin Pyrit, procesamos 1300 palabras por segundo. Dicho de otro modo, el diccionario anterior tarda en pasarlo 2 horas y 17 minutos aprox.

 Con el ordenador de sobremesa, con Pyrit y mi gráfica HD 6570 1gb GDDR3, a 12000 palabras por
segundo y acogiéndonos al diccionario de ejemplo, tardamos tan solo 14 minutos y 26 segundos aprox en pasarlo.

 Si hacemos un cálculo un poco más amplio, tenemos que:

 A 12000 keys por segundo: 1 diccionario de 2 gb de memoria tarda aprox 4 horas y 45 minutos.
                                              1 diccionario de 40 gb de memoria tardaría aprox 100 horas, que traducido al cristiano vendrían a ser 4 días y 4 horas.

 Más o menos con ésto, podéis hacer un cálculo aproximado de lo que tardaría una cosa u otra.

 Ahora sí, me despido de vosotros, pensando en el siguiente tutorial. ¿ Qué será Dj ?.

 Saludoschau.