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

التقنيات المشهورة للكشف ما اذا كان الجهاز رووت


لنبدأ مع أفضل تقنية مشهورة تستخدم من قبل أشهر التطبيقات للكشف عن رووت الجهاز.
بمجرد عمل الرووت على الجهاز, بعض الملفات الجديدة توضع في الجهاز. فحص وجود هذه الملفات على الجهاز تعتبر طريقة للكشف عن رووت الجهاز, بعض المطورون يمكن ان ينفذو بعض الأوامر التي يمكن الوصول اليها من قبل root users فقط, والبعض يلقون النظر على المسارات التي تحتوي على أذونات عاليةقمت بسرد بعض التقنيات هنا.
1. Superuser.apk : تعتبر من أشهر الحزم التي تبحث عنها العديد من التطبيقات من اجل كشف الرووت. هذا التطبيق يسمح للتطبيقات الأخرى بالعمل كـ رووت على الجهاز.
070114_1056_AndroidHack12. العديد من التطبيقات تبحث عن تطبيقات ذات أسماء حزم خاصة, مثال يظهر ذلك.
070114_1056_AndroidHack1الصورة في الأعلى تظهر حزمة مسماة “eu.chainfire.supersu”. رأيت بعض التطبيقات الموجودة في متجر الأندرويد تتثبت اذا كان اي تطبيق ل “chainfire” يعمل على الجهاز.
3. توجد بعض التطبيقات الخاصة والتي تعمل على أجهزة الرووت فقط. البحث عن هذه التطبيقات تعتبر فكرة جيدة ايضا للكشف عن جهاز الرووت. مثال : Busybox.
Busybox تطبيق يزود طريقة لتنفيذ أكثر أوامر لينكس شهرة على جهاز الأندرويد.
070114_1056_AndroidHack14. تنفيذ اوامر “su” و “id” والنظر على UID لرؤية ما اذا كان رووت.
070114_1056_AndroidHack15.التحقق من  BUILD tag لأجل test-keys; هذه العملية تقوم برؤية ما اذا كان الجهاز يعمل بروم معدلة. بشكل افتراضي  , غوغل تعطي ‘release-keys’ كتاغ لها لأجل الروم الأصلية. اذا كان التاغ  مثل “test-keys”, عندها على الأغلب الروم مبني على روم معدل.
Screenshot from 2016-07-14 23-12-14عند النظر إلى الصورة في الأعلى, فمن الوضاح إستخدامي لروم الأندرويد الغير معدلة من غوغل.
التقنيات المذكورة أعلاه تعتبر بضعة أمثلة قليلة عن ماذا يمكن النظر اليه من قبل المطور للكشف عن الرووت. لكن يمكن ان تكون هناك طرق اخرى للكشف وليست مذكورة في هذه المقالة.

تخطي كشف الرووت :


في هذا القسم, سوف نرى كيف بإمكان الشخص تخطي واحدة من تقنيات كشف الروت المذكورة بالأعلى. قبل ان نبدأ, لنفهم مايحصل في الخلفية.
Screenshot from 2016-07-14 23-12-14قم بتحميل التطبيق من (المقالة الاصلية ) وقم بتشغيل التطبيق على جهازك واضغط على زر “Is my device rooted”. بما اني على جهاز يملك صلاحيات الرووت, سيظهر التطبيق عبارة “Device Rooted”. الان, عملنا هو خداع التطبيق وإظهار بان هذا الجهاز لايملك صلاحيات الرووت. الأن, لنبدأ.

فهم وظيفة التطبيق


لنفهم أولا عن كيف يقوم التطبيق بالتحقق من “root access”. الكود الموجود ضمن التطبق يقوم بفحص بسيط عن ملف Superuser.apk كما هو موضح بالصورة.
070114_1056_AndroidHack7
كما نرى في الصورة أعلاه, فإن التطبيق يقوم بفحص وجود ملف اسمه “Superuser.apk” داخل مسار “/system/app/”. وسوف يقوم بأظهار رسالة “Device Rooted” اذا كان الملف موجود. توجد العديد من الطرق لتخطي هذا عملية الكشف.
1. دعونا أولا نعيد التاكد مجددا بطريقة يدوية من ان الجهاز رووت بتنفيذ أمرين su و id.
070114_1056_AndroidHack7
2. لنرى اذا ملف “Superuser.apk” موجود في المكان الذي تم فحصه من قبل تطبيقنا.
070114_1056_AndroidHack7
3. لتخطي هذا الفحص, لنعيد تسمية التطبيق “Superuser.apk” الى “Superuser0.apk” كما موضح بالصورة.
070114_1056_AndroidHack7
كما نرى في الصورة فيمكن ان تظهر رسالة خطا تقول it’s a read-only file system وسوف نغيرها الى read-write كما هو موضح في الخطوة القادمة.
4. تغير الصلاحيات من Read-Only الى Read-Write : الأمر التالي سوف يغيير صلاحيات نظام الملفات الى “Read-Write”.
070114_1056_AndroidHack7
5. الأن, اذا غيرنا اسم الملف الى “Superuser0.apk”, ستعمل بشكل جيد كما هو موضح.
070114_1056_AndroidHack7
6. اذا قمنا الان بالرجوع الى التطبيق والضغط على زر “Is my device rooted”. سوف تظهر الرسالة التالية.
070114_1056_AndroidHack7
هذا مثال عن كيفية تخطي عملية كشف الرووت. يمكن ان تستخدم التطبيقات تقنيات معقدة لإيقاف المهاجمين من تخطي عملية كشف الرووت. التقنية يمكن ان تختلف إعتمادا على كيفية برمجة التطبيق من قبل المطور.
على سبيل المثال, اذا إستخدم المطور الكود التالي للتحقق من الرووت, إجرائات تخطي الكشف سوف يختلف:
Runtime.getRuntime().exec(“su”);
في هذه الحالة, سوف نحتاج لإنشاء su خاصنا بنا و superuser” apk” .

الخلاصة


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