iOSの取得と解析
iOSのデータを抽出し、解析します。
「iOSの取得と解析」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
iOSのセキュリティモデル
iOSフォレンジックは、ハードウェアと緊密に統合されたハードウェアセキュリティモデルによって大きく左右されます。
- Secure Enclave (SEP) — 鍵のマテリアルを保持する分離されたコプロセッサです。パスコードの試行回数はハードウェアによって制限されます。
- Data Protection — ファイルごとの暗号化キーをパスコードとデバイスUIDに関連付けます。
- Sandboxing — 各アプリを自身のコンテナ内に隔離します。
そのため、パスコードの総当たり攻撃はSEPによって速度が制限され、フラッシュの生ダンプは暗号文になります。合法的なアクセスでは通常、デバイスのロックが協力的に解除されているか、AFU状態であることが前提となります。
Data Protectionのクラス
すべてのファイルには、キーを利用できるタイミングを制御する保護クラスが割り当てられています。
- Complete — デバイスがロックされた後すぐにキーが消去されます(最も強力に保護されます)。
- Complete Until First User Authentication — 初回のロック解除後にキーを利用できます(一般的なAFUのデフォルトです)。
- No Protection — キーを常に利用できます(まれなケースです)。
iOSでAFUが重要なのはこのためです。初回認証まで保護されるクラスのファイルが読み取り可能になり、ユーザーデータの大部分にアクセスできるようになります。
iTunes/Finderバックアップの取得
最も利用しやすい論理取得方法は、ホストとのペアリング関係を介したバックアップ取得です(iTunes/Finderと同じ仕組みです)。
- 有効なペアリングレコード(lockdown証明書)が必要で、作成時にはロックが解除されたデバイスも必要です。
- 暗号化バックアップ(バックアップパスワードを設定したもの)には、キーチェーン、ヘルスケアデータ、保存済みパスワードなど、実際にはより多くのデータが含まれます。
適切な認証を行い、libimobiledeviceを使ってバックアップを作成します。
idevice_id -l # list connected UDIDs
ideviceinfo -k ProductVersion # confirm iOS version
idevicebackup2 backup --full ./ios_backup/バックアップの構造とマニフェスト
iOSバックアップでは、ファイルは名前で保存されません。パスをハッシュ化してフラットに保存し、Manifest.dbというSQLiteファイルでインデックス化します。
- Manifest.dbは、ドメインと相対パスをディスク上のハッシュ化されたファイル名に対応付けます。
- Info.plist / Status.plistには、デバイスとバックアップのメタデータが格納されます。
- 暗号化バックアップでは、バックアップパスワードを使ってキーチェーンキーのラップ解除も必要です。
マニフェストを使って既知のアーティファクトを特定します。
sqlite3 -readonly Manifest.db \
"SELECT fileID, domain, relativePath FROM Files
WHERE relativePath LIKE '%sms.db%';"ファイルシステム全体の抽出
ファイルシステム全体(FFS)の抽出では、バックアップで許可されるデータの範囲を超えて、アプリのキャッシュ、知識アーティファクト、システムデータベースを含むユーザーパーティション全体を取得します。
- エージェントまたはエクスプロイト(たとえば、脆弱性のある古いチップを対象とするcheckm8ベースのもの)と、AFU状態のデバイスが必要です。
- バックアップからは除外されるknowledgeC.db、interactionC.db、位置情報キャッシュなどのアーティファクトも取得できます。
FFSは、合法的に取得できる場合、最新のiOS解析におけるゴールドスタンダードです。標準バックアップからは見えない、システムの行動データベースを明らかにできるためです。
iOSの主要データベース
iOSは、アプリドメイン内のよく知られたSQLiteデータベースにユーザーのアクティビティを保存します。
- sms.db — iMessageとSMS(テーブル:message、handle)。
- CallHistory.storedata — 通話履歴。
- AddressBook.sqlitedb — 連絡先。
- Photos.sqlite — メディアのメタデータとアセットの関連情報。
抽出データからiMessageの内容を読み取り専用でクエリします。
sqlite3 -readonly sms.db
sqlite> SELECT datetime(date/1000000000 + 978307200,'unixepoch') ts,
...> h.id, m.text
...> FROM message m JOIN handle h ON m.handle_id=h.ROWID
...> ORDER BY m.date DESC LIMIT 20;Apple(Mac/Cocoa)のタイムスタンプ
iOSでは、Apple/Cocoaエポック時刻が頻繁に使用されます。これは1970年ではなく、2001-01-01 UTCからの秒数です。一部のデータベースではナノ秒単位で保存されます。
- Unixエポックとの差は978307200秒です。
- iMessageの
dateは2001年からのナノ秒数です。1e9で割ってから、この差分を加えます。
エポックを誤って解釈すると、日付が31年ずれます。変換パターンは次のとおりです。
-- Cocoa seconds -> UTC
SELECT datetime(ZDATE + 978307200, 'unixepoch') FROM ZRECORD;
-- iMessage nanoseconds -> UTC
SELECT datetime(date/1000000000 + 978307200, 'unixepoch') FROM message;行動データベース
iOSは、システム機能に関する豊富な行動テレメトリを保持しており、タイムラインの作成に非常に役立ちます。
- knowledgeC.db — アプリの使用状況、集中モード、デバイスのロック/ロック解除、Siriイベント。
- interactionC.db — アプリをまたいだ連絡先とのやり取り。
- routined / cache_encryptedB.db — 重要な位置情報。
これらはFFS抽出にのみ存在し(標準バックアップには含まれません)、ユーザーが正確な時点で何をしていたかを特定する手がかりになります。ただし、一部のイベントはユーザーの操作ではなくシステムによって生成されるため、慎重に解釈してください。
Keychainの復元
キーチェーンには、Wi-Fiパスワード、トークン、アプリの認証情報、証明書が保存されています。パスコードから派生したクラスキーで暗号化されています。
- 暗号化iTunesバックアップ(バックアップパスワードが必要)またはFFS抽出から復元できます。
- 各アイテムには独自の保護クラスがあり、AFU状態でのみ利用できるものもあります。
キーチェーンの内容から、アカウントへのアクセス状況や関連する状況が明らかになることがあります。認証情報と同じように、法的な配慮をもって取り扱ってください。
iLEAPPによる自動解析
iLEAPPは、iOSのバックアップとFFS抽出を解析し、数百種類のアーティファクトを対象とした構造化レポートを作成します。
- knowledgeC、sms、Safariの履歴、アプリの状態などをデコードします。
- トリアージに使用し、重要な発見事項は未加工のSQLiteと照合して検証します。
バックアップまたは抽出データに対してiLEAPPを実行します。
python3 ileapp.py -t fs -i ./ios_filesystem/ -o ./ileapp_report/
# Or -t itunes for a Finder/iTunes backup folderiCloudと相互検証
デバイスから削除されたデータが、iCloud(バックアップ、Photos、iCloud上のMessages、アプリデータ)に残っている場合があります。
- iCloudへのアクセスには、別途の法的権限と適切な認証情報/トークンが必要です。
- デバイス上の所見をクラウド上のコピーおよび別のツールの結果と相互検証します。
常に、分析の前後で抽出データのハッシュを確認し、別の解析担当者が結果を再現できるよう、ツールのバージョンとコマンドを記録してください。
確認問題
iMessageのタイムスタンプをUnixエポックとしてデコードしたところ、日付が31年早くなりました。何が間違っていたのでしょうか。
まとめ:iOSの取得と解析
これで、iOSフォレンジックの各層を把握できるようになりました。
- Secure Enclave + Data Protectionのクラスにより、AFU状態が重要になります。
- 暗号化バックアップにはキーチェーン/ヘルスケアデータが含まれ、FFS抽出では行動DBが追加で取得できます。
- バックアップは、ハッシュ化されたファイル名を持つManifest.dbによってインデックス化されています。
- 主要な証拠はsms.db、CallHistory、AddressBook、knowledgeC.dbです。
- Apple/Cocoaタイムスタンプ(2001年エポック、+978307200)をデコードします。
- iLEAPPでトリアージを行い、手動で検証し、適切な権限のもとでiCloudも検討します。
次は、アプリのアーティファクトを解析してレポートを作成します。
よくある質問
「iOSの取得と解析」レッスンは無料ですか?
はい。「iOSの取得と解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「iOSの取得と解析」で何を学びますか?
iOSのデータを抽出し、解析します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「iOSの取得と解析」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。