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.
¿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ón | Base de Datos | Contenido |
|---|---|---|
| msgstore.db | Mensajes, chats, multimedia | |
| SMS/MMS | mmssms.db (Android) | Mensajes de texto |
| Contactos | contacts2.db | Agenda telefónica |
| Chrome | History, Cookies | Navegación web |
| Safari | History.db | Historial iOS |
| Telegram | cache4.db | Mensajes y medios |
| direct.db | Mensajes directos | |
| Calendario | Calendar.db | Eventos 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
| Archivo | Extensión | Propósito Forense |
|---|---|---|
| Principal | .db, .sqlite | Datos principales |
| Journal | .db-journal | Transacciones en curso |
| WAL | .db-wal | Write-Ahead Log, datos recientes |
| SHM | .db-shm | Shared 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
Análisis del freelist: SQLite mantiene una lista de páginas libres que pueden contener datos eliminados.
Carving de páginas: Buscar estructuras de registro en el espacio no asignado dentro de las páginas.
Análisis del WAL: El Write-Ahead Log puede contener versiones anteriores de registros modificados o eliminados.
Recuperación de journal: El archivo journal puede tener datos de transacciones no completadas.
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:
| Formato | Ejemplo | Conversión |
|---|---|---|
| Unix timestamp (s) | 1705587600 | datetime(ts, 'unixepoch') |
| Unix timestamp (ms) | 1705587600000 | datetime(ts/1000, 'unixepoch') |
| Julian day | 2460325.5 | datetime(ts) |
| Texto ISO | ’2026-01-18 15:00:00’ | Directo |
Herramientas Especializadas
Gratuitas
| Herramienta | Capacidades |
|---|---|
| DB Browser for SQLite | Exploración visual, consultas SQL |
| SQLite Forensic Explorer | Recuperación de eliminados |
| Autopsy | Plugin SQLite integrado |
| sqlparse | Análisis programático en Python |
Comerciales
| Herramienta | Especialidad |
|---|---|
| Cellebrite PA | Parsers específicos por app |
| Oxygen Forensic | Análisis integrado |
| Belkasoft Evidence Center | Carving avanzado |
| Magnet AXIOM | Aná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.sqliteEstructura de msgstore.db
| Tabla | Contenido |
|---|---|
| messages | Todos los mensajes |
| chat_list | Lista de conversaciones |
| message_media | Metadatos de multimedia |
| group_participants | Miembros de grupos |
| receipts | Estados 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:
- Marca el espacio como libre en el freelist
- NO sobrescribe los datos inmediatamente
- 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
Extracción forense del dispositivo Android del empleado.
Localización de
/data/data/com.whatsapp/databases/msgstore.dbCálculo de hash: SHA-256 para cadena de custodia.
Análisis estructural: Identificar tablas y relaciones.
Búsqueda específica:
SELECT * FROM messages
WHERE data LIKE '%confidencial%'
OR data LIKE '%proyecto%'
OR data LIKE '%cliente%';Análisis temporal: Correlacionar fechas de mensajes con eventos conocidos.
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.
Términos Relacionados
Extracción Forense
Proceso de obtención de datos de dispositivos digitales (móviles, ordenadores, discos) de manera que preserve la integridad de la evidencia y mantenga la cadena de custodia para su uso en procedimientos judiciales.
WhatsApp Forense
Conjunto de técnicas de análisis forense digital aplicadas a la extracción, verificación y certificación de conversaciones de WhatsApp para su uso como prueba judicial. Incluye análisis de la base de datos msgstore.db, verificación de metadatos, y recuperación de mensajes borrados.
Evidencia Digital
Cualquier información almacenada o transmitida en formato digital que puede ser utilizada como prueba en un procedimiento judicial o investigación.
¿Necesitas un peritaje forense?
Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.
Solicitar Consulta Gratuita
