LoJax: أول مجموعة جذر UEFI معروفة تستخدم في حملة ضارة

تعمل Sednit Cybergroup ، المعروفة أيضًا باسم ART28 و Strontium و Fancy Bear ، منذ عام 2004 على الأقل. ويعتقد أن المجموعة وراء سلسلة من الهجمات الإلكترونية الرنانة. بعض شركات البكالوريا الدولية ووزارة العدل الأمريكية وصفت Sednit بأنها مسؤولة عن اختراق اللجنة الوطنية الديمقراطية قبل انتخابات 2016 الأمريكية. يعود الفضل إلى المجموعة في اختراق شبكة التلفزيون العالمية TV5Monde ، وتسرب رسائل البريد الإلكتروني من الوكالة العالمية لمكافحة المنشطات (WADA) وغيرها من الحوادث. لدى Sednit العديد من الأهداف ومجموعة واسعة من الأدوات ، بعضها سبق أن وثقناه مسبقًا ، ولكن للمرة الأولى في هذا العمل سنصف بالتفصيل استخدام مجموعة UEFI rootkit.


مراجعة قصيرة


اكتشفنا أنه على الأقل منذ بداية عام 2017 ، تستخدم Sednit إصدارًا تروجانيًا من وكيل المستخدم القديم للبرنامج لحماية الأجهزة من السرقة بواسطة مطور Absolute Software - LoJack. اجتذبت الأداة انتباه محترفي أمن المعلومات بسبب استخدام وحدة UEFI / BIOS كآلية لضمان الثبات. أطلقنا على النسخة Trojanized من هذا البرنامج LoJax .

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

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

وحدة UEFI هي المسؤولة عن تنفيذ وكيل LoJax في النظام ؛ هذا هو أول مجموعة جذرية محددة من UEFI لمجموعة Sednit. نظرًا لأنه موجود في البرامج الثابتة للنظام ، يمكنه البقاء على قيد الحياة بعد إعادة تثبيت Windows واستبدال محرك الأقراص الثابتة.

كانت هناك حالة واحدة على الأقل عندما تم تثبيت مجموعة rootkit بنجاح في ذاكرة فلاش SPI للنظام. وفقًا لمعلوماتنا ، هذه هي أول مجموعة جذرية لـ UEFI تم اكتشافها في البرية.

مقدمة


يستخدم Sednit عددًا من عائلات البرامج الضارة. وصف مفصل لأدوات المجموعة المستخدمة بشكل متكرر التي قدمناها في التقرير .

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

وقد تم وصف الجذور الخفية UEFI في التقارير من قبل شركات أمن المعلومات في وقت سابق. على سبيل المثال ، يُعرف rkloader ، الذي ظهر في عرض تقديمي حول تسرب البيانات في فريق القرصنة ، و DerStarke ، وهو غرسة في تنزيل macOS EFI / UEFI ، من مستندات Vault7 . نحن ندرك وجود هذه الأدوات ، ومع ذلك ، لم يتم إصدار تقارير تسوية UEFI بواسطة rootkits.

الآن لم نثبت فقط استخدام البرامج الثابتة الداخلية مع وحدة LoJax UEFI الخبيثة ، ولكن وجدنا أيضًا مجموعة كاملة من الأدوات التي تم استخدامها على الأرجح لتثبيتها. من المثير للاهتمام ملاحظة أن Sednit يستخدم مجموعة DownDelph bootkit ، التي تم استخدامها في 2013 و 2014 للحفاظ على Downdelph ، وهي واحدة من المرحلة الأولى في Sednit الخلفية. الفكرة متشابهة ، ولكن في الإصدار الجديد من UEFI ، لم يعد استخدام برامج bootkits ممكنًا. وبالتالي ، يختلف هذان المكونان بشكل كبير في السلوك.

ينقسم هذا العمل إلى ثلاثة أقسام. في البداية ، سنقوم بتحليل الدراسات المبكرة لأمان LoJack / Computrace وإمكانية الاستخدام الضار للبرنامج. القسم الثاني مخصص لعملية البحث ، والذي قادنا في النهاية إلى مجموعة UEFI rootkit. أخيرًا ، في القسم الثالث ، نصف بالتفصيل مكونات LoJax المختلفة وكيف توفر الثبات في النظام حتى بعد إعادة تثبيت Windows واستبدال القرص الصلب.

الإسناد


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

الأهداف


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

بحوث الحوسبة المبكرة / بحث LoJack


LoJack - برنامج لحماية أجهزة الكمبيوتر من السرقة والخسارة ، تم تطويره بواسطة Absolute Software Corporation. تُعرف الإصدارات المبكرة من العامل باسم Computrace. كما يوحي الاسم السابق ، بعد تنشيط الخدمة ، يمكن للكمبيوتر الوصول إلى خادم الأوامر الخاص به - سيتم إخطار المالك بمكان الجهاز في حالة الفقدان أو السرقة.

يصف القسم أدناه بنية LoJack السابقة. تم إصدار النسخة القديمة فقط من البرنامج بواسطة Trojaned من قبل مجرمي الإنترنت ، لذلك سنركز عليه. بالإضافة إلى ذلك ، أصدرت Absolute Software في مايو 2018 بيانًا يشير إلى أن الثغرات الموصوفة أدناه لا تؤثر على تشغيل أحدث إصدارات وكلائها.

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


الشكل 1. تنشيط Computrace في BIOS

