Pular para o conteúdo principal

Technology, security analysis

Forense de iOS com recuperação de dados SQLite: análise aprofundada e comparação

Aidan FitzpatrickPublicado em 1 de junho de 2018Atualizado em 17 de fevereiro de 2020
Nesta página
Cover image for: Forense de iOS com recuperação de dados SQLite: análise aprofundada e comparação

Usamos muitas técnicas para ajudar as pessoas a recuperar seus dados com nossos produtos, e boa parte da engenhosidade que desenvolvemos ao longo da última década fica sob a superfície. Hoje vamos mergulhar em uma das abordagens que usamos para recuperar mensagens apagadas: a recuperação forense de dados SQLite.

Afinal, como os iPhones armazenam dados?

Em poucas palavras, muitos apps guardam seus dados em bancos de dados, e a maioria usa o formato SQLite. O SQLite é um formato de banco de dados pequeno e enxuto, sem servidor, que atende bem ao que a Apple e os fornecedores de apps precisam. Como o SQLite funciona sem um servidor de banco de dados separado, ele difere de outros bancos de dados em alguns pontos. Em especial, para que o acesso seja rápido, ele não pode se manter com regularidade enquanto está em uso. Ninguém quer que um app fique lento enquanto o banco de dados faz uma manutenção de rotina, como limpar índices, por exemplo.

É possível que essas operações de limpeza ou otimização aconteçam no SQLite, mas elas tendem a ser executadas com pouca frequência. Para os usuários, esse é o equilíbrio certo: o iPhone fica razoavelmente rápido e os dados ficam robustos. E, se for preciso, você terá chances acima da média de recuperar os dados apagados do iOS, justamente por esse processo de manutenção ser pouco frequente.

Sem entrar em detalhes técnicos demais, o processo é bem simples. Pense nesses bancos de dados como grandes arquivos de pastas suspensas:

  • Quando é hora de adicionar informações, você coloca uma pasta com uma etiqueta bem legível explicando o que há nela, e é assim que o seu telefone funciona.
  • Mas, quando você remove dados, em vez de tirar a pasta do arquivo, o telefone simplesmente arranca a etiqueta. Assim, os dados antigos não são removidos, apenas ficam sem etiqueta (ou “órfãos”, como poderíamos dizer tecnicamente). Isso significa que, ao apagar dados, o telefone não precisa passar por um processo relativamente lento de liberar espaço no arquivo. Ele só diz “hum, esquece isso” e segue em frente.
  • Na hora de adicionar mais dados, se houver espaço, o telefone acrescenta novas pastas. Se não houver espaço, ele procura as pastas sem etiqueta que ficaram por ali e, se encontrar alguma, descarta as partes delas de que precisar para abrir espaço.

O que você pode concluir disso é que apagar dados no telefone é rápido, e adicioná-los também é bastante rápido, desde que haja espaço. E, ao contrário do que se imagina, é o processo de adicionar dados mais novos que leva à remoção das informações mais antigas.

Recuperando informações apagadas do SQLite no iOS

Digamos que você use o telefone há alguns meses. Os bancos de dados nele são como os arquivos de pastas que descrevemos antes. Eles contêm vários registros e, onde você apagou dados, esses registros continuam lá, com duas ressalvas: podem ter sido parcial ou totalmente sobrescritos e estarão sem etiqueta.

A técnica de recuperação, então, é basicamente o que você imagina: encontrar esses registros órfãos, completos ou não, tentar descobrir onde eles se encaixam e se restam dados suficientes para fazerem sentido. Como seria de esperar, é tudo meio trabalhoso, e há várias outras questões técnicas que podem surgir e complicar as coisas. Em particular, bancos de dados com mais de alguns megabytes e bancos de dados que contêm dados binários podem tornar o processo bem mais difícil.

