Sqlite Forensics — Carving

Buenas tardes comunidad DFIR!!!

Este año vengo con muchas ganas de escribir, pero como le puede pasar a algunas personas estaba bastante indeciso que temas tocar que pudiesen ser de interés y aportar a la mayoría de blogs en habla hispana que tenemos como referencias. Entre mucho pensar, tome la decisión más fácil, voy a iniciar una serie de publicaciones sobre un tema que me apasiona y quiero empezar a realizar más investigaciones “Análisis Forense sobre SQLite”.

Las bases de datos SQLite son fuentes muy comunes de artefactos forenses en la actualidad, es importante entender que muchas consultas que nos realizan en los puntos de pericias no pueden ser contestada a través de reportes de herramientas de análisis de dispositivos móviles, sino dependen del conocimiento del especialista, es por ello que se deben contar con el conocimiento necesario para realizar análisis manual.

Continuando con SQLite, una gran cantidad de aplicaciones móviles almacenan datos en dichas bases de datos: también puede encontrarlos en computadoras de escritorio y portátiles, así como, por ejemplo, navegadores web, mensajerías y otras fuentes de evidencia digital, es por eso que dedicaremos varias publicaciones a su análisis

Es importante comentar que no se realizara introducción sobre sqlite, para ello se recomienda ampliar el conocimiento en el sitio web:


https://www.sqlite.org/


Vamos a iniciar con una prueba de concepto (PoC), para ello utilizaremos el archivo msgstore.db, la cual es una de las bases de datos contenida en la aplicación whatsapp. Para visualizar su contenido utilizaremos la herramienta DB Browser for SQLite, donde abriremos la base de datos desde la herramienta e ingresaremos a la tabla “messages”, la cual contiene entre otras cosas la columna “data”, la cual corresponde a los chat

En la PoC eliminaremos un chat de Whatsapp manualmente, sin recurrir a la aplicación

Como verán en la imagen, se pueden detallar cinco registros y tres mensajes emitidos.

Utilizando la misma herramienta, borraremos el chat Testing y escribiremos los cambios:



Partiendo de la premisa en informática forense que mientras los datos no sean sobreescritos son propensos a ser recuperados, para el análisis utilizaremos dos herramientas de carving de sqlite para tratar de identificar que contenidos adicionales estaban contenidos en la base de datos. Para ello, mostraremos dos herramientas que nos permiten buscar en Unallocated Space y Freeblock Space


- Recoversqlite


Herramienta desarrollada por Alejandro Ramos “aramosf”

Link de descarga: https://github.com/aramosf/recoversqlite

Para utilizarla requerimos de python y podemos iniciar con la sintaxis:

python recoversqlite -f msgstore.db

Esta herramienta tiene la ventaja de que nos permite parsear los primeros 100 bytes (cabecera), del cual podemos analizar variables importantes como el WAL, tamaño de la base y un dato muy importante: si esta activo el Incremental-vacuum mode el cual compacta el espacio eliminado en SQLite



En los resultados se puede verificar que en la página 14 en los offset 57366 a 57344 como Freeblock Space esta el contenido “testing”


- SQLite Deleted Records Parser Master

Herramienta desarrollada por Mari DeGrazia

Link de descarga: https://github.com/mdegrazia/SQLite-Deleted-Records-Parser

Para utilizarla requerimos de python y podemos iniciar con la sintaxis:

sqlparse -f msgstore.db -o report.tsv

Del cual se genera un reporte en texto plano, del cual se puede generar en ascii el contenido de la información requerida

Free Block 57332 12 testing


Conclusiones:

Hasta el momento en base de datos SQLite pudimos recuperar el contenido de los chat, en las proximas publicaciones seguiremos analizando manualmente

Siempre recomendamos dos herramientas o procedimientos que nos permitan comparar los resultados.


Saludos a la comunidad #DFIR