تم نشر أحد تقارير تنفيذ LoJack / Computrace الأولى في عام 2009. تم الكشف عن البنية العالمية للمنتج ، ووحدة UEFI / BIOS الخاصة بوكيل المستخدم إلى القرص ، والطريقة التي يتواصل بها الوكيل مع خادم ويب يتحكم فيه برنامج Absolute Software. يمكن فهم الرسم التخطيطي من الشكل أدناه.


الشكل 2. آلية مثابرة لوجاك (حوالي 2008)

فيما يلي وصف للخطوات المذكورة أعلاه:

1. في حالة التنشيط ، يتم تنفيذ وحدة UEFI / BIOS في وقت التمهيد. يحاول العثور على قسم FAT / FAT32 / NTFS. ثم ، باستخدام برنامج تشغيل NTFS ، قام بإنشاء نسخة احتياطية من ملف autochk.exe محتوياته بالقطارة ، المسؤولة عن تثبيت مكون وكيل المستخدم. ملف autochk.exe هو ملف قابل للتنفيذ يعمل بنظام Windows ويتم تشغيله في مرحلة مبكرة من تمهيد النظام للتحقق من وجود تلف محتمل في القرص الثابت.

2. عند بدء autochk.exe المعدل ، فإن هدفه الرئيسي هو تنفيذ برنامج rpcnetp.exe المصغر وإضافته كخدمة حتى يبدأ في كل مرة يتم إعادة تشغيله. الخطوة الأخيرة في هذا المكون هي استعادة الإصدار الأصلي من autochk.exe .

3. ملف mini-agent rpcnetp.exe - ملف تنفيذي صغير الغرض منه هو ضمان تشغيل الوكيل الرئيسي. إذا لم يعمل الوكيل الأساسي ، rpcnetp.exe الاتصال بخادم أوامر Absolute Software C&C لتنزيله وتنفيذه. أولاً ، سيقوم الوكيل الصغير بعمل نسخة من نفسه ، ثم يقوم بإجراء تغييرات على رأس PE للتحويل إلى ملف DLL. يتم بعد ذلك تحميل هذه المكتبة في الذاكرة ، svchost.exe عملية svchost.exe ، وإدخال ملف DLL هناك. بعد ذلك ، تبدأ عملية iexplore.exe Internet Explorer ، ويتم حقن DLL فيه. وستُستخدم العملية الأخيرة بعد ذلك للتواصل عبر الإنترنت. غالبًا ما يوجد حقن Computrace mini-agent في عمليات الجهات الخارجية في البرامج الضارة ونادراً ما يرتبط بالبرامج الشرعية.

4. يعمل الآن عامل يعمل بكامل طاقته على النظام ويمكنه استخدام وظائف Computrace للتتبع والاسترداد.

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


الشكل 3. ملف تكوين فك التشفير الجزئي المشفر على اليمين

يوضح الشكل ملف تكوين وكيل LoJack الصغير. طريقة "التشفير" المستخدمة هي XOR بسيطة بمفتاح أحادي البايت. مفتاح 0xB5 هو نفسه لجميع العوامل المصغرة المدروسة. كما يتبين من الشكل ، تم تحديد نطاق C&C في الملف. تحتوي وحدات البايت الأربعة السابقة على عنوان IP لخادم C&C. في حالة عدم التحقق من صحة محتويات ملف التكوين ، يمكن للمهاجمين الذين لديهم أذونات الكتابة في %WINDIR% تغيير محتوياته حتى يتمكن الوكيل الصغير من الاتصال بخادم الأوامر الخاص بهم ، بدلاً من شرعي. من خلال فهم بروتوكول الشبكة ، يمكنك إجراء تنزيل وكيل صغير وتنفيذ رمز عشوائي. هذه المخاطر معروفة منذ فترة طويلة ، ولكن حتى وقت قريب ، لم يتم استخدام الآلية في الممارسة.

يتحول LoJack إلى LoJax


في مايو 2018 ، تم وصف عينات Trobor من وكيل LoJack الصغير ، rpcnetp.exe ، على مدونة Arbor Network. تم تغيير إعدادات الشبكة ذات التعليمات البرمجية الثابتة الخاصة بهم بحيث أنشأت العينات الخبيثة اتصالًا بخادم C & C للمهاجم بدلاً من خادم Absolute Software الشرعي. تم تلبية بعض المجالات الموجودة في عينات Trojanized في وقت سابق - تم استخدامها في نهاية عام 2017 كنطاقات خادم C & C لـ SedUploader ، الباب الخلفي للمرحلة الأولى من Sednit cybergroup. يوضح الشكل أدناه مثالاً على تكوين معدل في أحد وكلاء LoJax المصغرة.


الشكل 4. على اليسار هو ملف تكوين شرعي ، على اليمين هو تعديل

الاختلافات بين الوكلاء الشرعيين والوكلاء طروادة صغيرة للغاية ، كلها تقريبًا مذكورة أعلاه. عينات LoJax mini-agent التي تمكنا من العثور عليها هي إصدارات Trojanized من نفس نموذج Computrace mini-agent ، rpcnetp.exe . تحتوي جميعها على طوابع زمنية متشابهة للتجميع ولا تختلف سوى بضع عشرات من البايت عن الأصل. بالإضافة إلى التغييرات في ملف التكوين ، هناك اختلافات في متغيرات المؤقت التي تحدد الفواصل الزمنية بين الاتصالات بخادم C&C.

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

البحث عن مكون المستوى الأدنى


سجلنا هجمات LoJax التي استهدفت عدة منظمات في البلقان في وسط وشرق أوروبا. في كل منها ، تمكنا من العثور على آثار لبرنامج Sednit الخبيث ، بما في ذلك:

  • SedUploader ، مستتر المرحلة الأولى
  • XAgent ، باب Sednit الرائد
  • Xtunnel ، أداة وكيل للشبكة يمكنها نقل أي حركة مرور شبكة بين خادم C&C على الإنترنت وجهاز كمبيوتر وجهة على شبكة محلية

وجدنا آثارًا لأدوات Sednit في معظم الأنظمة التي تمت دراستها والتي أصبحت أهدافًا لـ LoJax ، بالإضافة إلى نظامين لم يكن فيهما سوى LoJax. يمكن الافتراض أنه في بعض الحالات تم استخدام LoJax كأداة منفصلة ، ربما كباب خلفي إضافي لاستعادة وصول مشغلي Sednit إلى الشبكة.

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

برنامج تشغيل RWEverything (RwDrv) و info_efi.exe


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


الشكل 5. مقتطفات من سجلات الملف التي تم إنشاؤها بواسطة info_efi .exe

لقراءة هذا النوع من المعلومات ، تتضمن الأداة برنامج تشغيل يسمى RwDrv.sys . يأتي برنامج تشغيل kernel مع RWEverything ، وهي أداة مساعدة مجانية متاحة على الشبكة يمكن استخدامها لقراءة المعلومات حول جميع الإعدادات ذات المستوى الأدنى تقريبًا ، بما في ذلك واجهة PCI Express والذاكرة و PCI Option ROMs وما إلى ذلك. برنامج تشغيل kernel هو برنامج شرعي وموقع بشهادة صالحة.


الشكل 6. شهادة توقيع كود RwDrv.sys

يأتي RWEverything مع واجهة مستخدم رسومية تسمح لك بالوصول إلى كل هذه المعلومات.


الرقم 7 الشكل 7. لقطة شاشة واجهة RWEverything

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

كانت الفكرة النهائية التي سمحت لنا بإيجاد أول مجموعة جذرية لـ UEFI لمجموعة Sednit أداتان - لإلقاء ذاكرة فلاش SPI وللكتابة إليها.

تفريغ SPI Flash


الجزء الأول من اللغز كان ملفًا يسمى ReWriter_read.exe . يحتوي على جميع التعليمات البرمجية المطلوبة لتفريغ فلاش SPI للنظام باستخدام برنامج تشغيل RwDrv.sys ، RwDrv.sys . لكي يتمكن برنامج تشغيل الجهاز من إجراء العمليات اللازمة ، يجب أن ترسل أداة التفريغ رموز تحكم الإدخال / الإخراج (IOCTL) الصحيحة. بينما يدعم RwDrv.sys العديد من رموز IOCTL المختلفة ، فإن أداة RwDrv.sys وأداة الكاتب الموضحة في هذا القسم والقسم التالي تستخدم أربعة منها فقط.

RwDrv.sys: أكواد IOCTL المدعومة:

0x22280c - يكتب في منطقة الذاكرة المخصصة للإدخال / الإخراج
0x222808 - يقرأ مساحة الذاكرة المخصصة لمدخلات الإخراج
0x222840 - يقرأ dword من سجل تكوين PCI المحدد
0x222834 - يكتب بايت إلى سجل تكوين PCI المحدد

ReWriter_read أولاً بإنشاء خدمة باستخدام RwDrv.sys نواة RwDrv.sys المدمج وكتابة معلومات تكوين UEFI / BIOS ، والقيم المقابلة للحقول الثلاثة الموجودة في سجل إدارة BIOS (BIOS_CNTL): تمكين قفل BIOS (BLE) ، وتمكين كتابة BIOS (BIOSWE) و SMM BIOS اكتب تعطيل الحماية (SMM_BWP). على الرغم من أن ReWrite_read لا تستخدم هذه القيم ، في الأقسام التالية سنشرح سبب أهمية هذه الحقول لهذه الأداة.

المهمة التالية للأداة هي الحصول على العنوان الأساسي لمنطقة ذاكرة BIOS في SPI وحجمها. هذه المعلومات موجودة في سجل واجهة SPI الرئيسية مثل BIOS Flash المنطقة الأساسية. يتم عرض جميع السجلات في الذاكرة في Root Complex Register Block (RCRB) ، ويمكن الحصول على العنوان الأساسي من خلال قراءة سجل تكوين PCI المطلوب. ReWriter_read يحصل على هذا العنوان باستخدام RwDrv IOCTL 0x22840 وقراءة المسافة البادئة الصحيحة (في حالتنا ، 0xF0). بمجرد معرفة العنوان الأساسي لمنطقة BIOS وحجمها ، تقوم أداة التفريغ بقراءة المحتويات المقابلة لذاكرة فلاش SPI وكتابتها إلى ملف على القرص. يوضح الشكل التالي عملية قراءة ذاكرة فلاش SPI. ترد تعاريف الاختصارات في المسرد أدناه.


الشكل 8. تسلسل القراءة من ذاكرة فلاش SPI

بالإضافة إلى الخطوتين الأوليين ، اللتين تم تنفيذهما مرة واحدة فقط ، يتم تكرار العمليات في دورة حتى تتم قراءة جميع البيانات من ذاكرة فلاش SPI. العملية موصوفة جيدًا هنا . ثم يتحقق ReWriter_read من حجم الصورة المدمجة. يوزع واصف ذاكرة الصورة للحصول على مجموعة من مناطق BIOS و Gigabit Ethernet (GbE) ومحرك الإدارة (ME). تسمح إضافة أبعاد هذه المناطق الثلاث لأداة التفريغ بحساب محتويات Flash SPI الكاملة. إذا كان الحجم يتطابق مع الحجم الذي تم الحصول عليه من قراءة منطقة التسجيل Flash BIOS الأساسي ، تعتبر الصورة صحيحة.

تصحيح UEFI البرامج الثابتة


الجزء الثاني من اللغز كان ملفًا يسمى ReWriter_binary.exe . يحتوي هذا الملف على دليل على وصول Sednit إلى البرنامج الثابت. يحتوي الملف على رمز لتطبيق تصحيح صورة UEFI التي تم تنزيلها وإعادة كتابة النسخة المروّجة إلى ذاكرة فلاش SPI. في هذا القسم ، سنصف كيفية هيكلة هذا الملف الثنائي.

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

تتحلل البيانات المخزنة في صورة UEFI إلى وحدات تخزين عبر نظام الملفات (FFS). كما يوحي الاسم ، هذا نظام ملفات خاص لتخزين صور البرامج الثابتة. تحتوي وحدات التخزين على ملفات ذات GUIDs. عادةً ما يتكون كل ملف من أقسام عديدة ، يحتوي أحدها على PE / COFF القابل للتنفيذ الفعلي ، وهو صورة UEFI. فيما يلي لقطة شاشة من UEFITool ، مشروع مفتوح المصدر للعمل مع صور البرامج الثابتة UEFI ، لفهم أبسط للدائرة.


الشكل 9. مثال لصورة البرنامج الثابت UEFI تحميلها في UEFITool

يقوم ReWriter_binary بتحليل جميع وحدات تخزين البرامج الثابتة الموجودة في منطقة BIOS SPI للذاكرة المحمولة ويبحث عن ملفات محددة:

  • IP4Dxe (8f92960f-2880-4659-b857-915a8901bdc8)
  • NtfsDxe (768bedfd-7b4b-4c9f-b2ff-6377e3387243)
  • SmiFlash (bc327dbd-b982-4f55-9f79-056ad7e987c5)
  • Dxe الأساسية


الشكل 10. نتيجة استخدام المترجم Hex-Rays في أحجام البرامج الثابتة

Ip4Dxe و NtfsDxe هي برامج تشغيل DXE. في برامج UEFI الثابتة ، تكون برامج تشغيل DXE عبارة عن صور PE / COFF تم إنشاؤها إما لتجريد الأجهزة أو لتنظيم الخدمات لاستخدامها بواسطة برامج تشغيل DXE أو تطبيقات UEFI الأخرى. تم الكشف عن برامج التشغيل هذه وتنزيلها بواسطة مؤسسة DXE من خلال مدير DXE (DXE kernel) في مرحلة مبكرة من عملية التمهيد. بعد الانتهاء من هذه المرحلة ، تتوفر جميع الخدمات ، مثل محمل نظام التشغيل ، للعمل مع تطبيقات UEFI. عادةً ، يتم تخزين برامج تشغيل DXE في نفس وحدة التخزين. ومع ذلك ، قد يكون مرسل DXE منفصلًا.

يبحث ReWriter_binary عن Ip4Dxe فقط لمعرفة ما إذا كان حجم معين يحتوي على برامج تشغيل DXE. كما وصفنا لاحقًا ، يصبح هذا المجلد مرشحًا لتثبيت برنامج تشغيل DXE الخبيث. كما يبحث عن نواة DXE ويضيف الحجم الذي يوجد فيه كمرشح آخر لمكان لتسجيل الجذور الخفية. يتم تخزين المساحة المتوفرة المجانية في كل من هذه المجلدات واستخدامها لاحقًا للتحقق من كفاية إضافة برنامج تشغيل ضار.

NtfsDxe - سائق AMI NTFS DXE. إذا كان موجودًا في وحدة تخزين البرامج الثابتة ، فسيتم حفظ موقعه واستخدامه لاحقًا لإزالة هذا الملف من وحدة التخزين. في قسم UKI rootkit ، سنرى سبب حذف هذا الملف.

بالنسبة لصورة SmiFlash ، يتم تخزين المعلومات المتعلقة بها ، ولكن لا يتم استخدامها في أي مكان في مالفاري. ومن المثير للاهتمام أن الصورة ضعيفة . لذلك ، نعتقد أن مشغلي Sednit يمكنهم العمل لاستغلال نقاط الضعف هذه. قد يسمح لهم ذلك بكتابة أنظمة مهيأة بشكل صحيح لذاكرة فلاش SPI. كما سنخبر لاحقًا ، في شكلها الحالي ، يمكن للأداة الكتابة فقط إلى منطقة BIOS للأنظمة التي تم تكوينها بشكل غير صحيح أو الأنظمة القديمة إلى حد ما (على اللوحات الأم التي تحتوي على مجموعات شرائح أقدم من Platform Controller Hub ، تم تقديمها في حوالي عام 2008).

بعد تخصيص البيانات الوصفية اللازمة ، يقوم ReWriter_binary تفريغ صورة UEFI وإضافة برنامج تشغيل DXE الخبيث. أولاً ، يقوم بإنشاء رأس الملف (EFI_FFS_FILE_HEADER). ثم يختار حجم الوجهة بناءً على موقع Ip4Dxe و DXE kernel ، بالإضافة إلى المساحة الخالية المتوفرة على هذه المجلدات. ReWriter_binary بتضمين قسم مضغوط يحتوي على صورة PE وقسم واجهة مستخدم يحدد اسم ملف يمكن قراءته بواسطة الإنسان: SecDxe. تتم إضافة المقطع المضغوط إلى رأس الملف ويتم كتابته في نهاية المجلد ، في مساحة حرة. يوضح الشكل أدناه الهيكل - عرضه في UEFITool.


