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

公開済み 更新しました
によって
Aidan Fitzpatrick
Aidan Fitzpatrick
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リカバリツールをベンチマークします。これを書いている時点で、これらのツールの最新版は以下のとおりです。

Name Version & release date Platforms Price
Reincubate iPhone Backup Extractor 7.6.1.2201, May ‘18 Windows & macOS $34.95
SQLabs’ SQLite Doctor 1.3.0, Aug ‘13 Windows & macOS $49
SysTools' Sqlite Database Recovery 1.2, no release date shown Windows only $149
Stellar Data Recovery’s Stellar Phoenic Repair For Sqlite 1.0, no release date shown Windows only $599
GetData’s Forensic Explorer (FEX) 4.3.5.7364, May '18 Windows only $1,695
Acquire Forensics’ Sqlite Forensics Explorer 2.0, no release date shown Windows only $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を使いました。

Reincubate Acquire Forensics SQLabs SysTools Stellar Data Recovery GetData
Number recovered 342 56 (but mostly junk) 0 0 (After a lengthy scan, it found 220,261, which is the same number of valid records already present!) 0 (Each time we ran it, it counted up to 37 deleted messages, but crashed with error 0x40000015, before it finished the process. It wasn’t possible to export or save any.) 0 (We reached out multiple times to purchase a license, but never heard back.)
“Junk” recovered? None; all appear to be valid undeleted messages. Emojis, dates, times and sender / recipient numbers are all recovered. Most of those recovered are junk 😕 We needed to manually input max ROWID values a few times to try different parameters. None recovered at any point. Only found pre-existing messages. Crashed every time, so couldn’t tell. Wasn’t possible to get it running.
Effective cost per message recovered (in this example) $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と統合されており、初期の頃から使用されています。あなたがアプリを使用するとき、それはあなたのメッセージや他の多くのデータ型をプレビューまたはエクスポートするときにこの技術を適用します。表示しているデータと表示方法に応じて、アプリはどのデータが削除されていないのか、どのデータが削除されていないのかを示します。それはすべて含まれています。

著者について

Aidan Fitzpatrickは、世界初のiPhoneデータ復旧ツールであるiPhone Backup Extractorを構築した後、2008年にReincubateを設立しました。彼はGoogleで起業家精神について話していて、起業家組織のリーダーシップアカデミーを卒業しています。

バッキンガム宮殿の最高経営責任者

上の写真は、バッキンガム宮殿で開催されたReincubateのHM Queen ElizabethⅡのチームのメンバーです。 プライバシー、安全性およびセキュリティに関する私たちの立場を読んでください。

コメント (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 - 2019 Reincubate Ltd. 無断複写・転載を禁じます。 イングランドとウェールズに登録 #5189175, VAT GB151788978. Reincubate®は登録商標です。 プライバシーと利用規約. マルチファクタ認証をお勧めします。 ロンドンで愛と建てられた。