lunes, 12 de noviembre de 2012

[Hack] Android Facebook Disclosure & Como robar una cuenta

Hace tiempo que venia pensando como podría ser el funcionamiento de la aplicación móvil de facebook. Me intrigaba como la aplicación obtenía los datos de una consulta web. Es decir, el navegador envía una consulta y el servidor devuelve una respuesta con el contenido del archivo html que luego interpreta y muestra. Básicamente siempre se envía una consulta, quizá algo diferente en AJAX pero internamente es el mismo proceso. Entonces ¿Como la aplicación recibía la información y la almacena para luego mostrarla? no me refiero a la conexión ya que es cuestión de sockets, sino al almacenamiento de cookies, datos etc.

Basándome que android tiene una ruta general para almacenar los datos del móvil, y que utiliza SQLite (un psudomotor de base de datos con estructura, metadatos y datos en un solo archivo)  para almacenar toda la información, decidí  realizar el mismo procedimiento que en la entrada de whatsapp http://gonzac-studios.blogspot.com.ar/2012/03/hack-obtener-mensajes-de-whatsapp.html :

Utilizo el Android Terminal Emulator para abrir una terminal o consola y así acceder a los directorios del sistema y usatilizar algunos comandos de linux.
A diferencia de con whatsapp, los archivos base de datos de facebook tienen restringido copiar o mover los archivos. Es decir que si nos posicionamos en la carpeta donde se encuentran los archivos para copiarlos o al revés, posicionados desde la tarjeta de memoria. No se nos permitirá aunque seamos superusuarios.

La primera falla está en que el sistema no bloquea la manipulación de la carpeta, entonces uno puede copiar la carpeta con sus archivos en su interior. Ya sea utilizando copia recursiva, o copiando solo la carpeta base de datos de facebook.
Como no sabia exactamente donde buscar, lo que hice en una primer instancia fue utilizar copiado recursivo donde antiguamente encontré la base de datos de whatsapp. De esta forma copie todos los datos de la carpeta "/data/data" para luego analizar con mas detenimiento cada carpeta.


Dentro de esta carpeta existe una llamada "com.facebook.katana" y dentro de la misma otra llamada "databases". En esta ultima el segundo fallo; facebook no encripta los datos.
¿Que se guarda en ellas? Dentro hay 3 archivos, el mas interesante es el "fb.db". Al igual que con whatsapp, utilizo el SQLite Manager para abrir la base de datos y ¡Eureka!. 
La aplicación facebook hace una consulta al servidor, en primer lugar enviando el usuario y la contraseña para luego obtener una sesión y todos los datos que necesita para visualizar. Es decir, el servidor envía las notificaciones, noticias, mensajes, información de contactos, etc. Las almacena y guarda para luego tener un fácil acceso a ellas. 
-Datos de amigos de facebook

-Información de amigos, para agregar a la agenda

-Historial de chat

-Contactos con los que se ha conversado

Un usuario o aplicación maliciosa que tenga acceso al móvil  roba esta base de datos y puede tener acceso a la información que se registró en el momento. Si bien es peligroso por la cantidad de información, existe un fallo gravisimo en la forma en que se conecta.

¿Como robar una cuenta de facebook?
El tercer fallo y el mas grave, es que para mantener la sesión iniciada en el móvil, la aplicación almacena las credenciales del usuario.


 Obviamente no se revela la contraseña, pero esta no es necesaria para iniciar sesión. La base de datos puede ser usada para ser leída por la aplicación móvil como una sesión ya iniciada. Veamos un ejemplo:
-En primer lugar no tiene que haber ninguna sesion iniciada
-En la tarjeta de memoria con la base de datos "fb.db" que un atacante robó previamente de un teléfono móvil. Utiliza el Android Terminal Emulator, copiando el archivo a la carpeta de facebook y forzando su reemplazo con el comando 
cp fb.db /data/data/com.facebook.katana/databases/fb.db -f
-Ahora al abrir nuevamente la aplicación, entrará directamente a la cuenta de facebook robada

