WhatsApp se ha convertido en una aplicación esencial para muchos usuarios, sirviendo como un espacio privado donde las conversaciones se consideran confidenciales. Debido a su uso diario, se comparten en esta plataforma temas que no se discutirían en redes sociales públicas. Esto hace que WhatsApp sea crucial para el análisis forense digital, ya que almacena conversaciones, archivos multimedia, marcas de tiempo, información sobre grupos y metadatos. Esta información es valiosa para reconstruir eventos, identificar contactos y corroborar cronologías en investigaciones criminales y cibernéticas.

El análisis forense de WhatsApp busca obtener pruebas confiables. Los datos recuperados de un dispositivo pueden revelar quién se comunicó con quién, en qué momento se enviaron y recibieron los mensajes, qué archivos multimedia fueron intercambiados, y a menudo, a qué cuenta pertenece el dispositivo. Esta información se utiliza para establecer conexiones entre sospechosos y validar testimonios, además de permitir un mapeo de movimientos cuando se combina con datos de ubicación, en los que investigadores y fiscales pueden confiar.

Artefactos de WhatsApp en dispositivos Android

En dispositivos Android, WhatsApp guarda la mayoría de sus datos en el área de datos del usuario. Los archivos de la aplicación suelen encontrarse en una ruta como
/data/data/com.whatsapp/ (o de manera equivalente, /data/user/0/com.whatsapp/ en muchos dispositivos).

Acceder a estos directorios normalmente requiere privilegios elevados. Para leerlos directamente, se necesita acceso de superusuario (root) o un volcado físico del sistema de archivos obtenido de manera legal y técnica. Sin root o una imagen física, las opciones se limitan a copias de seguridad lógicas u otros métodos de extracción que pueden no revelar las bases de datos privadas de WhatsApp.

Dos archivos clave en Android son wa.db y msgstore.db. Ambos son bases de datos SQLite que constituyen el núcleo de la evidencia en WhatsApp.

Wa.db actúa como la base de datos de contactos, listando los contactos del usuario de WhatsApp y comúnmente contiene números de teléfono, nombres, estados, marcas de tiempo y metadatos adicionales. Por lo general, se utiliza un navegador SQLite o se consulta con sqlite3 para explorar sus tablas.

Las tablas que suelen interesar a los investigadores incluyen la que almacena los registros de contactos (normalmente wa_contacts), sqlite_sequence que refleja contadores de autoincremento, y android_metadata que contiene información local, como el idioma usado en la aplicación.

En esencia, wa.db actúa como la libreta de direcciones de WhatsApp, que incluye nombres, números y algo de contexto sobre cada contacto.

msgstore.db, por su parte, es el almacén de mensajes. Esta base de datos guarda los mensajes enviados y recibidos, marcas de tiempo, estados de los mensajes y referencias a archivos multimedia, así como identificadores de remitente y destinatario.

En muchas versiones de la aplicación, se pueden encontrar tablas que incluyen una tabla resumen (frecuentemente llamada sqlite_sequence), una tabla de índice para el contenido de los mensajes (message_fts_content o similar), la tabla principal de mensajes que generalmente contiene el texto del mensaje y metadatos, así como messages_thumbnails que catalogan imágenes y sus marcas de tiempo, junto a la tabla chat_list que mantiene entradas de conversaciones.

Cabe señalar que WhatsApp es una aplicación en constante evolución y los nombres de los campos pueden cambiar en diferentes versiones. Las versiones recientes pueden incluir campos adicionales como media_enc_hash, edit_version o payment_transaction_id. Siempre es recomendable auditar el esquema antes de confiar en un nombre de campo específico.

En muchos dispositivos Android, WhatsApp también almacena copias de seguridad cifradas en ubicaciones públicas, típicamente en /data/media/0/WhatsApp/Databases/ (la tarjeta SD virtual) o en /mnt/sdcard/WhatsApp/Databases/ para tarjetas SD físicas. Estos archivos de copia de seguridad tienen una nomenclatura como msgstore.db.cryptXX, donde XX implica la versión del esquema criptográfico.

Los archivos msgstore.db.cryptXX son copias cifradas de msgstore.db, diseñadas para respaldos de dispositivos. Para descifrarlos, se requiere una clave criptográfica que WhatsApp almacena de forma privada en el dispositivo, generalmente en /data/data/com.whatsapp/files/. Sin esa clave, las copias de seguridad cifradas no son accesibles.

