{"id":953,"date":"2015-10-02T19:36:41","date_gmt":"2015-10-03T01:36:41","guid":{"rendered":"https:\/\/psoluciones.net\/?p=953"},"modified":"2015-10-02T19:36:41","modified_gmt":"2015-10-03T01:36:41","slug":"falsificar-los-mensajes-de-whatsapp","status":"publish","type":"post","link":"https:\/\/emanuelpaxtian.com\/blog\/falsificar-los-mensajes-de-whatsapp\/","title":{"rendered":"Falsificar los mensajes de WhatsApp"},"content":{"rendered":"<p>WhatsApp es sin duda la aplicaci\u00f3n de mensajer\u00eda instant\u00e1nea m\u00e1s utilizada en todo el mundo. Cada vez las conversaciones que se env\u00edan a trav\u00e9s de este cliente de mensajer\u00eda tienen un mayor valor, tanto personal para los usuarios como para piratas inform\u00e1ticos e incluso como pruebas en asuntos legales. Para proteger la seguridad e integridad de estas conversaciones, el equipo de WhatsApp ha aplicado varias medidas de seguridad tanto a las comunicaciones como a los historiales de chat que se guardan en el tel\u00e9fono, aunque seg\u00fan parece estas medidas no son del todo eficaces.<\/p>\n<p>Peritos inform\u00e1ticos han conseguido identificar y explotar el fallo de seguridad de WhatsApp, concretamente en la versi\u00f3n 2.12.250 ejecutada sobre dos sistemas Android 5.x y 4.4.x, que permite modificar la base de datos de WhatsApp para editar mensajes sin dejar rastro de la modificaci\u00f3n.<\/p>\n<p>WhatsApp utiliza para las conversaciones el software de bases de datos SQLite. WhatsApp en total utiliza dos bases de datos diferentes, la original, que se encuentra sin cifrar, y la copia de seguridad, la cual utiliza sistemas de criptograf\u00eda sim\u00e9trica junto al algoritmo AES de clave \u00fanica para el cifrado y el descifrado de la misma. Mientras que la copia de datos est\u00e1 \u201cprotegida\u201d y no nos interesa de momento, vamos a centrarnos en la base de datos original, la que utiliza el propio cliente de mensajer\u00eda en tiempo real.<\/p>\n<p>La base de datos que utiliza WhatsApp para mostrar las conversaciones en tiempo real en el propio cliente de mensajer\u00eda se guarda en plano, sin cifrar como hemos dicho, aunque s\u00ed que se encuentra en un directorio de acceso limitado.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-958 size-full\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-modificada-655x544.jpg\" alt=\"Captura-de-WhatsApp-conjunta-modificada-655x544\" width=\"634\" height=\"527\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-modificada-655x544.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-modificada-655x544-300x249.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<h2>Descargar la base de datos de conversaciones de WhatsApp al PC<\/h2>\n<p>Para poder modificar una conversaci\u00f3n de WhatsApp lo primero que debemos hacer es tener permisos de root sobre el dispositivo. Una vez con estos permisos habilitados conectamos el smartphone a nuestro ordenador y, a trav\u00e9s de la herramienta de desarrollo adb ejecutamos los siguientes comandos:<\/p>\n<ul>\n<li>adb devices (nos muestra los dispositivos conectados, \u00fatil para saber si todo funciona correctamente)<\/li>\n<li>adb shell (nos abre un terminal para controlar el smartphone)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-954\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-1-655x331.jpg\" alt=\"ADB-SQL-WhatsApp-1-655x331\" width=\"634\" height=\"320\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-1-655x331.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-1-655x331-300x151.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>A continuaci\u00f3n ejecutamos el comando \u201csu\u201d para conseguir permisos de superusuario en el dispositivo.<\/p>\n<ul>\n<li>su<\/li>\n<\/ul>\n<p>Con estos garantizados nos situamos sobre la ruta de las bases de datos de WhatsApp tecleando en el terminal o shell:<\/p>\n<ul>\n<li>cd \/data\/data\/com.whatsapp\/databases<\/li>\n<\/ul>\n<p>A continuaci\u00f3n ejecutamos el comando ls -la para mostrar una lista con todos los archivos de dicho directorio. Si nos fijamos en esta lista, uno de los archivos se llamar\u00e1 msgstore.db. Este archivo contiene toda la base de datos de conversaciones de WhatsApp que se guardan autom\u00e1ticamente (y sin cifrar) cada vez que recibimos o enviamos un mensaje.<\/p>\n<p>Una vez confirmado que tenemos el archivo de la base de datos en nuestro smartphone debemos copiarlo al ordenador. Para ello escribimos dos veces \u201cexit\u201d en el terminal para salir del shell y volver a Windows y desde all\u00ed tecleamos:<\/p>\n<ul>\n<li>adb pull \/data\/data\/com.whatsapp\/databases\/msgstore.db<\/li>\n<\/ul>\n<p>El archivo se descarga a nuestro PC, a la misma ruta donde tenemos el binario de adb copiado. Todo listo. Ya podemos empezar a modificar los mensajes que queramos.<\/p>\n<h2>Modificar la base de datos de conversaciones<\/h2>\n<p>Una vez tenemos la base de datos en nuestro PC debemos descargarnos la aplicaci\u00f3n <a href=\"http:\/\/sqlitestudio.pl\/\" target=\"_blank\">SQLiteStudio <\/a>con la que la abriremos y modificaremos. Una vez tengamos el programa lo ejecutamos y cargamos la base de datos desde el men\u00fa Database -&gt; Add a database y nos conectamos a ella mediante el men\u00fa Database -&gt; Connect to the database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-956\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Base-de-datos-SQL-de-WhatsApp-655x351.jpg\" alt=\"Base-de-datos-SQL-de-WhatsApp-655x351\" width=\"634\" height=\"340\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Base-de-datos-SQL-de-WhatsApp-655x351.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Base-de-datos-SQL-de-WhatsApp-655x351-300x161.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>Una vez conectados a la base de datos veremos todas las tablas de la misma, aunque debemos centrarnos en dos:<\/p>\n<ul>\n<li>messages<\/li>\n<li>messages_fts_content<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-962\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Tablas-base-de-datos-SQL-de-WhatsApp-655x353.jpg\" alt=\"Tablas-base-de-datos-SQL-de-WhatsApp-655x353\" width=\"634\" height=\"342\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Tablas-base-de-datos-SQL-de-WhatsApp-655x353.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Tablas-base-de-datos-SQL-de-WhatsApp-655x353-300x162.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>Lo primero que debemos hacer es identificar la clave privada del mensaje. Para ello lanzamos una consulta a la base de datos con el siguiente comando:<\/p>\n<ul>\n<li>select * from messages where data LIKE \u201c%mensaje%\u201d; (sustituyendo mensaje por el contenido que queremos buscar)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-957\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Buscar-mensaje-SQL-WhastApp-655x353.jpg\" alt=\"Buscar-mensaje-SQL-WhastApp-655x353\" width=\"634\" height=\"342\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Buscar-mensaje-SQL-WhastApp-655x353.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Buscar-mensaje-SQL-WhastApp-655x353-300x162.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>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\u00f3n, en la columna \u201cdata\u201d de la table \u201cmessages\u201d cambiamos el valor del mensaje que hemos enviado por el nuevo que queremos establecer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-961\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-655x88.jpg\" alt=\"Mensaje-WhatsApp-a-modificar-655x88\" width=\"634\" height=\"85\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-655x88.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-655x88-300x40.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>Una vez realizados los cambios que queremos pulsamos sobre el bot\u00f3n \u201ccommit\u201d para que estos se apliquen y cambien en la base de datos.<\/p>\n<p>La mitad del proceso ya est\u00e1 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\u00fan no ha sido cambiado como el de la primera tabla.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-960\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-2-655x96.jpg\" alt=\"Mensaje-WhatsApp-a-modificar-2-655x96\" width=\"634\" height=\"93\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-2-655x96.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Mensaje-WhatsApp-a-modificar-2-655x96-300x44.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>Lo seleccionamos y modificamos de igual forma, pero manteniendo el estilo original de la tabla:<\/p>\n<ul>\n<li>Todo el texto en min\u00fasculas.<\/li>\n<li>Las palabras separadas por tres espacios.<\/li>\n<li>Los signos de puntuaci\u00f3n separados de la palabra anterior por un espacio.<\/li>\n<\/ul>\n<p>Aunque este paso no es obligatorio es recomendable para dificultar a\u00fan m\u00e1s el poder saber que la tabla ha sido modificada. Ya tenemos todo listo. Ahora s\u00f3lo nos queda volver a copiar la tabla a nuestro m\u00f3vil.<\/p>\n<h2>Copiar al tel\u00e9fono la base de datos modificada de conversaciones de WhatsApp<\/h2>\n<p>Una vez que hemos realizado los cambios anteriores en la base de datos es hora de subirla de nuevo al smartphone. Para ello abrimos de nuevo una ventana de MS-DOS y tecleamos:<\/p>\n<ul>\n<li>adb push msgstore.db \/data\/data\/com.whatsapp\/databases\/msgstore.db<\/li>\n<\/ul>\n<p>La base de datos se ha subido correctamente a nuestro dispositivo, aunque hay un peque\u00f1o problema: los permisos.<\/p>\n<p>Al haber subido una base de datos como usuario adb con permisos de superusuario, el propietario y el grupo de este archivo ahora es \u201croot\u201d. Si queremos borrar todo rastro de haber modificado dicha conversaci\u00f3n tenemos que teclear en nuestro terminal:<\/p>\n<ul>\n<li>adb shell<\/li>\n<li>su<\/li>\n<li>cd \/data\/data\/com.whatsapp\/databases<\/li>\n<li>ls \u2013la<\/li>\n<li>chown u0_a88:u0_a88 msgstore.db<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-955\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-2-655x333.jpg\" alt=\"ADB-SQL-WhatsApp-2-655x333\" width=\"634\" height=\"322\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-2-655x333.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/ADB-SQL-WhatsApp-2-655x333-300x152.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/p>\n<p>Todo listo. Ya podemos abrir nuestro WhatsApp de nuevo y ver c\u00f3mo los mensajes que hemos enviado y recibido son diferentes. A simple vista es totalmente imposible saber si un mensaje es original o ha sido modificado y siguiendo un an\u00e1lisis forense tampoco es posible saberlo ya que los cambios no han dejado rastro ni en la base de datos ni en nuestro smartphone.<\/p>\n<p><a title=\"\" href=\"http:\/\/www.redeszone.net\/app\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-modificada.jpg\" data-rel=\"lightbox[gallery-X1eE]\"><span class=\"bttrlazyloading-wrapper bttrlazyloading-loaded\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-959\" src=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-original-655x544.jpg\" alt=\"Captura-de-WhatsApp-conjunta-original-655x544\" width=\"634\" height=\"527\" srcset=\"https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-original-655x544.jpg 634w, https:\/\/emanuelpaxtian.com\/blog\/wp-content\/uploads\/2015\/10\/Captura-de-WhatsApp-conjunta-original-655x544-300x249.jpg 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/span><\/a><\/p>\n<p>Seg\u00fan la finalidad que vayamos a dar 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\u00f1o (por ejemplo mediante el an\u00e1lisis f\u00edsico de los chips de memoria, quienes podr\u00edan demostrar que hay otro archivo \u201cmstorage.db\u201d que ha sido eliminado previamente.<\/p>\n<p>Tomado de: www.redeszone.net<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WhatsApp es sin duda la aplicaci\u00f3n de mensajer\u00eda instant\u00e1nea m\u00e1s utilizada en todo el mundo. Cada vez las conversaciones que se env\u00edan a trav\u00e9s de este cliente de mensajer\u00eda tienen&hellip;<\/p>\n","protected":false},"author":1,"featured_media":959,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,11,10],"tags":[],"class_list":["post-953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-hacking","category-seguridad"],"_links":{"self":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/comments?post=953"}],"version-history":[{"count":0,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/953\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media\/959"}],"wp:attachment":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media?parent=953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/categories?post=953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/tags?post=953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}