Récupération de données effacées à partir de SQLite : Naviguer dans la chaîne de blocs libres

Introduction

Les bases de données SQLite sont des trésors de preuves numériques que l'on trouve dans de nombreuses applications, qu'il s'agisse de messages de chat ou de journaux de transactions. Mais que se passe-t-il lorsque les enregistrements sont supprimés ? Entrer blocs libres-les sections cachées de l'espace inutilisé dans les pages de la base de données qui conservent des restes de données supprimées. Ces blocs libres sont une mine d'or pour les enquêteurs judiciaires, car ils permettent de récupérer des enregistrements critiques et de découvrir des preuves cachées.

Ce blog démystifie les freeblocks SQLite, en vous expliquant comment ils fonctionnent, comment les localiser à l'aide d'outils tels que les éditeurs hexagonaux et comment récupérer les enregistrements supprimés. Que vous soyez un enquêteur ou un passionné de criminalistique numérique, ce guide vous fournira les techniques essentielles pour extraire les données cachées.

Que sont les Freeblocks dans SQLite ?

Les blocs libres sont des sections d'espace inutilisé dans une page de base de données SQLite. Lorsqu'un enregistrement est supprimé, l'espace correspondant n'est pas immédiatement écrasé, à moins qu'un mécanisme d'effacement sécurisé ne soit activé. Au lieu de cela, il est marqué comme un bloc libredisponible pour de futures écritures.

Dans ce processus :

  • Le pointeur sur l'enregistrement supprimé est supprimé.
  • L'en-tête de la page est mis à jour pour refléter la suppression.
  • Le cas échéant, le décalage par rapport au premier bloc libre est ajusté.

 

Ces freeblocks conservent souvent des vestiges des données d'origine, ce qui en fait une cible essentielle pour les enquêteurs judiciaires qui cherchent à récupérer des enregistrements supprimés.

Exemple :

Dans la capture d'écran ci-dessous, nous examinons une base de données SQLite à l'aide de DB Browser. La table "messages" présente deux enregistrements vivants, mais des indices médico-légaux suggèrent la présence d'autres enregistrements supprimés.

Comment les Freeblocks s'intègrent dans les en-têtes de page SQLite

Pour localiser et analyser les freeblocks, nous devons d'abord comprendre la structure des pages de la base de données SQLite. Chaque page contient un en-tête qui fournit des métadonnées essentielles, notamment des pointeurs vers les freeblocks.

Le tableau ci-dessous présente la structure de l'en-tête pour un type de page 0D :

Décalage Taille Description
0 1 octet Type de page
1 2 octets Décalage d'un octet vers le premier bloc libre
3 2 octets Nombre de cellules sur la page
5 2 octets Décalage vers le premier octet du contenu de la cellule
7 1 octet Nombre d'octets libres fragmentés dans les cellules

Principaux enseignements :

La valeur de l'offset 1 dans l'en-tête de la page indique le premier bloc libre. Si cette valeur est 0x0000il n'y a pas de blocs gratuits sur la page.

Utilisation d'éditeurs hexagonaux pour analyser les freeblocks

Pour localiser le premier bloc libre, nous ouvrons la base de données dans un éditeur hexadécimal. La valeur de deux octets à l'offset 1 de l'en-tête de la page fournit l'offset de l'emplacement du freeblock.

Dans l'exemple ci-dessous :

  • L'éditeur hexagonal met en évidence le décalage 0x03A9 (décimale 937) en rouge, qui indique l'emplacement du premier bloc libre.

La navigation vers ce décalage révèle le début du bloc libre. Ci-dessous, nous examinons la cellule située à l'offset 937.

Décodage des en-têtes Freeblock

Chaque bloc libre contient un en-tête de quatre octets comprenant

  1. 2 premiers octets: Décalage vers le bloc libre suivant (0x0000 s'il n'en existe pas).
  2. Deuxième 2 octets: Taille totale du bloc libre, y compris l'en-tête lui-même.

Exemple :