الشكل 11. عرض ملف SecDxe في UEFITool

أخيرًا ، إذا كان برنامج تشغيل NtfsDxe موجودًا في الصورة ، فستتم إزالته. يخزن نظام ملفات البرامج الثابتة الملفات ومحتوياتها بالتسلسل ، لذا فإن العملية بسيطة للغاية:

  • مسافة بادئة إلى مساحة حرة في نهاية وحدة التخزين
  • 0xFF بايت مكتوب في أعلى صورة NtfsDxe
  • يتم نسخ الجزء التالي من حجم البرنامج الثابت ، بدءًا من المسافة البادئة حيث يوجد NtfsDxe
  • تمتلئ بقية نظام الملفات بـ 0xFF بايت ، أي المساحة الحرة

إعادة كتابة البرامج الثابتة المصححة إلى ذاكرة فلاش SPI


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

تستخدم المنصة العديد من آليات الأمان لمنع المحاولات غير المصرح بها للكتابة إلى منطقة BIOS. يجب أن أقول أن هذه الآليات لا يتم تمكينها بشكل افتراضي. البرامج الثابتة هي المسؤولة عن تكوينها الصحيح. يتم عرض هذه التكوينات في سجل التحكم في BIOS (BIOS_CNTL). يحتوي على بت تمكين BIOS للكتابة (BIOSWE) ، والذي يجب تبديله إلى "1" للكتابة إلى منطقة BIOS في ذاكرة فلاش SPI. نظرًا لأن النظام الأساسي يجب ألا يسمح بأي محاولة للكتابة إلى منطقة BIOS ، فهناك بت واحد إضافي في BIOS_CNTL لحماية BIOSWE - تمكين قفل BIOS (BLE). عند ضبطها ، يجب أن تمنع الآلية بت BIOSWE وتترك القيمة تساوي "0". ومع ذلك ، فإن الحل له ثغرة أمنية. عندما يأتي طلب لتغيير بت BIOSWE إلى "1" ، بت بت BIOSWE إلى "1" ، وبعد ذلك فقط يقاطع النظام الأساسي المهمة باستخدام مقاطعة إدارة النظام (SMI) ، فإن رمز هذا SMI يغير بت BIOSWE إلى "0".

هناك العديد من المشاكل في هذا الإصدار من الحل.أولاً ، يتم ترك معالج SMI لمطوري البرامج الثابتة. لذلك ، إذا لم يتم تنفيذ هذا الرمز في البرنامج الثابت ، فإن بت BLE عديم الفائدة ، لأن بت BIOSWE لن يتم تعيينه مرة أخرى إلى "0". ثانيًا ، في هذه الحالة ، لدينا " ثغرة في حالة السباق " تسمح لنا بالتحايل على هذه الآلية تمامًا ، حتى إذا تم تنفيذ معالج SMI بشكل صحيح. لاستغلال هذه الثغرة الأمنية ، يحتاج المهاجم إلى تشغيل مؤشر ترابط يضبط BIOSWE باستمرار على "1" ، بينما يجب على مؤشر ترابط آخر كتابة البيانات إلى ذاكرة فلاش SPI. وفقًا لعمل Kallenberg و Wojtchuk ، يعمل هذا الهجوم على معالجات متعددة النواة ويمكن أيضًا استخدامه بنجاح على معالجات أحادية النواة مع تمكين تقنية Hyper-Threading.

لحل هذه المشكلة ، تمت إضافة آلية حماية جديدة تم تكوينها من خلال BIOS_CNTL إلى النظام الأساسي. يتم تقديمه في عائلة الشرائح من Intel Platform Controller Hub (PCH). إذا تم تعيين بت التكوين ، فإن SMM BIOS Write Protect Disable (SMM_BWP) سيسمح فقط بالكتابة إلى منطقة BIOS إذا كانت جميع النوى في وضع إدارة النظام (SMM) وضبط BIOSWE على "1". وهذا يحمي النظام بشكل فعال من "ثغرة حالة السباق" الموضحة أعلاه. ومع ذلك ، كما في حالة BLE ، يجب تنشيط SMM_BWP من جانب البرامج الثابتة. لذلك ، فإن البرامج الثابتة التي يتم فيها تكوين هذه الآليات بشكل غير صحيح تترك النظام عرضة لخطر منح حقوق الكتابة غير المصرح بها إلى منطقة BIOS.

ReWriter_binaryيقرأ محتويات سجل التحكم في BIOS لتحديد المسار الصحيح.

يتحقق أولاً لمعرفة ما إذا تم تعيين BIOSWE. إذا كان الأمر كذلك ، فإنه يذهب إلى مرحلة التسجيل. إذا تم تعطيل BIOSWE ، فإنه يتحقق من قيمة البت BLE. إذا لم يتم تثبيته ، فإنه يغير قيمة بت BIOSWE ويبدأ في تسجيل البرامج الثابتة المصححة. إذا تم تعيين بت BLE ، فإنه يتحقق من حالة التعطيل SMM_BWP ويطبق "ثغرة حالة السباق" الموضحة أعلاه. إذا تم تعيين بت SMM_BWP ، تفشل العملية. يوضح الشكل أدناه العملية.


الشكل 12. شجرة القرارات أثناء عملية التسجيل

بافتراض استخدام الملف الذي تم تحليله بشكل خاص ReWriter_binaryلنشر مجموعة UEFI rootkit ، يمكننا أن نستنتج إما أن البرامج الثابتة قد قامت بتكوين الحماية من الكتابة BIOS بشكل غير صحيح أو أن مجموعة شرائح الجهاز الضحية أقدم من لوحة تحكم النظام الأساسي.

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

بطريقة مشابهة جدًا لإجراء القراءة ، تحدث الكتابة إلى ذاكرة فلاش SPI:


الشكل 13. تسلسل الكتابة إلى ذاكرة فلاش SPI

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

عند اكتمال عملية التسجيل ، يتم إلغاء تحميل محتويات ذاكرة فلاش SPI مرة أخرى إلى ملف image.bin. نفس فحص السلامة الذي تم تنفيذهReWriter_read، يعمل على صورة مدمجة جديدة. ثم تتم مقارنة الصورة المقروءة من ذاكرة فلاش SPI بالصورة المصححة في الذاكرة.

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

في المرحلة النهائية ، يتم تعيين مفتاح التسجيل على:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute = “autocheck autochk *”

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

التحليل الفني LoJax


تم تخصيص أداة التفريغ والتصحيح والكتابة على ذاكرة فلاش SPI لصورة برنامج ثابت محددة ولا يمكن استخدامها على أي نظام. في هذه الحالة ، يمكن تمييز وحدة UEFI الكاملة. أول شيء فعلناه بعد استلام هذه الوحدة هو دراسة بيانات القياس عن بعد لمعرفة ما إذا كان قد تم رؤيتها من قبل. في هذا ، كان علينا الاعتماد على ماسح UEFI الجديد ، الذي يمكنه فحص البرامج الثابتة للنظام. وجدنا أنه تم تثبيت وحدة UEFI الخاصة بمجموعة Sednit مرة واحدة على الأقل في النظام ، مما يعني أن هذه المجموعة الجذرية تستخدم بالفعل في البرية.

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

يقدم الشكل أدناه نظرة عامة على تشغيل UEFI rootkit حتى يتم تشغيل نظام التشغيل. أولاً ، يتم تحميل برنامج تشغيل SecDxe DXE بواسطة مدير DXE. بهذه الطريقة ، يتم تكوين وظيفة الإعلام لمجموعة الأحداث EFI_EVENT_GROUP_READY_TO_BOOT. عندما تكون البرامج الثابتة جاهزة لتحديد جهاز التمهيد وبدء محمل التمهيد ، يتم استدعاء وظيفة الإعلام. تقوم بثلاثة إجراءات:

  • يقوم بتحميل برنامج التشغيل المدمج في NTFS DXE لتوفير إمكانية الوصول والكتابة إلى أقسام NTFS
  • يكتب ملفين إلى قسم NTFS Windows: rpcnetp.exe و autoche.exe
  • تغيير مفتاح التسجيل 'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ BootExecute': to: 'autocheck autochk *'؛ بعد: "autocheck autoche *".


الشكل 14. عملية التمهيد لنظام مصاب بجذر UEFI

SecDxe: برنامج تشغيل DXE ضار


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

rootkit UEFI الخاص بـ Sednit هو برنامج تشغيل DXE مع GUID 682894B5-6B70-4EBA-9E90-A607E5676297.

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

SecDxe هو برنامج تشغيل DXE صغير يقوم في الأساس بأمرين. يقوم بإعداد بروتوكول خاص GUID.832d9b4d-d8d5-425f-bd52-5c5afb2c85dcالذي لم يستخدم قط. ثم ينشئ حدثًا مرتبطًا بوظيفة الإعلام. تم تكوين وظيفة الإعلام لاستدعاء إشارة لكل مجموعة EFI_EVENT_GROUP_READY_TO_BOOT. تأتي الإشارة إلى هذه المجموعة من الأحداث من مدير التمهيد عندما تكون جاهزة لتحديد الجهاز للتشغيل.


الشكل 15. نتيجة المفسر Hex-Rays الذي يمر عبر عملية إنشاء الحدث

تستغل ميزة الإعلام السلوك الضار لمجموعة الجذر UEFI Sednit. تكتب المكونات إلى نظام ملفات NTFS Windows. كقاعدة عامة ، تعمل البرامج الثابتة UEFI وحدها مع قسم نظام EFI ، لذلك لا يتم عادة تضمين برنامج تشغيل NTFS. يتم دعم أنظمة الملفات FAT فقط كأقسام للتنزيل. لذلك ، لا تأتي البرامج الثابتة UEFI بالضرورة مع برامج تشغيل NTFS. لهذا السبب ، لدى SecDxe برنامج تشغيل NTFS مدمج. يقوم برنامج التشغيل هذا بالتمهيد أولاً ويتصل بجهاز القرص. أي أنه يتم تثبيته EFI_SIMPLE_FILE_SYSTEM_PROTOCOLعلى أجهزة القرص مع أقسام NTFS ، وبالتالي بما في ذلك الوصول إلى الملفات لهم.

الآن بعد أن أصبح كل شيء جاهزًا لكتابة الملفات إلى أقسام Windows ، يتم إعادة تعيين SecDxe rpcnetp.exeو autoche.exe. ثم يتم rpcnetp.exeتثبيته %WINDIR%\SysWOW64على إصدارات 64 بت من Windows أو%WINDIR%\System32على إصدارات 32 بت. تم autoche.exeتعيين إلى %WINDIR%\SysWOW64. يوضح الشكل التالي العملية المسؤولة عن كتابة هذه الملفات على القرص.


الشكل 16. نتيجة

