domingo, 20 de diciembre de 2015

Introducción a Metasploit (III de III)

Hoy terminamos esta "mini serie" de artículos sobre Metasploit en la que ya hemos visto los conceptos básicos y la estructura de la que se compone el framework, por otra parte también vimos como podíamos ejecutar la herramienta y lanzar un exploit sobre una máquina virtual que utilizamos como el equipo "víctima". El día de hoy volveremos a atacar la máquina donde habíamos instalado Metasploitable, pero en esta ocasión además de tomar el control de la máquina con el exploit, vamos a ver como podemos lanzar y modificar los payloads que se ejecutarán si el exploit tiene éxito.

Introducción a Metasploit (III de III)

Lo primero que tenemos que hacer será ejecutar la máquina virtual donde tenemos instalado Metasploitable y consultamos la ip asignada a la misma. Como todos sabéis y como vimos en el artículo anterior, para identificar el host que queremos atacar tendríamos que hacer uso de terceras herramientas como Nmap para poder hacer un barrido de la red e identificar los equipos conectados a la misma. Sin embargo nosotros vamos a consultar la ip directamente desde la propia máquina virtual, de esta manera ahorramos tiempo y nos centraremos en lo que verdaderamente nos interesa. Por tanto, accedemos a Metasploitable con el usuario y la contraseña "msfadmin" y consultamos la ip de la máquina con el comando "ifconfig".



Después arrancamos nuestro Metasploit y vamos a escanear la dirección que hemos obtenido anteriormente:

nmap -sV 192.168.102



Una vez hayamos ejecutado la orden obtendremos un listado con los servicios que están corriendo en el sistema y los puertos que están utilizando. En esta ocasión vamos a vulnerar el servicio de IRC que está corriendo en el puerto 6667. (Hemos elegido este servicio ya que no requiere de complicadas configuraciones) Por tanto lo que deberíamos hacer a continuación sería lanzar el comando "search" para buscar un exploit disponible para atacar el servicio de IRC.




Como podemos ver nos devuelve como resultado un exploit que corresponde a "UNIX" e "IRC". Lo seleccionamos con el comando "use", y una vez seleccionado, cambiamos el parámetro de RHOST y escribimos la dirección IP de la máquina que vamos a atacar:



Ahora modificaremos el payload que el exploit nos carga por defecto, para ello vamos a ver cuál es el payload que nos cargaría en esta ocasión. Escribimos "set payload" y pulsamos dos veces la tecla "Tab". Podremos ver que nos muestra justo al lado lo siguiente: cmd/unix/. Esta es la lista de payloads que esta cargando el exploit por defecto. Volvemos a pulsar la tecla "Tab" dos veces y nos desplegarás la lista completa con los payloads que podemos utilizar en esta ocasión.



En concreto vamos a utilizar el siguiente payload: "reverse ruby". (Podréis observar que en realidad todos los payloads que nos deja utilizar en esta ocasión cumplen la misma función) Para seleccionarlo y de esta manera cambiar el payload que carga por defecto Metasploit, debemos introducir el comando "set payload" más el nombre del mismo:



Comprobamos la configuración del payload con "show options"  y escribimos "set LHOST" junto a nuestra IP, para cambiar el parámetro. Por último introducimos el comando "run" y podremos comprobar que hemos tomado el control de la máquina correctamente, lo verificamos con el comando "whoami".





Sin embargo aunque hayamos tomado el control total de la máquina, ahora vamos a inyectar un segundo payload para que podáis ver como se hace y como podemos cambiar de sesión. Para hacerlo primero vamos a mandar la sesión que estamos utilizando actualmente a un segundo plano. Para hacerlo pulsamos "control + z" y nos preguntará si queremos mandar la sesión 1 al backgroung, ecribimos "y" para aceptar.



Ahora vamos a buscar un módulo post explotación llamado Meterpreter que seguro que os sonará a muchos de vosotros, para ello escribimos : search post/multi/manage/shell_to



Este módulo post explotación sirve básicamente para inyectar un payload conocido como Meterpreter. Este es un payload que nos ofrece una cantidad inabarcable de opciones, y que nos permite movernos con toda facilidad por cualquier sistema (Meterpreter utiliza su propia linea de comandos al margen de Metasploit). En esta ocasión nos servirá para ver como podemos cambiar y configurar un payload distinto cuando el exploit no lo trae por defecto o no es compatible. Para utilizar Meterpreter  escribimos la orden "use post/" más el nombre del módulo. Después de esto mostramos sus opciones:



