SQLiteのデータ復旧を伴うiOSのフォレンジック

Aidan Fitzpatrick

By Aidan Fitzpatrick

Published

更新しました

See how I'm qualified to write this article

人々が私たちの製品を使ってデータを回復するのを手助けすることに関して私たちが使う多くのテクニックがあります、そして過去10年間に私たちが築いてきた巧妙さの多くは表面下にあります。今日は、削除されたメッセージを回復するために使用するアプローチの1つ、SQLiteデータのフォレンジック回復について説明します。

とにかく、iPhoneはどのようにデータを保存するのですか?

簡単に言うと、多くのアプリはデータをデータベースに格納し、それらのほとんどはSQLiteフォーマットを使用します。 SQLiteは、サーバーを必要としないきれいなデータベースフォーマットであり、アップルおよびアプリベンダーが必要としているものに適しています。 SQLiteは独立したデータベースサーバーなしで動作しますので、他のデータベースと異なる点がいくつかあります。特に、アクセスを速くするために、それが使用されているときにそれ自身を定期的に維持することはできません。たとえば、データベースがインデックスのクリーンアップなどの日常的なメンテナンスを実行している間、ユーザーはアプリの動作を遅くしたくありません。

これらのクリーンアップ操作や最適化操作はSQLiteで発生する可能性がありますが、実行されることはまれです。ユーザーにとっては、それが正しいバランスです。iPhoneはかなり高速になり、データは堅牢になります。そして、必要に応じて、このメンテナンスプロセスはまれにしか行われないため、削除されたiOSデータを回復することには平均的な可能性があります。

技術的になりすぎることなく、プロセスの仕組みは非常に簡単です。これらのデータベースを大きなファイリングキャビネットのように考えてください。

  • 情報を追加する時が来たら、ラベルを付けたファイルを追加して、そのファイルの内容を説明します。これがあなたの携帯電話の仕組みです。
  • しかし、ファイルをファイリングキャビネットから取り出すのではなく、データを削除すると、携帯電話は単にラベルを剥がします。つまり、古いデータは削除されず、ラベルが付けられないままになります(または、技術的には「孤立」します)。これは、データを削除するときに、比較的遅い解放プロセスを経る必要がないことを意味しますキャビネット内のスペースを増やす。それは、「ハァッ、これを忘れる」と言って、先に進むだけです。
  • データを追加することになると、あなたの携帯電話が余分なファイルを追加するスペースがあれば。データを追加するスペースがない場合は、ラベルの付いていないファイルがいくつかぶら下がっているかどうかを確認します。スペースがある場合は、スペースを確保するために必要な部分をすべて削除します。

あなたがこれから取るかもしれないことはそれがあなたの電話のデータを削除するのが速いということです、そしてスペースがあると仮定するとそれを追加するのがかなり速いですそして - 直感に反して - それは実際に古い情報が削除されることにつながる新しいデータを追加するプロセスです。

iOS上のSQLiteから削除された情報を回復する

あなたが数ヶ月間あなたの電話を使っていたとしましょう。その上のデータベースは、先に説明したファイリングキャビネットのようなものです。それらにはたくさんのファイルがあり、あなたがデータを削除したところでは、それらのファイルはまだ存在するでしょう、しかし2つの注意点があります:それらは部分的または完全に上書きされているかもしれません。

回復のテクニックは、あなたが期待することです。それは、これらの孤立したファイルを(完全かどうかにかかわらず)見つけ、それらが収まる場所を見つけようとすること、ご想像のとおり、これはすべて少々手間のかかる作業です。また、作業を困難にするために出現する可能性のある他の技術も多数あります。特に、数メガバイトを超えるサイズのデータベース、およびその中にバイナリデータが含まれているデータベースでは、処理がはるかに困難になります。

それはそれはあなたがこれを行うことができると主張し、市場でのツールのかなりの数を参照してください理由である、戻っていくつかのデータを取得するにはあまりにも難しいことではありません、と述べました。一般に、これらのツールは3つのカテゴリに分類できます。

  • いいもの。彼らは削除または破損の何千もの異なる例に対して構築されテストされた多くの異なるテクニックを使用します。
  • 悪い人。それらは完全に形成され、それがどこに属するかに関するいくつかのヒントを含む残りのコンテンツを回復するだけです。
  • ぶさいく。これらは孤立したコンテンツをスキャンし、状況に合っていると思われる古いジャンクを検出します。あなたがそれを見つめながら見ているならば。 "NSMutableArray" - それはあなたの行方不明の連絡先レコードの名前でしょうか?うーん。

実世界でのSQLiteのiOSからの削除と回復

これがどのように機能するかについて少しお話しましたので、それが現実の世界でどれだけ効果的かを見てみましょう。結局のところ、私たちは一般ユーザーに専門家でなくてもデータを取り戻す権限を与えたいのです。我々はそれを管理しますか? iPhone Backup Extractorに対して、4つの主要なSQLiteリカバリツールをベンチマークします。これを書いている時点で、これらのツールの最新版は以下のとおりです。

バージョンとリリース日プラットフォーム価格
iPhoneバックアップエクストラクターを再インキュベートする 7.6.1.2201、18年5月 WindowsとmacOS $ 34.95
SQLabsのSQLite Doctor 1.3.0、13年8月 WindowsとmacOS 49ドル
SysToolsのSqliteデータベースの回復 1.2、リリース日は表示されていません Windowsのみ 149ドル
Sqlite 1.0のStellar Data Recoveryの恒星のフェニックス修理 Windowsのみ 599ドル
GetDataの法医学エクスプローラ(FEX) 4.3.5.7364、18年5月 Windowsのみ 1,695ドル
ForensicsのSqlite Forensics Explorerを入手してください 2.0、リリース日は表示されていません Windowsのみ 149ドル

