Páginas de estouro de SQLite: Como a análise forense digital recupera dados ocultos

Introdução: O puzzle das páginas de transbordo

Imagine que compra um poster que é demasiado grande para as molduras que tem em casa. Para o exibir corretamente, teria de o cortar em secções para que coubesse nas molduras disponíveis. O mesmo princípio aplica-se às bases de dados SQLite quando lidam com registos grandes - dividem-nos em partes e armazenam-nos em várias páginas. É aqui que páginas de transbordo entrar.

As páginas de estouro armazenam dados que não cabem em uma única página de banco de dados SQLite (normalmente 4.096 bytes). Estas páginas são ligados entre siformando uma cadeia que os analistas forenses devem reconstruir para recuperar dados completos. Se os analistas não seguirem a estrutura de transbordo, arriscam-se a recuperar provas incompletas ou corrompidas.

Neste artigo, vamos explorar como funcionam as páginas de estouro, porque são importantes em investigações forenses e como extrair dados fragmentados passo a passo.

O que são páginas de estouro no SQLite?

As bases de dados SQLite atribuem um tamanho de página fixo (por exemplo, 4.096 bytes). No entanto, quando um registo - tal como uma imagem armazenada como um BLOB (Binary Large Object)-excede este tamanho, os dados em excesso transbordam para páginas de transbordo.

Principais conclusões:

✅ Páginas de transbordo evitar registos grandes de monopolizar uma única página.
Eles são ligados numa cadeia, a partir da página principal.
Analistas forenses deve reconstruir estas cadeias para obter dados completos.

Compreender o funcionamento das páginas de transbordo é essencial para as investigações forenses.

Visão geral de alto nível: Como funcionam as páginas de estouro

Para ilustrar o conceito de páginas de transbordo, vejamos os seguintes exemplos:

1. Representação de imagens fragmentadas

Ilustração do armazenamento de dados fragmentados no SQLite: Uma imagem grande é dividida em vários quadros, representando como as páginas de estouro lidam com BLOBs grandes.

Esta visualização representa como grandes BLOBs, como imagens, são armazenados no SQLite. A imagem está dividida em várias secções, tal como uma página de estouro armazena dados fragmentados.

2. Dados armazenados numa única página

Uma imagem de um jato F-16 totalmente armazenada numa única página SQLite, demonstrando um caso ideal em que não são necessárias páginas de transbordo.

Aqui, uma imagem cabe inteiramente numa página da base de dados, eliminando a necessidade de páginas de transbordo.

3. Dados divididos em várias páginas

Representação hexadecimal de uma imagem armazenada de forma não contígua nas páginas 7, 3 e 5 do SQLite, que requer reconstrução forense.

Este exemplo ilustra como os dados são armazenados de forma não contígua, exigindo uma análise forense para os reconstruir corretamente.

4. Reconstrução de dados a partir de páginas de estouro

Uma imagem reconstruída com sucesso a partir de páginas SQLite fragmentadas, ilustrando o processo forense de recuperação de páginas de estouro.

Seguir os ponteiros de página de estouro permite que os analistas forenses remontem os dados fragmentados.

Importância forense das páginas de estouro

Muitos aplicações de mensagens, aplicações móveis e bases de dados armazenam imagens de perfil de utilizador, registos de conversação e anexos em SQLite. Quando as imagens e os documentos abrangem várias páginas, os examinadores forenses têm de compreender as estruturas de transbordo para extrair os dados corretamente.

Desafios forenses:

  • Dados fragmentados: Os BLOBs (como as imagens) são frequentemente divididos em várias páginas.
  • Recuperação baseada em ponteiros: Os analistas devem seguir os ponteiros de página de estouro do SQLite para reconstruir a imagem ou ficheiro completo.
  • Questões de escultura: A simples procura de um cabeçalho JPEG (FFD8FF) e rodapé (FFD9) pode falhar porque podem existir em páginas separadas.

Exemplo do mundo real: Extraindo uma foto de perfil de páginas de estouro

Agora, vamos analisar uma recuperação forense passo a passo de uma imagem armazenada numa base de dados SQLite.

Localizar o BLOB na base de dados

O DB Browser for SQLite mostra uma tabela de contactos com imagens de perfil armazenadas como BLOBs, um passo essencial na extração forense.

Utilizar Navegador DB para SQLiteSe os analistas forenses identificarem o registo que contém a fotografia de perfil no contactos mesa.

Identificar o comprimento do BLOB em hexadecimais

A varint 0xB135 converte para um comprimento de célula de 6.325 bytes (não incluindo a própria varint ou o ID de linha)

Utilizar HxDCom um editor hexadecimal, localizam o cabeçalho do registo, que contém um VARINT que determina o comprimento do BLOB.

Confirmar o tamanho da imagem

VARINT destacado em HxD mostrando o tamanho total da imagem (6.325 bytes), confirmando que excede o tamanho de página padrão do SQLite.

O segundo VARINT no cabeçalho do registo especifica o tamanho da imagem. Neste caso, o tamanho total é 6.325 bytes, excedendo o limite de páginas.

Seguir o ponteiro de estouro

Ponteiro de transbordo do SQLite na parte inferior da página, direcionando a continuação dos dados para a página 4 para posterior recuperação.

Na parte inferior da página principal, um ponteiro de quatro bytes conduz a página 4, que contém a parte seguinte da imagem.

Examinar a página de estouro

Vista hexagonal de uma imagem fragmentada totalmente realçada, pronta para extração manual e reconstrução forense.

Os primeiros quatro bytes da página 4 indicam se se segue outra página de estouro. Uma vez que o valor é 0x00000000, este é o última página de transbordo.

Extrair e reconstruir a imagem

Vista hexagonal de uma imagem fragmentada totalmente realçada, pronta para extração manual e reconstrução forense.

Os analistas forenses extraem o 6.292 bytes da imagem de ambas as páginas e reconstruí-la manualmente.

📌Os ponteiros de quatro bytes NÃO fazem parte dos dados a incluir na imagem gravada

Verificar a imagem recuperada

Imagem extraídaFoto de perfil recuperada de páginas de estouro do SQLite, esculpida com sucesso e exibida no Visualizador de Fotos do Windows.

A imagem extraída está agora totalmente restaurada e visualizável.

Considerações finais: A importância da análise de páginas de estouro

Nas investigações forenses, ignorar as páginas de excesso pode levar a perda crítica de provas. Compreender o mecanismo de armazenamento do SQLite é crucial para extração e reconstrução precisas de dados.

Principais informações forenses:

✔️ Sempre verificar se há páginas excedentáriasao analisar registos grandes.

✔️ Seguir as instruções do SQLite ponteiros de transbordocom cuidado.

✔️ Simples técnicas de escultura em lima pode não funcionar devido ao facto de o armazenamento não ser contíguo.

Quer se trate de analisar bases de dados de conversação, listas de contactos ou registos de aplicaçõesOs profissionais forenses devem ser competentes na recuperação de dados fragmentados.

💡 Encontrou dados fragmentados na análise forense de SQLite? Como é que aborda a análise de páginas de overflow? Partilhe as suas ideias abaixo!

Facebook
Twitter
Correio eletrónico
Imprimir

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *