17 mar 2014

WhatsApp y la espía que la parió (meterpreter > load android)

Últimamente WhatsApp es noticia por muchas cosas, como por ejemplo su compra por Facebook, pero para nosotros la noticia bomba es el tema del descifrado de su base de datos. Al ver la siguiente noticia en Twitter sobre el nuevo plugin que aportan nuevas funcionalidades al Meterpreter de Android, me puse a analizar el código ruby y entender qué cosas aportaban nuevas. La funcionalidad estrella es el volcado y descifrado de las bases de datos de WhatsApp, pero hay otras cosas que llaman la atención y comentaremos más adelante. Antes, os queremos mostrar la noticia en twitter publicada por el autor Anwar Mohamed

Obteniendo la extensión de Android y visualizando su código y su tlv se pueden entender las nuevas funcionalidades que se aportan al Meterpreter de Android. Estas nuevas funcionalidades aportan una mayor riqueza a la post-explotación. ¿Dónde se instala la extensión? En la siguiente ruta:


Analizando el código vemos las funciones que aporta el módulo o plugin una vez cargado en la sesión de Meterpreter, mediante el uso del comando load. Llaman la atención funciones como volcado de SMS, con las que el atacante puede obtener los mensajes que se encuentran en el dispositivo comprometido. De los mensajes se puede obtener tanto el contenido del mensaje, la fecha de envío o recepción, a quién fue enviado o de quién fue recibido, etc. Esta funcionalidad facilita la recuperación de esta información, realmente interesante. 


Similar a esta función se tiene el volcado de contactos, mediante el comando dump_contacts, con el que se obtiene el nombre del contacto, email y número telefónico. Otro tipo de volcado que se obtiene con esta extensión es dump_calllog, con el que se obtiene un registro de llamadas del dispositivo, consiguiendo información como duración de la llamada, número de teléfono de llamada entrante o saliente, nombre del contacto, fecha, etc. 

Antes de situarnos en las funciones de WhatsApp nos paramos a hablar de otras dos funciones interesantes, y que llamaron mi atención. Tras dar algún que otro curso de Metasploit ;) ;) uno se da cuenta que a mucha gente le sigue llamando la atención la posibilidad de apagar un dispositivo en remoto, y esto es posible en este módulo gracias a la implementación de la función device_shutdown con la que, como podéis imaginar, apagamos el dispositivo remoto. La otra función a la que me refiero es check_root, con la que se puede chequear si el dispositivo está rooteado o no, función booleana de todas, todas. 

La parte final del código del plugin contiene las funciones referentes a WhatsApp y con las que se anunciaba el módulo en Twitter. Tenemos: 
  • dump_whatsapp_enum. Enumera todos los recursos que tenemos de WhatsApp en el dispositivo, como puede ser las bases de datos cifradas, ficheros de audio, video, imágenes, etc. 
  • dump_whatsapp_enum_pp. Similar al anterior, pero solo para los perfiles. 
  • dump_whatsapp_enum_media. Similar a la enumeración anterior, pero para los archivos multimedia. 
  • dump_whatsapp_get_media. Recupera los ficheros multimedia. 
  • dump_whatsapp. Se recuperan las bases de datos y se descifran para poder visualizar el contenido. 
A continuación os pongo el código de la función dump_whatsapp_enum y dump_whatsapp. Esta es la parte dónde se generan las órdenes, y los paquetes que se envían al "servidor" de Meterpreter que corre en el dispositivo remoto. Para entender bien todo lo que ocurre en este envío de órdenes y la información que se recibe se recomienda mirar el código Packet.rb



El mundo de Metasploit sigue avanzando, y la verdad que cada vez se muestra como una de las herramientas top en el mundo de la seguridad informática, debido a todo el apoyo de la comunidad y la facilidad para entrar en el desarrollo del framework

No hay comentarios:

Publicar un comentario