DSploit para Android

Para terminar con esta serie de entradas referidas a dispositivos Android, esta vez os hablaré de la aplicación Dsploit para dichos dispositivos.

Dsploit es una herramienta disponible para descarga gratuita desde Play Store que nos automatiza ciertas operaciones y ataques a dispositivos de nuestra misma red, y que necesita permisos de superusuario para poder realizar operaciones como poner nuestra tarjeta de red inalámbrica en modo monitor o promiscuo. Así que si no tenéis vuestro dispositivo “rooteado” sólo podréis ver el menú y poco más…

Comenzamos iniciando la aplicación y para acceder a su pantalla principal. En cuanto entremos en la aplicación y, estando conectados a una red inalámbrica, el dispositivo la escaneará y nos mostrará un listado con todos los dispositivos que detecte en nuestra red, así como el router (lo identifica claramente) y nuestra máscara de red. Si es capaz de resolver el nombre del dispositivo nos lo mostrará con nombre, y si no, por IP. Además nos muestra el fabricante de la tarjeta de red de cada dispositivo así como su dirección física MAC.

imagen1 imagen3

A parte del listado de dispositivos, vemos un menú en la parte superior de la pantalla.

Si pulsamos sobre el signo “+”, podremos añadir un dispositivo manualmente que no esté listado.

Si pulsamos sobre las flechas circulares, nos hará un re-escaneo de la red, para detectar nuevos dispositivos que no estuviesen listados en un escaneo previo.

Pulsando sobre el icono de la antena wifi, podremos elegir a qué red conectarnos si hubiese más de una disponible (introduciendo la contraseña necesaria).

Y por último, pulsando sobre el icono de los 3 puntos (menú de Android) veremos un menú desde el que poder configurar nuestro software, crear sesiones para guardarlas, recuperar una sesión previamente guardada, etc.

imagen4

Si entramos dentro de la opción de “configuración”, veremos las siguientes opciones:

imagen5 imagen6 imagen7 imagen8

Como podemos observar, incluso tenemos la opción de hacer un SSL Stripping (redireccionar las peticiones HTTPS del dispositivo “hackeado” hacia HTTP) para poder capturar las credenciales de acceso a sitios web seguros. También podemos escoger los puertos de HTTP Y HTTPS por si estuviesen en uso por otra aplicación que tuviésemos instalada, método para localizar exploits, uso de MSF…

Si seleccionamos el router nos aparece alguna opción distinta a si seleccionamos un dispositivo, como por ejemplo la opción de ejecutar el servicio “routerpwn” para intentar tomar el control del router.

imagen9 imagen10

El resto de opciones son comunes tanto a routers como a dispositivos.

Tal y como podemos ver en las imágenes adjuntas, cada una de las opciones está perfectamente explicada y podremos realizar un escáner de puertos, así como intentar detectar los servicios que están escuchando en cada uno de ellos, paso previo para poder ejecutar el buscador de vulnerabilidades (ya que las busca en la base de datos de MFS para cada servicio concreto).

Quizá la opción más interesante (y productiva por las pruebas que he realizado con la aplicación), es la de poder realizar un ataque MIT (“man in the middle”). Si seleccionamos esa opción, el software envenena las tablas ARP del dispositivo y el router y se coloca “en el medio”, viendo todo el tráfico que se intercambian ambos dispositivos. En la pantalla no aparece nada, simplemente está escaneando, hasta que detecta, por ejemplo, una cookie de sesión de algún servicio en el que se valide el usuario.

Una vez nos aparece la cookie de sesión capturada en pantalla, simplemente pulsando sobre ella, el software nos pregunta si queremos utilizarla para acceder a la sesión capturada, y nos abre un navegador con la sesión que esté utilizando el cliente en ese momento. Sirve para acceder a webmail y demás servicios ofertados vía web y que sean susceptibles de utilizar dicha cookie de sesión.

imagen13 imagen14

Respecto a las demás opciones, nos pueden servir para realizar alguna “broma” más que para obtener datos productivos, ya que nos permiten por ejemplo cambiar las imágenes de una página web cargada por la imagen que nosotros seleccionemos (de la galería o introduciendo una URL válida). Paso a explicarlas aunque como podéis observar están perfectamente explicadas en la propia aplicación.

