مقدمة
أثناء تحليلي لجهاز اختباري باستخدام أداة تجارية شهيرة للتحليل الجنائي للأجهزة المحمولة، صادفتُ شيئًا مثيرًا للاهتمام، وهو مذكرة أبل مقفلة ظهرت فقط على أنها "مخفية". أظهرت الأداة ملخص المذكرة (المسمى "لانس")، لكن المحتوى الفعلي كان مفقوداً. لم يكن هناك أي دليل على ما يكمن تحت القفل، مما جعلني أتساءل بشدة: هل يمكنني الكشف عن السر الموجود بالداخل؟ كنت بحاجة إلى سير عمل يساعدني في فك تشفير Apple Notes على نظام iOS 16.
كان الجهاز يعمل iOS 16.7.10وبعد أن بحثت في قاعدة بيانات NoteStore.sqlite، أدركت أن جميع أدلة التشفير كانت موجودة هناك - في انتظار فك تشفيرها. وبمساعدة أدوات مفتوحة المصدر، شرعتُ في استعادة كلمة المرور وفك تشفير محتويات المذكرة.
يرشدك هذا المنشور إلى سير عمل الطب الشرعي الكامل حول كيفية فك تشفير Apple Notes على iOS 16:
- 🔓 هاش كات لاختراق كلمات المرور
- 🗄️ متصفح قاعدة البيانات ل SQLite لاستكشاف واستخراج معلمات التشفير
- 🐍 نصوص بايثون النصية لاشتقاق المفتاح وفك تغليف مفتاح AES
- 🔍 سايبر شيف لفك تشفير حمولة البروتوبوف النهائية وفك ضغطها وتحليلها
⚠️ ملاحظة مهمة: ينطبق سير العمل هذا بشكل خاص على Apple Notes المقفل على iOS 16.x. بدءاً من نظام التشغيل iOS 17، غيّرت Apple طريقة تخزين الملاحظات المشفرة - ويجلب نظام iOS 18 المزيد من التغييرات.
دعنا نتعمق في الأمر ونكشف عن الرسالة الخفية داخل مذكرة Apple المقفلة.
التعمق في NoteStore.sqlite

في لقطة الشاشة، يمكنك رؤية القيم السداسية العشرية الخام ل ZDATA. يتم تشويش هذه البيانات بشكل فعال بواسطة تشفير AESمع حفظ البيانات الوصفية الهامة - مثل الأملاح وأعداد التكرار - في أجزاء أخرى من قاعدة البيانات. من الفاحص الجنائي من المنظور، فإن إدراكك أن الملاحظة مشفرة بالكامل هو إشارتك للتعمق أكثر في جدول ZICCLOUDSYNCINGOBJECT لمعرفة المعلمات اللازمة ل الكراك رمز المرور و فتح القفل الملاحظة 🔓.
لماذا يتم تشفير ملاحظات أبل المقفلة على نظام التشغيل iOS 16؟
تقوم Apple Notes بتأمين الملاحظات المؤمنة باستخدام مزيج من PBKDF2 (اشتقاق المفتاح) و AES (التشفير). عندما يتم تمكين كلمة مرور على ملاحظة، تقوم Apple بتخزين البيانات الوصفية التشفيرية الرئيسية في قاعدة البيانات - مثل:
- عدد مرات التشفير zcryptoiterationcount
- زCRYPTOSALT
- مفتاح zcryptowrapped
تضمن هذه القيم أن الشخص الذي لديه رمز المرور الصحيح هو فقط من يمكنه فك تشفير محتوى الملاحظة.
نهج الطب الشرعي
من وجهة نظر الطب الشرعي، تتضمن خطواتك عادةً ما يلي:
- تحديد إدخالات الملاحظات المقفلة ذات الصلة في ZICNOTEDATA و ZICCLOUDSYNCINGOBJECT.
- مقتطفات تفاصيل التشفير - مثل عدد مرات التكرار، والملح، والمفتاح الملفوف.
- الكراك كلمة مرور المستخدم مع هاش كات (أو أداة أخرى لاستعادة كلمات المرور مثل John the Ripper أو Passware).
- اشتقاق المفاتيح النهائية في بايثون أو سايبر شيف و فك التشفير المذكرة الخاصة بـ BLOB
- إزالة الضغط بيانات البروتوبوف المفتوحة (مع سايبر شيف أو بايثون) للكشف عن النص العادي النهائي.
اختراق كلمة مرور Apple Note المقفلة باستخدام Hashcat
كان هدفي هو محاكاة سيناريو جنائي واقعي: كان لديّ جهاز Apple Note مقفل وكنت بحاجة إلى استعادة رمز المرور الخاص به لفك تشفير المحتوى. هنا حيث هاش كات في اللعب. بالاستفادة من وضع تجزئة Apple Secure Notes (المعرف 16200)، حاول Hashcat تجربة كلمات المرور بشكل منهجي حتى يعثر على كلمة المرور الصحيحة.
استخراج الأعمدة المطلوبة
بدأت بفتح NoteStore.sqlite في متصفح قاعدة البيانات واستهداف الصفوف ذات ZISPASSWASSWORDPROTECTED = 1 في جدول ZICCLOUDSYNCINGOBJECT. ثم استعلمت عن الأعمدة التالية:
- Z_PK - المعرف الفريد للمذكرة.
- ZCRYPTOSALT - قيمة الملح لـ PBKDF2.
- ZCRYPTOWRAPPEDKEY - المفتاح المغلف الذي سيتم فك تغليفه لاحقًا.

تم إنشاء ملف الإدخال Hashcat بواسطة برنامج نصي صغير من Python Notes_to_hashcat.pyوالتي نسقت هذه القيم في سطر واحد يمكن ل Hashcat تحليلها، بما في ذلك عدد التكرارات (من ZCRYPTOITERATIONCOUNT).

تشغيل Hashcat لفك تشفير كلمة مرور Apple Note المقفلة
بعد أن أصبح ملف إدخال Hashcat جاهزًا والقاموس في متناول اليد، قمت بتشغيل الأمر التالي:
hashcat -m 16200 -a 0
هنا:
- -م 16200 يحدد وضع Apple Secure Notes الآمن.
- -أ 0 يضبط Hashcat على وضع الهجوم المباشر (القاموسي).
- يمكن أن يكون القاموس شيئاً مثل روك يو.تكس أو قائمة مخصصة مشتقة من القطع الأثرية للأجهزة.

نجح Hashcat في تحديد كلمة المرور الصحيحة: royalewithcheese. في التحقيق الفعلي، قد يكون قاموسك أكبر بكثير، ولكن هذه النتيجة أكدت أن Hashcat يمكنه التعامل مع الرفع الثقيل.
اشتقاق مفتاح التشفير الرئيسي (KEK) لفك تشفير Apple Notes
مع وجود كلمة المرور في متناول اليد، كانت الخطوة التالية هي اشتقاق مفتاح التشفير الرئيسي (KEK)والذي يُستخدم لتغليف مفتاح AES النهائي الذي يشفر محتوى الملاحظة. لاشتقاق KEK، كنت بحاجة إلى القيم التالية من جدول ZICCLOUDSYNCINGOBJECT:
- عبارة المرور (كلمة المرور المخترقة)
- عدد مرات التكرار (zcryptoiterationcount)
- الملح (ZCRYPTOSALT)
على سبيل المثال، باستخدام متصفح قاعدة البيانات (DB Browser)، قمت بالاستعلام عن:
حدد ZCRYPTOITERATIONCOUNT, ZCRYPTOSALT من ZICCLOUDSYNCINGOBJECT حيث Z_PK = ;

بعد ذلك، فتحتُ CyberChef - وهي أداتي المفضلة 🛠️ - وسحبتُ عملية "اشتقاق مفتاح PBKDF2". ضبط دالة التجزئة على SHA-256 وإدخال كلمة المرور والملح وعدد مرات التكرار، أنتج CyberChef 16 بايت KEK:

لأتمتة هذه العملية، أنشأتُ نصًا برمجيًا من بايثون يسمى get_key.pyالذي يقبل مسار قاعدة البيانات ومذكرة PK وكلمة المرور كوسائط. يؤدي تشغيله إلى إرجاع KEK بالسداسي السداسي.
python get_kek.py NoteStore.sqlite
النتيجة:
ملحوظة PK=16: KEK (سداسي عشري) = a1dac151616302e1d3d3d73ad4fd4fd4b6f8fef
فك تشفير مفتاح AES لفك تشفير ملاحظات Apple المقفلة على نظام iOS 16
كانت الخطوة التالية هي فك غلاف المفتاح المستخدم لتشفير محتوى الملاحظة. يتم تخزين المفتاح المغلف في عمود ZCRYPTOWRAPPEDKEY في ZICCLOUDSYNCINGOBJECT. على سبيل المثال، استعلمت عن::
حدد zcryptowrappedkey من ziccloudsyncingobject حيث z_pk = 16;

خيارات إلغاء التغليف
الخيار 1: فك تشفير مفتاح AES لفك تشفير ملاحظات Apple المقفلة على نظام iOS 16 باستخدام CyberChef
عطلت أي عمليات سابقة، وبحثت عن "AES Key Unwrap" وسحبته إلى نافذة الوصفة. بلصق مفتاح KEK والمفتاح الملفوف، أخرج CyberChef مفتاح AES غير الملفوف.

الخيار 2: أتمتة AES Key Unwrap باستخدام unrap.py
قمت أيضًا بتطوير برنامج نص برمجي من بايثون يسمى فك الغلاف.py الذي يأخذ مسار قاعدة البيانات و KEK (بالصيغة السداسية) كوسيطات. يؤدي تشغيل هذا البرنامج النصي إلى فك تغليف المفتاح وطباعته بتنسيق سداسي عشري. في حالتي، كان المفتاح غير المغلف هو:
python unwrap.py NoteStore.sqlite

هذا هو مفتاح AES النهائي الذي سيُستخدم لفك تشفير محتوى نوتة Apple المؤمّنة.
فك تشفير ملفات Apple Notes BLOBs باستخدام AES-GCM على نظام التشغيل iOS 16
الآن وبعد أن حصلت على المفتاح غير المغلف، حان الوقت لفك تشفير Apple Notes BLOB المخزن في بيانات ZICNOTEDATA
الجدول. تستخدم أبل AES في وضع GCM لحماية محتويات الملاحظات المقفلة، مما يعني أنني كنت بحاجة إلى أربعة عناصر أساسية للمتابعة:
🔑 مفتاح AES غير ملفوف AES
🔁 متجه التهيئة (IV) من
ناقل التهيئة zcryptoinitializationvector
🏷 علامة مصادقة GCM من
ZCRYPTOTAG
💾 BLOB مشفر BLOB من
ZDATA
📤 استخراج علامة IV وعلامة GCM من NoteStore.sqlite
لتحديد موقع رابعاً و علامة GCMقمت بفتح بيانات ZICNOTEDATA
في متصفح قاعدة البيانات ل SQLite. يتم تخزين هذه الحقول كقيم ثنائية ويمكن العثور عليها إما في بيانات ZICNOTEDATA
أو زيككلينجيت
الجداول. كلاهما يخزن البيانات تحت نفس أسماء الأعمدة.
رابعاً:
5c0c0bde9b6801747ddad1115a422d05
علامة GCM:
b9087ba19e3c7deff2cb4b9b51e6aafa
كانت BLOB المشفرة نفسها مرئية أيضًا في ZDATA
العمود. نسخت القيم الثلاث بصيغة سداسية عشرية، استعدادًا لخطوة فك التشفير النهائية.



🧪 فك تشفير المذكرة باستخدام CyberChef
مع وجود كل شيء في متناول اليد، التفت إلى سايبر شيف. جعلت هذه الأداة من السهل دمج جميع المعلمات والكشف عن المحتوى الأصلي. إليك ما فعلته:
أضفتُ "فك تشفير AES" العملية.
لقد ألصقتُ مفتاح AES غير مغلف في حقل المفتاح.
لقد ضبطت الوضع إلى GCM.
لقد أدخلت علامة IV وGCM في مجالات تخصصهم.
وأخيراً، قمتُ بنسخ BLOB مشفر في نافذة الإدخال.

