15/5/15

Firmware Reverse Engineering - Bypass WifiPineapple Verification






Esta  era la pantalla que nos estaba causando problemas, como no tenemos el hardware original de la WifiPineapple, pero si el software (firmware), no podíamos ver que leds eran los que estaban “On”, “Off” o “Blink”.

Mirando un poco, buscando, si alguien ya lo había hecho, y discutiendo con gente de la comunidad RemoteExecution, se plantearon algunas opciones como el bruteforcing del patrón de 4x3, sugerido por gonza_cabrera, pero como no tenia idea si el TL-MR3020 podia llegar a bloquearse o si había algúna medida de seguridad que saltara después de X cantidad de intentos, por miedo a que esto pase volvi a la idea original de encontrar una solución dentro del firmware.

Habia visto algunos videos de la BlackHat o de la DefCon donde realizaban un reverse a los firmwares de Camaras ips y de routers, asi que el principio tiene que ser el mismo, la verificación no se hace online asi que tiene que estar dentro del código.

Entonces con el Firmware-mod-toolkit extramos los archivos del firmare y los vamos revisando.
./extract-firmware.sh upgrade-2.3.0.bin

extrae todos los archivos de binario en la carpeta “rootfs”, lo que nos permite analizarlos carpeta por carpeta, archivo por archivo (parece como mucho quilombo).

Como yo ya había hecho este proceso y había pasado todos los archivos al pendrive, simplemente apague el mr3020, luego lo retire y pase a analizar desde mi pc. Voy a aclarar, que antes hice una prueba “online”, es decir con el router conectado a internet e ingresando a la dirección ip para el setup, y lo revise con el Live HTTP headers, para ver si me llevaba a algún lugar interesante, y esto adelanto mucho el trabajo como vamos a ver mas adelante.

La realidad, es que primero, me enfoque en un archivo js que era llamado en cada una de las paginas, pero la verdad me estaba confundiendo. Y voy a hacer otra aclaración, para programar soy un desastre y mis conocimientos son mas que básicos.



Como se puede ver, siempre va a la misma carpeta o directorio /includes/welcome y estas se encuentran dentro de la carpeta pineapple.
Si vemos dentro de la carpeta includes, se encuentra el header.php además de otras carpetas como la /welcome/ que básicamente el archivo header establece que va a estar en todas las paginas del sitio y muestra que funciones va a llamar, y que archivos va a incluir, entre ellas el archivo welcome.inc.php, que es donde la magia pasa.


Cuando revisamos este archivo, nos encontramos con la función que realiza la verificación entre otras. Una vez que me encontré con esa función function verifyPineapple($post) me comunique con Daniel Godoy, ya que no se una goma de PHP. A lo que me respondio, una papita, y después de pelear un rato encontró la manera de bypassear la verificación. El texto seleccionado en la imagen de abajo, hace la verificación, es el que hay que reemplazar.


El codigo que verifica es un condicionador IF, que de darse las condiciones que solicita, verifica el wifipineapple. Por lo que Daniel, me envio el parche, o bypass donde establece que como la condicion es correcta es decir TRUE, se debe verificar. Como se muestra en el texto seleccionado abajo.



Asique una vez completado esto, por si no se ve en la imagen el codigo es el siguiente:

/////Nulled #RemoteExecution
if (true)
{
    $_SESSION['verified'] = true;
    return passwordForm();
}
///////////////

Guardamos los cambios, insertamos el pendrive nuevamente en el MR3020 y navegamos a la configuracion, marcamos cualquier opcion, pero si o si todos los colores, le damos a Continue, y ahora a setear nuestra contraseña de root, despues de configurar todo lo que nos piden ya tenemos nuestro WifiPineapple Clone funcionando. Y como ven pwned!











No hay comentarios:

Publicar un comentario