Veremos que nos pide un "HANDLER", esto simplemente quiere decir que se necesita un exploit para estar a la escucha mientras se ejecuta Meterpreter. Cuando Meterpreter se ejecute avisará al "HANDLER" para que tome el control del propio Meterpreter, y esto será lo que nos permita tomar el control de la máquina. Vemos que viene configurado como "true" por defecto, lo dejamos tal como está, pero cambiamos el parámetro de LHOST. Para ello ejecutamos "set LHOST" y nuestra dirección IP.



La siguiente opción que vamos a cambiar es "session". Supongo que recordaréis que la sesión anterior la mandamos a un segundo plano y era la numero 1, pues ahora introducimos el numero de esta sesión en el parámetro correspondiente para poder inyectar el módulo de Meterpreter. Escribimos "set session 1". Comprobamos que se a cambiado y ejecutamos el comando "run":



Y como podéis comprobar nos dice que a iniciado correctamente la sesión número 2 y que es una sesión Meterpreter. Si quisiéramos cambiar de sesión tenemos que escribir el comando "sessions -i" más el número de la sesión. Y veremos que la nueva sesión es la número 2, y es una línea de comando bajo Meterpreter (Como os comenté anteriormente Meterpreter posee su propia línea de comandos al margen de Metasploit)



Por otra parte si quisiéramos volver a la sesión anterior solo tenemos que ir al background y escribir el comando "sessions -i 1". Escribimos el comando "whoami" y podemos comprobar que es la shell que obtuvimos en un principio.



Bueno hasta aquí la tercera parte de esta breve introducción a Metasploit, en ella hemos visto como podemos tomar el control de una máquina, cómo manejarnos entre sesiones, como inyectar un payload por medio de un módulo post explotación, y también como modificar los payloads que Metasploit carga por defecto. Espero que esta pequeña introducción os haya sido de ayuda, en un futuro no muy lejano seguiremos viendo como funciona un poco más en profundidad este maravilloso framework, hasta la próxima.

viernes, 27 de noviembre de 2015

Introducción a Metasploit (II de III)

En el artículo anterior sobre Metasploit, vimos una rápida introducción sobre la estructura y el funcionamiento básico de la herramienta, junto con un ejemplo y los comandos más utilizados. Hoy vamos a realizar nuestro primer ataque sobre una máquina virtual desarrollada para tales fines. Esto quiere decir que las pruebas las realizaremos sobre un entorno controlado, en el que vamos a utilizar Metasploitable como el equipo víctima que sufrirá el ataque.


Metasploitable es una versión de Ubuntu Linux intencionalmente vulnerable, diseñada para probar herramientas de seguridad y demostrar los errores más comunes. Por otra parte utilizaremos Virtualbox para instalar la máquina virtual de Metasploitable.

Antes de terminar la instalación de Metasploitable sería recomendable cambiar la configuración del adaptador de red , seguramente vendrá de manera predeterminada como "NAT" y debemos ponerlo en modo de "adaptador puente" para que reconozca Metasploitable como una máquina adicional de nuestra red, es decir como si fuera una máquina real. Una vez instalado correctamente, ejecutamos Metasploitable. El usuario predeterminado y la contraseña para poder acceder al sistema son: msfadmin


Lo siguiente que hacemos es ejecutar el comando "ifconfig" para comprobar la ip de la máquina, como puedes comprobar en este caso es "192.168.1.104".


Ahora pasaremos al equipo, o la máquina virtual donde tengamos instalado Metasploit y lo abrimos. Lo siguiente que aremos será ejecutar "Nmap" para escanear la red en busca de dispositivos. Cómo la mayoría sabéis Nmap es un programa independiente de Metasploit, sin embargo viene incluido en el propio paquete de Metasploit para optimizar tiempo. Por lo que en principio lo que aremos será escanear la dirección de la máquina que tiene instalado Metasploitable para poder ver lo puertos y los servicios que está utilizando. Para ello ejecutamos lo siguiente :

db_nmap 192.168.1.104

Con la instrucción "db_nmap" le indicamos a Nmap que guarde los resultados en la base de datos para poder consultarlos posteriormente.


