الوحدة 2 - فك تشفير تطبيقات iOS - Gu-sung18 - 28-04-2019
الوحدة 2 - فك تشفير تطبيقات iOS
بعد إعداد جهازك (وجهاز الكمبيوتر) ستكون جاهزًا لبدء تنزيل التطبيقات من App Store وفك تشفيرها. بصفتك باحثًا امنياً، هذه هي الخطوة الأولى التي يتعين عليك القيام بها قبل البدء بأي تحليل. وذلك لأن iOS يقوم بتشفير كل تطبيق تم تنزيله من App Store باستخدام تقنية DRM الخاصة بهم تسمى FairPlay.
ونظرًا لعدم وجود نظام تشغيل يمكنه القيام بتشغيل البرامج المشفرة مباشرة حتى الآن [^1] يتعين على iOS فك تشفير التطبيق أولاً حتى يتمكن نظام التشغيل من تشغيل التطبيق الفعلي القابل للتنفيذ وبرنامج Clutch يستغل ذلك من أجل "فك تشفير" التطبيق. بعبارة اخرى، ما يفعله Clutch هو "مطالبة" نظام التشغيل بتحميل التطبيق الى الذاكرة لتشغيله، ثم عمل dumping للأصدار المفكوك التشفير من التطبيق من الذاكرة وكتابته على القرص.
ملاحظة: في حال فاتك ذلك، ستحتاج فقط إلى جهاز معمول له jailbreak لهذه الوحدة والجزء الأخير من الوحدة 4. بالنسبة للوحدات التالية، سأوفر الإصدار الذي تم فك تشفيره من تطبيق iOS.
إذا كان إصدار iOS جهازك < 11.0- قم بتنزيل أي تطبيق من متجر التطبيقات.
- شغّل iTunnel لإعادة توجيه ترافيك SSH عبر USB:
itnl --lport 2222 --iport 22
- قم بالدخول الى جهازك عبر SSH
ssh -p 2222 root@localhost
- استخدم Clutch لعرض لائحة التطبيقات المثبتة على جهازك:
- استخدم Clutch لفك تشفير التطبيق الذي قمت بتنزيله للتو بتمرير الفهرس الخاص به:
- انتظر انتهاء Clutch ، ثم في المخرجات سترى Clutch يحفظ التطبيق الذي تم فك تشفيره في " /private/var/mobile/Documents/Dumped".
- على جهاز الكمبيوتر الخاص بك ، في نافذة طرفية(terminal) مختلفة، انسخ التطبيق الذي تم عمل dump له الى جهازك:
scp -P 2222 root@localhost:/private/var/mobile/Documents/Dumped/<app-name>.ipa ~/Desktop/
- الآن لديك نسخة مفكوك تشفيرها من التطبيق.
إذا كان إصدار iOS جهازك >= 11.0- قم بتنزيل أي تطبيق من متجر التطبيقات.
- شغّل iTunnel لإعادة توجيه ترافيك SSH عبر USB:
itnl --lport 2222 --iport 22
- قم بالدخول الى جهازك عبر SSH
ssh -p 2222 root@localhost
- إذا كنت تستخدم أداة LiberiOS ، فقم بتمكين binpack:
export PATH=$PATH:/jb/usr/bin:/jb/bin:/jb/sbin:/jb/usr/sbin:/jb/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:
- غير المسار إلى "/jb/bfinject"
- افتح التطبيق على هاتفك من خلال النقر على أيقونه في Springboard. ملاحظة: هذه الخطوة مهمة، لكي تتمكن اداة bfinject من فك تشفير التطبيقات، يجب أن تكون قيد التشغيل في المقدمة(foreground).
- استخدم bfinject لفك تشفير التطبيق:
bash bfinject -P <app-name> -L decrypt
- انتظر حتى ينتهي bfinject، ثم في المخرجات سترى bfinject حفظ الإصدار الذي تم فك تشفيره في "مجلد المستندات" الخاص بالتطبيق.
- على جهاز الكمبيوتر الخاص بك ، في نافذة طرفية مختلفة ، انسخ التطبيق الذي تم عمل dump له الى جهازك:
scp -P 2222 root@localhost:/private/var/mobile/Containers/Bundle/Application/{app-uuid}/Documents/decrypted-app.ipa ~/Desktop/
- الآن لديك نسخة مفكوك تشفيرها من التطبيق.
معلومات اضافية
للحفاظ على إلارشادات خطوة-بخطوة بسيطة ومباشرة قدر الإمكان، حذفت بعض التفاصيل في بعض الخطوات. إليك بعض المعلومات التي نأمل أن تزيل أي شكوك قد تكون لديك:
ما <اسم-التطبيق> الذي يجب ان استخدامه مع bfinject؟- هذا هو اسم مجلد التطبيق. في بعض الحالات، قد يكون هذا الاسم مختلفًا عما يظهر على الـ springBoard في جهازك (النص الموجود أسفل رمز التطبيق).
- للعثور على الاسم الصحيح للتطبيق الخاص بك:
- غير المسار إلى مجلد التطبيقات، يتم تخزين جميع التطبيقات المثبتة من قبل المستخدم هنا:
cd /private/var/containers/Bundle/Application
- يقوم نظام iOS بتعيين UUID عشوائي لكل تطبيق عند تثبيته من متجر التطبيقات. وبالتالي، ستحتاج إلى البحث عن التطبيق الخاص بك على كل مجلد من مجلدات UUID العشوائية. (ملاحظة: هذا هو السبب في أنني طلبت منك تنزيل تطبيق بدلاً من استخدام تطبيقاتك المثبتة بالفعل) ولكن إليك خدعة كنت أستخدمها لفترة من الوقت، ضع قائمة بالملفات/المجلدات داخل هذا الدليل وفرزها حسب التاريخ:
- يجب أن يكون تطبيقك الذي تم تنزيله مؤخرًا أول تطبيق. إذا لم يكن الأمر كذلك، فسيتعين عليك الذهاب واحدًا تلو الآخر حتى تجد تطبيقك.
- نص <اسم-التطبيق> التي ستستخدمها مع bfinject هو اسم المجلد الموجود داخل UUID العشوائي.
bfinject يعطي خطأ "Unknown jailbreak. Aborting."، ماذا الآن؟- bfinject تم إنشاؤه لنوعين من برامج الـ jailbreak هما Electra و LiberiOS. لتحديد ما اذا كنت تستخدم Electra ، فإنه يتحقق من وجود "/bootstrap/inject_criticald" وفي حالة LiberiOS ، يتحقق من وجود "/jb/usr/local/bin/jtool". المشكلة هي أنه إذا قمت بنقل بعض الملفات أو في حالة ان الـ jailbreak خاصتك لا يحوي لتلك الملفات في تلك المسارات، فلن يعمل البرنامج. لا يوجد إجابة واحدة تناسب الجميع هنا. لكن الخبر السار هو أنه من السهل للغاية إصلاح هذه المشكلة، كل ما عليك القيام به هو إضافة الـ setup إلى سكربت bfinject هنا. كيف يتم فحص وجود هذين النوعين في الوقت الراهن حسب سكربت bfinject:
#
# Detect LiberiOS vs Electra
#
if [ -f /bootstrap/inject_criticald ]; then
# This is Electra
echo "[+] Electra detected."
cp jtool.liberios /bootstrap/usr/local/bin/
chmod +x /bootstrap/usr/local/bin/jtool.liberios
JTOOL=/bootstrap/usr/local/bin/jtool.liberios
cp bfinject4realz /bootstrap/usr/local/bin/
INJECTOR=/bootstrap/usr/local/bin/bfinject4realz
elif [ -f /jb/usr/local/bin/jtool ]; then
# This is LiberiOS
echo "[+] Liberios detected"
JTOOL=jtool
INJECTOR=`pwd`/bfinject4realz
else
echo "[!] Unknown jailbreak. Aborting."
exit 1
fi
يحتوي اسم التطبيق على مسافة فارغة ولن يقوم SCP بنسخه؟- لنسخ الملفات ذات المسافة الفارغة في SCP ، ستحتاج إلى إضافة ثلاث (3) خطوط مائلة عكسية (backslashes):
scp -P 2222 root@localhost:/private/var/mobile/Documents/Dumped/app\\\ with\\\ space.ipa ~/Desktop/
SCP لا يعمل على جهازي على نظام التشغيل iOS < 11.0؟- لهذا السبب قمنا بتثبيت Apple File Conduit 2 (AFC2)، وقمنا بتنزيل iExplorer أو iFunBox ونقل التطبيق الذي تم فك تشفيره إلى جهاز الكمبيوتر الخاص بك عن طريق الانتقال إلى "/private/var/mobile/Documents/Dumped/ " ومن ثم اسحب الـ ipa. الى جهاز الكمبيوتر الخاص بك.
[^ 1] يوجد نوع من التشفير يسمى تشفير Homomorphic يهدف إلى إنشاء نظام حيث يمكن للنظام إجراء عمليات على نصوص مشفرة (البيانات المشفرة) وإرجاع النتائج دون عكس أي شيء من النص العادي (raw binary).
إضافة
إذا رأيت كل هذه الخطوات وكنت تعتقد أن "الكثير من هذه يمكن أن يكون آلياً، لا؟" ، فأنت على حق تمامًا! لقد كتبت سكربت بايثون يقوم بأتمتة كل هذه الخطوات، من بدء تشغيل iTunnel إلى نسخ التطبيق الذي تم فك تشفيره الى جهاز الكمبيوتر الخاص بك وقمت بجعله مفتوح المصدر بموجب ترخيص MIT حتى تتمكن من استخدامه وتعديله ليناسب احتياجاتك الخاصة. يمكنك العثور على هذا السكربت هنا.
https://github.com/ivRodriguezCA/decrypt-ios-apps-script
الاستنتاجات
كما ترى، فك تشفير تطبيقات iOS هو مهمة سهلة إلى حد ما. طالما أن لديك جهاز معمول له jailbreak ومبرمجي كل من Clutch و bfinject يواصلون تحديث أدواتهم، فستتمكن من فك تشفير تطبيقات iOS بسرعة، وبما أن كلتا الأداتين مفتوحتا المصدر، يمكنك مساعدة المجتمع من خلال المساهمة في هذه المشاريع. الخطوات الأكثر صعوبة وإثارة هي أن نأتي عندما نصل إلى فك شفرة البرنامج، ونتصفح حزمة التطبيقات ونحلل ملفاتها المدمجة.
المصدر
https://github.com/ivRodriguezCA/RE-iOS-Apps/blob/master/Module-2/README.md
|