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

كبداية سنتعرف على الأدوات ومن أين يمكن تحميلها مع العلم أن معظم هذه الأدوات يمكن تعمل على لينكس أو ويندوز:

Android SDK: https://developer.android.com/sdk/index.html#download

APKTool: http://ibotpeaches.github.io/Apktool/install

Java-Decompiler: http://jd.benow.ca

Dex2Jar: https://github.com/pxb1988/dex2jar

Burp Suite: http://portswigger.net/burp/download.html

Andriller: https://andriller.com/downloads

Python: https://www.python.org/downloads

AFLogical: https://github.com/viaforensics/android-forensics

SQLite Browser: http://sourceforge.net/projects/sqlitebrowser

Drozer: https://www.mwrinfosecurity.com/products/drozer/community-edition

في عام 2005 قامت شركة جوجل بالاستحواذ على شركة Android ومنذ ذلك الحين عملت على تطوير نظام التشغيل أندرويد الذي نراه حاليًا. بالطبع منذ قيام شركة جوجل على تطوير نظام تشغيل أندرويد ظهرت العديد من الآليات التي لم تكن متواجده به من قبل مثل Google Bouncer وGoogle App.

android_architecture

بالنظر للصورة السابقة، سنرى أن بنية الأندرويد مكونة من أربع طبقات.

الطبقة الأولى: في هذه الطبقة يقع كيرنل اللينكس والذي تم تعديله ليتناسب بيئة عمل الموبايل. بالطبع الكيرنل يتعامل مع أي عتاد (Hardware)، (أنا أكره ترجمات المصطلحات العلمية إلى العربية :/). بالإضافة إلى أنه يتعامل مع أي تعريفات تخص العتاد. يقوم أيضًا الأندرويد بتوفير ما يسمى بالـHAL وهي اختصار لـHardware Abstraction Layer وهي تتيح للمطورين بصنع برامج تستطيع التعرف والاستفادة من العتاد المرتبط بالجهاز المضيف أو الـHost.

الطبقة الثانية: هي الطبقة المتواجدة فوق طبقة الكيرنل وهي تحتوي على أهم المكتبات وهي كالتالي:

Surface Manager: التي تدير النوافذ والشاشات.

Media Framework: التي تسمح باستخدام أنواع مختلفة من برامج الترميز (Codecs) من أجل تشغيل وتسجيل الأنواع المختلفة من الـMedia.

SQLite: هذا هو الإصدار الخفيف من الـSQL والذي يقوم بإدارة قواعد البيانات.

WebKit: هذا هو محرك عرض أو أداء المتصفح أو ما يطلق عليه بالإنجليزية (Browser Rendering Engine).

OpenGL: تستخدم هذه المكتبة لعمل Render لمحتويات الشاشة سواء كانت ثنائية الأبعاد 2D أو ثلاثية الأبعاد 3D.

المكتبات في الأندرويد مكتوبة بلغة الـC والـC++. إحدى الاختلافات الرئيسية بين اللينكس والأندرويد هي أن الأندرويد لا يوجد به مكتبة libc والتي تُستخدم في معظم مهام (Tasks) اللينكس. بدلاً من ذلك يقوم الأندرويد باستخدام مكتبته الخاصة وهي مكتبة bionic والتي يمكن اعتبارها نسخة خفيفة ومعدلة من مكتبة libc.

الطبقة الثالثة: هنا تقع طبقة إطار التطبيقات أو الـApplication Framework Layer وهي تساعد التطبيقات على القيام بأنواع مختلفة من المهام.

معظم التطبيقات التي يصنعها المطورين تتعامل فقط مع الطبقة الأولى والثانية. بنية الأندرويد مصممة لكي تقوم الطبقة السفلية بدعم الطبقة التي تعلوها.

إصدارات الأندرويد التي تسبق الإصدار رقم 4.0 كانت مبنية على كيرنل اللينكس 2.6.x. ولكن الإصدارات الحديثة أصبحت مبنية على كيرنل اللينكس 3.x.

Android-evolution-Linex-Kernel-versions

android-kernel-version

كل التطبيقات في الأندرويد تعمل تحت بيئة افتراضية تسمى بـDVM وهي اختصار لـDalvik Virtual Machine. الجدير بالذكر أنه بداية من إصدار الأندرويد 4.4 أصبح من المتاح للمستخدم أن يقوم باستخدام بيئة أخرى تسمى بـART وهي اختصار لـAndroid Runtime، حيث أصبح للمستخدم الحرية في الانتقال بين الاثنين.

خلال سلسلة الدروس القادمة سنقوم بالتركيز على الـDVM وهو مشابه جدًا للـJVM أو الـJava Virtual Machine مع بعض الاختلافات فالـJVM هو Stack-Based بينما الـDVM فهو Register-Based. كل تطبيق أندرويد يعمل على DVM خاصة به تناسبه، فمثلاً إن قمنا بتشغيل ثلاثة تطبيقات فسيكون هناك ثلاثة DVM. الجدير بالذكر هنا أن الـDVM يقوم بتشغيل ملف ذو امتداد dex أو ما يطلق عليه Dalvik Executable. سنتعرف على هذا الامتداد في الدروس القادمة إن شاء الله.

بهذا يكون انتهى درسنا لهذا اليوم، أعلم أنني لم أتحدث عن أي أجزاء تخص مختبرين الاختراق ولكن لكي تستطيع اختبار اختراق الأندرويد أو التطبيقات التي تعمل على الأندرويد عليك أن تتعرف على أجزاء هذا المقال جيدًا.

إن شاء الله في الدرس القادم سنبدأ بتثبيت الـSDK والتعرف على الـADB أو الـAndroid Debug Bridge والعديد من الأشياء المشوقة، فانتظرونا 🙂