Sniffer Simple: Guarda el tráfico capturado en un archivo pcap, que luego podremos analizar con WireShark por ejemplo.

Sniffer de Contraseñas: Intenta capturar las contraseñas de los servicios en los que se valide el cliente como HTTP, FTP, etc…

Sessión Hijacker: Captura las cookies de sesión pudiendo utilizarlas directamente para abrir un navegador con la sesión secuestrada.

Bloqueador de conexiones: bloquea cualquier conexión del dispositivo dejándolo aislado.

Redirector: Cualquier página que intente acceder el cliente, será redirigida a la URL que hayamos introducido, pudiendo reenviarlo a un servidor web controlado y malicioso.

Reemplazar imágenes: Reemplaza cualquier imagen de la página web que esté visitando el cliente por una que hayamos seleccionado, tanto de nuestra galería como desde una URL válida de internet.

Reemplazar vídeos: Cualquier vídeo que aparezca en la página que esté visitando el cliente, será reemplazado por el que hayamos seleccionado.

Inyector de scripts: Nos permite inyectar un script de java en cada página que visite el cliente. Podemos por ejemplo poner un “alert” con un mensaje que aparecerá cada vez que el cliente cargue una página.

Filtro personalizado: Podemos reemplazar cualquier texto que aparezca en la página visitada por el cliente, por el que nosotros introduzcamos. Podemos hacer más de un reemplazo de vez, pudiendo seleccionar varias cadenas de texto y sustituyéndolas a nuestro gusto.

Creo que es una buena herramienta, tanto para hacer alguna broma (siempre a algún conocido y con su permiso previo o en un entorno de pruebas controlado, ya que realizar estas acciones está considerado delito) mediante las sustituciones que nos permite, así como para probar a realizar algún secuestro de sesión mediante cookies y entender un poco más el funcionamiento de este tipo de ataques, conocidos como MIT.

Espero que os haya parecido interesante la herramienta y os dé que pensar sobre qué ocurre cuando nos conectamos a servicios con datos sensibles, como nuestra banca online, en redes abiertas y no seguras de un centro comercial o cafetería por ejemplo. Tal vez haya alguien escuchando al otro lado…

Saludos y hasta la próxima.

Shared Preferences y SQLite en Android ¿Seguridad? (III de III)

Tal y como comenté en la primera entrada de esta serie, en ningún momento se debería usar esta información para realizar ninguna acción ilegal, como modificar fechas de expiración de aplicaciones, leer datos privados ni obtener claves de seguridad privadas de terceros.

Publico estas entradas sólo con el ánimo de enseñar los problemas de seguridad que nos pueden traer asociados el desarrollar nuestras aplicaciones con un método de almacenamiento de datos determinado y el poco cuidado que ponen ciertos desarrolladores de aplicaciones a la hora de tratar datos tan sensibles como las claves públicas y privadas de nuestro servicio de almacenamiento en la nube “supuestamente” seguro, o el crear un sistema de licenciamiento de aplicaciones basado en almacenar la fecha de expiración en el propio dispositivo en lugar de hacerlo en servidores en la nube del propio desarrollador o con algún método más eficaz, como encriptando de algún modo dichos datos.

Hecha esta aclaración, insisto en que cada uno es responsable de la aplicación que le dé a esta información y que quede constancia de que puede estar incurriendo en acciones ilegales.

Volvemos al tema de la seguridad o inseguridad que obtenemos al guardar según qué datos sensibles de aplicaciones en las Shared Preferences de Android o en bases de datos SQLite.

En esta última entrada de la serie, hablaremos de WhatsApp y su base de datos.

El post lo dividiré en dos partes.

La primera, tal y como he venido haciendo en las dos últimas entradas, será investigar un poco en las opciones y bases de datos de WhatsApp con la aplicación Hack App Data.

En una segunda parte, os daré unos datos sobre la base de datos de WhatsApp y sus últimas actualizaciones y os incluiré unos link al fantástico blog de “Security By Default” de Alejandro Ramos. Ahí encontraréis las explicaciones pertinentes así como el código necesario para desencriptar la nueva base de datos de WhatssApp (incluido el código fuente del script necesario para hacerlo).

Empecemos pues.

Si accedemos con nuestra ya “trillada” aplicación Hack App Data a la aplicación de WhatsApp, encontramos las 3 pantallas tan conocidas a estas alturas:

imagen1 imagen2 imagen3

Esta vez, encontramos datos tanto en las Shared Preferences, como en las bases de datos SQLite.

Vamos a ir viendo poco a poco que podemos encontrar (recordar que en las Shared Preferences sí se pueden editar los registros, mientras que en la base de datos SQLite no, al menos desde esta aplicación).

imagen4

Como podemos ver, podemos ver el teléfono que está registrado en la aplicación.

También podemos ver todas las preferencias almacenadas por la aplicación (color del led de notificación, ruta de almacenamiento de los contenidos recibidos, estado del registro, incluso el precio de la renovación.

imagen5

 

imagen6 imagen7 imagen8

Dentro de la base de datos msgstore.db, encontramos las tablas donde podremos recuperar todos los mensajes de la aplicación, así como las URL de las rutas de los servidores de WhatsApp donde están los elementos adjuntos (imágenes, vídeos), sus hashes, etc.

imagen9

Podemos ver los contactos que tenemos en la aplicación, así como sus mensajes de estado, número de teléfono, nombre para mostrar, etc…

imagen10 imagen11 imagen12

Tenemos a nuestra disposición una tabla con todos los chats que tenemos abiertos actualmente en la aplicación, ya sean contra un único usuario, o contra un grupo de usuarios.

imagen14

Los chat contra un único usuario, se identifican por el número de teléfono @ s.whatsapp.net, mientras que los grupos se identifican por el número de teléfono del creador – timestamp @ g.us.

En la columna subject podemos encontrar el título del Grupo (en los chat individuales no aparece) así como la fecha de creación de cada uno de los chat.

Y aquí llegamos a la parte más interesante de la entrada. La tabla de mensajes donde podemos encontrar todos y cada uno de los mensajes que se han ido enviando y recibiendo, timestamp, datos adjuntos, URL de WhatsApp, tamaño de los adjuntos, y cualquier cosa que hayamos enviado o recibido, con el peligro de revelar datos sensibles y confidenciales que ello supone.

imagen15

En la columna “Data” aparece el mensaje que hemos enviado o recibido.

imagen16

En la siguiente imagen vemos la fecha y hora (timestamp) así como la ruta al archivo adjunto en los servidores de WhatsApp (media_url).

imagen17

Tipo de archivo enviado o recibido (media_mime_type), tamaño, y el hash del archivo.

imagen18

Si tenemos la opción de geolocalización, también podríamos ver la longitud y latitud.

imagen19

Podemos ver la fecha y hora a la que llegó el mensaje al servidor de WhatsApp, así como la fecha y hora a la que se entregó en el propio dispositivo.

imagen20

Como podemos comprobar, datos muy sensibles a los que podemos acceder.

Hasta aquí la primera parte del post.

A continuación, os incluyo como segunda parte unos links donde podréis encontrar información sobre cómo se encriptaba anteriormente la base de datos de WhatsApp (las copias de la base de datos que se hacían en la tarjeta SD siempre se encriptaban con la misma clave PARA TODOS LOS CLIENTES, entonces era posible leer los datos de las bases de datos de backup de cualquier dispositivo con la misma clave).

Aunque WhatsApp ha cambiado la encriptación para las últimas versiones de la aplicación, gracias al trabajo de gente como Alejandro Ramos, de Security By Default, ya está disponible tanto el código del script necesario para desencriptar la nueva versión, así como una página web donde poder subir las copias de las bases de datos y extraer los mensajes automáticamente.

Los link a las entradas de su blog son los siguientes:

http://www.securitybydefault.com/2012/05/descifrando-el-fichero-msgstoredbcrypt.html

http://www.securitybydefault.com/2014/03/descifrando-msgstoredbcrypt5-la-nueva.html

El link de su página web donde poder subir la copia de la base de datos para desencriptarla es:

http://www.recovermessages.com

Hasta la próxima, saludos.