このテストを設定するために、実世界のデータでいっぱいの素敵な大きなデータベースを使用します。この例では、iOS 11を実行しているiPhoneから取得した169 MBの“ Messages”データベースです。見てみましょう。次のコマンドはファイルサイズと、メッセージの数を数えるためのクエリの結果を示します。 。

$ 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

だから、22万人以上のメッセージがあります。それらは削除されていないものです。しかし、回復ツールが削除できるメッセージをいくつ見つけることができますか?

iOSからのSQLiteデータ復旧:結果は

上記のすべてのツールを同じファイルで実行し、その結果を以下の表に示しました。私たちはMacを使うのが大好きでしたが、すべてのツールがmacOSをサポートしているわけではないので、Windows 10 Pro(バージョン1803 、ビルド17134.48 )を実行する16 GBのRAMを搭載したPCを使いました。

再インキュベートするフォレンジックを取得する SQLab SysTools 恒星データ回復 GetData
回復した数 342 56(ただしほとんどがジャンク) 0 0(長時間のスキャン後、220,261が見つかりました。これは、すでに存在する有効レコード数と同じです。) 0(実行するたびに、削除されたメッセージは最大37個までカウントされましたが、プロセスが終了する前にエラー0x40000015でクラッシュしました。エクスポートまたは保存することはできませんでした。) 0(ライセンスを購入するために複数回連絡を取りましたが、返事がありませんでした。)
「がらくた」が回復した? 無し;すべて削除されていない有効なメッセージのようです。絵文字、日付、時刻、送信者/受信者番号はすべて復元されます。 回収されたもののほとんどはがらくたです😕 異なるパラメータを試すには、最大ROWID値を手動で数回入力する必要がありました。どの時点でも回復したものはありません。 既存のメッセージのみが見つかりました。 毎回クラッシュしたので、わかりませんでした。 実行することは不可能でした。
回復されたメッセージあたりの実効コスト(この例では) $ 0.10 2.66ドル > 49ドル > 149ドル > 599ドル > 1,695ドル

OK。少なくとも一部のデータが回復されることを期待していたので、これはちょっとした驚きでした。 🧐それは、専用のSQLiteデータ復旧ツールではないにもかかわらず、私たちの謙虚なツールがSQLiteデータ復旧の市場をリードしていることを示しています。 (ご参考までに、これが私たちが他の企業にも私たちの技術ライセンスしている理由です。これは難しいことです。)

異なるバージョンのiOSでのSQLiteデータ復旧

iOSが新しくリリースされるたびに、AppleはオペレーティングシステムがSQLiteデータベースを処理する方法を変更する機会を得ています。これには、クリーンアップやその他のメンテナンス操作が実行される頻度とそれらがいつトリガされるかに関する最適化が含まれます。

デバイスがより強力になるにつれて、これらの操作はユーザーエクスペリエンスへの影響が小さくなるにつれてより自由に使用できます。そのため、新しい世代が出るたびに、SQLiteデータベースはより頻繁にクリーンアップされる可能性が高く、通常の操作でデータベースをより速く使用できるようになるという利点があります。これは、不要なデータがデバイスに残らないため、ユーザーデータの保護とプライバシーを強化するというAppleの目標と一致しています。ただし、これにはSQLiteメソッドによるデータ復旧を不可能にするという警告があります。

iOS 11では、SMSとiMessagesのデータベースクリーンアップアクティビティが増加し始めました。回復はまだ可能であり、後で削除されたが保証されていない最近のメッセージの可能性が高いです。

iOS 12では、SMSおよびiMessagesデータベースのデータベースクリーンアップ頻度が大幅に増加しました。今回のリリースではメンテナンスと速度の向上に重点が置かれていると宣伝されていたので、この変更はより一般的な操作のパフォーマンスの円滑化につながる可能性があるため、意味があります。

iOSデータを復元するときにこれを利用するにはどうすればいいですか。

おそらくそれが最善の策です。このテクノロジーはReincubate iPhone Backup Extractorと統合されており、初期の頃から使用されています。あなたがアプリを使用するとき、それはあなたのメッセージや他の多くのデータ型をプレビューまたはエクスポートするときにこの技術を適用します。表示しているデータと表示方法に応じて、アプリはどのデータが削除されていないのか、どのデータが削除されていないのかを示します。それはすべて含まれています。

About the author

Aidan Fitzpatrick founded Reincubate in 2008 after building the world's first iPhone data recovery tool, iPhone Backup Extractor. He's spoken at Google on entrepreneurship, and is a graduate of the Entrepreneurs' Organisation's Leadership Academy.

Reincubate's CEO at Buckingham Palace

Pictured above are members of Reincubate’s team meeting HM Queen Elizabeth Ⅱ at Buckingham Palace, after being awarded the UK’s highest business award for our work with Apple technology. Read our position on privacy, safety and security.

Can we improve this article?

We love hearing from users: why not drop us an email, leave a comment, or tweet @reincubate?

© 2008 - 2019 Reincubate Ltd. 無断複写・転載を禁じます。 Registered in England and Wales #5189175, VAT GB151788978. Reincubate® is a registered trademark. プライバシーと利用規約. マルチファクタ認証をお勧めします。 ロンドンで愛と建てられた。