メインコンテンツへスキップ

Technology, security analysis

SQLite データ復元による iOS フォレンジック:詳細解説と比較

Aidan Fitzpatrick公開日: 2018年6月1日更新日: 2020年2月17日
このページの内容
Cover image for: SQLite データ復元による iOS フォレンジック:詳細解説と比較

製品でデータの復元をお手伝いするために、私たちはさまざまな技術を使っており、この 10 年で築いてきた工夫の多くは水面下にあります。今回は、削除されたメッセージを復元するために使っている手法の 1 つ、SQLite データのフォレンジック復元を掘り下げます。

そもそも iPhone はどのようにデータを保存しているのか

簡単に言うと、多くのアプリはデータをデータベースに保存しており、その大半が SQLite 形式を使っています。SQLite はサーバー不要の小さくて優れたデータベース形式で、Apple やアプリ開発元のニーズにうまく合っています。SQLite は独立したデータベースサーバーなしで動作するため、ほかのデータベースとはいくつかの点で異なります。特に、高速にアクセスできるようにするため、使用中に定期的な自己メンテナンスを行うことができません。たとえばインデックスの整理のような定期メンテナンスの間、アプリの動作が遅くなってほしいと思うユーザーはいないでしょう。

SQLite でもこうした整理や最適化の処理を行うことは可能ですが、実行頻度は低めです。ユーザーにとっては、それが適切なバランスです。iPhone はそれなりに快適に動き、データも堅牢に保たれます。そしてこのメンテナンス処理の頻度が低いおかげで、必要になったときには、削除した iOS データを復元できる可能性が平均より高くなります。

あまり専門的になりすぎずに言えば、仕組みはとても単純です。これらのデータベースを、大きなファイルキャビネットのようなものだと考えてみてください。

  • 情報を追加するときは、中身を説明するきれいなラベルを付けたファイルを入れます。iPhone もそのように動いています。
  • ところが、データを削除するときは、ファイルをキャビネットから取り出すのではなく、iPhone はラベルをはがすだけです。つまり古いデータは取り除かれず、ラベルのない状態で残されます(技術的には「孤立」と呼ぶこともあります)。そのため、データを削除するときに、キャビネットの空きを確保するという比較的遅い処理を行う必要がありません。「これはもう忘れよう」と言って、先へ進むだけです。
  • さらにデータを追加するときは、空きがあれば iPhone は新しいファイルを追加します。空きがなければ、ラベルのないファイルが残っていないか探し、あれば、空きを作るために必要な部分を捨てます。

ここから分かるのは、iPhone ではデータの削除が速く、空きがあれば追加もかなり速いということです。そして、直感には反しますが、古い情報が実際に消えてしまうのは、新しいデータを追加するときなのです。

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

iPhone を数か月使ったとしましょう。内部のデータベースは、先ほど説明したファイルキャビネットのようなものです。中には多くのファイルが入っていて、データを削除した場所にもファイルは残っていますが、2 つの注意点があります。部分的または完全に上書きされている可能性があること、そしてラベルが付いていないことです。

復元の手法は、ほぼ想像どおりです。こうした孤立したファイル(完全なものも、そうでないものも)を見つけ出し、それらがどこに収まるのか、意味を成すだけのデータが残っているのかを探ります。ご想像のとおり、どれも少し面倒な作業で、ほかにもさまざまな技術的な問題が持ち上がって作業を難しくします。特に、数メガバイトを超える大きさのデータベースや、バイナリデータを含むデータベースは、作業をはるかに難しくします。

とはいえ、一部のデータを取り戻すのはそれほど難しくありません。市場に、これができると謳うツールが数多く出回っているのはそのためです。こうしたツールは、大きく 3 つに分けられます。

  • 良いもの。削除や破損の事例を数千件も使って構築、検証された、さまざまな手法を使っています。
  • 悪いもの。完全な形で残っていて、どこに属するかを示すヒントが多く含まれているコンテンツしか復元できません。
  • ひどいもの。孤立したコンテンツをスキャンして、文脈に合いそうに見える古いゴミを何でも拾い上げます。目を細めて見れば、の話ですが。「NSMutableArray」は、なくなった連絡先レコードの名前かもしれません。うーん。

実環境での iOS の SQLite 削除データの復元

仕組みについて少し説明したところで、実環境でどれだけ効果があるのかを見ていきましょう。結局のところ、私たちは、専門家でなくても一般のユーザーがデータを取り戻せるようにしたいと考えています。それが実現できているでしょうか。主要な SQLite 復元ツール 4 つを、iPhone Backup Extractor と比較してベンチマークします。執筆時点での、各ツールの最新バージョンは次のとおりです。

名前バージョンとリリース日対応プラットフォーム価格
Reincubate iPhone Backup Extractor7.6.1.2201、2018 年 5 月Windows と macOS$34.95
SQLabs の SQLite Doctor1.3.0、2013 年 8 月Windows と macOS$49
SysTools の Sqlite Database Recovery1.2、リリース日の記載なしWindows のみ$149
Stellar Data Recovery の Stellar Phoenic Repair For Sqlite 1.0、リリース日の記載なしWindows のみ$599
GetData の Forensic Explorer (FEX)4.3.5.7364、2018 年 5 月Windows のみ$1,695
Acquire Forensics の Sqlite Forensics Explorer2.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 に対応しているわけではないため、RAM 16 GB の PC で Windows 10 Pro(バージョン 1803、ビルド 17134.48)を実行して使用しました。

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
復元件数34256 件(ただしほとんどがゴミ)00 件(長時間のスキャンの後、220,261 件を検出しましたが、これはすでに存在していた有効なレコードの数と同じです)0 件(実行するたびに削除済みメッセージを 37 件までカウントしましたが、処理を終える前にエラー 0x40000015 でクラッシュしました。エクスポートも保存もできませんでした)0 (We reached out multiple times to purchase a license, but never heard back.)
「ゴミ」データの復元なし。すべて、削除されていない有効なメッセージのようです。絵文字、日付、時刻、送信者・受信者の番号もすべて復元されています。復元されたもののほとんどがゴミROWID の最大値を手動で何度か入力し、さまざまなパラメータを試す必要がありました。どの時点でも何も復元されませんでした。すでに存在していたメッセージしか見つかりませんでした。毎回クラッシュしたため、判断できませんでした。Wasn’t possible to get it running.
復元したメッセージ 1 件あたりの実質コスト(この例の場合)$0.10$2.66>$49>$149>$599>$1,695

さて、これは少し驚きでした。どのツールも少なくともいくらかのデータは復元できると思っていたからです。私たちのささやかなツールが、SQLite データ復元専用のツールではないにもかかわらず、この分野で市場をリードしていることが分かりました。(不思議に思われたかもしれませんが、私たちが自社の技術をほかの企業にライセンス提供しているのは、このためです。これは本当に難しいのです。)

iOS のバージョンごとの SQLite データ復元

iOS の新しいリリースのたびに、Apple は OS による SQLite データベースの扱い方を変更できます。これには、整理などのメンテナンス処理をどのくらいの頻度で、どのタイミングで実行するかといった最適化も含まれます。

デバイスの性能が上がるにつれ、ユーザー体験への影響が小さくなるため、こうした処理をより自由に使えるようになります。そのため、世代が新しくなるたびに SQLite データベースはより頻繁に整理される傾向があり、通常の操作でデータベースを高速に使えるという利点があります。これは、不要なデータがデバイスに残らないため、ユーザーのデータ保護とプライバシーを強化するという Apple の目標にも沿っています。ただしその代わり、SQLite の手法によるデータ復元ができなくなるという欠点があります。

iOS 11 では、SMS と iMessage のデータベースの整理が増えていることが分かってきました。復元は今でも可能で、その後に削除された比較的新しいメッセージほど復元できる可能性は高くなりますが、保証はされません。

iOS 12 では、SMS と iMessage のデータベースの整理頻度が大幅に増えました。このリリースはメンテナンスと速度の改善に重点を置いていると謳われていたため、この変更は納得できるもので、より一般的な操作の動作が滑らかになると考えられます。

iOS データを復元するときに、これを活用するには何をすればよいですか?

おそらくここが一番良い点です。この技術は Reincubate iPhone Backup Extractor に統合されており、初期の頃からずっとそうなっています。アプリを使っている間、メッセージやほかの多くの種類のデータをプレビューまたはエクスポートするときに、この技術が適用されます。表示しているデータや表示方法に応じて、どのデータが削除から復元されたもので、どれがそうでないかがアプリに示されます。すべて標準で含まれています。


執筆者について

Aidan Fitzpatrick

創業者兼CEO

世界初のiOSデータ復旧ツールを開発した後、Aidanは2008年にReincubateを設立しました。それ以来、AMD、Qualcomm、HPといった企業と協力し、Camoアプリのエコシステムを筆頭に、映像ソフトウェア向けの意義深い機械学習機能を切り拓きながら、同社を世界トップクラスのISVの一つへと成長させてきました。Aidanのリーダーシップのもと、Reincubateは英国最高峰のビジネス栄誉を4度受賞し、The Sunday Timesの「100 Tech」リストにも選出され、Apple Design AwardおよびApp Storeのノミネートで業界からの評価を獲得しています。彼の仕事や手法はモバイルフォレンジックに関する学術論文でもたびたび引用されており、Google、Microsoft、Snapなどの企業が主催するイベントへの登壇にも招かれています。


コメント (1)

jon 2019年5月22日

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.

Reincubate サポートからの返信 2019年5月22日

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.


関連コンテンツ


人気の記事

King's Award for Enterprise のロゴ

King's Award for Enterprise:Reincubate は英国最高峰の公式ビジネス表彰を4度受賞しており、直近では過去3年間にわたる同社の卓越した成長が評価されました。

ユーザーやパートナーとの関係は、私たちの価値観と開発する製品の中心にあります。レビュー をご覧いただき、皆さまの声をお聞きください。

Centre for Assessment による ISO 27001 認証取得、UKAS 認定

© 2008-2026 Reincubate Ltd. 無断複写・転載を禁じます。イングランドおよびウェールズ登記番号 5189175、VAT 番号 GB151788978。Camo®、Streamlight®、Reincubate® は登録商標です。特許出願中。

ヘルプ