domingo, 4 de diciembre de 2016

¿Se puede recuperar la base de datos de WhatsApp tras formatear?

Cuando utilizamos la aplicación WhatsApp los mensajes que enviamos y recibimos se almacenan en una base de datos. Internamente existe una base de datos accesible al usuario en la carpeta /sdcard/WhatsApp/Databases, pero está encriptada, por eso tiene la extensión .crypt, como msgstore.db.crypt7 o msgstore.db.crypt8. Por otro lado, existe la base de datos del sistema, que no es accesible al usuario y se almacena en /data/data/com.whatsapp/databases/msgstore.db.

El problema es que esa base de datos del sistema no es accesible al usuario, por ello, debemos rootear el móvil para poder tener permisos como usuario root y poder acceder a dicha base de datos.

La pregunta ahora es, si vendemos el móvil de segunda mano, ¿basta con desinstalar WhatsApp para que se borre la base de datos? Y si lo restauramos de fábrica, ¿es suficiente? ¿O será necesario un formateo a bajo nivel, conocido como wipeo?

Accediendo como root a la base de datos de WhatsApp


Lo primero que debemos hacer es rootear el móvil, para el artículo, vamos a utilizar de ejemplo un Samsung Galaxy Express 2. Hay un hilo en el foro de htc en el que se explica como rootearlo: http://www.htcmania.com/showthread.php?t=760794.

Tan sólo hay que iniciar el móvil en modo Download (Bajar volumen + Botón de inicio + Encendido) e iniciar el Odin como administrador y nos reconocerá el móvil (Added!), es importante tener Samsung Kies instalado para que Windows reconozca el dispositivo. Ahora utilizamos el archivo tar.md5 y le damos a Start.

Hay una aplicación en Google Play llamada Root Checker con la que podemos comprobar que el rooteo ha funcionado.