Nos mostrará una lista con todos los puertos y servicios que están funcionando en Metasploitable. En primer lugar nos muestra el puerto (PORT), seguidamente el estado del mismo (STATE), y por último nos indica el servicio que está corriendo en dicho puerto (SERVICE). Sólo esta información, nos podría ser útil para realizar un ataque, pero vamos a realizar un segundo escaneo para comprobar la versión de los servicios que está utilizando, de esta manera tendremos toda la información necesaria para realizar un "ataque" exitoso, ya que todas las vulnerabilidades vienen etiquetadas por la versión del software al que afecta el exploit. Tecleamos lo siguiente:

db_nmap -sV 192.168.1.104

Con la instrucción "-sV" le indicamos a Nmap que nos muestre los servicios y las versiones de los mismos.


Obtendremos como resultado todas las versiones de los servicios, sin embargo nosotros nos centraremos en concreto en el servicio de "ftp" ya que no tendremos problemas para explotar el fallo correctamente. Ahora vamos a buscar un exploit para el servicio de "ftp" como ya hemos dicho, en concreto para la versión "vsftpd 2.3.4" para ello ejecutaremos la siguiente orden:

search vsftpd_234

Con la instrucción "search" le indicamos a Metasploit que busque algo relacionado con "vsftpd_234" en su base de datos. Utilizamos "guión bajo"(_) para indicar el número de la versión a la que pertenece, ya que no podemos escribir "puntos"(.) cuando utilizamos el comando "search".


Una vez echo esto podemos comprobar que se ha encontrado un exploit que corresponde con el servicio y la versión que le hemos indicado. Seleccionaremos el exploit con el comando "use exploit/" más el nombre del exploit que queremos utilizar:

use exploit/unix/ftp/vsftpd_234_backdoor


Cuando hayamos seleccionado el exploit escribiremos "show options" para ver las opciones que tenemos que configurar del exploit. (Podemos comprobar que el puerto que vamos a utilizar (RPORT) es el mismo que el que está utilizando el servicio de ftp en la máquina de Metasploit)


Seguidamente escribimos el comando "set RHOST", más la "IP"de la máquina que vamos a atacar. En este caso la "IP" de Metasploit que obtuvimos anteriormente:


Y este es el único cambio que debemos realizar para tener configurado correctamente este exploit. Si introducimos el comando "run", podéis comprobar como se lanza y ejecuta correctamente sin problemas, se puede observar como a iniciado una nueva sesión con el usuario "root".

Como se puede observar se nos ha abierto una "shell" o linea comandos desde donde podemos controlar el equipo que hemos vulnerado. Escribimos el comando "whoami" (¿quién soy yo?) para comprobar que verdaderamente hemos tomado el control del equipo "víctima":



Podéis ver como nos responde que somos "root" y que por lo tanto hemos explotado la vulnerabilidad correctamente. También podéis escribir el comando "reboot" y veréis como la máquina con Metasploitable recibe la orden y  se reinicia al ejecutar el comando desde Metasploit.


Máquina virtual con Metasploitable reiniciando:



martes, 24 de noviembre de 2015

VirusTotal incluye la detección de malware para Mac

VirusTotal es un escáner on-line made in Spain, actualmente propiedad de Google  y que nos proporciona un análisis gratuito de archivos y páginas web. Lo mejor de todo es que desde ahora mismo también lo puedes utilizar para la detección de malware en ordenadores Mac.

El malware para Mac no es una novedad, y prueba de ello son la multitud de amenazas que hemos visto en el pasado. Sin ir más lejos hace unos días podíamos ver dos pruebas de concepto de ransomware sobre OS X. La cantidad de malware para Mac descubierta en 2015 supera la suma de los registrados en los últimos cinco años, según un informe de Bit9+.

De ahí la importancia del nuevo soporte que nos ofrece VirusTotal y que permitirá analizar ejecutables Mac OS X Mach-O o archivos DMG o ZIP que contengan aplicaciones Mac, sobre un entorno de investigación controlado sandbox para el análisis de malware.

Subida de archivo .DMG en VirusTotal
Subida de archivo .DMG en VirusTotal

Con VirusTotal podremos ver los resultados de más de 53 motores de Antivirus diferentes y motores de análisis en línea que nos proporcionarán un informe combinado de los resultados. VirusTotal puede utilizarse libremente desde su sitio web o a través de su API.