---------------
Quizás con un poco de estudio, se pueda crear una aplicación para robar los datos, generar una credencial valida o romper el sistema de generación de identificaciones. Digo... son solo unas ideas.

33 comentarios:

  1. Respuestas
    1. En teoría explotando una vulnerabilidad y obteniendo una shell remota. se podria hacer desde el PC.
      Es cuestión de investigar un poco.

      saludos

      Eliminar
  2. hola disculpa no puedo hacer las instruciones de la terminal y me envia un error y no si puedas poner las intruciones para k sean mas legibles xfas

    ResponderEliminar
    Respuestas
    1. En primer lugar tienes que extraer la base de datos del celular mediante la terminal, abre la terminal y escribes los comandos uno por uno:
      su
      cd ..
      cd ..
      cd /data/data/com.facebook.katana
      cp -r databases /sdcard/

      Ahora tienes la carpeta en la terjeta sd y puedes llevarlos y colocarlos en otra tarjeta de otro movil. En ese otro movil, abres una terminal y escribes los comandos:
      su
      cd ..
      cd ..
      cd sdcard
      cd databases (es la carpeta que copiaste anteriormente)
      cp fb.db /data/data/com.facebook.katana/databases/fb.db -f

      Espero que se haya entendido.
      Saludos

      PD: Cual es el error que te tira?

      Eliminar
    2. yo no encuentro el archivo fb.db esta es mi ruta /data/data/com.facebook.katana/databases/ con que nombre esta ahora la base de datos de fb

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. not found me tira el el terminal emulator lo escribi como dices, osea esa informacion esta en la dentro de la memoria del cel? y lo q haces es sacarla a la micro para q sea visible?

    ResponderEliminar
    Respuestas
    1. Debe ser un problema de root, resulta que las nuevas versiones del terminal emulator no obtienen root por si solo, sino es necesario tener algun programa para rootearlo que le de permisos para ejecutar el 'su' y ademas poder acceder a algunas carpetas del sistema.
      Descarga algun programa para activar el root, como Universal androot, Superuser Android o algun otro.

      Saludos

      Eliminar
  5. es q creo q mi cel esta rooteado el not found me lo lanza cuando pongo el codigo cp -r databases /sdcard/ alli es q no me funca :/ sera por el mismo problema del root como dices?

    ResponderEliminar
  6. si men mi cel esta rooteado y lanza ese error cuando pongo ese comando cp -r databases /sdcard/ dice no found tengo un xperia play con android 2.3.4

    ResponderEliminar
  7. listo ya solucione el problema no mas q no se como abrir ahora esos archivos con el qlite :/

    ResponderEliminar
    Respuestas
    1. Tienes el Sqlite manager en Firefox? solo abre el programa que se encuentra en el menu de 'Herramientas' de firefox, y en la nueva ventana abres la base de datos, llendo al icono de una carpeta abierta o al menu 'Base de datos' y la opcion 'conectar base de datos'. Alado de donde se escribe el nombre del archivo cambias 'Archivos SQLite DB (*.sqlite)' por 'Todos los Archivos (*.*)' y buscas el archivo db.

      saludos

      Eliminar
  8. primero que nada muchas gracias con el aporte muy util nada mas estuve batallando con lo de la terminal me marcaba un error y prove copiando la carpeta de databases desde root explorer y funciona perfectamente,espero y no te moleste que comente esta otra opción, pero creo que hay muchos como yo que se hacen bola con la terminal jaja de nuevo gracias por la info

    ResponderEliminar
    Respuestas
    1. GRacias por el aporte, hay app que por ahi no se conocen tanto. Esta barbaro, sobre todo ahora que actualizaron el terminal emulator.

      saludos

      Eliminar
  9. Hola que tal,
    Tengo un galaxy note 1 y lo tengo rooteado. Ya tenia instalado en Root Explorer y pude sin problemas copiar el archivo fb.db a otra carpeta en mi tarjeta microsd y luego la envie por bluetooth a mi lap con win7 64b. Ya con el Mozilla FireFox y el complemento de SQLite Manager pude abrir mi base de datos de mi facebook. Mis respetos por tus aportes e informacion. Esta execelente. Solo tengo una pregunta, fijate que cuando abro la base de datos fb.db no me aparece en Tablets ningun mailbox (messages, threads y users). Sabes porque sera o como puedo hacer para poder verlos???. Muchas Gracias y un Saludo.

    ResponderEliminar
    Respuestas
    1. No estoy al tanto de las actualizaciones de facebook. Quizá aparezcan con otro nombre, tienen que estar registradas si la aplicación te permite tener un historial de la conversación.

      Saludos

      Eliminar
  10. Respuestas
    1. Haz un pregunta e intentare ayudarte. Saludos!

      Eliminar
  11. Tengo iPhone.. Alguna manera de hacerlo??

    ResponderEliminar
    Respuestas
    1. No tengo mucha experiencia con iPhone, y no tengo mobil para probar.
      Lamento no poder ayudarte.

      saludos

      Eliminar
  12. como saber la contraseña del facebook ya tengo la fb.db y ya lo abri con SQLite Manager pero como saber la contraseña

    ResponderEliminar
    Respuestas
    1. La contraseña no resolvi como "mostrarla" pero puedes reemplazar ese archivo en tu android, para entrar a su facbook sin ingresar contraseña.

      saludos

      Eliminar
  13. Gracias, mira es nesesario copiar la carpeta a travez del comando. Porque he sacadola carpeta a travez de un explorador no mas sin necesidad del comando. Segui los pasos. Cerre sesion y luego pegue el fb.db, pero sin utilizar el comando sino un copy y page normal y cuando inicie el fb no me colgaba. alguna ayuda

    ResponderEliminar
  14. probe de nuevo y nada cuando copia el fb.db, y luego inicializo el facebook, se cierra. me pueden ayudar

    ResponderEliminar
    Respuestas
    1. Si los archivos tienen los identificadores de session y cuando copias es capaz de reemplazar la carpeta, lo unico que se me ocurre es que hayan cambiado algo en las actualizaciones de la plicacion facebook.

      Me pondre a investigar, disculpa no poder ayudarte.

      Saludos

      Eliminar
    2. Si encuentras la solución o otra forma por favor avisar

      Eliminar
  15. Se sabe algo ya de porque se cierra la app de facebook una vez realizado todos los pasos?

    gracias de todas formas, muy buen tutorial

    ResponderEliminar
  16. Hola, la aplicacion terminal me da un error. Cant cd to /data/data/com.facebook.katana

    Estoy usando tambien root explorer y haciendo busqueda del archivo fb.db tampoco puedo encontrarlo.

    Que conste, estoy haciendo todos los pasos como los explicaste.

    Alguna ayuda?

    Gracias.

    ResponderEliminar
    Respuestas
    1. Quizá en alguna actualización de la aplicación android esta oculto o cambio de nombré. No he hecho pruebas recientes.

      saludos

      Eliminar
  17. tengo un lg y no me permite tirar esa linea de comandos en el terminal
    soy root

    ResponderEliminar
    Respuestas
    1. Es dificil saberlo, aveces el root no se inicia con algunos programas. O tienes una version diferente de la terminal.
      Aunque ultimamente me han comentado que en las versiones mas reciente de facebook no se ha podido.
      Cuando tenga para hacer pruebas, lo revisaré,

      saludos

      Eliminar
  18. ahora eh visto, buscando archivo por archivo porque no habia fb.db ... pero ahora 20/03/2016 eh visto en un LG que el archivo donde se guarda las cookies esta en webviewCookiesChromium.db, dentro de la databases

    ResponderEliminar
  19. Gracias Pythonwizards40 @ cybersavices
    Pythonwizards40@cybersavices.com para la tarjeta de
    corte automático negro que envió a mí realmente
    funciona gracias una vez más Dios bendiga desfiguráis

    ResponderEliminar