Dito isso, não é muito difícil recuperar alguns dados, e é por isso que há tantas ferramentas no mercado que afirmam conseguir fazer isso. Em geral, é possível dividir essas ferramentas em três categorias:

  • As boas. Usam muitas técnicas diferentes, criadas e testadas com milhares de exemplos diferentes de exclusão ou corrupção.
  • As ruins. Só recuperam o conteúdo restante que está perfeitamente íntegro e traz várias pistas sobre onde ele se encaixa.
  • As feias. Elas varrem o conteúdo órfão e apontam qualquer lixo antigo que pareça se encaixar no contexto, se você olhar de olhos semicerrados. “NSMutableArray”: será que esse é o nome do registro de contato que sumiu? Hmmm.

Recuperação de dados SQLite apagados do iOS no mundo real

Agora que falamos um pouco sobre como isso funciona, vamos ver como é eficaz no mundo real. Afinal, queremos que usuários comuns recuperem seus dados sem precisar ser especialistas. Será que conseguimos? Vamos comparar as quatro principais ferramentas de recuperação de SQLite com o iPhone Backup Extractor. No momento em que escrevemos, as versões mais recentes dessas ferramentas são:

NomeVersão e data de lançamentoPlataformasPreço
Reincubate iPhone Backup Extractor7.6.1.2201, maio de 2018Windows e macOS$34.95
SQLite Doctor, da SQLabs1.3.0, ago. de 2013Windows e macOS$49
Sqlite Database Recovery, da SysTools1.2, sem data de lançamento informadaSomente Windows$149
Stellar Phoenic Repair For Sqlite, da Stellar Data Recovery 1.0, sem data de lançamento informadaSomente Windows$599
Forensic Explorer (FEX), da GetData4.3.5.7364, maio de 2018Somente Windows$1,695
Sqlite Forensics Explorer, da Acquire Forensics2.0, sem data de lançamento informadaSomente Windows$149

Para montar este teste, vamos usar um banco de dados bem grande, cheio de dados do mundo real. Neste caso, é um banco de dados de “Mensagens” de 169 MB, extraído de um iPhone com iOS 11. Vamos dar uma olhada: os comandos a seguir mostram o tamanho do arquivo e o resultado de uma consulta que conta quantas mensagens ele contém.

$ ls -l sms.db
-rw------- 1 afitzpatrick 177565696 Oct  2  2017 sms.db

$ sqlite3 sms.db
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM message;
220261

Ou seja, há mais de 220.000 mensagens. São as que não foram apagadas. Mas quantas das mensagens apagadas as ferramentas de recuperação conseguem encontrar?

Recuperação de dados SQLite do iOS: os resultados chegaram

Executamos todas as ferramentas acima no mesmo arquivo e anotamos os resultados na tabela abaixo. Gostaríamos de ter usado um Mac, mas, como nem todas as ferramentas oferecem suporte ao macOS, usamos um PC com 16 GB de RAM e Windows 10 Pro (versão 1803, build 17134.48).

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
Quantidade recuperada34256 (mas a maioria é lixo)00 (depois de uma varredura demorada, encontrou 220.261, que é o mesmo número de registros válidos que já existiam!)0 (a cada execução, contou até 37 mensagens apagadas, mas travou com o erro 0x40000015 antes de terminar o processo. Não foi possível exportar nem salvar nenhuma.)0 (We reached out multiple times to purchase a license, but never heard back.)
Recuperou “lixo”?Nenhum; todas parecem ser mensagens válidas restauradas. Emojis, datas, horários e números de remetente/destinatário foram todos recuperados.A maior parte do que foi recuperado é lixoPrecisamos inserir manualmente valores máximos de ROWID algumas vezes para testar parâmetros diferentes. Nenhuma mensagem foi recuperada em momento algum.Só encontrou mensagens já existentes.Travou todas as vezes, então não deu para saber.Wasn’t possible to get it running.
Custo efetivo por mensagem recuperada (neste exemplo)$0.10$2.66>$49>$149>$599>$1,695

