نظام التجسس Pegasus.. كيف يعمل ؟
بقلم م.مجدي القبالين – جامعة الاميرة سمية للتكنلوجيا – أمن نظم المعلومات والجرائم الرقمية
تعد شركة NSO Group الصهيونية المصنعة لهذا النظام من الشركات الرائدة في مجال صناعة منتجات التجسس الرقمي وتباع منتجاتها للعديد من الجهات وبمبالغ طائلة , عام 2016 ولاول مرة تم فيها اكتشاف وجود هذا النظام عبر اختراق الهاتف الشخصي لاحد الاعلاميين في احدى الدول العربية سمع عامة الناس عن الامر ولكن قبل ذلك كان لدى العديد من أجهزة المخابرات العالمية علم بوجود هذا النظام وحسب بعض التقارير المنشورة وبعض المعلومات الفنية المتوفرة عن طريقة عمله يعتقد انه بدأ استعماله بحلول عام 2014 على الاقل وفعلياً الثغرات الامنية الموجودة في نظام IOS الخاص بشركة أبل والتي يستعملها هذا البرنامج تبين انها موجود حتى بالاصدارات القديمة للنظام وهذا يعني انه وعلى الاغلب تم استعمال هذه الثغرات سابقاً حتى قبل عام 2010 مما يعني احتمالية تعرض كبار الشخصيات وحتى رؤساء الدول لهذا النوع من الهجمات علماً ان هذا النظام ذو تكلفة مرتفعة جداً ويباع للدول ولا يمكن امتلاكه من قبل الافراد علما ان نفس النظام يعمل على هواتف ال Android ويحمل الاسم Chrysaor ويقوم عمل النظام بشكل عام على 3 ثغرات سنأتي على شرحها ولذلك سميت هذه الثغرات اعلامياً بــ Trident اي الرمح الثلاثي وفي هذا المقال توضيح فني بما يخص هواتف الــ IOS .
في حادثة الصحفي احمد منصور والذي تلفى رسالة SMS على هاتفه الشخصي تحمل رابط لخبر معين وفور دخوله على الرابط تبين لديه ان هذا الخبر غير موجود واخذه الرابط لموقع بحث متوفر على الانترنت وهنا بدأت الشكوك تساور الصحفي كونه في تلك الفترة كان مستهدفاً لاسباب سياسية , تولت شركة CitizenLab الكندية وهو مختبر عالمي معروف في مجال تحقيقات الجرائم الالكترونية , حيث تبين لهم انه وبسبب هذه الرسالة تم تثبيت برنامج تجسس على هاتف الاعلامي دون ان يقوم بالموافقة على اي شي ودون اشعاره بأي شي ويعتبر ذلك من الاساليب المتطورة جداً بحكم القيود المفروضة اثناء تحميل التطبيقات على الهواتف .
كيف يتم الاختراق ؟
قبل عامين ابلغني احد الشخصيات الاعلامية المشهورة على مستوى العالم والوطن العربي وكان مدير أسبق لاهم وكالة اخبارية عربية عالمية بتلقيه رسالة SMS من مصدر غير معروف كان يحمل الاسم SMS Alert يوجد فيها رابط وهذا الرابط يحمل عنوان خبر معين ملفت يخص هذا الاعلامي , لم يقم الشخص المستهدف بفتح الرسالة لشعوره بالريبة وقمت بأخذ الرابط المرسل وتحليله فنياً من حيث سلوكه على الهاتف وسلوكه بالتواصل مع الانترنت من خلال استخدام Virtual Machine تحاكي هواتف IOS مع مقارنة ما حدث مع حالات أخرى ليتبين لاحقاً ما يلي :
المرحلة الاولى – فتح ثغرة على نظام التشغيل
هذا الرابط يقوم بإستغلال ثغرة موجودة على متصفح الانترت Safari في جزء برمجي خاص من المتصفح Web Kit’s JavaScript Core library وتم توثيقها عالمياً تحت الاسم CVE-2016-4657 بحيث يوجهك الرابط الى صفحة HTML تحتوي JavaCode بحيث يتم تشغيلها من خلال خدمة Safari Web Content وهو جزء برمجي خاص بمتصفح Safari يقوم بتشغيل الاوامر البرمجية الخاصة بلغة Java بحيث يقوم باستغلال خطأ في تصميم البرنامج يخص ادارة الذاكرة ويسمى Garbage Collection بحيث يقوم بأخذ صلاحية تنفيذ اوامر برمجية للتأسيس للمرحلة الثانية من عملية الاختراق وهنا تعتبر المرحلة الاولى فتح باب خلفي على نظام التشغيل ويكون قد تم اختراق نظام التشغيل للهاتف .
في حال فشل اضافة الاوامر التنفيذية المطلوبة للجزء المحدد من ذاكرة البرنامج تبين وجود ما يسمى Bailout Code أي عملية اخفاء اثار الجريمة في حال لم يتمكن الكود الاول من تنفيذ مهمته بأخذ صلاحية الكتابة للذاكرة واضافة اوامر برمجية معينة وذلك لضمان عدم معرفة هذه الثغرة .
المرحلة الثانية – السيطرة على نواة نظام التشغيل OS Kernel
الهدف الاساسي من هذه المرحلة هو تحديد عنوان نواة نظام التشغيل ال Kernel ومن المعروف ان نظام التشغيل مكون من عدة اجزاء يعتبر اهمها واكثرها حساسية الــ Kernel ولاجل ذلك يوجد جزء خاص يسمى KASLR والتي تعني Kernel address space layout randomization وهي عبارة عن برنامج خاص يقوم بتغيير مواقع اجزاء نظام التشغيل في الذاكرة بعد كل عملية تشغيل للهاتف لضمان عدم وصول تطبيقات خبيثة لعناوين الذاكرة الخاصة بالــ Kernel , يعني للتبسيط تماماً مثل نظام حماية الشهود في بعض الدول لما يكون عندك شاهد وضعه حساس يتم تغيير اسمه ونقله من مكان لاخر كل فترة ولا احد يعرف عنوانه الا جهة واحدة فقط ومكان تواجده بكون سري جداً وبالتالي KASLR هو جزء يقوم بتوفير حماية لمواقع اجزاء نظام التشغيل المختلفة في الذاكرة وطبعاً للوصول لمكان عنوان الــ Kernel يتم اسخدام IOKit subsystem وهو عبارة عن جزء من نظام التشغيل في أجهزة Apple يوفر واجهات اتصال API تمكن المطورين من التواصل مع اجزاء الــ Hardware المختلفة في التلفون وكذلك الخدمات الموجودة في نظام التشغيل لخدمة التطبيقات الموجودة وبالتالي من خلال الـــ IORegistryEntryGetProperty يتم اخذ بقية عنواين اجزاء نظام التشغيل واجراء عملية حسابية عليها للوصول بالنهاية لعنوان نواة النظام Kernel في الذاكرة , ومن ثم ولانه اجزاء الــ Kernel الداخلية معروفة لنظام التشغيل IOS يتم تفصيلها لزرع برنامج التجسس كــ Patch يعني انه تحديث من شركة ابل لمشكلة معينة وهو فعلياً برنامج تجسس وعملية الوصول لمكان الــ Kernel بهذه الطريقة تعتبر ثغرة في التصميم وتحمل التعريف CVE-2016-4655 .
المرحلة الثالثة – تنزيل و تفعيل برنامج التجسس وتوفير صلاحيات له
في هذه المرحلة يتم منح اداة التجسس ما يسمى Root Access يعني صلاحية كاملة على كامل تطبيقات الهاتف من خلال استغلال الــ setreuid وهي عبارة جزء من النظام يستعمل في تنظيم صلاحية كل تطبيق وفي حالتنا يقوم نظام التجسس فعلياً بإيقاف عمل ال setreuid وهي تعمل عمل الجهاز الرقابي على الصلاحيات الممنوحة للتطبيقات بالوصول لاجزاء نظام التشغيل والتطبيقات الاخرى , يعني ببساطة يقوم بتعطيل عمل الجهة الرقابية وبعدها يتم طلب معلومات ال ACP يعني الــ Access Control Policy والهدف من ذلك معرفة اذا كان الــ Seatbelt فعال وهو عبارة عن تكنلوجيا برمجية تستعمل لانشاء عدة نسخ من نظام التشغيل بشكل وهمي لاغراض التطوير والتجريب ولاغراض فحص البرمجيات وهذه التكنلوجيا تسمى Sandbox يعني زي ما تجيب فايروس كمبيوتر على كمبيوتر معزول مفصول عن الانترنت تتركه يتصرف دون قيود بحيث يعتقد انه اصاب جهاز معين وانتا في الحقيقة بتكون بتدرس في سلوكه ولا خطر منه الا على هذا الجهاز مع علمك بتفاصيل عمله ولهذا نظام Pegasus يقوم بالتأكد انه ما دخل لنسخة من نظام التشغيل تكون فعاله كــ Sandbox يعني بشكل وهمي ويريد ان يكون على الجهاز الحقيقي , ومجدداً للتوضيح هي تكنلوجيا تستعمل لاغراض امنية اكثر بحيث تخلي نسخة من نظام معين شغالة وتظهر ظهور طبيعي وخلي اي حد يمارس عليها انواع الهجمات المختلفة ولكن هي مفصولة عن اي بيانات حساسة وتكون تحت الرقابة الكاملة لغايات دراسة الهجمات .
وكجزء من الاستمرار بتعطيل الاجزاء الرقابية على اي تعليمات برمجية ممكن تتنفذ على الهاتف يكمل نظام Pegasus عمله بتعطيل جزء من النظام يسمى Code Signing وهي عملية توثيق رقمية للتأكد ان اي كود برمجي سيتم تنفيذه مصادق عليه من مصدر معروف وموثوق وهي ما يعرف عند اخصائيين امن المعلومات عملية الحفاظ على الـ Integrity للكود بحيث تضمن انه كود سليم من شركة Apple ولم يتم العبث به , لذلك بعد تعطيل ال Code Signing يتم وقف اخر الاجراءات الدفاعية على الهاتف ويصبح البرنامج ذو صلاحية كاملة للوصول لكل شي يخص التطبيقات على الهاتف دون اي اشعار او ملاحظة من نظام التشغيل لان جميع الاجهزة الرقابية على الهاتف تم تعطيلها او تضليلها ويسمى الجزء الذي يقوم بعملية ال Code Signing بالــ AMFI يعني Apple Mobile File Integrity وتم تسمية المرحلة الثالثة بــ CVE-2016-4656 .
وبعد ذلك ندخل بعملية تثبيت البرنامج الاساسي للتجسس ولكن قبلها يقوم البرنامج بتفعيل امر يسمى sync وذلك بعد قيامه بحذف عدد من الملفات التي تحمل اثار للجريمة واهما ملف Cache.db بالاضافة لملفات اخرى وهنا وقع مصمم هذه الاداة بخطأ وهو يخص هندسة نظام الملفات , يعني عندما تم الاطلاع على هاتف تعرض لهذه الاداة وتحليل ملفاته تم استعمال ما يسمى Sector MFT Scan للملفات الموجودة عليه وهذه الطريقة يظهر فيها طبعاً الملفات الموجود على سجلات الذاكرة ولكنها غير موجودة على سجل نظام الملفات يعني تم حذفها ويتم البحث عن ملفات معينة معروفة لدينا خبراء امن المعلومات تحمل الاثار الرقمية لاي شيء يخص نواة النظام او نظام التشغيل وهي SuspendState.plist , History.db , History.db-shm , History.db-wal , History.db-journal , Cache.db , fsCachedData , Cache.db-journal وهنا أخص هواتف ال IOS الخاصة بشركة Apple .
واخيراً يتم تثبيت ملفين على الهاتف وهذه الملفات هي المادة الاساسية لاداة التجسس الاساسية ووضيفتهم مراقبة كامل تطبيقات الهاتف بكل تفاصيلها والاطلاع على كل شي يكتب ويرسل سوا كان مسموع او مرئي او صوتي وهنا مهم ان اشير الى انه بخصوص التطبيقات ذات التشفير مثل WhatsApp و Facetime فيتم الاطلاع على كامل المكالمات الخاصة فيهم وبدون تشفير لان برنامج التجسس اساساً موجود على نفس الهاتف ويستطيع الوصول لكل ما يقال على المايكروفون لذلك هو يحصل على نسخة من اي نوع بيانات صوتي او مكتوب لاي تطبيق قبل ان يمر اساساً بمرحلة التشفير ما قبل الارسال !
استمرارية عمل التطبيق
بعض المبتدئين يروج انه في حال تم عمل اعادة ضبط مصنع للهاتف فسيتم تنظيف اداة التجسس عن الهاتف وهذا غير صحيح فنياً مطلقاً لان اداة التجسس اساساً تثبت نفسها في نواة النظام Kerenl وعلينا هنا التمييز بين ثلاث طبقات وهي Kernel Level , Application Level , End User Level وبالتالي بما ان اداة التجسس موجودة كجزء من الــ Kerenl ففي حال تم عمل اعادة ضبط مصنع سيقوم الجزء الموجود على الـ Kernel بإعادة تحميل الجزء الذي يفترض ان يعمل على الـ Application Level وهناك حل واحد لذلك وهو عمل Firmware جديد للهاتف او تغيير كامل الهاتف .