Sandblaster هي أداة لعكس ملفات تعريف رمل التفاح الثنائية (إزالة التجميع). تتم كتابة ملامح Apple Sandbox باللغة SBPL ( لغة ملف تعريف الرمل ) ، وهي لغة تشبه المخطط ، ثم يتم تجميعها في شكل ثنائي غير موثق وشحنه. تستخدم في المقام الأول على iOS ، ملفات تعريف صندوق الرمل موجودة على MacOS أيضًا. Sandblaster ، على حد علمنا ، أول أداة تعكس ملامح صندوق الرمل الثنائي لتنسيق SBPL الأصلي. يعمل Sandblaster على iOS من الإصدار 7 فصاعدًا بما في ذلك iOS 11.
التقرير الفني Sandblaster: يعرض عكس صندوق Apple Sandbox معلومات واسعة (وإن كانت قديمة بعض الشيء) حول الأجزاء الداخلية Sandblaster.
اعتمد Sandblaster على العمل السابق من قبل Dionysus Blazakis و Stefan Esser وشرائح.
يعمل Resverser (في reverse-sandbox/ Folder) وأداة Helper (في helpers/ المجلد) على أي منصة تشغيل Python.
قد يتم تثبيت Sandblaster وتشغيله المستقل ، على الرغم من أننا نوصي بتثبيته وتشغيله من داخل Iextractor. تحقق من وثائق IExtractor للحصول على المعلومات.
Iextractor هو برنامج مفتوح المصدر تم إصداره بموجب ترخيص BSD المكون من 3 أبناء.
يتطلب Sandblaster Python2 للانعكاس (في reverse-sandbox/ ) ، Python3 مع مكتبة lief لـ Helper Script (في helpers/ ).
بعد استنساخ مستودع Sandblaster ، يجب عليك تثبيت lief لـ Python3:
pip3 install lief
إذا فشل تثبيت lief فأنت بحاجة إلى تجميعها. مزيد من المعلومات حول كيفية تجميعها يمكن العثور عليها على صفحة الويكي.
من أجل استخدام Sandblaster ، تحتاج إلى الوصول إلى ملفات تعريف صندوق الرمل الثنائي وعمليات صندوق الرمل ، وهي مجموعة من الأوتار التي تحدد الإجراءات الخاصة بـ Sandbox. يتم استخراج عمليات صندوق الرمل وملامح صندوق الرمل باستخدام البرنامج النصي helpers/extract_sandbox_data.py . يتم استخراج ملفات التعريف الرملية من امتداد صندوق رمل kernel (كحزمة لـ iOS 4 و 9-11) أو من ذاكرة التخزين المؤقت kernel (كحزمة لـ iOS 12) أو من ملف sandboxd في نظام ملفات iOS (لنظام iOS 5-8). يتم استخراج عمليات صندوق الرمل إما من تمديد kernel (لنظام iOS 4-11) أو من ذاكرة التخزين المؤقت kernel (لنظام iOS 12).
لذلك ، كبيانات الإدخال ، يتطلب Sandblaster kernelcache ، وملحق صندوق رمل kernel وملف sandboxd . يتم تقديم المعلومات والبرامج النصية على استخراجها من ملف IPSW ( برنامج iPhone ) المتاح للجمهور من قبل Iextractor.
فيما يلي الخطوات والأوامر لعكس ملامح صندوق الرمل لنظام التشغيل iOS 8.4.1 ، بافتراض امتداد kernel رمل ( com.apple.security.sandbox.kext ) وملف sandboxd متاح:
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPad2,1_8.4.1_12H321.sb_ops iPad2,1_8.4.1_12H321.com.apple.security.sandox.kext 8.4.1
# Extract binary sandbox profile files from sandboxd.
mkdir iPad2,1_8.4.1_12H321.sandbox_profiles
./extract_sandbox_data.py -O iPad2,1_8.4.1_12H321.sandbox_profiles/ iPad2,1_8.4.1_12H321.sandboxd 8.4.1
# Reverse all binary sandbox profiles.
cd ../reverse-sandbox/
mkdir iPad2,1_8.4.1_12H321.reversed_profiles
for i in ../helpers/iPad2,1_8.4.1_12H321.sandbox_profiles/*; do python reverse_sandbox.py -r 8.4.1 -o ../helpers/iPad2,1_8.4.1_12H321.sb_ops -d iPad2,1_8.4.1_12H321.reversed_profiles/ "$i"; done
فيما يلي الخطوات والأوامر لعكس ملفات تعريف Sandbox لـ iOS 9.3 ، على افتراض امتداد kernel رمل ( com.apple.security.sandbox.kext ):
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPhone5,1_9.3_13E237.sb_ops iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
# Extract sandbox profile bundle from kernel sandbox extension.
./extract_sandbox_data.py -O . iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
cd ../reverse-sandbox/
# Reverse all binary sandbox profiles in sandbox bundle.
mkdir iPhone5,1_9.3_13E237.reversed_profiles
# Print all sandbox profiles in bundle.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle -psb
# Do actual reversing.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle
يختلف استخراج ملامح صندوق الرمل الثنائي بين iOS <= 8 و iOS> = 9. بما أن iOS> = 9 يتم تخزين ملفات تعريف صندوق الرمل الثنائي في حزمة صندوق الرمل في امتداد صندوق رمل kernel. يقوم helpers/extract_sandbox_data.py باستخلاصها بشكل مناسب اعتمادًا على إصدار iOS.
يطبع خيار -psb لـ reverse_sandbox.py جزءًا من ملامح صندوق الرمل من حزمة صندوق الرمل دون القيام بالعكس الفعلي.
يجب تشغيل برنامج reverse_sandbox.py في الدليل ( reverse-sandbox/ ) لأنه يحتاج إلى وحدات Python الأخرى وملف logger.config .
يحتوي helpers/ المجلد الفرعي على برامج نصية مساعدة توفر واجهة أجمل للأدوات الخارجية.
الانعكاس الفعلي هو جزء من reverse-sandbox/ . يمكن تصنيف الملفات هنا على النحو التالي:
reverse_sandbox.py . إنه يوسع وسيطات سطر الأوامر ، ويقوم بتحليل الملف الثنائي الإدخال (أقسام الاستخراج) ويستدعي الوظائف المناسبة من الوحدات الأخرى.operation_node.py . يوفر وظائف لإنشاء الرسم البياني للقواعد المقابلة لملف صندوق الرمل وتحويل الرسم البياني إلى SBPL. يسمى بواسطة reverse_sandbox.py .sandbox_filter.py والتكوين في filters.json ، filter_list.py و filters.py . يتم استدعاء وظائف تصفية محددة بواسطة operation_node.py .sandbox_regex.py و regex_parse.py . regex_parse.py هو محلل النهاية الخلفي الذي يحول التمثيل الثنائي إلى رسم بياني أساسي. يقوم sandbox_regex.py بتحويل تمثيل الرسم البياني (A Automaton) إلى تعبير منتظم فعلي (أي سلسلة من الأحرف و metacharacters). يطلق عليه بواسطة reverse_sandbox.py لتحليل التعبيرات العادية ، مع تمرير قائمة التعبير العادية الناتجة إلى الوظائف المكشوفة بواسطة operation_node.py ؛ operation_node.py يمررها إلى ملفات معالجة مرشح Sandbox.reverse_string.py . يتم استخدام فئة SandboxString الأساسية في reverse_string.py في sandbox_filter.py .logger.config . بشكل افتراضي ، تتم طباعة INFO والرسائل ذات المستوى الأعلى إلى وحدة التحكم ، بينما تتم طباعة DEBUG والرسائل ذات المستوى الأعلى على ملف reverse.log . يعمل Sandblaster في الإصدار 4 ، بما في ذلك iOS 12. قامت Apple بإجراء تحديثات على التنسيق الثنائي لملفات تعريف صندوق الرمل: نظرًا لأن ملفات تعريف صندوق الرمال iOS 9 يتم تخزينها في حزمة ، حيث يتم تجميع سلاسل iOS 10 معًا بتنسيق ثنائي متخصص. iOS 11 لم يجلب أي تغيير إلى التنسيق.
انضم إلينا في Discord للمناقشات الحية.