Otros archivos importantes en Android que merecen ser revisados incluyen las preferencias y los XML de registro ubicados en /data/data/com.whatsapp/shared_prefs/. El archivo com.whatsapp_preferences.xml a menudo contiene detalles del perfil y configuraciones. Un fragmento de este archivo podría mostrar el número de teléfono vinculado a la cuenta, la versión de la aplicación, un mensaje de perfil como "¡Hola! Estoy usando WhatsApp" y el nombre visible de la cuenta. Por otro lado, registration.RegisterPhone.xml frecuentemente incluye metadatos de registro, como el número de teléfono y el formato regional.

El archivo axolotl.db dentro de /data/data/com.whatsapp/databases/ alberga claves criptográficas (usadas en el protocolo Signal/Double Ratchet) y datos de identificación de la cuenta. Además, chatsettings.db contiene la configuración de la aplicación. Los registros se archivan en /data/data/com.whatsapp/files/Logs/ y pueden incluir whatsapp.log y copias de seguridad rotadas comprimidas como whatsapp-YYYY-MM-DD.1.log.gz.

Estos registros pueden proporcionar información sobre la actividad de la aplicación y errores, lo que puede ser valioso para análisis temporales o resolución de problemas.

Dentro del área privada de la aplicación, se podrían encontrar fotos de perfil en caché en /data/data/com.whatsapp/cache/Profile Pictures/ y miniaturas de avatares en /data/data/com.whatsapp/files/Avatars/. Algunas miniaturas pueden tener la extensión .j, pero en realidad son archivos JPEG. Es fundamental validar las firmas de los archivos en lugar de confiar únicamente en sus extensiones.

Si el dispositivo cuenta con una tarjeta SD, podría haber un directorio de WhatsApp en la raíz de la tarjeta que almacene copias de archivos compartidos (/mnt/sdcard/WhatsApp/.Share/), una carpeta de papelera para contenido eliminado (/mnt/sdcard/WhatsApp/.trash/) y subdirectorios con bases de datos y multimedia que imitan los del almacenamiento interno. La existencia de archivos eliminados o carpetas .trash puede ser una fuente útil para la recuperación de medios.

Un aspecto a considerar en Android es la variabilidad en el comportamiento de los fabricantes o las ROM personalizadas. Algunos dispositivos cambian las ubicaciones de almacenamiento de datos de la aplicación. Por ejemplo, algunos teléfonos Xiaomi implementan un «Segundo Espacio», creando un entorno de trabajo distinto donde WhatsApp guarda sus datos en una ruta de ID de usuario diferente, como /data/user/10/com.whatsapp/databases/wa.db, en vez de la habitual /data/user/0/com.whatsapp/databases/wa.db.

Ante estos cambios, es crucial verificar las rutas reales en el dispositivo de destino en lugar de asumir ubicaciones estándar.

Artefactos de WhatsApp en dispositivos iOS

En iOS, WhatsApp tiende a consolidar sus datos en unas pocas ubicaciones, accesibles comúnmente a través de copias de seguridad del dispositivo. La base de datos principal de la aplicación es normalmente ChatStorage.sqlite, situada en un contenedor de grupo compartido como
/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/ (algunas herramientas forenses la despliegan como
AppDomainGroup-group.net.whatsapp.WhatsApp.shared).

Dentro de ChatStorage.sqlite, las tablas más útiles suelen ser ZWAMESSAGE, que almacena los mensajes, y ZWAMEDIAITEM, que contiene metadatos sobre archivos adjuntos y elementos multimedia. Otras tablas, como ZWAPROFILEPUSHNAME y ZWAPROFILEPICTUREITEM, asocian identificadores de WhatsApp con nombres visibles y avatares. La tabla Z_PRIMARYKEY normalmente incluye metadatos generales de la base de datos, como el conteo de registros.

iOS también almacena archivos de soporte en el contenedor de grupos. El archivo BackedUpKeyValue.sqlite puede incluir claves criptográficas y datos que ayudan a identificar la propiedad de la cuenta. El archivo ContactsV2.sqlite guarda información de contactos: nombres, números de teléfono, estados de perfil e ID de WhatsApp. Un simple archivo de texto como consumer_version podría contener la versión de la aplicación y current_wallpaper.jpg (o wallpaper para versiones anteriores) se encarga de la imagen de fondo utilizada en los chats de WhatsApp.

El archivo blockedcontacts.dat lista los números bloqueados y pw.dat puede contener una contraseña cifrada. Las preferencias se almacenan en archivos como net.whatsapp.WhatsApp.plist o group.net.whatsapp.WhatsApp.shared.plist y contienen configuración del perfil.

