ACELERANDO EL PROCESO DE CRACKING CON PYRIT CON AYUDA DE NUESTRA GPU Y ACELERACION GRAFICA.
Una de las muchas cuestiones al abordar una auditoria y que nos encontremos con ciertas problematicas como el rendimiento dentro de un crackeo de passwords o en su defecto de como podriamo aumentar esta eficacia y eficiencia a la hora de estar auditando la fortaleza de nuestras credenciales o las credenciales mismas de nuestros clientes.
lo anteriormente descrito se podria hacer uso de un paradigma aunque no muy nuevo si que novedoso y algo complejo de manipular y configurar por simples mortales, hablamos nada mas y nada menos que el paradigma de la computacion paralela , aquel paradigma tiene por objetivo usar la extension de la tecnologia y el poder de procesamiento de varios procesadores enfocados en una sola tarea o un conjunto de tareas especificas pero con un mismo objetivo.
la siguiente imagen puede ilustrar muy bien lo que es el paradigma o al menos conceptualmente el paradigma de computacion paralela, como su nombre lo indica paralelamente trabajando en una sola tarea para que este poder de computo sea mas eficiente en completar dicha tarea o conjunto de tareas.
Si conocemos muy bien otro concepto llamado hilos, lo podremos concatenar y asimilar mejor con el de computacion paralela , cada hilo trabaja como un proceso computando y calculando una tarea dentro de su ejecucion del procesador correspondiente, por ejemplo cuando nosotros abrimos un programa o aplicacion dicho hilo de ejecucion va procesando el proceso valga la redundancia y entonces es cuando hace uso de una minima parte de nuestra CPU o GPU en el caso de los videojuegos o algunos software que requieran el uso de la unidad de procesador de graficos existente en nuestros ordenador o vuestro ordenador, en dichos casos se podria especular que a cada proceso se le asigna un ID de proceso que es lo que podemos ver en nuestro listado cuando ejecutamos en la terminal de windows TASKLIST o en dado caso si usamos unix/Linux ps, en los anteriores listados observaremos el proceso ID asi como los parents IDS que son los PPID, cada proceso tiene hijos y padres, por ejemplo si un proceso depende de otro subproceso entonces el S.O hace un calculo inmediato para asignarle sus respectivos IDS y de esta forma poder trabajar entre las memorias correspondientes como la RAM, procesador y HDD o SSD.
en la imagen anterior podremos observar claramente el concepto de computacion paralela, a lo que los datos de entrada y las funciones que realizara cada proceso se veran vinculados a cada hilo o conjunto de hilos como vimos en la anterior explicacion dentro de este mismo articulo, ahora teniendo un panorama mental de la realizacion de hilos y procesos como se ve ilustrado en la imagen , si agregamos a esto mismo un poder de computo extra por asi decirlo podremos triplicar y quantiplicar nuestro tiempo y poder de calculo para realizar una sola tarea y poder acabarla en tiempo y forma de una manera optima y con mucha rapidez, esto nos viene bien si tenemos que crackear alguna password de una longitud variable o comunmente se utiliza para romper handshakes recordemos que estos ultimos no solo se utilizan en redes inalambricas si no que se utilizan en multitud de protocolos o servicios tales como son los casos de base de datos orientadas a objetos, etc.
como veremos mas adelante pyrit es una herramienta que nos ayudara con esta tarea , primero checaremos que GPU tenemos instalada en nuestra maquina o si tenemos GPU en paralelo esta herramienta tambien la detectara, en algunas distribuciones de linux especializadas en seguridad informatica ya se tiene instalada por defecto en algunos otros casos no, por lo que bastara un simple comando para instalarla el cual es el siguiente:
sudo apt-get install pyrit.
dependiendo si tu distribucion tiene instaladas ciertas librerias o dependencias te pedira que instales las dependencias necesarias, en caso contrario si tienes tales dependencias se procedera a instalar directamente la herramienta.
ahora falta comprobar que tengamos los drivers necesarios para que nos detecte nuestra GPU o conjunto de GPUS, para eso no hace falta mas que cerciorarse de que tengamos los controladores adecuados en el caso de linux o unix este ultimo sistema operativo detecta e instala automaticamente los drivers necesarios para el funcionamiento adecuado de nuestro ordenador.
en la imagen siguiente vemos que los hilos y procesos de ejecucion se concatenan para solucionar una tarea o conjunto de tareas, eso es en esencia particularmente el objetivo de la computacion paralela para trabajar en un mismo proceso y acelerar los calculos computacionales dentro de un mismo objetivo.
como podemos ver en la siguiente imagen, los procesos trabajan en conjunto y la tarea disminuyen el tiempo que deberia de tomar con un unica unidad de procesamiento grafico , aunque si lo analizamos am detalle comunmente la unidad de procesamiento grafico tiene mucho mas poder de calculo computacional que algunos procesadores ya que la tarea es mucho mas rapida debido a los buffers contenidos y el arreglo de estos dentro de los procesamientos con los que trabaja la GPU o unidades de procesamiento grafico.
podriamos diferenciar facilmente los cuadros verdes como las tareas o procesos en ejecucion asi como los hilos dentro de la unidad de procesamiento grafico y los recuadros azules son las unidades de procesamiento osease las GPU debidamente en paralelo o concatenadas aunque podria cada una de disponer de su tasa de refresco propia, podriamos suponer que estan conectadas en paralelo y el ultimo recuadro verde es la salida de ejecucion de todo el resultado de los hilos conectandose en paralelo, esta es la verdadera magia de la computacion paralela trabajar y acelerar el poder matematico de los ordenadores para asi tener una suma inigualable, dicho esto ahora vamos a terminar con las explicaciones teoricas y vamos a proceder a utilizar la herramienta pyrit y como le podemos sacar el maximo provecho.
en la terminal colocamos el siguiente comando para proceder a visualizar cuales procesadores graficos GPUs tenemos a nuestra disposicion en nuestro ordenador con el comando siguiente procederemos a lograr esto ultimo:
pyrit list_cores
con el cual el resultado deberia ser como se muestra en la siguiente imagen:
como podemos ver nos muestra el listado de lo que es claramente las unidades instaladas en nuestro ordenador que estamos utilizando, podremos ver los cores que estas unidades graficas tienen tambien para su funcionamiento interno asi como usar el siguiente comando pyrit benchmark para ver y verificar como su nombre lo dice las capacidades tecnicas de las unidades de procesamiento previamente instaladas con sus respectivos controladores, dentro del anterior benchmark podremos comparar cuanto tarda en procesar la GPU calculos de ida y vuelta o mejor conocidos en la jerga informatica como RTT podremos observar que algunos calculos los regresa de 3 ms u otros de 2.9 ms asi mismo esta herramienta es capaz de detectar el modelo de la gpu en este caso es una GeForce GT.
tambien podriamos trabajar en conjunto con otras herramientas de seguridad para importar las passwords que necesuitamos para roimper con pyrit, en este caso podriamos crear passwords aleatorias desde crunch o alguna otra herramienta de creacion de diccionarios de fuerza bruta e importarlas para pyrit, ademas de poder utilizar wireshark para capturar archivos .pcap que demuestren que contienen handshakes que podremos romper o incluso analizar para ver si en realidad la captura o la escucha de beacons frames ha sido exitosa.
vemos la siguiente imagen que estamos analizando una captura para leer si hemos logrado exitosamente la captura de paquetes de redes inalambricas, aunque cabe destacar que pyrit no solo se utiliza para crackear handshakes de redes inalambricas si no que ademas podemos crackear servicios y protocolos de otras tecnologias.
en la imagen siguiente vemos la multitud y gama de opciones que tenemos para configurar mediante los parametros requeridos a la herramienta:
en las primeras opciones podremos reconocer estamos viendo filtros por ESSID o BSSID que serian las estacione de trabajo inalambricas asi como los AP inalambricos que le dan acceso o puerta a los clientes inalambricos, asi como podremos listar todos los handhsakes o tipos de estos ultimos que soporta la herramienta con la opcion --all-handshakes , mas abajo podremos ver los comandos reconocidos como nos dice la lista de la herramienta, analyze es la opcion para verificar si existen dentro de la captura que le hemos pasado a la herramienta si tenemos el handshake capturado o por el contrario los paquetes no se capturaron bien.
sin mas por el momento, me despido, happy hacking y hackea al maldito mundo :).
The Pentester Diaries.
REFERENCIAS Y ENLACES TECNICOS:
brute force
computacion paralela
defensa de redes
passwords
Red Team
0 comments:
Publicar un comentario