SlideShare una empresa de Scribd logo
Te pique lo que te pique, analiza
            un SQLite
              Alejandro Ramos
          www.SecurityByDefault.com
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
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”.
Cabecera
100 primeros bytes del fichero. Los más relevantes:
Estructura del 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
Páginas libres

• Páginas que contenían
  información de la base
  de datos y han sido
  marcadas como libres.
  Por ej, tras un DELETE.

• Gran parte de los
  datos permanece en
  el fichero
Cabecera de las páginas
• 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.
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.
… 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.
Ejemplo
Dumplite: consolidated.db
  Registros de Freelist
dumplite: Skype (main.db)
       Dump Hexa
Recover Messages: WhatsApp
    Para el usuario final




www.recovermessages.com
GRACIAS


          Alejandro Ramos – SecurityByDefault.com
          Twitter: @aramosf

Más contenido relacionado

La actualidad más candente

Portal de datos abiertos de la ugr
Portal de datos abiertos de la ugrPortal de datos abiertos de la ugr
Portal de datos abiertos de la ugr
Jaime Torres Benavente
 
Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904
Jose Ignacio Mateus Peñaloza
 
Cuestionario N-2: Base de Datos
Cuestionario N-2: Base de DatosCuestionario N-2: Base de Datos
Cuestionario N-2: Base de Datos
Alexandra Pedraza Jaimes
 
Internet
InternetInternet
Internet
Asuncion Tzec
 
Emilio php
Emilio phpEmilio php
Emilio php
Clau Doria
 
Bases de datos
Bases de datosBases de datos
Bases de datos
Eunice Jaramillo
 
Organización aleatoria o indirecta
Organización aleatoria o indirectaOrganización aleatoria o indirecta
Organización aleatoria o indirecta
Juan Antonio Membrives Polo
 
Archivos secuenciales indexados c++
Archivos secuenciales indexados c++Archivos secuenciales indexados c++
Archivos secuenciales indexados c++
pedroumg
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
littlewhitelies
 
Inf examen
Inf examenInf examen
Inf examen
katherinze
 
Estructura de archivos secuencial indexado
Estructura de archivos secuencial indexadoEstructura de archivos secuencial indexado
Estructura de archivos secuencial indexado
dexter120
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
TiFoN87
 
Presentación ivett kool
Presentación ivett koolPresentación ivett kool
Presentación ivett kool
Ivett Kool
 
Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++
panchorc1
 
Archivo de datos
Archivo de datosArchivo de datos
Archivo de datos
Alexander Chirinos
 
Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos
Juan Sixto
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de Servidores
DanielRiosDJ
 
Presentación#2
Presentación#2Presentación#2
Presentación#2
YarianeTorres
 

La actualidad más candente (18)

Portal de datos abiertos de la ugr
Portal de datos abiertos de la ugrPortal de datos abiertos de la ugr
Portal de datos abiertos de la ugr
 
Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904
 
Cuestionario N-2: Base de Datos
Cuestionario N-2: Base de DatosCuestionario N-2: Base de Datos
Cuestionario N-2: Base de Datos
 
Internet
InternetInternet
Internet
 
Emilio php
Emilio phpEmilio php
Emilio php
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Organización aleatoria o indirecta
Organización aleatoria o indirectaOrganización aleatoria o indirecta
Organización aleatoria o indirecta
 
Archivos secuenciales indexados c++
Archivos secuenciales indexados c++Archivos secuenciales indexados c++
Archivos secuenciales indexados c++
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Inf examen
Inf examenInf examen
Inf examen
 
Estructura de archivos secuencial indexado
Estructura de archivos secuencial indexadoEstructura de archivos secuencial indexado
Estructura de archivos secuencial indexado
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
 
Presentación ivett kool
Presentación ivett koolPresentación ivett kool
Presentación ivett kool
 
Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++
 
Archivo de datos
Archivo de datosArchivo de datos
Archivo de datos
 
Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de Servidores
 
Presentación#2
Presentación#2Presentación#2
Presentación#2
 

Similar a Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013]

Base de Datos1
Base de Datos1Base de Datos1
Base de Datos1
Abner Torres
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
BereniceMorales11
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
María de Lourdes Urbina Padilla
 
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Alexander Calderón
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
Brenda Gisela Gallardo Aguilar
 
BASES DE DATOS
BASES DE DATOSBASES DE DATOS
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
BIBIANA MÉNDEZ HERNÁNDEZ
 
Base de datos
Base de datosBase de datos
Base de datos
juansantiago104
 
Bases de datos
Bases de datosBases de datos
Bases de datos
ElenaMontserratGarci
 
Base de datos
Base de datos Base de datos
Base de datos
Virginia Luna
 
Base de datos
Base de datosBase de datos
Base de datos
patyTIC
 
1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx
jose651254
 
Base de dato act4
Base de  dato act4Base de  dato act4
Base de dato act4
Niduvit Salgado
 
Base de dato
Base de  dato Base de  dato
Base de dato
Niduvit Salgado
 
Bases de datos
Bases de datosBases de datos
Base de datos en microsoft sql server
Base de datos en microsoft sql serverBase de datos en microsoft sql server
Base de datos en microsoft sql server
Jorge Paredes Toledo
 
Bases de datos
Bases de datosBases de datos
Base de datos.
Base de datos.Base de datos.
Base de datos.
Veronica López Meneses
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
linamercela97
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
linamercela97
 

Similar a Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013] (20)

Base de Datos1
Base de Datos1Base de Datos1
Base de Datos1
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
BASES DE DATOS
BASES DE DATOSBASES DE DATOS
BASES DE DATOS
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos
Base de datos Base de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx
 
Base de dato act4
Base de  dato act4Base de  dato act4
Base de dato act4
 
Base de dato
Base de  dato Base de  dato
Base de dato
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos en microsoft sql server
Base de datos en microsoft sql serverBase de datos en microsoft sql server
Base de datos en microsoft sql server
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos.
Base de datos.Base de datos.
Base de datos.
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
 

Más de RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
RootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
RootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
RootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
RootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
RootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
RootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
RootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
RootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
RootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
RootedCON
 

Más de RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013]

  • 1. Te pique lo que te pique, analiza un SQLite Alejandro Ramos www.SecurityByDefault.com
  • 2. 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
  • 3. 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”.
  • 4. Cabecera 100 primeros bytes del fichero. Los más relevantes:
  • 5. Estructura del 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
  • 6. Páginas libres • Páginas que contenían información de la base de datos y han sido marcadas como libres. Por ej, tras un DELETE. • Gran parte de los datos permanece en el fichero
  • 7. Cabecera de las páginas • 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.
  • 8. 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.
  • 9. … 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.
  • 11. Dumplite: consolidated.db Registros de Freelist
  • 13. Recover Messages: WhatsApp Para el usuario final www.recovermessages.com
  • 14. GRACIAS Alejandro Ramos – SecurityByDefault.com Twitter: @aramosf