sábado, 21 de noviembre de 2015

¿ En que consisten los ataques DNS Spoofing ?

Muchos de los ataques que afectan diariamente a los usuarios de internet, se llevan a cabo en combinación con otra serie de técnicas para reforzar la efectividad del mismo. Una de estas técnicas se denomina DNS Spoofing, este método consiste en alterar las direcciones de los servidores DNS que esté utilizando la víctima del ataque, de esta manera podemos obtener el control sobre las consultas que se realizan.

Los servidores DNS otorgan un nombre a cada dirección IP, de esta manera no es necesario para las personas recordar las direcciones IP de cada sitio. Muchos atacantes se benefician de este nodo, se aprovechan de esta dependencia que existe con los servidores de nombres de dominio, dentro de la ruta de comunicación, cuando se consulta un sitio web.

Este ataque (DNS Spoofing) consiste simplemente en cambiar las direcciones IP de los servidores DNS de la víctima, para que en vez de que apunten al servidor legítimo, apunten en dirección de un servidor malicioso. En la siguiente imagen se puede observar el ciclo cuando se realiza una consulta a un servidor DNS:



Por otra parte en caso de que exista DNS spoofing, el ciclo es el siguiente:



¿ Como podemos realizar este ataque ?

Exiten varias formas de modificar las direcciones IP de los servidores DNS. La mayoría de usuarios, utiliza un router en su casa para poder conectar diferentes dispositivos a internet, sin embargo, existe la posibilidad de que estos dispositivos estén configurados de manera incorrecta. Uno de los aspectos más comunes es tener habilitada la opción de gestionar el router remotamente, es decir, exponer el router a través de una IP pública. En la siguiente imagen puede visualizarse un ejemplo de un panel de administración de un router:



Esta configuración en conjunto con el hecho de que la mayoría de veces se dejan las contraseñas por defecto del propio dispositivo, le permiten a un atacante, ingresar a la configuración del mismo. De esta manera tenemos la posibilidad alterar las direcciones DNS que utiliza ese router para realizar las consultas de resolución de nombres. Un ciberdelincuente podría establecer un servidor DNS malicioso y redireccionar las consultas que realiza la víctima a este servidor.


¿Qué tipos de ataque se pueden realizar con DNS Spoofing?

En base a esta técnica se pueden realizar diferentes tipos de ataques. Uno de los que posiblemente tenga más impacto, es el de montar sitios falsos que sean una réplica de aquellos que el ciberdelincuente desee obtener información relevante por parte de una potencial víctima. De esta forma cuando el usuario acceda al sitio legítimo, este será redireccionado a la réplica del sitio original que ha sido creada previamente por el ciberdelincuente.

Otra posibilidad podría ser la de comprometer a la supuesta víctima con la ayuda de la explotación de alguna vulnerabilidad. En este caso el atacante colocaría en el servidor malicioso algún tipo de exploit para que cuando el usuario "víctima" acceda al supuesto sitio legítimo, este sea vulnerado. Uno de los exploit que más se suele utilizar es, por ejemplo, el applet en Java (CVE-2011-3544). Esta vulnerabilidad permite la ejecución de código, comprometiendo en muchos casos el sistema.


¿ Cómo podemos protegernos?

Hay que dejar claro que existen otro tipo de ataques en los que se involucran servidores DNS, sin embargo en este caso podemos seguir algunas recomendaciones para intentar prevenir los ataques DNS Spoofing. Las recomendaciones son las mismas que venimos repitiendo ya desde hace tiempo para proteger nuestros equipos.

En primer lugar es muy importante deshabilitar la opción de gestión remota de los routers. En caso de que sea requiera la mencionada funcionalidad, asegurarse de establecer una contraseña segura. Es muy importante mantener el sistema operativo y todo el software del mismo actualizado en todo momento. Tanto las actualizaciones del propio sistema operativo como el de las aplicaciones nos permiten reducir el nivel de éxito en la explotación de los diferentes servicios. Por último, debemos contar una solución de seguridad con capacidad de detección proactiva que nos permite estar bien protegido contra este tipo de amenazas.

miércoles, 18 de noviembre de 2015

Introducción a Metasploit (I de III)

