Analisis Forense a Android II - Rompiendo patrones de seguridad en Android

2 comments
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

2 comentarios

  1. Excelente post, ya lo he estado probando con dispositivos rooteados y no rooteados, se puede lograr eliminar el patron/pin aunque el dispositivo no este rooteado con un par de scripts que estan en la red, y tambien se puede obtenerlo cuando el dispositivo esta rooteado ,siguiendo tus pasos, el gran problema es . Que pasa cuando el dispositivo no tiene activada la depuracion USB ? (la mayoria de la gente la tiene desactivada)
    Ese es el gran problema con el que me he topado y aun no puedo resolver.
    Saludos desde Cbba Snifer
    PD. No te olvides de continuar el post de Dendroid por favor, gracias

    ResponderEliminar
    Respuestas
    1. Para ir contra la depuración por USB vendra en una próxima entrada necesito algo de tiempo para dedicarme a la entrada y lo haré dalo por hecho.


      Regards,
      Snifer

      Eliminar