アプリ、痕跡、レポート作成
アプリデータを解析し、調査結果を提示します。
「アプリ、痕跡、レポート作成」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
アプリのアーティファクト:全体像
ほとんどのケースでは、サードパーティ製アプリが最も豊富な証拠を生成します。各アプリは独自の方法でデータを保存しますが、共通するパターンもあります。
- メッセージ、履歴、メタデータにはSQLiteデータベースを使用します。
- 設定や状態の保存には、iOSではプロパティリスト(plist)、AndroidではXML shared_prefsを使用します。
- DBのカラム内にProtobuf / JSON blobを埋め込みます。
- サムネイルや添付ファイルにはキャッシュとメディアフォルダを使用します。
これらを一貫した方法で解析し、ユーザーと時刻に帰属させ、根拠を示せる形で提示することが役割です。
メッセージングアプリのアーティファクト
メッセージングアプリは、頻繁に証拠となるデータ源です。それぞれが、主要なメッセージストアに加えて、連絡先テーブルやグループテーブルを保持しています。
- WhatsApp (Android): msgstore.db(メッセージ)、wa.db(連絡先)。
- Signal: 暗号化されたSQLCipher DB。キーはキーストア/キーチェーンに保存されています。
- Telegram: protobufでエンコードされたコンテンツを含むcache4.db。
メッセージストアからWhatsAppの会話を再構成します。
sqlite3 -readonly msgstore.db
sqlite> SELECT datetime(timestamp/1000,'unixepoch') ts,
...> key_remote_jid, key_from_me, data
...> FROM messages
...> WHERE key_remote_jid LIKE '%@s.whatsapp.net'
...> ORDER BY timestamp;暗号化されたアプリデータベース
一部のアプリは、独自のデータベースをSQLCipherで暗号化しています(Signalや一部のバンキングアプリなど)。これらを通常のsqlite3で開くことはできません。
- キーは通常、プラットフォームのキーストア/キーチェーンに保存され、十分に深い抽出でのみ復元できます。
- キーを使って、クエリを実行する前にSQLCipherのPRAGMA経由でDBを開きます。
キーを復元した後にSQLCipherデータベースを開きます。
sqlcipher signal.db
sqlite> PRAGMA key = "x'6f3b...c91a'"; -- recovered raw key
sqlite> PRAGMA cipher_compatibility = 4;
sqlite> SELECT * FROM sms LIMIT 5;埋め込みblobのデコード
アプリのデータベースでは、構造化データをBLOBカラム内にprotobuf、plist、JSONとして隠していることがよくあります。表示されているカラムは情報の一部にすぎません。
- BPLIST blob(Appleバイナリplist)は、plistlibまたはplutilでデコードします。
- Protobuf blobは、protocまたはblackboxprotobufでデコードします。
カラムから抽出したバイナリplist blobを変換します。
# Apple binary plist -> readable XML
plutil -convert xml1 -o decoded.plist attachment_blob.bin
# Unknown protobuf -> field tree
python3 -m blackboxprotobuf decode message_blob.bin位置情報とジオロケーションアーティファクト
位置情報の証拠は、人を場所と時刻に結び付けるため、特に厳密に扱う必要があります。
- 写真のEXIF GPSタグ、地図アプリの検索履歴、キャッシュされたタイル。
- iOSの重要な位置情報(routinedのキャッシュ)、Androidの位置履歴とWi-Fi/セルログ。
デバイスが存在した場所と、ユーザーが検索しただけの場所を区別してください。写真からEXIF GPSを抽出します。
exiftool -GPSLatitude -GPSLongitude -DateTimeOriginal \
IMG_0421.HEICクラウド、同期、複数デバイスの状態
最新のアプリはデバイス間で同期するため、デバイス上のデータが不完全だったり重複していたりする場合があります。
- スマートフォンで削除されたメッセージが、リンク済みのタブレットやWebセッションに残っていることがあります。
- 同期メタデータから、メッセージをどのデバイスが作成したかが分かる場合があります。
分析ではデバイスへの帰属を記録し、クラウドや関連デバイスのデータは、別途適切な法的権限のもとでのみ取得してください。押収した端末に完全な記録が保存されていると決めつけないでください。
アーティファクトの検証
アーティファクトを報告書に取り込む前に、3つの方法で検証します。
- 出典:元となったファイル/テーブル/列を正確に確認します。
- デコード:タイムスタンプのエポックとフィールドの意味を検証します。できれば、正常性が確認された基準メッセージと照合します。
- 裏付け:2つ目のアーティファクトと突き合わせて確認します(例:連絡先と一致する通話履歴のエントリ)。
独立して裏付けを取れない、または出典を正確に特定できないアーティファクトは、事実として記載せず、低信頼度として扱う必要があります。
スーパータイムラインの構築
スーパータイムラインは、複数のアーティファクトから得たイベントを1つの時系列ビューに統合し、UTCに正規化したものです。
- メッセージ、通話、アプリの使用状況、位置情報、システムイベントを組み合わせます。
- 追跡可能性を確保するため、各行に出典アーティファクトのタグを付けます。
log2timeline/plasoなどのツールや分析担当者のスクリプトで、これらを組み立てます。概念的には、各行に時刻、イベント、来歴が含まれます。
timestamp_utc | source | event
2026-06-01 09:14:02 | sms.db | iMessage sent to +1555...
2026-06-01 09:15:40 | knowledgeC.db | App in foreground: Maps
2026-06-01 09:16:05 | Photos.sqlite | Photo captured (GPS present)報告書の構成
フォレンジック報告書は、独立した調査担当者があなたの作業を再現して検証できるようにする必要があります。標準的な構成は次のとおりです。
- 概要 — 対象範囲、権限、主な調査結果。
- 取り扱った証拠 — デバイス、識別子、証拠保全の連鎖。
- 方法論 — ツール、バージョン、正確なコマンド、ハッシュ値。
- 調査結果 — 出典を引用したアーティファクト。
- 結論 — 生の事実とは明確に分けた解釈。
すべての主張は、ハッシュ値を取得した出典と記録された手順まで追跡できるようにする必要があります。
事実と意見
報告書の信頼性は、観察結果と解釈を分けることにかかっています。
- 事実:sms.dbの482行目には、UTCの日時YでテキストXが含まれています。
- 解釈:これは、ユーザーが場所Zで会う予定だったことを示唆します。
事実は中立的に記載し、推測には推測であることを明示するとともに、代替の説明も示します。確実性を誇張すると(例:1件のメッセージだけから意図を断定するなど)、報告書全体の信頼性が損なわれ、法廷で反論される可能性があります。
倫理、対象範囲、プライバシー
モバイルデバイスには、非常にプライベートなデータが保存されています。実務担当者は、法律と倫理の範囲内で作業する必要があります。
- 許可された対象範囲(令状/同意の条件)内でのみ作業します。
- 無関係なプライベートデータへの露出を最小限に抑えます。
- 客観性を保ちます — 不利な証拠だけでなく、無罪を示す証拠も報告します。
- 抽出したデータを、元のデバイスと同じように慎重に保護します。
確かな倫理は選択肢ではありません。デジタル証拠を信頼でき、証拠能力のあるものにするのは、倫理的な対応です。
理解度チェック
あなたの報告書には、「メッセージ482が示すとおり、ユーザーにはその行為を実行する意図がありました」と記載されています。レビュアーが異議を唱えました。核心的な問題は何でしょうか?
復習:アプリ、アーティファクト、報告
これで、生の抽出データを防御可能な報告書にまとめられるようになりました。
- アプリデータはSQLite + plist/XML + protobuf/JSON blobsで構成されます。blobは明示的にデコードします。
- 暗号化されたストレージ(SQLCipher)には、高度な抽出で取得したキーが必要です。
- 位置情報の証拠は慎重に扱い、実際の滞在と単なる検索を区別します。
- 複数デバイス間の同期を考慮し、適切な権限がある場合に限ってクラウドデータを取得します。
- 報告する前に、出典、デコード、裏付けを検証します。
- UTCのスーパータイムラインを構築し、再現可能な構成で報告書を作成し、事実と意見を分けます。
- 対象範囲を守り、倫理的に行動します。それによって証拠能力が認められるようになります。
よくある質問
「アプリ、痕跡、レポート作成」レッスンは無料ですか?
はい。「アプリ、痕跡、レポート作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「アプリ、痕跡、レポート作成」で何を学びますか?
アプリデータを解析し、調査結果を提示します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「アプリ、痕跡、レポート作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- モバイルフォレンジックの基礎
- Androidの取得と解析
- iOSの取得と解析
- アプリ、痕跡、レポート作成