Metasploit, respaldado por una comunidad con más de 200.000 usuarios y colaboradores, es un proyecto open source de seguridad informática (desarrollado en Ruby) que nació principalmente  con el objetivo ayudar en el desarrollo de exploits, pero que con el tiempo se ha acabado convirtiendo en una de las herramientas más utilizadas a la hora de realizar un test de intrusión.


La arquitectura de Metasploit a ido evolucionando continuamente desde la aparición de la herramienta. Sin embargo en esta serie de artículos nos centraremos en los módulos, los cuales os paso a describir a continuación :

Modulo payloads: Nos proporciona gran cantidad de "códigos" que  se podrán ejecutar una vez haya tenido éxito el exploit.  

Modulo exploits: Aquí es donde se encuentran todos los exploits disponibles en el framework. 

Modulo encoders: Proporciona algoritmos para codificar y ofuscar los payloads que utilizaremos tras haber tenido éxito con el exploit.  

Modulo nops: Nos permite realizar u obtener operaciones nop.

Modulo auxiliary: Permite la interacción de herramientas externas como pueden ser escaners de vulnerabilidades, sniffers, etc… con el framework de Metasploit.  

En la siguiente imagen podéis apreciar como está compuesta la arquitectura del framework:


En la guia del desarrollador tenemos una explicación más detallada sobre como está compuesto.

Bueno creo que no es necesario explicar la instalación de la herramienta ya que podéis utilizarla directamente desde una máquina virtual que tenga instalada una distribución con Kali Linux 2.0. Si no podéis descargar la versión community desde su página oficial.

Antes de empezar a explicar su funcionamiento aremos énfasis en algunos puntos clave.
En principio para lanzar la herramienta podemos abrir una terminal y escribir : 

msfconsole

Si estáis utilizando la herramienta en la versión de Kali Linux 2.0 podemos abrir la herramienta directamente desde el icono que aparece en el escritorio. Si no, tendréis que iniciar antes algunos servicios para que la herramienta funcione correctamente. Abrimos una terminal y escribimos:

service postgresql start

service metasploit start

y por último ejecutamos:

msfconsole

También podemos teclear msfupdate para actualizar el framework.

Una vez dicho todo esto empecemos con el primer ejemplo. Primero abrimos una terminal y escribimos msfconsole:


Al escribir "help" nos aparecerá una lista con todos los comandos que podemos utilizar:


Ahora escribimos show exploits para que nos muestre todos los exploits incluidos en la herramienta:


Para seleccionar un exploit en concreto, escribimos use exploit + el exploit que queremos usar:


Una vez seleccionado el exploit que queremos utilizar, escribimos "show options" para que nos muestre las opciones del exploit:


Aquí veremos las opciones que podemos modificar del exploit. En la sección "required" podemos comprobar si las opciones son requeridas para el correcto funcionamiento del exploit. Por ejemplo, vamos a cambiar la primera opción, "SRVHOST" en el que tendremos que añadir la dirección de la máquina que vamos a comprometer, escribimos:

set SRVHOST 192.168.1.1 

Y volvemos a escribir "show options" para comprobar que se ha cambiado el parámetro correctamente:


Después de haber configurado correctamente el exploit, deberíamos elegir el "payload" que se ejecutará si el exploit tiene éxito:

show payloads


Volvemos a escribir "use payload/ + el payload que vamos a utilizar" 


Luego volvemos a escribir "show options", esta vez para mostrar las opciones del payload. Y como habéis podido deducir para cambiar la configuración de payload, simplemente escribimos "set + el parámetro que vamos a cambiar". Y ya por último para lanzar el exploit y obtener el control de la máquina que estamos atacando usaríamos el comando "run", o también podemos escribir simplemente "exploit":



Como se puede ver en esta ocasión el exploit a fallado al ser ejecutado, ya que simplemente es un ejemplo y no estamos atacando ninguna máquina real. Sin embargo en los siguientes artículos vamos a utilizar Metasploitable para poder atacar una máquina real en un entorno controlado, y de esta manera aprender un poco más sobre esta gran herramienta y todos los recurso que ella nos ofrece. Hasta la próxima !

lunes, 16 de noviembre de 2015

GitHub lanza un curso de formación para que los desarrolladores exploten todo su potencial

La expansión del software de código abierto ("open source") sigue en aumento debido principalmente a las ventajas que este ofrece a empresas y desarrolladores. El echo de que sea distribuido bajo una licencia que permite su uso y modificación, ayuda bastante en el de desarrollo y mejora de aplicaciones, a la vez que facilita la detección y eliminación de errores… y todo ello junto a una reducción de costes, "que nunca está de más".