Ahora tenemos que instalar ADB – Android Debug Bridge para poder interactuar con el móvil desde el CMD (http://forum.xda-developers.com/showthread.php?t=2588979). Nos vamos al CMD y escribimos adb devices, si aparece unauthorized tenemos que irnos al móvil y desactivar y volver a activar el modo de depuración USB, nos dirá que si queremos permitir al PC con clave X y le diremos que sí.

Ahora escribimos adb shell para entrar en el modo shell accediendo al móvil, nos vamos a la carpeta /data/data/com.whatsapp/databases, no podemos hacer un ls porque no tenemos permiso, así que tenemos que ejecutar su para tener permisos de superusuario, nos saldrá un mensaje pidiendo confirmación en el móvil, y ya seremos root. Nos copiamos los archivos msgstore.db y wa.db a /sdcard por ejemplo, o a alguna carpeta donde el usuario tenga permisos. Nos salimos de la shell y desde el CMD ejecutamos adb pull /sdcard/msgstore.db C:\Whatsapp y adb pull /sdcard/wa.db C:\Whatsapp para copiar los archivos al disco local.

Ya podemos ver la base de datos desde el PC, así que nos descargamos el DB Browser for SQLite, lo tenemos en http://sqlitebrowser.org/. Los mensajes están en la tabla messages.

¿Qué ocurre si desinstalamos WhatsApp?


Si desinstalamos WhatsApp las carpetas se borran, y ya no aparece la base de datos, con lo cual no es posible recuperar los datos de los mensajes.

¿Qué ocurre si restauramos el móvil de fábrica?


Pues en el caso que tratamos del Galaxy Express 2 ocurre que se borran todos los datos, con lo cual la carpeta de WhatsApp y con ello todas las bases de datos, desaparecen. Así que podemos concluir que es seguro vender tu móvil de segunda mano si lo restauras de fábrica, ya que no podrán acceder a tus datos de ninguna forma.

Pero, ¿es esto aplicable a otros móviles?...

¿Qué ocurre si realizamos un formateo a bajo nivel, wipeo?


Ocurre obviamente que desaparecen los datos de la aplicación, con lo que con toda seguridad no se podrán recuperar las bases de datos y con ello los mensajes de WhatsApp.



Conclusión


En este caso le damos un 10 tanto a Whatsapp como a Samsung, ya que tanto al desinstalar la aplicación como al restaurar el móvil de fábrica se borran los datos.

La pregunta es, ¿qué ocurrirá con otras aplicaciones y otros móviles?

jueves, 19 de febrero de 2015

Escapando de SQL Injection

Una vulnerabilidad que preocupa a los programadores Web es la inyección de código SQL en las variables de un formulario.

Vamos directos a un ejemplo, la web ficticia de una tienda de deportes con un listado de productos en la que aparece un campo para filtrar por código del producto.


¿En qué consiste la vulnerabilidad?

El código PHP hace una consulta al servidor de bases de datos MySQL para obtener los productos. Cuando utilizamos el cuadro de texto de filtrar, ese valor debe pasarse a la consulta sobre la base de datos para filtrar por el código deseado, bien, pues ahí es donde vamos a inyectar código SQL.

¿Con qué objeto hace esto un atacante?

Muy fácil, con el objetivo de obtener otra o toda la información de la base de datos (usuarios, contraseñas, etc).

¿Cuál es nuestra labor como hacker ético?

Aprender a explotar esta vulnerabilidad para concienciar de la importancia del tema. Y el siguiente paso, aprender a evitarlo.

Un ejemplo de inyección

Vamos a filtrar para ver el producto con código “1”, y luego a inyectar código para ver todos los productos.


En el código de la página hemos puesto un “echo” para visualizar la consulta y comprobar lo que se está enviando al servidor MySQL.


Veamos ahora el ejemplo de inyección de código para obtener todos los productos.


Se obtienen todos los productos diciendo que saque las filas que cumplan la condición “código=1” o las que cumplan la condición de “1=1” (que siempre se va a cumplir).

El código PHP de la Web en la que se envía la consulta es el siguiente:


¿Cómo lo evitamos?

Hay que escapar toda variable en la que se almacene un campo de entrada del formulario en el que puede escribir un usuario (en el que podría inyectar código).

Usaremos la función mysqli_real_escape_string para solucionarlo.


Ya tenemos el código con las variables escapadas. Vamos a probarlo.
Si filtramos para ver el código “1”.


Funciona… ¿Y si inyectamos la consulta anterior?



¡Et voilà! El código escapado evita la inyección de código.

Anexo: filter_input

También podemos utilizar la función filter_input:


domingo, 21 de diciembre de 2014

Clonar la página de una red social

Cuidado cuando entramos a la Web de una red social, la página podría haber sido clonada, y al conectarnos a la falsa Web estaríamos regalando nuestras credenciales al ciberdelincuente que lo haya hecho.

Desde el punto de vista del hacker ético, os decimos cómo detectar que la Web no es la auténtica.

Un ejemplo podría ser tan sencillo como descargarse la Web de facebook, copiarla, ponerla en otro servidor y cambiar la acción que se realiza cuando pulsamos el botón para logearnos para que en lugar de entrar en nuestro perfil, se guarden nuestros datos en una base de datos.

¿Qué haría la Web falsa una vez nos ha robado las credenciales?

Pues tan sencillo como mandarnos a la Web oficial de facebook, yo me creería que me he equivocado al poner la contraseña (ya que no la veo mientras la escribo) y volvería a introducir mis datos para finalmente ver mi perfil sin haber sospechado nada (¡un crimen perfecto!).

Veamos el proceso

Primero nos vamos a la Web de facebook y nos descargamos la página dándole a las opciones y “guardar página como”.


Ahora en el servidor falso, modificamos el formulario para que los datos vayan a una página en PHP que guardará los datos en una base de datos de usuarios con credenciales robadas.


Creamos ahora en PHP la página para guardar en la base de datos, como se verá durante los segundos que tarde en guardar, vamos a volver a meter todo el código de la página principal de facebook para que el usuario no se percate del cambio.


Lo que hacemos es guardar el usuario y la contraseña en una base de datos llamada facebook, en la tabla usuario.

Por último en dicha página PHP vamos a poner que se redirija a la Web oficial de facebook.


¿Qué es lo que el usuario ve?

Pues el usuario accede a la Web falsa.


Introduce sus datos y pulsa “Iniciar sesión”, la Web se va a la página PHP.



La página PHP guarda los datos en la base de datos.



Y la Web se reenvía automáticamente a facebook pasadas unas milésimas de segundo.



¡Y voilà! ¡Aquí no ha pasado nada!

¿Cuándo puede pasar esto?

Esto sólo nos puede pasar si estamos en la misma RED LOCAL que el atacante. Es decir, cuando nos conectamos a una Wi-Fi abierta o gratuita. Todo el mundo se conecta a la Wi-Fi del McDonald’s y el atacante puede falsear la Web de facebook envenenando el DNS de dicha red. O veo una Wi-Fi abierta por la calle o de un vecino que no tiene clave… y ¡zas!

¿Qué debo hacer para que no me pase?

Pues obviamente no conectarme a redes públicas o abiertas (repito, una Wi-Fi que me encuentro abierta por la calle o la Wi-Fi gratis de mi gimnasio), y en segundo lugar, observar que el protocolo que usa la Web a la que estoy accediendo es HTTPS.


¡Ojo con el candado!

Suplantación y el antivirus

Esto es una suplantación en toda regla, para que el ejemplo funcionase he tenido que desactivar la protección temporal del antivirus gratuito AVG, con ello hubiéramos estado a salvo, lo podéis descargar en: http://www.avg.com/es-es/homepage

jueves, 18 de diciembre de 2014

Extrayendo metadatos de una imagen

Ya vimos en un artículo anterior el tema de los metadatos de un fichero de MS Word, en este caso trataremos los metadatos de una imagen.

¿Qué son los metadatos?
Los metadatos son datos sobre otros datos, es información que se almacena acerca de otra información. Por ejemplo, el autor de una imagen, la resolución de la misma, la marca de la cámara con la que se tomó...

¿Tienen todas las imágenes los mismos metadatos?
No, depende del dispositivo con el que se cree la imagen. Centrándonos en los teléfonos móviles, por lo general, los iPhones tienen la geolocalización activada, así que nos centraremos en intentar geolocalizar dónde se realizó una foto de ejemplo. En nuestro caso:


Bien, vamos con la herramienta que vamos a utilizar, se llama ExifTool, y la podemos descargar en su página http://www.sno.phy.queensu.ca/~phil/exiftool/ en su versión para Windows, aunque también viene integrada en la distribución Kali de Linux.



En este caso vamos a probarla en Windows.

Para ejecutarla nos vamos a la línea de comandos (he copiado la imagen y el ejecutable, que venía comprimido, en C:\).


Para ejecutarlo simplemente escribimos "exiftool(-k).exe" y el nombre de la imagen.

En este caso obtenemos las coordenadas de dónde se tomó dicha imagen.


Si nos vamos a Google Maps y escribimos esas coordenadas (6º13'54"N 75º36'29"W) veremos que la foto fue tomada en Colombia.


Anexo: Desactivando la geolocalización de la cámara en iOS

Todo esto ha pasado porque en iOS viene activada la geolocalización por defecto.

Veamos como se desactiva en dos versiones muy utilizadas como son la 7.1.2 y la 8.1.2.

iOS 7.1.2

Nos vamos a Ajustes - Privacidad - Localización y desactivamos la Cámara.





iOS 8.1.2

Nos vamos a Ajustes - Privacidad - Localización - Cámara y marcamos la opción Nunca.







Hacking Ético

La ética hacker es una nueva ética surgida de y aplicada a las comunidades virtuales o cibercomunidades, aunque no exclusivamente.
La expresión se suele atribuir al periodista Steven Levy en su ensayo seminal Hackers: Heroes of the Computer Revolution, publicado en 1984, dónde describe y enuncia con detalle los principios morales que surgieron a finales de los años cincuenta en el Laboratorio de Inteligencia Artificial del MIT y, en general, en la cultura de los aficionados a la informática de los años sesenta y setenta. Aquellos principios --que se resumen en el acceso libre a la información y en que la informática puede mejorar la calidad de vida de las personas-- han constituido la base de la mayor parte de definiciones que se han elaborado posteriormente. Uno de sus mentores actuales ha sido el finlandés Pekka Himanen.
Fuente: http://es.wikipedia.org/wiki/%C3%89tica_hacker
Así pues, no debe confundirse el hacker con un ciberdelincuente, un hacker ético explota vulnerabilidades en un sistema informático para mostrar a un usuario un fallo de seguridad, mientras el ciberdelincuente hace un mal uso de estas técnicas para lucrarse, robar información, o simplemente hacer que el sistema deje de funcionar.
¿Cuál es el objetivo del hacker ético entonces? Enseñar los fallos de seguridad a los usuarios "de a pie" para que puedan SOLUCIONARLOS.
Este blog pretende dar una idea a aquellos que no son hackers (experto en una materia, en nuestro caso llevado al mundo de la informática) para que puedan estar más o menos seguros (nada es seguro al 100%, pero con conocimiento podremos conseguir ponernos en riesgo lo menos posible).
Por lo tanto, la idea será siempre conocer los riesgos más comunes a los que nos exponemos y cómo evitarlos.

miércoles, 19 de noviembre de 2014

Geolocalización en Twitter

Existe una aplicación Web para geolocalizar usuarios de twitter, su nombre es teachingprivacy y la podéis encontrar en la url app.teachingprivacy.com.

La interfaz principal es muy sencilla.


Tan sólo hay que introducir un usuario de twitter y podremos ver la geolocalización en el mapa de sus últimos tweets.


Incluso a la derecha aparece la fecha, hora y contenido de dichos tweets.

Podemos ver en el mapa que la concentración más grande de tweets está en el punto rojo. Probablemente desde donde más publicamos, es desde donde más tiempo pasamos, en el trabajo o en casa, así que ese punto será la casa o el trabajo de este usuario.

Si acercamos el mapa y hacemos clic en uno de esos tweets podremos ver la información que nos da Google Maps y Street View acerca del mismo (dirección y foto de Street View).


Esto puede evitarse simplemente desactivando la publicación de la geolocalización al publicar un tweet, que viene bloqueada en Android por defecto y no así en iOS. Podemos comprobar fácilmente si nuestros datos son públicos o no metiendo nuestro propio usuario, que es lo primero que debemos hacer cuando nos enseñan una herramienta nueva en el mundo del hacking ético.

Anexo: Buscar por geocode

En twitter podemos geolocalizar tweets en un radio, con esto podríamos buscar usuarios que tienen la geolocalización activada, una vez obtenido el nombre de usuario podríamos usar la aplicación anterior para intentar adivinar o intuir donde viven o trabajan.

Primero nos vamos a google maps para obtener las coordenadas de la zona que queremos geolocalizar.



Copiamos las coordenadas y nos vamos a twitter, en el cuadro buscar pondremos "geocode:37.8926785,-4.7532584,0.1km", por ejemplo, para buscar los usuarios que han publicado un tweet con geolocalización cerca de la zona deseada.


viernes, 31 de octubre de 2014

Modificar el XML de un Word

Un archivo de MS Word 2007 no es más que un conjunto de archivos XML donde se almacenan todas las propiedades y contenidos del documento.

En realidad dichos XML están organizados en carpetas. Con lo que vamos a ver cómo podemos acceder a esas carpetas y modificar un XML y ver el cambio reflejado en el DOCX.

Así que podemos utilizar un documento de prueba como este:


El documento está en el escritorio del equipo:

El primer paso para acceder a las carpetas es renombrar el archivo como “.zip”:

Ahora podemos extraerlo y ver las carpetas:

Vemos que hay una carpeta que se llama “word” en la que hay un archivo llamado “document.xml”.

Si lo abrimos con Internet Explorer podemos ver que hay unos campos para el tamaño de la imagen:

Son los atributos cx que vale 5400040 y cy que tiene el valor 2588739. Abramos el archivo con Wordpad y modifiquemos esos valores.

Ahora añadimos ese fichero al .zip otra vez:

Ahora tendremos las carpetas comprimidas en .zip y con la modificación hecha, sólo queda renombrarlo como “.docx”.

Y vemos como el tamaño de la imagen ha cambiado: