人気のある市販のモバイル・フォレンジック・ツールでテスト・デバイスを分析していたとき、私は興味深いものに出くわした。ツールはノートの概要(「ランス」と表示)を表示したが、実際の内容は消えていた。鍵の下に何が隠されているのか手がかりはなく、私には燃えるような疑問が残った。iOS 16のApple Notesを解読するワークフローが必要だった。
デバイスが動作していた iOS 16.7.10そして、NoteStore.sqliteデータベースを掘り下げた後、暗号化の手がかりがすべてそこにあり、解読されるのを待っていることに気づいた。オープンソースのツールの助けを借りて、パスワードを回復し、ノートの内容を解読することに取り掛かった。
この投稿では、以下のことを説明する。 完全なフォレンジックワークフロー どのように iOS 16でApple Notesを復号化する:
⚠️ 重要な注意事項 このワークフローは、Apple Notesにロックされている場合にのみ適用されます。 iOS 16.x.iOS 17から、アップルは暗号化されたメモの保存方法を変更した。
ロックされたアップル・ノートに隠されたメッセージを明らかにしよう。
スクリーンショットでは、ZDATAの生の16進数値を見ることができる。このデータは AES暗号化塩分や反復回数のような重要なメタデータは、データベースの他の部分に保存される。データベースから 科学捜査官の の観点からは、ノートが完全に暗号化されていることを認識することが、ZICCLOUDSYNCINGOBJECTテーブルをより深く掘り下げ、以下のことを行うために必要なパラメータを探す合図となります。 クラック パスコードと アンロック ノート🔓。
Apple Notesは、ロックされたメモを以下の組み合わせで保護します。 PBKDF2 (鍵の導出)と AES (暗号化)。ノートのパスワードが有効になっている場合、Appleは重要な暗号化メタデータをデータベースに保存します:
これらの値は、正しいパスコードを持つ人だけがノートの内容を解読できることを保証する。
科学捜査の観点からは、通常、以下のような手順を踏む:
私の目標は、現実的なフォレンジック・シナリオをシミュレートすることだった。ロックされたアップル・ノートを持っていて、コンテンツを復号化するためにパスコードを回復する必要があった。そこで ハッシュキャット が登場する。Apple Secure Notesのハッシュ・モード(ID 16200)、Hashcatは正しいパスワードを見つけるまで、システマティックにパスワードを試行する。
私はまず NoteStore.sqlite DBブラウザでZICCLOUDSYNCINGOBJECTテーブルのZISPASSWORDPROTECTED = 1の行をターゲットにしました。そして、以下のカラムを照会しました:
Hashcat入力ファイルは、小さなPythonスクリプトによって生成された。 notes_to_hashcat.pyこれは、これらの値をHashcatが解析できる1行にフォーマットしたもので、反復回数(ZCRYPTOITERATIONCOUNTより)も含まれている。
Hashcat入力ファイルと辞書を用意して、次のコマンドを実行した:
hashcat -m 16200 -a 0 <C:▶path_to_wordlist.txt
ここだよ:
Hashcatは正しいパスワードの特定に成功した:royalewithcheese。実際の調査では、辞書はもっと大きなものになるかもしれないが、この結果によって、ハッシュキャットが重い仕事を処理できることが確認された。
パスワードが手に入ったので、次のステップは 暗号化キー(KEK)これは、ノートのコンテンツを暗号化する最終的なAESキーをラップするために使用されます。KEKを導き出すには、ZICCLOUDSYNCINGOBJECTテーブルから以下の値が必要だった:
例えば、DBブラウザーを使ってクエリーを実行した:
SELECT ZCRYPTOITERATIONCOUNT, ZCRYPTOSALT FROM ZICCLOUDSYNCINGOBJECT WHERE Z_PK = ;
次に、私のお気に入りのツールであるCyberChef(🛠️)を開き、「PBKDF2キーの導出」操作をドラッグした。ハッシュ関数を SHA-256 パスワード、ソルト、反復回数を入力すると、CyberChefは次のように表示した。 16バイトKEK:
このプロセスを自動化するために、私は以下のPythonスクリプトを作成した。 get_key.pyこれはデータベースパス、ノートPK、パスワードを引数として受け取ります。実行するとKEKが16進数で返されます。
python get_kek.py NoteStore.sqlite
結果
注PK=16: KEK (hex) = a1dac1516302e1d3d73ad4fd4b6f8fef
次のステップは 鍵を開ける ノートの内容を暗号化するために使用されます。ラップされたキーはZICCLOUDSYNCINGOBJECTのZCRYPTOWRAPPEDKEY列に格納される。例えば
select zcryptowrappedkey from ziccloudsyncingobject where z_pk = 16;
以前の操作を無効にして、"AES Key Unwrap "を検索し、レシピ・ウィンドウにドラッグした。KEKとラップされたキーを貼り付けると、CyberChefはアンラップされたAESキーを出力した。
というPythonスクリプトも開発した。 unwrap.py このスクリプトはデータベースパスとKEK(16進数)を引数に取る。このスクリプトを実行すると、キーがアンラップされ、16進数で表示される。私の場合、アンラップされたキーは以下の通りだった:
python unwrap.py NoteStore.sqlite
これは、ロックされたアップル・ノートのコンテンツを復号化するために使用される最終的なAESキーである。
暗号化されていないキーを手に入れたので、今度は ZICNOTEDATA
テーブルアップルは GCMモードのAES ロックされたノートの内容を保護するために、4つの重要なコンポーネントが必要だった:
🔑 解かれたAESキー
🔁 初期化ベクトル(IV) より zcryptoinitializationvector
🏷 GCM認証タグ より ZCRYPTOTAG
💾 暗号化されたBLOB より ZDATA
を見つける。 点滴 そして GCMタグを開いた。 ZICNOTEDATA
テーブルにバイナリ値として格納されます。これらのフィールドはバイナリ値として保存され ZICNOTEDATA
または ziccloudsyncingobject
テーブルに格納される。どちらも同じカラム名でデータを格納する。
点滴: 5c0c0bde9b6801747ddad1115a422d05
GCMタグ: b9087ba19e3c7deff2cb4b9b51e6aafa
暗号化されたBLOB自体も ZDATA
列。私は3つの値をすべて16進数でコピーし、最後の復号ステップに備えた。
すべてを手にして、私はこう言った。 サイバーシェフ.このツールを使えば、すべてのパラメーターを組み合わせて、オリジナルのコンテンツを簡単に明らかにすることができた。私がやったことはこうだ:
を追加した。 「AES復号化 オペレーションを行う。
を貼り付けた。 アンラップドAESキー をキー・フィールドに入力する。
をセットした。 モードをGCMに.
を挿入した。 IVとGCMタグ それぞれの分野で。
最後に 暗号化BLOB を入力ウィンドウに入力する。
AESで暗号化されたBLOBを復号化した後、出力を以下のファイルに保存した。 decrypted_blob.bin
をHxDで開いた。ファイルの署名 0x1F8B08
GZIPで圧縮されたファイルであることを確認した-アップルはprotobufデータを圧縮するためにこれを使用する。
平文を抽出するために、私はCyberChefを再び開き、以下のコマンドを追加した。 ガンジップ オペレーションをワークフローに追加した。すぐに、見慣れた文字列が出力に現れ始めた。
解凍した後、次のようにした。 プロトブフ・デコード をCyberChefに追加した。その結果、ロックされたアップル・ノートの内容を表すキーと値を持つ、JSONに似た構造化ビューが出来上がった。
また、読みやすくするために、Pythonスクリプトを使用しました。 バックボックスプロトブフ
モジュールを使って、protobufファイルを解析し、人間が読めるきれいなフォーマットで出力を表示する。
これは、ユーザーがロックされたApple Noteに入力した内容と一致します。パスワードで保護された隠し入力から、実際の平文メッセージにたどり着いたのです。
おめでとうございます🎉 - あなたは今、次のような完全なフォレンジックワークフローを完了したところです。 iOS 16でロックされたApple Notesを復号化する.SQLiteデータベースから暗号化パラメータを抽出し、パスワードをクラックした。 ハッシュキャットを使用してAESキーを導き出し、アンラップした。 パイソンでプロトバフを復号化し、パースする。 サイバーシェフ.その一歩一歩が、ノートの隠された内容を暴くことに近づいていく。
このハンズオン・ウォークスルーは、そのパワフルさを証明している。 オープンソースツール はデジタル・フォレンジックに役立ちます。このツールは、市販のツールでは見逃してしまうような暗号化されたApple Notesを、捜査官が発見するのに役立ちます。 iOS 16またはそれ以前.
ここでもうひとひねり。 パスワードヒント での ziccloudsyncingobject
テーブル
クォーターパウンダー
そのデバイスは「ヴィンセント」という人物のものだったので、パスワードを推測するのは難しくなかった: ロイヤルウィズチーズ - うなずける パルプ・フィクション.実際のケースでは、このようなパスワードのヒントは、戦略的なクラッキング・プロセスと組み合わせることで、ワークフローを加速させることができる。
このガイドは、特に復号化する方法に適用されます。 iOS16以前のアップルノート.で始まる。 iOS 17Apple は Notes の暗号化プロセスに大きな変更を加えました。キー導出フィールドの欠落、異なる暗号構造、または同じ方法で復号化されなくなったノートが発生する可能性があります。
どのようにすればいいのか? iOS 17またはiOS 18でApple Notesを復号化するぜひ協力したい。一緒に新しい暗号を解読しましょう。
ご愛読ありがとうございました!ご質問やご意見がおありですか?以下のコメント欄にご記入いただくか、直接ご連絡ください。フォレンジック・ディスカバリーの限界に挑戦し続けましょう。🔍
スウェーデン からアクセスされていることに気付きました。スウェーデン・クローナ に価格を更新しましたので、お買い物をお楽しみください。代わりにユーロ をご利用ください。 非表示