فك ضغط المذكرة النهائية وتحليلها (فك تشفير البروتوبوف من Apple Notes)
بعد فك تشفير BLOB المشفّر ب AES، قمتُ بحفظ الإخراج في ملف باسم فك تشفير_بلوب.بن
وفتحه في HxD. توقيع الملف 0x1F8B08
تم التأكد من أنه ملف مضغوط GZIP-تستخدم Apple هذا لضغط بيانات البروتوبوف.
لاستخراج النص العادي، أعدتُ فتح CyberChef وأضفتُ غونزيب إلى سير العمل. على الفور، بدأت السلاسل المألوفة في الظهور في الإخراج.

بمجرد فك الضغط، قمت بتطبيق فك تشفير بروتوبوف في CyberChef. كانت النتيجة عرضًا منظمًا يشبه JSON، مع مفاتيح وقيم تمثل محتويات مذكرة Apple المقفلة.

لتسهيل القراءة، استخدمت أيضًا نصًا برمجيًا من Python يستفيد من باك بوكس بروتوبوف
لتحليل ملف البروتوبوف وطباعة المخرجات بتنسيق نظيف ومقروء بشريًا.

هذا يطابق ما كتبه المستخدم في مذكرة أبل المقفلة. لقد انتقلت من الإدخال المخفي المحمي بكلمة مرور إلى الرسالة الفعلية ذات النص العادي - وهو اكتشاف لا يقدر بثمن في أي قضية جنائية.

🔚 الخاتمة
تهانينا 🎉 - لقد أكملت للتو سير عمل الطب الشرعي الكامل لـ فك تشفير ملاحظات Apple Notes المقفلة على iOS 16. لقد استخرجت معلمات التشفير من قاعدة بيانات SQLite، وفككت كلمة المرور باستخدام هاش كاتاشتقاق مفتاح AES وفك غلافه باستخدام بايثونوأخيرًا فك تشفير البروتوبوف وتحليله باستخدام سايبر شيف. كل خطوة تقربك من كشف محتويات المذكرة المخفية.
تثبت هذه الجولة التدريبية العملية مدى قوة أدوات مفتوحة المصدر في الطب الشرعي الرقمي. فهي تساعد المحققين في الكشف عن ملاحظات Apple المشفرة التي قد تفوت الأدوات التجارية - خاصةً على الأجهزة التي تعمل iOS 16 أو أقدم.
🕵️ المكافأة: تلميح كلمة المرور
إليك لمسة إضافية - لقد وجدتُ تلميح كلمة المرور في زيككلينجيت
الجدول:
ربع باوندر
وبما أن الجهاز ينتمي إلى شخص يدعى "فنسنت"، لم يكن من الصعب تخمين كلمة المرور: رويالويتشيز - إشارة إلى بولب فيكشن. في الحالات الحقيقية، يمكن لتلميحات كلمات المرور مثل هذه أن تسرّع من سير العمل عندما تقترن بعملية اختراق استراتيجية.
📱 شيء آخر... حول نظامي iOS 17 و iOS 18
ينطبق هذا الدليل تحديداً على كيفية فك تشفير ملاحظات Apple Notes على نظام التشغيل iOS 16 والإصدارات الأقدم. بدءًا من دائرة الرقابة الداخلية 17، أدخلت Apple تغييرات كبيرة على عملية تشفير Notes. قد تواجه حقول اشتقاق مفاتيح مفقودة أو هياكل تشفير مختلفة أو ملاحظات لم تعد تُشفّر باستخدام نفس الطرق.
إذا كنت تستكشف كيفية فك تشفير Apple Notes على iOS 17 أو iOS 18، أود أن أتعاون معك. شاركنا نتائجك - دعنا نحل التشفير الجديد معاً.
شكراً على القراءة! هل لديك أسئلة أو أفكار؟ ضعها في التعليقات أدناه أو تواصل معنا مباشرةً. دعونا نستمر في دفع حدود اكتشاف الطب الشرعي. 🔍