Análise forense de iOS com recuperação de dados SQLite: mergulho profundo e comparação
Há muitas técnicas que usamos quando se trata de ajudar as pessoas a recuperar seus dados com nossos produtos, e muito da inteligência que construímos na última década está abaixo da superfície. Hoje, vamos dar um mergulho em uma das abordagens que usamos para recuperar mensagens excluídas: recuperação forense de dados SQLite.
Como os iPhones armazenam dados, afinal?
Simplificando, muitos aplicativos armazenam seus dados em bancos de dados, e a maioria deles usa o formato SQLite . O SQLite é um ótimo formato de banco de dados sem servidor e se encaixa bem para o que os fornecedores de aplicativos e Apple precisam. Como o SQLite é executado sem um servidor de banco de dados separado, existem algumas maneiras pelas quais ele difere de outros bancos de dados. Em particular, para que o acesso seja rápido, ele não pode se manter regularmente quando está sendo usado. Os usuários não querem ter um aplicativo mais lento, enquanto o banco de dados executa manutenção de rotina, como a limpeza de índices, por exemplo.
É possível que essas operações de limpeza ou otimização ocorram com o SQLite, mas elas tendem a ser executadas com pouca frequência. Para os usuários, esse é o equilíbrio certo: seu iPhone será razoavelmente rápido e seus dados serão robustos. E, se houver necessidade, você terá chances melhores que a média de recuperar seus dados do iOS excluídos devido à natureza pouco frequente desse processo de manutenção.
Sem ficar muito técnico, é bem simples como o processo funciona. Pense nesses bancos de dados como grandes gabinetes de arquivamento:
- Quando é hora de adicionar informações a eles, você adiciona um arquivo com um rótulo simples, explicando o que está no arquivo e é assim que o telefone funciona.
- Mas quando você remove dados, em vez de retirar o arquivo do arquivo, o telefone simplesmente retira o rótulo. Portanto, os dados antigos não são removidos, eles são deixados sem rótulo (ou "órfãos", como poderíamos chamá-los tecnicamente). Isso significa que, quando você exclui dados, seu telefone não precisa passar por um processo relativamente lento de liberação espaço no gabinete. Apenas diz “huh, esqueça isso” e segue em frente.
- Quando se trata de adicionar mais dados, se houver espaço, o seu telefone adicionará arquivos extras. Se não houver espaço para adicionar mais dados, ele verá se há algum desses arquivos não rotulados por aí, e se houver, ele vai descobrir quais partes deles precisa para criar espaço.
O que você pode tirar disso é que é rápido excluir dados no seu telefone, e é muito rápido adicioná-los, supondo que haja espaço. E - de forma não intuitiva - é o processo de adicionar dados mais novos que realmente leva à remoção de informações antigas.
Recuperando informações deletadas do SQLite no iOS
Digamos que você esteja usando seu telefone há alguns meses. As bases de dados são como os arquivos que descrevemos anteriormente. Eles têm um monte de arquivos neles, e onde você apagou dados, esses arquivos ainda estarão lá, mas com duas advertências: eles podem ter sido parcialmente ou totalmente sobrescritos, e eles não serão rotulados.
A técnica de recuperação é basicamente o que você espera: trata-se de encontrar esses arquivos órfãos - completos ou não - e tentar descobrir onde eles se encaixam e se há dados suficientes para que façam sentido. Como seria de esperar, é um pouco complicado, e há vários outros aspectos técnicos que podem surgir para dificultar as coisas. Em particular, bancos de dados com mais de alguns megabytes de tamanho e bancos de dados que possuem dados binários neles podem tornar o processo muito mais difícil.
Dito isso, não é muito difícil obter alguns dados de volta, e é por isso que você vê um bom número de ferramentas no mercado afirmando ser capaz de fazer isso. Em geral, você pode dividir essas ferramentas em três categorias:
- O bom. Eles usam muitas técnicas diferentes que foram criadas e testadas contra milhares de exemplos diferentes de exclusão ou corrupção.
- O mal. Eles só recuperam o conteúdo restante que é perfeitamente formado e inclui um número de dicas sobre onde ele pertence.
- O feio. Eles examinam o conteúdo órfão e sinalizam qualquer lixo antigo que pareça caber no contexto. Se você olhar para ele enquanto aperta os olhos. "NSMutableArray" - poderia ser o nome do seu registro de contato ausente? Hmmm
Recuperação de SQLite e recuperação do iOS no mundo real
Agora que conversamos um pouco sobre como isso funciona, vamos ver como ele é eficaz no mundo real. Afinal de contas, queremos capacitar usuários comuns a recuperar seus dados sem precisarem ser especialistas. Nós administramos isso? Vamos comparar as quatro principais ferramentas de recuperação de SQLite - contra o iPhone Backup Extractor. No momento da redação, a versão mais recente dessas ferramentas é:
Nome | Versão e data de lançamento | Plataformas | Preço |
---|---|---|---|
Reincubar o extrator de backup do iPhone | 7.6.1.2201, maio '18 | Windows e macOS | $ 34.95 |
SQLite Doctor da SQLabs | 1.3.0, ago '13 | Windows e macOS | $ 49 |
Recuperação de banco de dados sqlite do SysTools | 1.2, nenhuma data de lançamento mostrada | Apenas Windows | $ 149 |
Reparo fenício estelar da recuperação de dados estelares do Sqlite 1.0, nenhuma data de lançamento mostrada | Apenas Windows | $ 599 | |
Forensic Explorer da GetData (FEX) | 4.3.5.7364, maio '18 | Apenas Windows | $ 1.695 |
Adquira o Sqlite Forensics Explorer da Forensics | 2.0, nenhuma data de lançamento mostrada | Apenas Windows | $ 149 |
Para configurar este teste, vamos usar um ótimo banco de dados, cheio de dados do mundo real. Neste caso, é um banco de dados “Mensagens” de 169 MB, tirado de um iPhone rodando o iOS 11. Vamos dar uma olhada: os seguintes comandos mostram seu tamanho de arquivo e os resultados de uma consulta para contar 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
Então, existem mais de 220.000 mensagens. Eles são os que não foram excluídos. Mas quantas das mensagens excluídas as ferramentas de recuperação podem encontrar?
Recuperação de dados SQLite do iOS: os resultados estão em
Corremos todas as ferramentas mostradas acima no mesmo arquivo e anotamos os resultados na tabela abaixo. Gostaríamos muito de ter usado um Mac, mas como nem todas as ferramentas suportam o macOS, usamos um PC com 16 GB de RAM, executando o Windows 10 Pro (versão 1803
, compilação 17134.48
).
Reincubar | Adquirir Forense | SQLabs | SysTools | Recuperação estelar de dados | Adquirir dados | |
---|---|---|---|---|---|---|
Número recuperado | 342 | 56 (mas principalmente lixo) | 0 0 | 0 (Após uma varredura demorada, encontrou 220.261, que é o mesmo número de registros válidos já presentes!) | 0 (Cada vez que o executamos, ele contava até 37 mensagens excluídas, mas falhou com o erro 0x40000015, antes de concluir o processo. Não era possível exportar ou salvar nenhuma.) | 0 (entramos em contato várias vezes para comprar uma licença, mas nunca recebemos resposta.) |
"Lixo" recuperado? | Nenhum; todos parecem ser mensagens não excluídas válidas. Emojis, datas, horas e números de remetente / destinatário são todos recuperados. | A maioria dos recuperados é lixo 😕 | Precisamos inserir manualmente os valores máximos de ROWID algumas vezes para tentar parâmetros diferentes. Nenhum se recuperou a qualquer momento. | Encontrou apenas mensagens pré-existentes. | Falhava toda vez, então não dava para saber. | Não foi possível fazê-lo funcionar. |
Custo efetivo por mensagem recuperada (neste exemplo) | $ 0,10 | US $ 2,66 | > $ 49 | > $ 149 | > $ 599 | > $ 1.695 |
ESTÁ BEM. Então isso foi uma surpresa, já que esperávamos que pelo menos recuperassem alguns dados. 🧐 Acontece que nossa humilde ferramenta lidera o mercado de recuperação de dados SQLite, apesar de não ser uma ferramenta dedicada de recuperação de dados SQLite. (Se você se perguntou, é por isso que também licenciamos 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 lida com os bancos de dados SQLite. Isso inclui otimizações sobre com que frequência as operações de limpeza e outras operações de manutenção ocorrem e quando são acionadas.
À medida que os dispositivos se tornam mais poderosos, essas operações podem ser usadas com mais liberdade à medida que seu impacto na experiência do usuário se torna menor. Portanto, a cada nova geração, é provável que um banco de dados SQLite seja limpo com mais frequência, o que traz o benefício de tornar o banco de dados mais rápido para operações normais. Isso se alinha ao objetivo da Apple de aumentar a proteção e a privacidade dos dados do usuário, já que nenhum dado indesejado é deixado no dispositivo. No entanto, isso tem a desvantagem de impossibilitar a recuperação de dados por meio do método SQLite.
No iOS 11, começamos a ver um aumento na atividade de limpeza de banco de dados para SMS e iMessages. A recuperação ainda é possível e mais provável para mensagens mais recentes que foram subsequentemente excluídas, mas não garantidas.
No iOS 12, houve um grande aumento na frequência de limpeza do banco de dados para o banco de dados do SMS e iMessages. Como este lançamento foi apresentado como tendo um foco pesado em melhorias de manutenção e velocidade, essa mudança faz sentido, já que provavelmente levará a um desempenho mais suave para operações mais comuns.
O que preciso fazer para aproveitar isso ao recuperar dados do iOS?
Talvez seja a melhor parte: esta tecnologia é integrada com o Reincubate iPhone Backup Extractor , e tem sido desde os primeiros dias. À medida que você usa o aplicativo, ele aplica essa tecnologia ao visualizar ou exportar suas mensagens e vários outros tipos de dados. Dependendo dos dados que você está visualizando e da maneira como você os visualiza, o aplicativo indicará quais partes de dados não foram recuperadas e quais não foram. Está tudo incluído.
de jon
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.
responder por: Reincubate Support
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.