Hola a todos, en la entrada anterior hablamos sobre las jaulas de faraday y como lo prometido es deuda, anoche me puse en ello y a grabarlo entonces se tuvo un resultado, no es tan profesional pero se realizo la prueba respectiva, haciendo uso de papel estañado lo vemos a continuación la PoC.
-___- NO se porque hasta ahora Youtube no me da luz verde, cuando ande, arriba actualizo.
Al encontrarse bloqueado el teléfono no se realiza el cambio a modo Avión lo cual nos permitiría evitar la comunicación del teléfono así que en este caso para determinar que hizo Pepito debemos de romper el bloqueo del mismo, para ello es necesario conocer los diferentes tipos de bloqueo.
Tipos de Bloqueo
- Bloqueo por Patrón
El bloqueo por patrón es el mas conocido y usado el cual debe de tener como mínimo 4 conexiones vi a algunos que hacen uso de todos :| si me sorprende, hasta note que se olvidaron dicho Patrón xD y toca probar y probar. La desventaja de esto es que tenemos 5 intentos de ahí nos da un tiempo de espera para intentar y nuevamente a lo mismo pero tras un numero de intentos el teléfono es bloqueado.
- Facial
El bloqueo facial es el que los teléfonos de ultima generación cuentan, lo cual consiste en desbloqueo del dispositivo con tu mejor perfil, un poco complicado el de saltarnos este tipo de bloqueo no? .. A no ser con alguna foto del usuario ? :) se hará la prueba respectiva después.
- Código PIN
El otro tipo de bloqueo es por medio de un PIN el cual cuenta con 4 dígitos, a si también el de una frase algo mas complicado por decirlo así.
Técnicas para evadir la protección
Bueno ahora debemos de conocer las técnicas para evadir la protección cabe resaltar que si conocen otras indiquen en los comentarios que ayudaran bastante!
- Smudge Atack
Esta técnica es usada gracias al aceite que segrega nuestro organismo y al hacer uso del móvil se dibuja el patrón, quien no trato alguna vez de adivinar así el patrón?.
- Ataque de fuerza bruta
Los ataques de fuerza bruta, es realizo contra los PIN no así con el Patrón de bloqueo debido a que contra este se hace de un match de Hash por decirlo así este punto veremos luego a mas detalle.
- Screen Lock Bypass
Es por medio de una aplicación la cual realiza un ataque por fuerza bruta con el detalle que es muy intrusiva puede llegar a convertir el dispositivo en un pisapapeles.
- Ataque a lo bruto y mensamente.
Este lo llamo así por lo siguiente que consta en realizar un rm del gesture.key y obtener acceso, como los verdaderos forenses esto no vá quizas cuando necesitemos quitar el patrón porque al amigo, familiar se le fue nos sirva ;).
Cabe resaltar que cada una de estas técnicas excepto Smudge Atack es necesario contar como root en el teléfono.
Aquí viene lo interesante y si no esta rooteado el teléfono que hacemos? existe otra forma de realizar el análisis? eso lo veremos conforme se vaya avanzando ;).
Validando el acceso root del dispositivo
Lo primero que haremos es que el dispositivo ande rooteado para ello procedemos a ir a una terminal e ingresamos el siguiente comando adb devices.
Nota: Ojo que tenemos que tener previamente instalado adb ;).
Listando los dispositivos conectados
En la imagen se observa quesi se tiene un dispositivo conectado, ahora procedemos a validar el acceso root, con adb root y nos debe de contestar que si se encuentra en modo root.
Probando…..
Pero WTF? No el dispositivo no se encuentra rooteado ???, en todo este trajin sucede algo raro la razón para mi es casi desconocida pero gracias a @neosysforensics que me lanzo el cable y según sus comentarios anda el problema en default.prop la variable debuggable=0 como accedemos al archivo se puede observar lo siguiente:
\# cat default.prop
cat default.prop
#
\# ADDITIONAL\_DEFAULT\_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0
persist.service.adb.enable=0
Este punto lo analizare mas a fondo… y vere exactamente la razón me ha dejado con la intriga.
Pero que sucede si tenemos acceso directo? sin problema alguno aqui un ejemplo realizado.
Es diferente no? ;).
En este punto andaba ya rendido, hasta que @neosysforensic me lanzo el cable necesario por lo cual paso a explicar a mi corto entender.
Todo listo para el ataque!
Rompiendo el patron de Bloqueo
Obteniendo gesture.key con netcat
Primero realizamos un adb forward por medio de tcp al puerto 5555 como se muestra a continuación.
\[snifer@rizel ~\]$ adb forward tcp:5555 tcp:5555
Ahora accedemos a una shell por medio de adb y nos ponemos en modo su ahora aquí viene la interactuación con netcat la navaja suiza, mandando el archivo gesture.key así:
\# /system/xbin/busybox nc -l -p 5555 < /data/system/gesture.key
Tras esto en otra terminal lo bajamos :D
\[snifer@rizel Desktop\]$ nc 127.0.0.1 5555 > gesture.key
Una breve validación realizando un cat. y si lo bajamos!!!
\[snifer@rizel Desktop\]$ cat gesture.key
Cr�Ka��@�s�g6���n �y
Ahora si toca ejecutar la herramienta Android Patern Lock Crack Pattern que solo necesita el gesture.key como parametro.
[snifer@rizel]$ python2.7 crack.pattern.py gesture1.key
BINGO!!
Bueno ya accedimos al celular de Pepito rompimos el patrón el próximo paso es el de ponerlo en modo avión!.
No nos iremos,sin romper más gesture.key!!! Aunque esto sea realizado como una prueba de Concepto para jugar pedimos ayuda de Waltico y StuxnetR00t los cuales me mandaron sus gesture.key.
La forma tradicional - Con acceso adb root
Para obtener el gesture.key es necesario ser root en el telefono y realizar un pull del mismo que se encuentra ubicado en /data/system/gesture.key
\[snifer@rizel\]$ adb pull /data/gesture.key
Con ello obtendremos el gesture.key ahora toca hacer uso de cualquiera de estos dos scripts La primera es decode gesture la cual hace uso de un Diccionario que es AndroidGestureSHA1 y con el hace la prueba basandose en los hashes el script es decodeGesture el repositorio aquí Se muestra en la siguiente captura la ayuda:
Y basta con poner el gesture.key y el diccionario que descargamos con anterioridad.
\[snifer@rizel\]$ python2.7 decodeGesture.py -g \[ARCHIVO GESTURE.key\] -d AndroidGestureSHA1.txt
El resultado es el siguiente, que tal?
La otra opción es hacer uso del script tambien desarrollado en Python que es Android Patern Lock Crack Pattern que solo necesita el gesture.key como parametro.
\[snifer@rizel\]$ python2.7 crack.pattern.py gesture1.key
Y miren en menos de 1 minuto tenemos el resultado, en las capturas observamos los resultados desde patrones de 4 hasta mas complicados.
Otra forma de acceder al telefono es el método que hablamos al principio del post que es a lo bruto para ello basta con realizar el borrado del patrón con el siguiente comando
adb shell rm /data/system/gesture.key
Y listo chau protección ;) el mismo caso se da cuando se tiene con password.key es decir eliminar el PIN de bloqueo, ahora toca dar de baja o mejor dicho obtener el PIN.
Rompiendo bloqueo por PIN
Ahora procedemosnuevamente a obtener el archivo password.key tal cual realizamos con ayuda de netcat.
\[snifer@rizel ~\]$ adb forward tcp:5555 tcp:5555
\# /system/xbin/busybox nc -l -p 5555 < /data/system/password.key
\[snifer@rizel Desktop\]$ nc 127.0.0.1 5555 > password.key
Y por ultimo obtenemos el archivo settings.db que se encuentra en /data/data/com.android.providers.settings/databases.
\# /system/xbin/busybox nc -l -p 5555 < /data/data/com.android.providers.settings/databases/settings.db
\[snifer@rizel Desktop\]$ nc 127.0.0.1 5555 > settings.db
Como se imaginarán el archivo es un sqlite, por ello haremos uso de un visor en este caso usaremos Sqlitestudio tras importar la base de datos setting.db que cuenta con 5 tablas.
El porque obtuvimos este archivo es para acceder a su salt
Desde este punto les dejo de tarea ;). androidpincrack
Ahora si vamonos!!! fue un dia bastante estimulante y aprendimos demasiado.
Gracias al grande @neosysforensics por la ayuda brindada, el dia de ayer aprendí del grande ;).
Recursos Usados
ANDROID PIN CRACK: androidpincrack
ANDROID GESTURE SHA1: AndroidGestureSHA1
Android_Forensics
ANDROID PATERN LOCK: Android Pattern Lock
Regards,
Snifer