لفك الشفرة Hex-Rays خلال عملية كتابة الملفات على القرص ، ثم يفتح SecDxe %WINDIR%\System32\config\SYSTEMملفًا يحتوي على نسخة احتياطية من مجموعة من مفاتيح التسجيل HKLM\SYSTEM. وبتوزيع الملف حتى يجدها 'autocheck autochk *'ويستبدل 'k'في 'autochk'يوم 'e'. نتيجة لذلك ، 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ BootExecute'يتغير إلى 'autocheck autoche *'. في المرة التالية التي يقوم فيها Windows بالتمهيد ، سيتم تشغيل autoche.exe بدلاً من ذلك autochk.exe.

اختراق فريق NTFS سائق


كما ناقشنا سابقًا ، تم بناء برنامج تشغيل NTFS في وحدة SecDxe. هناك أدلة قوية على أن مشغلي Sednit لم يكتبوا سائقهم الخاص ، لكنهم جمعوا نسخة من برنامج تشغيل NTFS DXE المعلن من فريق القرصنة.
يستخدم برنامج NTFS الخاص بهم مشروع ntfs-3g كنواة. هذا مجرد غلاف لجعله يعمل كسائق UEFI DXE. يسرد ملف INF الخاص بتجميع برنامج تشغيل فريق القرصنة نفسه أسماء ملفات مشروع ntfs-3g. تسرد خطوط رمز برنامج تشغيل SecDxe NTFS أيضًا العديد من أسماء الملفات هذه: من المثير للاهتمام ملاحظة أن المسار إلى المشروع هو نفس المسار الموجود في vector-edk ، مشروع تطوير فريق Hacking Team EFI. يوجد مشروع فرعي في vector-edk

- c:\edk2\NtfsPkg\NtfsDxe\ntfs\inode.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\volume.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\bootsect.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\unistr.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\attrib.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\mft.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\index.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\cache.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\misc.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\dir.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\runlist.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\logfile.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\uefi_io.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\ntfsinternal.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\mst.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\lcnalloc.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\compress.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\bitmap.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\collate.c
- c:\edk2\NtfsPkg\NtfsDxe\ntfs\security.c


NtfsPkgمع تخطيط دليل متطابق تمامًا. توجد ملفات مصدر المشروع ntfs-3g في نفس مسار العنوان. وعلى الرغم من أن المسارات نفسها غير ملحوظة ، إلا أننا نعتقد أن هذه ليست مجرد مصادفة.

بمقارنة الكود المصدري الذي تم تسريبه إلى الشبكة بما حصلنا عليه عند إخراج جهاز فك الشفرات Hex-Rays ، يصبح من الواضح أن هذا هو نفس المشروع. يوضح الشكل أدناه مثالاً لمقارنة دالة NtfsDriverBindingStartمأخوذة من vector-edk/NtfsPkg/NtfsDxe/Ntfs.c. تتم إزالة التعليقات من كود HT الأصلي للحصول على تصور أفضل. منطق وتسلسل استدعاءات الوظائف هي نفسها. يستخدم كلا المشروعين متغيرًا واحدًا (LockedByMe) لحفظ حالة مؤمنة.


الشكل 17. مقارنة النتائج في إخراج برنامج تشغيل Sednit Hex-Rays NTFS decniler (يسار) ومحرك NTFS HT (يمين)

يظهر الرمز أعلاه المطورين من فريق القرصنة ، وهو ليس في ntfs-3g مفتوح المصدر. كما ذكر في القسم ReWriter_binary، أثناء تحليل نظام ملفات البرامج الثابتة ، يحاول الملف القابل للتنفيذ إزالة برنامج تشغيل AMI NTFS. أردنا معرفة سبب إزالته بدلاً من استخدامه.

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

في هذه المرحلة ، قمنا بالفعل بوصف مختلف عمليات اختراق النظام التي تقوم بها مجموعة UEFI rootkit. ناقشنا أيضًا أسباب استخدام مشغلي Sednit لشفرة مصدر Vector-edk لفريق Hacking Team لتطوير برنامج تشغيل NTFS الخاص بهم لكتابة الملفات إلى أقسام NTFS على Windows. في وقت لاحق في هذه الورقة ، سنقدم تحليلاً للمكونات التي قدمتها SecDxe.

مقابل autoche.exe. autochk.exe


autoche.exeيستخدم الخبيث لضمان استمرار العامل المصغر rpcnetp.exe. كما ترى من الشكل التالي ، فإنه يستخدم مكالمات أصلية إلى Windows API لإنشاء خدمة.


الشكل 18. شكل خبيث autoche .exe يكوّن استمرار ملف rpcnetp.exe.

وتجدر الإشارة إلى أن اسم الخدمة هو نفسه الذي يستخدمه وكيل Computrace الشرعي. بعد إنشاء الخدمة ، تقوم باستعادة قيمة مفتاح التسجيل السابق BootExecute.


الشكل 19. يستعيد autoche.exe الخبيث القيمة الأصلية لمفتاح التسجيل BootExecute.

بما أن العملية تحدث أثناء بدء تشغيل Windows ، فمن غير المحتمل أن يلاحظ المستخدم تغييرًا في قيمة المفتاح.BootExecute. وتجدر الإشارة إلى أنه في autoche .exe ، يمكن ملاحظة بعض أوجه التشابه مع وحدة autochk.exe في Computrace ، على سبيل المثال ، مكالمات API المطبقة وتسجيل الخدمات ، لكن الباقي مختلف تمامًا. الوحدة النمطية Computrace أكبر ، وتستعيد الملف القابل للتنفيذ الأصلي autochk.exeبدلاً من تغيير مفتاح التسجيل. كما أنه مسؤول عن نشر العامل المصغر على القرص ، في حين يقوم LoJax بذلك مع مجموعة UEFI rootkit.

