مقدمة
أصبحت الأجهزة المحمولة - الهواتف الذكية والأجهزة اللوحية وغيرها من الأجهزة المحمولة - جزءًا لا يتجزأ من حياة الناس. ما يقرب من 67 ٪ من الناس في العالم لديهم هاتف ذكي واحد على الأقل ؛ 5.8 مليار جهاز محمول نشط متوقع بحلول عام 2025 [1].
وفقًا لـ IDC [2] ، من بين جميع الأجهزة المحمولة التي تم بيعها في الربع الثالث من عام 2018 ، تم تجهيز 86.8٪ بنظام Android OS. عدد المستخدمين الذين يستخدمون نظام التشغيل أندرويد هو أكثر من 1.4 مليار. وفقًا لـ Securelist [3] ، في عام 2018 ، تم اكتشاف 5.3 مليون حزمة برامج ضارة لعائلة نظام التشغيل Android. لذلك ، يتعين على متخصص في مجال الطب الشرعي للكمبيوتر استخدام طرق مختلفة لاستخراج نسخة من الذاكرة لكل جهاز.
حاليًا ، لا توجد طريقة للحصول بشكل موحد على نسخة من الذاكرة من الأجهزة التي تعمل بنظام التشغيل Android OS. في هذا الصدد ، يتعين على متخصص في الطب الشرعي للكمبيوتر استخدام العديد من الطرق المختلفة ، حيث يواجه مشاكل فنية. بادئ ذي بدء ، ترتبط المشاكل بعدم وجود برنامج تشغيل أو خلل في موصل USB المستخدم في الطرق التقليدية لاستخراج البيانات. ومع ذلك ، للحصول على نسخة من الذاكرة وإرسالها ، يمكنك استخدام قنوات الاتصال اللاسلكية [4].
يصف القسم 1 بنية نظام التشغيل Android ، وسيناريوهات استخدام ذاكرة الوصول العشوائي ، وهياكل البيانات الموجودة في ذاكرة الوصول العشوائي ، وبرنامج الحصول على نسخة من الذاكرة ، وبرنامج لنقل البيانات.
يصف القسم 2 بنية نظام للحصول على نسخة من ذاكرة الوصول العشوائي ، والاتصال بين النظم الفرعية والوحدات النمطية.
يصف القسم 3 تطبيق نظام للحصول على نسخة من ذاكرة الوصول العشوائي.
القسم 1: استكشاف طرق الحصول على نسخة من الذاكرة في الأجهزة التي تعمل بنظام Android OS عبر القنوات اللاسلكية
يناقش هذا القسم برنامجًا للحصول على نسخة من الذاكرة ومقارنتها وبروتوكولات الشبكة لنقل نسخة من ذاكرة الوصول العشوائي وطرق تشغيل الملفات القابلة للتنفيذ عبر الاتصالات اللاسلكية لنظام Android وهيكل ذاكرة الوصول العشوائي والبرامج النصية لاستخدام نسخة من ذاكرة الوصول العشوائي.
سيناريوهات لاستخدام نسخة من ذاكرة الوصول العشوائي
يوجد نظام التشغيل Android حاليًا على أجهزة مختلفة بفضل نظام Linux kernel وجهاز Dalvik الظاهري. تتناول هذه الورقة الأجهزة التي تعمل على النظام الأساسي للأجهزة ARM و x86 الأكثر شيوعًا.
نسخة من الذاكرة عبارة عن بيانات ثنائية غير منظمة يصعب تحليلها بدون الأدوات المتخصصة المناسبة. في وقت كتابة هذا التقرير ، كان للأجهزة حجم RAM لا يزيد عن عشرة غيغا بايت ، مما يزيد بشكل كبير من وقت تحليل نسخة من هذا الحجم من ذاكرة الوصول العشوائي. في الوقت الحالي ، لا توجد وسيلة واحدة لتحليل جميع هياكل ذاكرة الوصول العشوائي. لتحليل كامل لذاكرة الوصول العشوائي يتطلب استخدام العديد من أدوات البرمجيات.
لا توجد ضمانات لإجراء تحليل ناجح لنسخة من ذاكرة الوصول العشوائي ، حتى لو كان لديك جميع الأدوات اللازمة بسبب مشاكل في مرحلة الحصول على نسخة من الذاكرة. إذا لم تكن هناك إمكانية للاتصال بالجهاز أو كان هناك خطر كبير من تلف البيانات ، فإن الطريقة اللاسلكية للحصول على نسخة من الذاكرة تظل هي الطريقة الوحيدة والآمنة. لسوء الحظ ، في الوقت الحالي لا توجد أدوات برمجية لتلقي نسخة من الذاكرة تلقائيًا عبر الاتصال اللاسلكي.
نسخة يمكن استخدامها في الطب الشرعي الكمبيوتر. على سبيل المثال ، إذا كانت البيانات الموجودة على الجهاز قيد الدراسة مشفرة ، يمكن أن تساعد نسخة من الذاكرة في فك تشفير البيانات التي تحتوي على كلمات المرور ومفاتيح التشفير [5]. يستخدم كل تطبيق يقوم بمعالجة البيانات الشخصية تشفير البيانات. وجود صورة لذاكرة الوصول العشوائي وبعض المهارات في التعامل معها ، هناك فرصة لاستعادة أحدث الرسائل أو الملفات المؤقتة التي يمكن أن تساعد في التحقيق الجنائي.
في حالة حدوث هجوم على الجهاز ، يتيح لك تحليل نسخة ذاكرة الوصول العشوائي للجهاز معرفة كيفية تنفيذ الهجوم ، وقنوات الاتصال والبرامج الضارة ونقاط الضعف التي استخدمها المهاجم لمنع مثل هذه الهجمات في المستقبل.
نسخ البيانات الهامة بشكل دوري لاكتشاف البرامج الضارة. يستخدم هذا النهج للكشف عن البرامج الضارة التي تستخدم أساليب لإخفاء وجودها في النظام.
أيضًا ، يمكن استخدام نسخة من الذاكرة (أو الجزء الذي يحتوي فقط على سياق التطبيق أو العملية قيد الدراسة) لتحديد نقاط الضعف والميزات غير الموثقة للبرنامج. تستخدم أدوات البرمجيات المتخصصة الموجودة نسخة من ذاكرة الوصول العشوائي للكشف عن الجذور الخفية [6]. يمكن استخدام نسخة من ذاكرة النظام بأكمله لمراقبة التغييرات في النظام بأكمله من أجل تحديد الإجراءات غير القانونية.
لتحليل النسخة التشغيلية ، يتم استخدام إطار التقلب [7]. Volatility Framework هي مجموعة من الأدوات للحصول على نسخة من ذاكرة الوصول العشوائي وتحليلها من أنظمة تشغيل مختلفة ، بما في ذلك Android. باستخدام هذه الأدوات ، يمكنك الحصول على المعلومات اللازمة الموجودة في صورة RAM. للحصول على نسخة من ذاكرة الوصول العشوائي (RAM) ، يستخدم Framework Volatility Framework الوحدة النمطية للنواة LiME. لاستخراج نسخة من ذاكرة الوصول العشوائي (RAM) عبر نظام LME ، يلزم توفر شفرة المصدر لنواة Linux الخاصة بالجهاز قيد الدراسة.
تحليل الأدوات والأساليب لتنفيذ الملفات القابلة للتنفيذ عبر الاتصالات اللاسلكية لنظام التشغيل Android
لتثبيت التطبيقات ، كما هو الحال في أي أنظمة تشغيل تشبه UNIX ، يتم استخدام الحزم. على Android ، هذه الحزم لها امتداد .apk. يتم تخزين هذه الحزم في ذاكرة الجهاز حتى بعد التثبيت ولا يتم حذفها إلا عند إلغاء تثبيت التطبيق. تحتوي حزمة .apk على تعليمات برمجية Java مترجمة ، وكذلك ملف AndroidManifest.xml الذي يعلن الأذونات اللازمة لتشغيل التطبيق.
هناك نوعان من التطبيقات: النظام والمستخدم. تتمتع تطبيقات النظام ، على عكس تطبيقات المستخدم ، بمزيد من الامتيازات ، لذلك لا يمكن تغييرها أو حذفها إلا إذا كان لديك حقوق المستخدم الخارق. توجد حزم تطبيقات المستخدم في دليل "/ data / app". توجد حزم تطبيق النظام في الدليل "/ system / app".
بدءًا من Android 5.0 ، يتم استخدام الجهاز الظاهري لـ Android Runtime بدلاً من الجهاز الظاهري Dalvik. بخلاف Dalvik ، لا يقوم تطبيق Android Runtime بترجمة التطبيق أثناء بدء التشغيل ، ولكن أثناء التثبيت. هذا يزيد من سرعة إطلاق البرنامج ويزيد من عمر البطارية. لضمان التوافق مع الإصدارات السابقة ، يستخدم Android Runtime نفس الرمز التربيعي مثل Dalvik.
على عكس عملية النظام ، فإن عملية المستخدم لها امتيازات أقل على النظام. للحصول على امتيازات مثل عملية النظام ، تتطلب عملية المستخدم حقوق المستخدم الخارق أو حقوق "الجذر". المستخدم الخارق هو مستخدم لنظام التشغيل الذي لديه حقوق غير محدودة في النظام.
حقوق الخارق هي من نوعين: دائمة ومؤقتة. يتم الاحتفاظ بحقوق المستخدم الخارق الدائم حتى بعد إعادة التشغيل ، وتكون الحقوق المؤقتة صالحة حتى يتم إعادة تشغيل الجهاز.
عادةً ، لا تتوفر حقوق المستخدم الخارق على الأجهزة. نظرًا للتنوع الكبير من الأجهزة ، لا توجد طريقة موحدة للحصول على حقوق المستخدم الخارق. لذلك ، للحصول على حقوق المستخدم الخارق ، يتم استخدام أدوات مختلفة. الحصول على حقوق المستخدم الخارق ضروري للحصول على نسخة من الذاكرة من أجهزة Android.
لتشغيل الملفات القابلة للتنفيذ ، تكون هناك بعض الامتيازات المطلوبة على النظام ، وكذلك مجموعة من أوامر Unix. في البداية ، لدى Android بعض أوامر الحد الأدنى ، والتي لا تكفي عادة للحصول على نسخة من الذاكرة. لذلك ، يستخدمون BusyBox ، والذي يتضمن مجموعة موسعة من الأوامر. تتيح لك الأدوات المساعدة المضمنة في BusyBox العمل في نظام الملفات وتشغيل التطبيقات وعرض معلومات النظام وغير ذلك الكثير. من الممكن أيضًا إنشاء نصوص شل.
البرامج النصية Shell هي الملفات القابلة للتنفيذ التي تحتوي على برنامج نصي لتنفيذ مجموعة من الأوامر. بخلاف التطبيق ، لا تتطلب البرامج النصية shell التثبيت والتجميع. إذا كنت بحاجة إلى إصلاح شيء ما ، فقم فقط بإجراء تغييرات على ملف البرنامج النصي shell.
نظرًا لأن الملفات القابلة للتنفيذ يتم تشغيلها عبر الاتصالات اللاسلكية ، فسننظر في طريقتين لبدء الملفات القابلة للتنفيذ باستخدام ADB و SSH.
بالنسبة إلى الطريقة الأولى ، يكفي تنفيذ "setprop service.adb.tcp.port 5555؛ وقف adbd ؛ بدء adbd ". بعد ذلك ، قم بتشغيل موجه الأوامر على الكمبيوتر والاتصال بالجهاز باستخدام الأمر "adb connect X" ، حيث أن "X" هو عنوان IP للجهاز على الشبكة وقيمة المنفذ هي 5555. لتشغيل الملف القابل للتنفيذ ، استخدم الأمر "adb shell am start -n com". package.name/com.package.name.ActivityName ”إذا كان هذا تطبيقًا. إذا كان الملف القابل للتنفيذ هو برنامج نصي shell ، فسيتم تشغيله باستخدام الأمر "adb shell ./name" ، حيث يكون name هو اسم البرنامج النصي.
الطريقة الثانية تستخدم بروتوكول SSH. بخلاف الطريقة السابقة ، تتطلب هذه الطريقة عميل SSH على الكمبيوتر ، وخادم SSH على الجهاز. على Windows ، يمكنك استخدام PuTTY أو Linux Linux. بعد توصيل الجهاز بالكمبيوتر ، نتمكن من الوصول إلى shell command Shell. أوامر تشغيل الملفات القابلة للتنفيذ هي نفسها كما في الطريقة الأولى.
وبالتالي ، يمكن ملاحظة أن كلتا الطريقتين تختلفان فقط في طريقة الاتصال. استخدام كلا الطريقتين shell الأمر Shell لتشغيل الملفات القابلة للتنفيذ. من هذا يتبع أنه عند الوصول إلى shell ، يمكنك تنفيذ أي أمر ، وكذلك تشغيل أي ملف قابل للتنفيذ ، سواء كان تطبيقًا أو برنامج نصي shell.
أدوات البرمجيات للحصول على نسخة من ذاكرة الوصول العشوائي
يمكن تقسيم أساليب البرامج الحالية إلى فئتين:
- الحصول على نسخة من الذاكرة من مساحة المستخدم والنواة ؛
- استرجاع نسخة من الذاكرة فقط من مساحة المستخدم.
تتضمن أدوات البرامج لاسترداد نسخة من مساحة المستخدم ومساحة kernel AMExtractor و LiME. يمكن لأدوات Mem و Memfetch فقط الحصول على نسخة من الذاكرة من مساحة المستخدم فقط.
ضع في اعتبارك أدوات البرامج المذكورة أعلاه للحصول على نسخة من ذاكرة الوصول العشوائي (RAM) من الأجهزة الخاضعة لسيطرة نظام التشغيل Android:
- Mem: أداة مساعدة مفتوحة المصدر تستخدم للحصول على بيانات RAM العملية [8] ؛
- Memfetch: أداة مساعدة مفتوحة المصدر للحصول على مساحة العنوان لعملية RAM باستخدام الأجهزة / proc / $ pid / map و / proc / $ pid / mem [9] ؛
- LiME: وحدة نمطية لنظام Linux kernel مع شفرة مفتوحة المصدر للحصول على البيانات المخزنة في ذاكرة الوصول العشوائي في مساحة المستخدم و kernel [10] ؛
- AMExtractor: أداة مساعدة مفتوحة المصدر تستخدم الجهاز الزائف / dev / kmem لتحميله في ذاكرة kernel [11].
يمكن استخدام برامج Mem و Memfetch دون تكوين أولي ، لكنها غير قادرة على الحصول على البيانات من منطقة ذاكرة kernel وتتطلب حقوق الخارق لعملهم.
على الرغم من الاستخدام الواسع النطاق والتنوع ، تتطلب وحدة LiME التكوين الصحيح وكود المصدر لنواة Linux لكل جهاز على حدة.
لكي يعمل AMExtractor ، تكون المعلومات مطلوبة عن نوع نموذج معالجة الذاكرة الظاهرية المستخدم من قِبل kernel وحقوق المستخدم الخارق.
لا تُستخدم أدوات البرامج التي تم أخذها في الاعتبار في هذا العمل ، والتي يتوفر رمز المصدر الخاص بها علنًا ، إلا للحصول على نسخة من ذاكرة الوصول العشوائي.
تعد أدوات البرامج مثل Oxygen و UFED و MSAB XRY باهظة الثمن ومتاحة للاستخدام التجاري فقط. برامج هذا المستوى قادرة على: تلقي نسخة من الذاكرة من جهاز مقفل ، والحصول على حقوق المستخدم الخارق ، وإنشاء تقارير الطب الشرعي ، وأكثر من ذلك بكثير.
أداة ANDROPHSY هي أول أداة مفتوحة المصدر تدعم جميع مراحل التحقيق الجنائي لأجهزة Android [12]. تتكون بنية ANDROPHSY من أربع وحدات رئيسية: وحدة المعالجة ، وحدة المجموعة ، وحدة التحليل ، وحدة التقارير. يتم الحصول على البيانات باستخدام أداة dd وخدمة ADB. يتم استخدام كبل USB للاتصال بين الكمبيوتر والجهاز قيد التحقيق ، ويتم إرسال البيانات عبر بروتوكول TCP.
تأكيد أهمية هذا العمل هو وجود عيوب في ANDROPHSY. وتشمل هذه الأداء فقط في بيئة Linux ، ونقص الوظائف للحصول على نسخة من ذاكرة الوصول العشوائي للجهاز وتحليلها وعدم وجود اتصال بالجهاز عبر Wi-Fi أو Bluetooth لاستخراج البيانات.
بناءً على التحليل ، تم بناء جدول مقارن (انظر الشكل 1). في الجدول 1 ، يشير الرمز "+" إلى الأموال التي تفي بالمتطلبات ، والرمز "-" يشير إلى العكس.