Certo. Foi uma surpresa, porque esperávamos que todas recuperassem pelo menos alguns dados. Acontece que a nossa humilde ferramenta lidera o mercado em recuperação de dados SQLite, mesmo não sendo uma ferramenta dedicada a isso. (Se você já se perguntou, é por isso que também licenciamos a nossa tecnologia para outras empresas. Isso é difícil.)

Recuperação de dados SQLite em diferentes versões do iOS

A cada nova versão do iOS, a Apple tem a oportunidade de mudar a maneira como o sistema operacional trata os bancos de dados SQLite. Isso inclui otimizações na frequência com que a limpeza e outras operações de manutenção acontecem e em quais situações são acionadas.

À medida que os dispositivos ficam mais potentes, essas operações podem ser usadas com mais liberdade, pois seu impacto na experiência do usuário diminui. Por isso, a cada nova geração, um banco de dados SQLite tende a ser limpo com mais frequência, o que o torna mais rápido nas operações normais. Isso está alinhado ao objetivo da Apple de aumentar a proteção e a privacidade dos dados do usuário, já que nenhum dado indesejado permanece no dispositivo. Em compensação, isso inviabiliza a recuperação de dados pelo método SQLite.

No iOS 11, começamos a ver um aumento da atividade de limpeza do banco de dados de SMS e iMessages. A recuperação ainda é possível, e mais provável para mensagens mais recentes que foram apagadas depois, mas não é garantida.

No iOS 12, houve um grande aumento na frequência de limpeza do banco de dados de SMS e iMessages. Como essa versão foi apresentada como tendo um foco forte em manutenção e melhorias de velocidade, a mudança faz sentido, pois deve levar a um desempenho mais fluido nas operações mais comuns.

O que preciso fazer para aproveitar isso ao recuperar dados do iOS?

Talvez essa seja a melhor parte: essa tecnologia está integrada ao Reincubate iPhone Backup Extractor desde os primeiros dias. Ao usar o app, ela é aplicada na visualização ou exportação das suas mensagens e de vários outros tipos de dados. Dependendo dos dados que você está vendo e da forma como os está vendo, o app indica quais informações foram recuperadas e quais não foram. Está tudo incluído.


Sobre o autor

Aidan Fitzpatrick

Fundador, CEO

Aidan fundou a Reincubate em 2008, depois de criar a primeira ferramenta de recuperação de dados para iOS do mundo. Desde então, ele transformou a empresa em uma das principais ISVs do mundo, trabalhando com empresas como AMD, Qualcomm e HP para desenvolver recursos relevantes de aprendizado de máquina para softwares de vídeo, com destaque para o ecossistema de aplicativos Camo. Sob a liderança de Aidan, a Reincubate já recebeu quatro vezes a mais alta honraria empresarial do Reino Unido, conquistou um lugar na lista 100 Tech do The Sunday Times e obteve reconhecimento do setor com indicações ao Apple Design Award e à App Store. Seu trabalho e suas técnicas são frequentemente citados em artigos acadêmicos sobre perícia forense móvel, e ele já foi convidado a palestrar em eventos promovidos por empresas como Google, Microsoft e Snap.


Comentários (1)

jon 22 de maio de 2019

I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.

Resposta do suporte da Reincubate 22 de maio de 2019

Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.


Conteúdo relacionado


Artigos populares

Logotipo do King's Award for Enterprise

King's Award for Enterprise: a Reincubate venceu quatro vezes a mais alta honraria empresarial oficial do Reino Unido, a mais recente em reconhecimento ao notável crescimento da empresa nos últimos três anos.

Nossas relações com usuários e parceiros estão no centro dos nossos valores e dos produtos que criamos. Veja nossas avaliações para saber o que eles têm a dizer sobre nós.

Certificação ISO 27001 pelo Centre for Assessment, credenciado pelo UKAS

© 2008-2026 Reincubate Ltd. Todos os direitos reservados. Registrada na Inglaterra e no País de Gales sob o nº 5189175, VAT GB151788978. Camo®, Streamlight® e Reincubate® são marcas registradas. Patentes pendentes.

Ajuda