rpcnetp.exe


بينما rpcnetp.exeيمكن تنفيذ العامل المصغر من خلال مجموعة الجذر UEFI ، فمن المحتمل أنه في معظم الحالات عندما وجدنا نسخة طروادة من LoJack ، لم يستخدم الوكيل المصغر هذا المكون. من المحتمل أنهم انطلقوا من الاعتبارات الانتهازية وقاموا بتثبيت UEFI rootkit فقط عندما أتيحت لهم مثل هذه الفرصة ، وفي المنظمات الأكثر إثارة للاهتمام بالنسبة لهم.

أثناء التحقيق ، اكتشفنا إصدارات مختلفة من LoJax mini-agent. تُظهر قائمة مؤشرات الاختراق تجزئاتها والنطاقات / عناوين IP المقابلة. كما قلنا من قبل ، فإن جميع العينات التي تم العثور عليها كانت نسخة طروادة من نفس وكيل Computrace القديم ، تم جمعها في عام 2008.

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

منع الهجوم واستعادته


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

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

يجب عليك أيضًا التأكد من أن جميع أنظمتك مجهزة بمجموعة شرائح حديثة باستخدام منصة وحدة التحكم في المنصة (بدءًا من مجموعة شرائح Intel Series 5 وما بعدها). وهذا يضمن أن عمل آليات الأمن ضد "سباق حالة الضعف"، والتي، كما أننا قد أشار ، موجود في النظام الأساسي.

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

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

الاستنتاجات


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

لأية استفسارات حول هذا العمل ، يرجى الاتصال بالتهديدريدintel@eset.com ،

ونود أن نعرب عن امتناننا لأولئك الذين يعملون في مشروع openecuritytraining.info. بالطبعساعدتنا مقدمة BIOS و SMM حقًا عندما قمنا بتحليل التفاعلات مع شريحة فلاش SPI.

مسرد


راجع مواصفات Intel للحصول على وصف أكثر تفصيلاً للاختصارات.
- BIOS_CNTL: سجل التحكم في BIOS
- BIOSWE: تمكين كتابة BIOS
- BLE: تمكين قفل BIOS
- FADDR: عنوان الفلاش
- FDATAX: بيانات الفلاش من FDATA0 إلى FDATAN
- FDBC: عدد
وحدات بيانات الفلاش - FGO: Flash Cycle Go
- HSFC: تسلسل الأجهزة التحكم في الفلاش
- HSFS: حالة الفلاش لتسلسل الأجهزة
- IOCTL: التحكم في الإدخال / الإخراج
- PCH: لوحة التحكم في المنصة
- RCBA: تسجيل عنوان الجذر الأساسي المركب
- RCRB: كتلة تسجيل مجمع الجذر
- SCIP: دورة SPI قيد التقدم
- SMI: مقاطعة إدارة النظام
- SMM: وضع إدارة النظام
- SMM_BWP: SMM BIOS Write Protect Disable
- SPI: Serial Peripheral Interface

مؤشرات التسوية


ReWriter_read.exe


الكشف عن ESET
Win32/SPIFlash.A
SHA-1
ea728abe26bac161e110970051e1561fd51db93b

ReWriter_binary.exe


الكشف عن ESET
Win32/SPIFlash.A
SHA-1
cc217342373967d1916cb20eca5ccb29caaf7c1b

Secdexe


الكشف عن ESET
EFI/LoJax.A
SHA-1
f2be778971ad9df2082a266bd04ab657bd287413

info_efi.exe


الكشف عن ESET
Win32/Agent.ZXZ
SHA-1
4b9e71615b37aea1eaeb5b1cfa0eee048118ff72

autoche.exe


الكشف عن ESET
Win32/LoJax.A
SHA-1
700d7e763f59e706b4f05c69911319690f85432e

وكيل EXE الصغير


الكشف عن ESET SHA-1
Win32/Agent.ZQE
Win32/Agent.ZTU


1771e435ba25f9cdfa77168899490d87681f2029
ddaa06a4021baf980a08caea899f2904609410b9
10d571d66d3ab7b9ddf6a850cb9b8e38b07623c0
2529f6eda28d54490119d2123d22da56783c704f
e923ac79046ffa06f67d3f4c567e84a82dd7ff1b
8e138eecea8e9937a83bffe100d842d6381b6bb1
ef860dca7d7c928b68c4218007fb9069c6e654e9
e8f07caafb23eff83020406c21645d8ed0005ca6
09d2e2c26247a4a908952fee36b56b360561984f
f90ccf57e75923812c2c1da9f56166b36d1482be


أسماء نطاقات خادم الأوامر


secao[.]org
ikmtrust[.]com
sysanalyticweb[.]com
lxwo[.]org
jflynci[.]com
remotepx[.]net
rdsnets[.]com
rpcnetconnect[.]com
webstp[.]com
elaxo[.]org


عناوين IP لخادم الأوامر


185.77.129[.]106
185.144.82[.]239
93.113.131[.]103
185.86.149[.]54
185.86.151[.]104
103.41.177[.]43
185.86.148[.]184
185.94.191[.]65
86.106.131[.]54


عامل DLL المصغر


ESET
Win32/Agent.ZQE
SHA-1 Detection
397d97e278110a48bd2cb11bb5632b99a9100dbd
Command Server أسماء مجالات
elaxo.org
عناوين IP Server Command Command
86.106.131[.]54

Source: https://habr.com/ru/post/ar425251/


All Articles