Au décalage 0x03A9L'en-tête du bloc libre l'indique :

  • Le prochain bloc libre se trouve à l'emplacement 0x03EA (décimale 1002).
  • La taille du bloc libre est de 0x0024 (36 octets, y compris l'en-tête).

Récupération d'enregistrements supprimés à l'aide de Freeblocks

Les freeblocks contiennent souvent des restes d'enregistrements supprimés, ce qui permet aux enquêteurs de récupérer des données partielles ou complètes. Dans la capture d'écran ci-dessous, la charge utile d'un enregistrement supprimé est intacte et récupérable malgré la suppression de son pointeur.

Exemple :

  • L'enregistrement supprimé à l'emplacement 0x03A9 contient le message : "Pas grand-chose. Comment allez-vous ?"
  • Les champs clés restent intacts, y compris le contenu du message, même si d'autres métadonnées ont été écrasées.

Nous analysons les blocs libres suivants pour découvrir d'autres enregistrements supprimés. Au décalage 0x03EAL'en-tête du freeblock est révélateur :

  • La taille du bloc libre est de 0x0016 (22 octets).
  • Il s'agit du dernier bloc libre de la chaîne, comme l'indique la mention 0x0000 dans le champ de pointeurs du bloc libre suivant.

La capture d'écran ci-dessous met en évidence l'ensemble de la cellule du deuxième bloc libre de la chaîne où le message supprimé était "Hi Andy !".

Identification des documents supprimés supplémentaires

Mais il se trouve qu'il y a un autre enregistrement supprimé sur cette page qui n'est pas référencé par la chaîne de blocs libres. En regardant l'en-tête de la page, on constate qu'il n'y avait que deux enregistrements sur cette page, d'après la valeur de deux octets à l'offset 3 (0x00002). Et comme il n'y a que deux enregistrements, il n'y a que deux pointeurs dans le tableau de pointeurs. Ces deux pointeurs pointent vers l'enregistrement #2 - "Hey, what's up ?" et l'enregistrement #4 - "Hey, I was wondering if you have any Scooby snax" (Hey, je me demandais si vous aviez des Scooby snax). Vous remarquerez peut-être qu'il y a un autre long message situé plus haut sur la page.

La valeur de deux octets à l'offset 5 dans l'en-tête de la page est l'offset de la zone de contenu de la cellule, c'est-à-dire l'endroit où l'enregistrement suivant sera écrit, à moins qu'il ne puisse tenir dans l'un des blocs libres. Cette valeur est 0x0363 ce qui correspond à l'offset décimal 867.

Dans la capture d'écran ci-dessus, la flèche pointe vers le décalage de page 867. Il s'agit du début du contenu de la cellule, ce qui signifie que l'enregistrement suivant sera ajouté juste au-dessus de cet enregistrement. L'enregistrement supprimé situé au-dessus contient le message suivant : "Il se trouve que j'ai reçu un nouvel approvisionnement hier soir. Vous avez de la chance. De quelle quantité avez-vous besoin ?"

La base de données considère ces données comme de l'espace non alloué. Il pourrait tout aussi bien être rempli de 0x00 car il n'y a pas de pointeur dans le tableau de pointeurs qui l'adresse. 

Si un enregistrement trop grand pour tenir dans les deux blocs libres de la page est ajouté au tableau auquel appartient cette page, il écrasera le message, qui se trouve être l'enregistrement #5. 

Voyons ce qu'il en est maintenant que nous avons identifié les deux blocs libres ainsi que le troisième enregistrement supprimé qui attend d'être écrasé :

Après avoir analysé la base de données dans son format brut, nous pouvons conclure qu'elle contient plus que les deux enregistrements "vivants" affichés par le visualiseur de base de données. 

L'enregistrement #1 était probablement le message "Bonjour Andy !" tandis que l'enregistrement #3 était probablement le message "Pas grand-chose. Comment vas-tu ? L'enregistrement #5 a toujours son numéro d'enregistrement dans sa cellule identifiée comme le message "J'ai reçu une nouvelle livraison hier soir. Vous avez de la chance. De quelle quantité avez-vous besoin ?"

 

Conclusion

Les freeblocks sont un outil puissant dans les enquêtes judiciaires, car ils offrent une fenêtre sur les enregistrements supprimés et les données non allouées. En maîtrisant ces techniques, les enquêteurs peuvent découvrir les traces numériques laissées par les bases de données.

Vous êtes prêt à passer au niveau supérieur en ce qui concerne vos compétences en matière de criminalistique SQLite ? Découvrez nos programmes de formation avancée ou contactez-nous pour savoir comment nous pouvons vous aider à devenir un expert en criminalistique.

Facebook
Twitter
Courriel
Imprimer

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *