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

公開済み 更新しました
Cover image for: SQLiteのデータ復旧を伴うiOSのフォレンジック

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

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

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

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

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

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

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

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

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

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

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

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

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

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

バージョンとリリース日プラットフォーム価格
iPhone Backup Extractorの再インキュベーション 7.6.1.2201、18年5月 WindowsおよびmacOS 34.95ドル
SQLabsのSQLite Doctor 1.3.0、8月'13 WindowsおよびmacOS 49ドル
SysToolsのSqliteデータベースの回復 1.2、リリース日は表示されていません Windowsのみ 149ドル
Sqlite 1.0のStellar Data RecoveryのStellar Phoenic Repair、リリース日は表示されていません Windowsのみ 599ドル
GetDataのフォレンジックエクスプローラー(FEX) 4.3.5.7364、5月18日 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と統合されており、初期の頃から使用されています。あなたがアプリを使用するとき、それはあなたのメッセージや他の多くのデータ型をプレビューまたはエクスポートするときにこの技術を適用します。表示しているデータと表示方法に応じて、アプリはどのデータが削除されていないのか、どのデータが削除されていないのかを示します。それはすべて含まれています。

コメント (1)

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.

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.


この記事を改善できますか?

ユーザーからの連絡をお待ちしています。電子メールを送信したり、コメントを残したり、ツイートしたりしないでください。 @reincubate?

© 2008 - 2020 Reincubate Ltd. 無断複写・転載を禁じます。 イングランドとウェールズに登録 #5189175, VAT GB151788978. Reincubate®は登録商標です。 個人情報保護方針 & 条項. マルチファクタ認証をお勧めします。 ロンドンで愛と建てられた。