يعد أمن تطبيقات الهاتف المحمول  واحد من أهم القضايا في المجال الأمني ، حيث أن مسألة الأمن تعتبر حقا مصدر قلق كبير بالأخص مع تطبيقات الهواتف النقالة المتطورة باستمرار.

في هذه المقالة سوف نتطرق لذكر الهجمات المرتبطة بمكونات تطبيقات الاندرويد

 

ما هي مكونات تطبيقات الاندرويد ؟


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

النشاط (Activity ) :

للقيام بنشاط ما يجب توفر شاشة تمكن المستخدمين من التفاعل والقيام بذلك النشاط. يمكن للمستخدمين إجراء عمليات مثل إجراء مكالمة و إرسال الرسائل القصيرة، وما إلى ذلك فعلى سبيل المثال: شاشة تسجيل الدخول الخاصة بتطبيق الفيسبوك

الخدمة (service ) :

تتمثل بالعمليات التي يتم تشغيلها باستمرار في خلفية الهاتف دون الحاجة لواجهة المستخدم. على سبيل المثال: مشغل الموسيقى

مكونات المحتوى (content components ) :

تقوم بتقدم البيانات إلى التطبيقات الخارجية على شكل جدول واحد او اكثر. وبعبارة أخرى، يمكن اعتبار مزودات المحتوى كواجهات المستخدم التي تربط البيانات في عملية واحدة مع رمز تشغيل في عملية أخرى. على سبيل المثال: يمكن قراءة الرسائل القصيرة من اي تطبيق على الجهاز يوفر خاصية الرسائل القصيرة.
* يجب إعطاء الإذن بقراءة الرسائل القصيرة من خلال AndroidManifest.xml files من أجل الوصول إلى بيانات تطبيقات الSMS

مستقبل البث (Broadcast receivers ) :

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

يمكنك تنزيل نموذج التطبيق المستخدم في هذه المقالة واتبع الخطوات تباعاً ( يمكن التنزيل من المقالة الأصلية )
كما هو مبين في الشكل أدناه، فإن التطبيق لديه نشاطين. النشاط الاول يتطلب إدخال كلمة المرور. إذا قام المستخدم بإدخال كلمة المرور الصحيحة فإنه سينتقل مباشرة الى صفحة تعرض ” Private Area”، خلاف ذلك انه سوف يحصل على إشعار ان “كلمة المرور خاطئة “. ولغرض التأكد فإن كلمة السر للدخول يتم تعينها باسم “كلمة المرور”.

يجب على الشاشة الأولى استدعاء وطلب الشاشة الثانية وذلك إذا كانت كلمة المرور صالحة . نحن بحاجة إلى أداء اختبار (black box ) على التطبيق لمشاهدة إذا كان بإمكاننا تجاوز المصادقة من خلال استدعاء شاشة الترحيب بشكل مباشر.

 

image2 image1

 

المتطلبات الأساسية لمتابعة خطوات :


الكمبيوتر مع Android SDK

*جهاز محمول (non Rooted ) وذلك لتثبيت التطبيق

الموضوعات التي تم شملها :

*جمع المعلومات

*مهاجمة مكونات الأنشطة الضعيفة

*تأمين التطبيقات

 

جمع المعلومات:


  • فك تشفير التطبيق باستخدام أداة APKtool
  • تحليل ملف AndroidManifest.xml لمكونات الانشطة التي تم تصديرها.

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

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

يمكننا الحصول على ملف AndroidManifest.xml بفك تشفيرالتطبيق باستخدام APKTOOL

1.قم بتثبيت ملف APKTOOL من الرابط أدناه:

https://code.google.com/p/android-apktool/downloads/list

2.  ضع تطبيق الاختبار في نفس المجلد كما هو الحال في APKTOOL

3. الان قم بفك تشفير ملف (APK ) بإتباع الأوامر المبينة بالشكل أدناه

apktool d testapp.apk

 

image3

 

كما هو مبين في الشكل أدناه، يجب الآن أن تكون قادرا على رؤية مجلد جديد اسمه “testapp” وملف AndroidManifest.xml بداخله.

image4

الان ، نحن بحاجة للبحث عن اسم الحزمة وأنشطتها.

وسيتم تسجيل جميع الأنشطة في ملف AndroidManifest.xml عن طريق استخدام tags

<Activity > </ Activity >

لذلك، فإن أي شيء داخل ملف (tags) يكون هو النشاط. وعند النظر إلى ملف AndroidManifest.xml ، سنتمكن من رؤية اثنين من مكونات النشاط واسم الحزمة كما هو مبين في الشكل أدناه.

image5

عن طريق فحص الشكل السابق، حصلنا على ما يلي من المعلومات حول التطبيق
com.isi.testapp  هو إسم الحزمة.

com.isi.testapp.Welcome  قد يكون النشاط الذي حصلنا عليه بعد ادخال كلمة السر الصحيحة.

 

Attacking Vulnerable Activity Components


مهمتنا الان إطلاق نشاط الترحيب دون إعطاء أي كلمة مرور في الشاشة الأولى

يمكننا أن تؤدي الهجمات على مكونات الأنشطة الضعيفة باستخدام العديد من الطرق، كما هو مذكور أدناه:

  • إطلاق الأنشطة الحساسة مع أداة مدير الأنشطة .
  • استخدام التطبيقات الخبيثة لاستدعاء أنشطة تطبيقات اخرى.
  • يمكننا أيضا استخدام Mercury framework من أجل تنفيذ هذه الهجمات.

إطلاق الأنشطة الحساسة مع أداة مدير الانشطة:


مدير الأنشطة هو أداة تكون مثبتة مسبقا مع Android SDK و يمكن استخدامها مع “adb shell” ويمكن أيضاً استخدامها لإطلاق انشطة وخدمات التطبيقات يمكننا حتى تمرير ما نريد استخدامه

1. قم بتوصيل الجهاز على الكمبيوتر واحصل على (shell) على الجهاز بإستخدام الامر التالي “adb shell”

2.قم بكتابة الامر التالي لإطلاق نشاط الشاشة الترحيبية

am start –n com.isi.testapp/.Welcome

يجب الان ان تظهر الشاشة الترحيبية دون الحاجة لكلمة سر.

 

استخدام التطبيقات الخبيثة لإستدعاء أنشطة تطبيقات أخرى:


طريقة أخرى لاستدعاء الأنشطة تطبيقات اخرى هي كتابة التطبيقات الخبيثة وتزويدها بإسم الحزمة والنشاط المراد إطلاقه . الشكل التالي هو الشفرة المختصرة لإطلاق النشاط حيث أن incom.isi.testapp.Welcome هو النشاط المراد إطلاقه. في حالتنا هذه، التطبيقات الخبيثة لا تتطلب أي إذن لإطلاق نشاط “welcome ” من التطبيق الضعيف.

image6

إستخدام Mercury framework:


يمكن انتاج نفس الهجوم بإستخدام Mercury framework . سنناقش Mercury framework في وقت لاحق في هذه السلسلة.

تأمين مكونات التطبيقات:


  • Setting android:exported attribute’s value to false

في ملف androidmanifest.xml في التطبيق، يجب علينا إضافة الخصائص التالية الى مكونات التطبيق لتصبح آمنة. وهنا casecom.isi.testapp.welcome هو النشاط الواجب تأمينه .

image7

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

يمكنك استخدام تطبيق DIVA أيضا لتنفيذ ما تم شرحه في هذه المقالة .

ترجمة لمقال : Android Hacking and Security, Part 1: Exploiting and Securing Application Components لصاحبها Srinivas .