Las miniaturas de archivos multimedia, avatares y mensajes multimedia se localizan en rutas como
/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Media/Profile/
y
/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Message/Media/. Los registros de WhatsApp, como calls.log y calls.backup.log, generalmente se encuentran en las carpetas Documents o Library/logs, lo que puede ayudar a esbozar la actividad de llamadas.

Dado que las copias de seguridad de dispositivos iOS son comunes a través de iTunes o Finder, a menudo es posible extraer elementos de WhatsApp de una copia de seguridad del dispositivo en lugar de necesitar una imagen completa del sistema de archivos.

Si la copia de seguridad no está cifrada y es completa, podría incluir el archivo ChatStorage.sqlite y los archivos multimedia relacionados. Si está cifrada, necesitará la contraseña de la copia de seguridad o métodos legales para desencriptarla. En la práctica, muchos investigadores efectúan una copia de seguridad forense y luego examinan las bases de datos de WhatsApp con un visor SQLite o una herramienta de análisis forense que considera las variaciones en el esquema de WhatsApp entre versiones.

Notas prácticas para principiantes

Gracias a las bases de datos y archivos multimedia descritos, es posible recuperar listas de contactos, historiales de chat completos o parciales, marcas de tiempo (comúnmente en un formato de época en Android), estados de mensajes (enviados, entregados, leídos), nombres y hashes de archivos multimedia, pertenencia a grupos, nombres de perfil y avatares, contactos bloqueados, así como registros y metadatos de versiones. Esto permite entender quién se comunicó con quién, cuándo se enviaron mensajes, si se intercambiaron archivos multimedia y qué cuentas están configuradas en el dispositivo.

Para quienes inician en el análisis, es esencial seguir ciertas precauciones. Primero, siempre trabaja con imágenes forenses o copias de archivos extraídos. Evita realizar operaciones directamente en el dispositivo a menos que estés siguiendo un protocolo aprobado y documentando cada acción. En segundo lugar, es recomendable utilizar herramientas forenses confiables para acceder a las bases de datos SQLite.

Si examinas campos manualmente, verifica los formatos de las marcas de tiempo y las zonas horarias. Tercero, las copias de seguridad cifradas requieren la clave del dispositivo para descifrarlas. Esta clave frecuentemente se encuentra en el área privada de la aplicación en Android, y sin ella no podrás desencriptar archivos .cryptXX. Cuarto, los chats y archivos eliminados no siempre se eliminan de manera efectiva, ya que las bases de datos pueden conservar registros o los archivos multimedia pueden persistir en cachés o almacenamiento externo. Sin embargo, la recuperación no está garantizada y depende de varios factores, como el tiempo transcurrido desde la eliminación y el uso posterior del dispositivo.

Al revisar las tablas de mensajes, es importante asignar cuidadosamente los ID de mensaje a sus respectivos archivos multimedia. Muchas versiones de WhatsApp utilizan tablas independientes para los elementos multimedia, donde el archivo real se menciona mediante un ID o nombre de archivo. Las tablas de miniaturas y los directorios multimedia ayudarán a reconstruir la relación entre un mensaje textual y su archivo adjunto. Presta atención a la aparición de nuevos campos en las versiones recientes de la aplicación. Estos pueden contener ID de pago, historial de modificaciones o metadatos de cifrado. Asegúrate de ajustar tus consultas según sea necesario.

Finalmente, como WhatsApp y los sistemas operativos evolucionan constantemente, asegúrate de revisar el esquema y las marcas de tiempo de los archivos de acuerdo con la evidencia específica que poseas. No asumas que los nombres de campo o las ubicaciones son las mismas en todos los dispositivos o versiones de la aplicación. Mantén un registro de las rutas y nombres de archivos que encuentres, de modo que puedas reproducir y documentar el proceso en los informes.

Resumen

El análisis forense de WhatsApp es una disciplina compleja. En dispositivos Android, los artefactos principales incluyen la base de datos de contactos wa.db, el almacén de mensajes msgstore.db y las copias de seguridad cifradas como msgstore.db.cryptXX, además de directorios multimedia, XML de preferencias y material de claves criptográficas en el área privada de la aplicación.

En iOS, el artefacto clave es ChatStorage.sqlite y varios archivos de soporte en el contenedor de grupos, que pueden incluirse en una copia de seguridad del dispositivo. Para recuperar e interpretar estos artefactos, es necesario tener acceso adecuado al dispositivo o a una imagen de seguridad, y saber dónde buscar los archivos de la aplicación en el dispositivo que estás analizando. Además, es importante sentirse cómodo revisando bases de datos SQLite y estar listo para desencriptar copias de seguridad cuando sea necesario.

Fuentes:

Con Información de blog.segu-info.com.ar