Te pique lo que te pique, analiza un SQLite

14
Te pique lo que te pique, analiza un SQLite Alejandro Ramos www.SecurityByDefault.com

description

RootedCon

Transcript of Te pique lo que te pique, analiza un SQLite

Page 1: Te pique lo que te pique, analiza un SQLite

Te pique lo que te pique, analiza un SQLite

Alejandro Ramos

www.SecurityByDefault.com

Page 2: Te pique lo que te pique, analiza un SQLite

INTRODUCCIÓN

• Base de datos relacional (RDBMS) open source

• Creado en el año 2000 por Dwayne Richard Hipp

• No funciona en el modo tradicional cliente/servidor. Es un único fichero embebido.

• Desarrollado para optimizar espacio.

• Ampliamente usado en móviles, también en aplicaciones como Firefox, Chrome, Adobe Air, Dropbox o Skype

Page 3: Te pique lo que te pique, analiza un SQLite

Desde una perspectiva forense

• Existen Páginas libres / espacio libre en páginas.

• Rollback journal.

– Cambios directamente en el fichero original.

– Copia del original en fichero “-journal”

– Se aplican los cambios si todo es correcto.

• Versión 3.7.0 > Write Ahead Log (WAL)

– Invierte el proceso.

– Cambios en WAL “-wal”, original no se modifica

• VACUUM: recompone la base de datos == “desfragmenta”.

Page 4: Te pique lo que te pique, analiza un SQLite

Cabecera

100 primeros bytes del fichero. Los más relevantes:

Page 5: Te pique lo que te pique, analiza un SQLite

• Los datos se almacenan en una estructura denominada “B-Tree” (común en bbdd y sistemas de ficheros)

• Se componen de:

– Páginas libres: hojas y troncales.

– Páginas de tablas: hojas e interiores.

– Páginas de índices: hojas e interiores.

– Páginas de Overflow

Estructura del SQLite

Page 6: Te pique lo que te pique, analiza un SQLite

Páginas libres

• Páginas que conteníaninformación de la basede datos y han sidomarcadas como libres.Por ej, tras un DELETE.

• Gran parte de losdatos permanece enel fichero

Page 7: Te pique lo que te pique, analiza un SQLite

• Identifican el número de celdas en la página

• Donde comienza la primera celda.

Espacio libre = desde el fin de cabecera hasta el comienzo de la primera celda.

Cabecera de las páginas

Page 8: Te pique lo que te pique, analiza un SQLite

Celdas en páginas• Cada celda representa un registro de una tabla

• Una celda puede no entrar en una sola página, produciendo una nueva página “overflow”.

• En las páginas libres, las celdas están intactas.

• En el resto, las celdas eliminadas pierden el tamaño del payload y cabecera.

– No es posible saber donde empieza y acaba el dato de forma estructurada.

Page 9: Te pique lo que te pique, analiza un SQLite

… En definitiva …

Una base de datos SQLite mantiene los datos sin eliminar (siempre y cuando no se haga un vacuum) en:

– Páginas de tabla e índices: espacio libre entre la cabecera y el comienzo de celdas.

– También el espacio libre entre celdas, si se ha modificado y reducido el tamaño de un celda.

– Páginas libres y troncales: prácticamente enteras menos la cabecera.

– Páginas Overflow: desde que termina la celda hasta el final.

Page 10: Te pique lo que te pique, analiza un SQLite

Ejemplo

Page 11: Te pique lo que te pique, analiza un SQLite

Dumplite: consolidated.dbRegistros de Freelist

Page 12: Te pique lo que te pique, analiza un SQLite

dumplite: Skype (main.db)Dump Hexa

Page 13: Te pique lo que te pique, analiza un SQLite

Recover Messages: WhatsAppPara el usuario final

www.recovermessages.com

Page 14: Te pique lo que te pique, analiza un SQLite

GRACIAS

Alejandro Ramos – SecurityByDefault.com

Twitter: @aramosf