الشكل 1 - برنامج للحصول على نسخة من ذاكرة الوصول العشوائي
وفقًا لنتائج المقارنة ، تقرر استخدام AMExtractor لالتقاط صورة RAM ، نظرًا لاستلام نسخة كاملة من ذاكرة الوصول العشوائي ، فضلاً عن عدم الحاجة إلى رمز kernel المصدر ودعم وحدات التحميل.
برنامج نقل البيانات
يتم استخدام كابل USB لاسترداد البيانات من الأجهزة التي تعمل بنظام التشغيل Android. يمكن توصيل معظم أجهزة Android بجهاز كمبيوتر شخصي باستخدام كابل USB.
ومع ذلك ، أثناء التحقيق في جهاز Android ، قد يحدث أنه من المستحيل استخراج البيانات منه باستخدام اتصال USB. قد تكون أسباب ذلك كبل تالف أو موصل تالف. في هذه الحالات ، ستتوفر فقط للخبراء للبحث عن بطاقة ذاكرة خارجية غير موجودة على جميع الأجهزة. في بعض الأحيان يحتوي الجهاز على ذاكرة داخلية فقط. يمكن إزالة محتويات هذه الذاكرة ، وكذلك ذاكرة الوصول العشوائي ، بأمان عبر اتصال USB. يعد الاتصال اللاسلكي بديلاً للاتصال السلكي. من بين جميع البروتوكولات اللاسلكية ، يدعم نظام التشغيل Android الأكثر شعبية: Wi-Fi و Bluetooth.
يتم استخدام Wi-Fi في أجهزة Android الحديثة للوصول إلى الإنترنت أو لنقل البيانات. تدعم الأجهزة المحمولة المستندة إلى الروبوت معظم معايير Wi-Fi حتى 802.11ac. تتجاوز سرعة نقل البيانات بين الأجهزة عبر Wi-Fi سرعة نقل البيانات عبر البلوتوث [13].
لتوصيل الأجهزة عبر Wi-Fi ، ما عليك سوى الاتصال بنقطة وصول مشتركة. نظرًا لأن الأجهزة الأخرى يمكنها الاتصال بنقطة الوصول المشتركة ، فمن المهم تقييد وصولها إلى الشبكة. يتيح لك توفر الدعم في Android ، نقطة اتصال Wi-Fi ، استخدام الجهاز كنقطة وصول.
تم تصميم بروتوكول Bluetooth اللاسلكي ، المتوفر على أجهزة An-droid ، لنقل البيانات بين الأجهزة التي تحتوي على بطارية صغيرة. مقارنةً بشبكة Wi-Fi ، تقل سرعة نقل الملفات عن طريق البلوتوث. يرتكز البروتوكول على piconet يتكون من عقدة رئيسية وعقد عدة مرؤوس [14]. يتم استخدام ملفات التعريف لنقل أنواع مختلفة من البيانات. يحدد ملف تعريف Bluetooth الأوامر والوظائف التي يمكن أن تتبادلها الأجهزة فيما بينها. هناك ما لا يقل عن 27 من ملفات تعريف Bluetooth.
يتم استخدام ملف تعريف PAN لإنشاء WPAN بين جهازين. يسمح لك HID Profile بتوصيل الماوس ولوحة المفاتيح والأجهزة الطرفية الأخرى التي تدعم هذا الملف الشخصي [14].
في هذا العمل ، استنادًا إلى ميزات نظام التشغيل Android ، نأخذ في الاعتبار نقل بيانات البرنامج التالي:
- SSHFS: عميل نظام ملفات قائم على FUSE لتركيب الأدلة عن بعد عبر اتصال SSH [15] ؛
- Rsync: أداة مساعدة مفتوحة المصدر توفر نقل سريع للبيانات خطوة بخطوة [16] ؛
- SCP: فائدة وبروتوكول لنقل البيانات عبر بروتوكول SSH [17] ؛
- SFTP: بالمقارنة مع SCP ، الذي يسمح لك فقط بنسخ الملفات ، فإن SFTP لديه القدرة على إجراء عمليات الملفات: على سبيل المثال ، استئناف نقل الملفات بعد قطع الاتصال وحذف الملفات على الخادم والعديد من العمليات الأخرى [18] ؛
- NetCat: أداة مساعدة UNIX تقوم بقراءة وكتابة البيانات عبر اتصالات الشبكة باستخدام بروتوكول TCP أو UDP [19].
يتم استخدام الأداة المساعدة rsync في معظم الحالات لمزامنة الملفات أو الدلائل. , . Rsync SSH , , , , , .
TCP , .
SSH . Secure Shell (SSH) — [20].
. , .
dd. dd , , .
(. 2). “+” , , “-” — .

2 — .
نتيجة للتحليل ، تقرر استخدام NetCat لنقل نسخة فعلية من الذاكرة ، و Rsync لنقل الملفات والأدلة العادية اللازمة لتحليل الطب الشرعي
PS أن تستمر ...