Sin temor a la duda se puede afirmar que el "open source" es el presente y futuro de software, programas de libre divulgación con una flexibilidad envidiable que podemos encontrar en plataformas de la talla de Launchpad, CodePlex, Google Code y GitHub. Y precisamente GitHub, a sido quién a lanzado un curso propio que permitirá a los desarrolladores aprovechar todo su talento y potencial. La formación (Training GitHub) aunque gratuita requiere de un registro previo, que en todo caso no nos llevará más de 2 minutos, principalmente va dirigida a aquellos que se inician en la herramienta.




Está estructurado en 10 lecciones distintas, asimismo en el programa se tratan aspectos claves como  la corrección de errores comunes, la creación de accesos directos, el uso de atajos de teclado, la resolución de conflictos de fusión, el trabajo con archivos locales... Básicamente nos ofrece una introducción al ecosistema y  sus características básicas, dándonos también la posibilidad de probar con casos prácticos.



Por último como hemos comentado anteriormente, existen también diversas plataformas similares como LaunchpadCodePlex, Google Code, SourceForge ... Sin embargo aunque todas disponen de documentación para introducir al usuario en el sistema, ninguna de ellas tiene un proyecto como este para dotar a sus usuarios recién iniciados de una vista ampliada del software. Seguro que en breve comenzaran a surgir proyectos similares con las plataformas anteriormente mencionadas, ya que la principal ventaja del "open source" radica en que cualquiera puede colaborar para mejorar el proyecto. Juntos ganamos todos.

jueves, 5 de noviembre de 2015

Modificando la base de datos de Whatsapp sin dejar rastro

Cuando hablamos de whatsapp, hablamos de uno de los servicios de mensajería online más utilizados en el mundo, pero no por ello es el mejor en cuanto a protección y privacidad se refiere. Tal y como se mostraba hace foco en una investigación realizada por la organización Electronic Frontier Foundation (EFF), dedicada a defender los derechos de los usuarios en Internet, hace unos meses lanzaba su informe anual sobre las empresas del sector tecnológico en el que realiza un ranking en función de cuánto protegen las compañías los datos frente a los gobiernos.  

De echo el que sea uno de los servicios preferidos por los usuarios, hace que sea una las vías preferidas por los ciberdelincuentes para realizar sus fechorías, comó nos muestran los amigos de ESET en este artículo. Lo cierto es que desde hace poco parece que los responsables de seguridad se están poniendo las pilas, y están aplicando varias medidas de seguridad tanto para las comunicaciones como para los historiales de chat que se guardan en el teléfono, aunque según parece estas medidas no son del todo eficaces. 

Hace unas semanas varios peritos informáticos consiguieron identificar y explotar un fallo de seguridad de la aplicación, concretamente en la versión 2.12.250 ejecutada sobre dos sistemas Android 5.x y 4.4.x, y que nos permite modificar la base de datos de WhatsApp para modificar mensajes sin que nadie se percate de la modificación. 

WhatsApp utiliza para las conversaciones el software de bases de datos SQLite. En su totalidad utiliza dos bases de datos diferentes, la original, que se encuentra sin cifrar, y la copia de seguridad, la cual utiliza sistemas de criptografía simétrica junto al algoritmo AES de clave única para el cifrado y el descifrado de la misma. Dado que el backup de los datos está “protegido”, de momento solo vamos a centrarnos en la base de datos original, la que utiliza el propio cliente de mensajería en tiempo real.


1. Descargar la base de datos de conversaciones de WhatsApp al PC

Lo primero que debemos hacer para poder modificar una conversación de whatsapp es tener permisos de root en el dispositivo. Cuando hayamos activado los permisos conectamos el smartphone a nuestro pc, y a través de la herramienta de desarrollo adb ejecutamos los siguientes comandos:

adb devices (nos mostrará los dispositivos conectados, muy útil para saber si todo funciona correctamente)

adb shell (nos abrirá un terminal para controlar el smartphone)


A continuación ejecutamos el comando “su” para darle permisos como superusuario al dispositivo.
Después nos situamos sobre la ruta de la base de datos de WhatsApp tecleando en el terminal :

cd /data/data/com.whatsapp/databases


