Forense Digital

SQLite Forense

Técnicas de análisis forense aplicadas a bases de datos SQLite, el formato de almacenamiento más común en aplicaciones móviles como WhatsApp, SMS, contactos, navegadores y la mayoría de apps de iOS y Android.

5 min de lectura

¿Qué es SQLite?

SQLite es un sistema de gestión de bases de datos relacional embebido. A diferencia de MySQL o PostgreSQL, no requiere un servidor: toda la base de datos se almacena en un único archivo. Esta simplicidad lo ha convertido en el estándar para aplicaciones móviles.

Ubicuidad de SQLite

Se estima que SQLite está desplegado en más de 1 billón de dispositivos activos. Cada smartphone Android e iOS contiene docenas de bases de datos SQLite con información crítica del usuario.

Aplicaciones que Usan SQLite

AplicaciónBase de DatosContenido
WhatsAppmsgstore.dbMensajes, chats, multimedia
SMS/MMSmmssms.db (Android)Mensajes de texto
Contactoscontacts2.dbAgenda telefónica
ChromeHistory, CookiesNavegación web
SafariHistory.dbHistorial iOS
Telegramcache4.dbMensajes y medios
Instagramdirect.dbMensajes directos
CalendarioCalendar.dbEventos y citas

Estructura de SQLite

Componentes Principales

┌─────────────────────────────────────┐
│           Archivo .db               │
├─────────────────────────────────────┤
│  Header (100 bytes)                 │
│  - Magic number: "SQLite format 3"  │
│  - Page size, encoding, version     │
├─────────────────────────────────────┤
│  Páginas de datos                   │
│  - Tablas                           │
│  - Índices                          │
│  - Espacio libre (freelist)         │
├─────────────────────────────────────┤
│  WAL (Write-Ahead Log) - opcional   │
└─────────────────────────────────────┘

Archivos Asociados

ArchivoExtensiónPropósito Forense
Principal.db, .sqliteDatos principales
Journal.db-journalTransacciones en curso
WAL.db-walWrite-Ahead Log, datos recientes
SHM.db-shmShared memory para WAL
WAL: Oro Forense

El archivo WAL (Write-Ahead Log) puede contener datos que aún no se han escrito en la base de datos principal, incluyendo mensajes muy recientes o incluso borrados.

Técnicas de Análisis Forense

1. Análisis Estructural

Examinar tablas, columnas, relaciones y tipos de datos.

-- Listar todas las tablas
SELECT name FROM sqlite_master WHERE type='table';

-- Ver estructura de una tabla
PRAGMA table_info(messages);

-- Contar registros
SELECT COUNT(*) FROM messages;

2. Análisis de Contenido

Extraer y analizar los datos almacenados.

-- Ejemplo: Mensajes de WhatsApp
SELECT
    datetime(timestamp/1000, 'unixepoch', 'localtime') as fecha,
    key_remote_jid as contacto,
    data as mensaje
FROM messages
WHERE data IS NOT NULL
ORDER BY timestamp DESC;

3. Recuperación de Datos Eliminados

  1. Análisis del freelist: SQLite mantiene una lista de páginas libres que pueden contener datos eliminados.

  2. Carving de páginas: Buscar estructuras de registro en el espacio no asignado dentro de las páginas.

  3. Análisis del WAL: El Write-Ahead Log puede contener versiones anteriores de registros modificados o eliminados.

  4. Recuperación de journal: El archivo journal puede tener datos de transacciones no completadas.

  5. Análisis de slack space: El espacio entre registros dentro de una página puede contener fragmentos de datos antiguos.

4. Análisis Temporal

Los timestamps en SQLite pueden estar en varios formatos:

FormatoEjemploConversión
Unix timestamp (s)1705587600datetime(ts, 'unixepoch')
Unix timestamp (ms)1705587600000datetime(ts/1000, 'unixepoch')
Julian day2460325.5datetime(ts)
Texto ISO’2026-01-18 15:00:00’Directo

Herramientas Especializadas

Gratuitas

HerramientaCapacidades
DB Browser for SQLiteExploración visual, consultas SQL
SQLite Forensic ExplorerRecuperación de eliminados
AutopsyPlugin SQLite integrado
sqlparseAnálisis programático en Python

Comerciales

HerramientaEspecialidad
Cellebrite PAParsers específicos por app
Oxygen ForensicAnálisis integrado
Belkasoft Evidence CenterCarving avanzado
Magnet AXIOMAnálisis multiplataforma

Caso: Análisis de WhatsApp

Ubicación de Bases de Datos

Android:

/data/data/com.whatsapp/databases/msgstore.db
/data/data/com.whatsapp/databases/wa.db (contactos)

iOS:

/private/var/mobile/Containers/Shared/AppGroup/
  group.net.whatsapp.WhatsApp.shared/ChatStorage.sqlite

Estructura de msgstore.db

TablaContenido
messagesTodos los mensajes
chat_listLista de conversaciones
message_mediaMetadatos de multimedia
group_participantsMiembros de grupos
receiptsEstados de lectura

Consulta de Ejemplo

-- Mensajes con un contacto específico
SELECT
    m._id,
    datetime(m.timestamp/1000, 'unixepoch', 'localtime') as fecha,
    CASE m.key_from_me
        WHEN 0 THEN 'Recibido'
        WHEN 1 THEN 'Enviado'
    END as direccion,
    m.data as mensaje,
    mm.file_path as archivo_adjunto
FROM messages m
LEFT JOIN message_media mm ON m._id = mm.message_row_id
WHERE m.key_remote_jid LIKE '%34666777888%'
ORDER BY m.timestamp;

Recuperación de Mensajes Borrados

Por Qué Funciona

Cuando SQLite “borra” un registro:

  1. Marca el espacio como libre en el freelist
  2. NO sobrescribe los datos inmediatamente
  3. Los datos permanecen hasta que se reutiliza ese espacio

Técnica de Carving

# Ejemplo conceptual de carving en SQLite
import sqlite3

def find_deleted_records(db_path):
    with open(db_path, 'rb') as f:
        data = f.read()

    # Buscar patrones de registros de WhatsApp
    # (mensaje, timestamp, etc.)
    # Análisis de páginas marcadas como libres
    # ...
Limitaciones

La recuperación de datos eliminados no está garantizada. Depende de cuánto tiempo pasó, cuánta actividad tuvo la base de datos, y si hubo operaciones VACUUM que compactan el archivo.

Integridad y Validación

Verificaciones de Integridad

-- Verificar integridad de la base de datos
PRAGMA integrity_check;

-- Verificar integridad rápida
PRAGMA quick_check;

-- Ver versión de SQLite
SELECT sqlite_version();

Documentación Forense

Para cada base de datos analizada, documentar:

  • Hash MD5/SHA-256 del archivo original
  • Ruta original en el dispositivo
  • Fecha de última modificación
  • Herramientas utilizadas
  • Consultas ejecutadas

Ejemplo Práctico: Investigación de Fraude

Escenario

Un empleado es sospechoso de filtrar información confidencial a la competencia. Se requiere analizar sus comunicaciones de WhatsApp.

Proceso

  1. Extracción forense del dispositivo Android del empleado.

  2. Localización de /data/data/com.whatsapp/databases/msgstore.db

  3. Cálculo de hash: SHA-256 para cadena de custodia.

  4. Análisis estructural: Identificar tablas y relaciones.

  5. Búsqueda específica:

SELECT * FROM messages
WHERE data LIKE '%confidencial%'
   OR data LIKE '%proyecto%'
   OR data LIKE '%cliente%';
  1. Análisis temporal: Correlacionar fechas de mensajes con eventos conocidos.

  2. Recuperación de eliminados: Carving del espacio libre.

Hallazgos

  • 47 mensajes con información de clientes enviados a número externo
  • 12 mensajes eliminados recuperados con datos de proyectos
  • Timeline coincide con período de negociación con competidor

Conclusión

El análisis forense de SQLite es una habilidad fundamental para cualquier perito digital. La ubicuidad de este formato en dispositivos móviles significa que casi toda investigación forense móvil implica analizar bases de datos SQLite. La capacidad de recuperar datos eliminados y correlacionar información entre múltiples bases de datos proporciona evidencia crucial en procedimientos judiciales.

Última actualización: 18 de enero de 2026 Categoría: Forense Digital Código: SQL-001

Preguntas Frecuentes

¿Por qué SQLite es importante en análisis forense?

SQLite es la base de datos más usada en móviles. WhatsApp, SMS, contactos, historial de navegación, y casi todas las apps almacenan sus datos en SQLite. Analizarla es esencial para cualquier investigación móvil.

¿Se pueden recuperar mensajes borrados de SQLite?

Sí, en muchos casos. SQLite marca los registros como eliminados pero no los borra físicamente. Con técnicas de carving se pueden recuperar datos del espacio libre dentro de la base de datos.

¿Qué herramientas se usan para analizar SQLite?

DB Browser for SQLite, SQLite Forensic Explorer, Autopsy, y herramientas especializadas como Oxygen y Cellebrite que incluyen parsers específicos para cada aplicación.

¿Necesitas un peritaje forense?

Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.

Solicitar Consulta Gratuita
Jonathan Izquierdo

Jonathan Izquierdo · Perito Forense

+15 años experiencia · AWS Certified

WhatsApp