نظرة على طرق كشف الروت على جهاز الأندرويد

في هذه المقالة سوف نلقي نظرة على الطرق المستخدمة من قبل مطوري نظام الأندرويد للكشف عن الجهاز الذي يعمل عليه التطبيق اذا كان 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” .

الخلاصة


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