Ahora ejecutamos el comando ls -la para que nos muestre una lista con todos los archivos de dicho directorio. Si nos fijamos en esta lista, uno de los archivos se llamará msgstore.db. Este archivo contiene toda la base de datos de conversaciones de WhatsApp que se guarda automáticamente (y sin cifrar) cada vez que recibimos o enviamos un mensaje.

Una vez encontrado el archivo de la base de datos en nuestro smartphone debemos copiarlo al ordenador. Para ello escribimos dos veces “exit” en el terminal para salir del shell y volver a Windows y desde allí tecleamos:

adb pull /data/data/com.whatsapp/databases/msgstore.db

El archivo se descargará a nuestro PC, a la misma ruta donde tenemos el binario de adb copiado. Ya podeemos empezar a modificar los mensajes que nosotros queramos.


2. Modificar la base de datos de conversaciones

Una vez tenemos la base de datos en nuestro PC debemos descargarnos la aplicación SQLiteStudio con la que la abriremos y modificaremos. Una vez tengamos el programa lo ejecutamos y cargamos la base de datos desde el menú Database -> Add a database y nos conectamos a ella mediante el menú Database -> Connect to the database.


Una vez conectados a la base de datos veremos todas las tablas de la misma, aunque debemos centrarnos solo en estas dos:
  • messages 
  • messages_fts_content


Lo primero que tendremos que hacer es identificar la clave privada del mensaje. Para ello lanzamos una consulta a la base de datos con el siguiente comando:

select * from messages where data LIKE “%mensaje%”; (sustituyendo mensaje por el contenido que queremos buscar)


Apuntamos en un papel o documento la clave privada del mensaje, o valor de la columna ID, para igualar los cambios en las dos tablas anteriores. A continuación, en la columna “data” de la table “messages” cambiamos el valor del mensaje que hemos enviado por el nuevo que queremos establecer.


Una vez realizados todos los cambios que queremos, pulsamos sobre el botón “commit” para que estos se apliquen y se realicen los cambios en la base de datos. La mitad del proceso ya está hecho. Ahora abrimos la tabla messages_fts_content y en el buscador introducimos la clave privada, o ID, que hemos anotado antes. Veremos una nueva fila con el contenido del mensaje, que aún no ha sido cambiado como el de la primera tabla.


Lo seleccionamos y modificamos de igual forma, pero manteniendo el estilo original de la tabla:
  • Todo el texto en minúsculas. 
  • Las palabras separadas por tres espacios. 
  • Los signos de puntuación separados de la palabra anterior por un espacio.
Aunque este paso no es obligatorio sería recomendable para dificultar aún más el poder saber que la tabla ha sido modificada correctamente. Ya tenemos todo listo. Ahora sólo nos queda volver a copiar la tabla a nuestro teléfono.

Una vez que hemos realizado los cambios anteriores solo nos quedaría subir la base de datos de nuevo al smartphone. Para ello abrimos de nuevo una ventana de MS-DOS y tecleamos:

adb push msgstore.db /data/data/com.whatsapp/databases/msgstore.db

La base de datos se ha subido correctamente a nuestro dispositivo, aunque todavía hay un pequeño problema que debemos solucionar: los permisos.

Al haber subido una base de datos como usuario adb con permisos de superusuario, el propietario y el grupo de este archivo ahora es “root”. Si queremos borrar todo rastro de haber modificado dicha conversación tenemos que teclear en nuestro terminal:
  • adb shell 
  • su 
  • cd /data/data/com.whatsapp/databases 
  • ls –la 
  • chown u0_a88:u0_a88 msgstore.db


Todo listo. Ya podemos abrir nuestro WhatsApp y comprobar que los mensajes se han modificado correctamente. A simple vista es totalmente imposible saber si un mensaje es original o ha sido modificado y siguiendo un análisis forense tampoco sería posible saberlo ya que los cambios realizados no han dejado rastro ni en la base de datos ni en nuestro smartphone.


Según la finalidad que decidamos darle a esto, debemos tener en cuenta que es posible que estemos cometiendo un delito (por ejemplo para presentarlo como pruebas legales) y que siempre hay formas de detectar el engaño (por ejemplo mediante el análisis físico de los chips de memoria, quienes podrían demostrar que hay otro archivo “mstorage.db” que ha sido eliminado previamente.