te pique lo que te pique, analiza un sqlite

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

Upload: alejandro-ramos

Post on 13-Jun-2015

1.547 views

Category:

Technology


4 download

DESCRIPTION

RootedCon

TRANSCRIPT

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