
تحليل تقني لـ Bibi-Windows Wiper الذي يستهدف المنظمات الإسرائيلية
في 30 أكتوبر، اكتشف فريق الاستجابة للحوادث في Security Joes Wiper جديدًا لنظام لينكس يُدعى "BiBi-Linux" تم نشره من قبل مجموعة هاكرز موالية لحماس لتدمير بنيتها التحتية. وفي 1 نوفمبر 2023، غرّدت ESET Research عن نسخة ويندوز من BiBi Wiper تم نشرها بواسطة BiBiGun، وهي مجموعة هاكرز مدعومة من حماس ظهرت لأول مرة خلال صراع إسرائيل وحماس عام 2023.
في هذا المنشور، سننظر إلى نسخة ويندوز من BiBi Wiper المعروفة باسم "BiBi-Windows Wiper"
عند التنفيذ، يتحقق BiBi-Windows Wiper من وجود أي وسائط (arguments) تم تمريرها إلى BiBi Wiper. الوسائط هنا هي الدليل الذي سيتم تدميره - bibi.exe <directory_to_destroyed>. إذا لم يتم توفير أي وسيط، فإنه ينفذ الروتين التالي لجلب محركات الأقراص المستهدفة
يقرأ المسار المحدد: "C:\Users"
يحصل على محركات الأقراص المتاحة حاليًا باستخدام GetLogicalDrives() حيث تكون القيمة المرجعة هي bitmask، ثم يتكرر عبر محركات الأقراص A-Z (26). بعد ذلك يقوم باختبار بت (bittest) مع bitmask المسترجع لتحديد محركات الأقراص القابلة للوصول على النظام ويضيف ":\" إلى اسم محرك الأقراص.
هنا يستثني محرك C عن طريق التحقق من i != 2 حيث 2 هو موضع bitmask لمحرك C
ثم بالنسبة لمحركات الأقراص المتاحة باستثناء محرك C، ينفذ GetDriveTypeA() الذي يسترجع نوع محرك الأقراص. يستهدف BiBi-Windows Wiper هنا أنواع محركات الأقراص التالية فقط:

لذلك يستهدف BiBi-Windows Wiper:
علاوة على ذلك، يقوم بطباعة الدلائل المستهدفة على وحدة التحكم ويسترجع عدد المعالجات (NumberOfProcessors) من GetNativeSystemInfo() وبناءً على عدد المعالجات يحسب عدد الخيوط ثم يطبعه على وحدة التحكم.

علاوة على ذلك، ينشئ خيطًا جديدًا يقرأ الأوامر المخزنة بشكل معكوس، ثم ينشئ عملية جديدة باستخدام CreateProcessA لتنفيذ تلك الأوامر. فيما يلي الأوامر:

علاوة على ذلك، ينشئ خيطًا آخر ينفذ روتينات Wiper الرئيسية. وتنفذ روتينات Wiper الإجراءات التالية:

الآن دعونا نفهم كيف يدمر BiBi-Windows Wiper البيانات على الجهاز.
Mersenne Twister PseudoRandom Number Generator Algorithm التي تولد أرقامًا عشوائية كما هو موضح أدناه.
الرقم العشوائي المولّد من الدالة sub_140008BF0() يقوم بعد ذلك بعملية modulus (%) مع القيمة "0xFF + 1 = 100" والمخرج (الباقي) من عملية modulus هو البايت الذي يتم استبداله في الملف المستهدف بايت ببايت.

مثال أدناه على ملف يتكون من البيانات "hello" ويتم استبدالها بهذه الـ 5 بايتات العشوائية في حلقة.
ogfile_val -> rand_num % (hardcoded_val + 1) -> overwrite_val
h - 0xDD9B40A5 % 0x100 -> 0xA5
e - 0x37905317 % 0x100 -> 0x17
l - 0x54B7A20C % 0x100 -> 0x0C
l - 0xDBD10533 % 0x100 -> 0x33
o - 0x18ED3C42 % 0x100 -> 0x42
تمت الكتابة فوق الملف ببايتات عشوائية - تم تدميره!

الآن بمجرد استبدال البيانات في الملف ببايتات عشوائية وتدمير الملف، يقوم BiBi Wiper بتغيير اسم الملف بالطريقة التالية:
rand_no = twisterfunc()
remainder_output = rand_no % (0x3D + 1)
wide_string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
filename_byte = wide_string[remainder_output * 2]
Thus,
if random num = 0xC6D15D79
mod_out = 0xC6D15D79 % 0x3E => 0x31
offset = 0x31 × 0x2 = 0x62
so the 62nd indexed value in the wide string becomes one of the character for the filename. In this case the value is "n"
يتم تنفيذ نفس الروتين 0xA (10) مرات ويتم إلحاق جميع القيم المفهرسة معًا لتكوين اسم الملف العشوائي، على سبيل المثال 1wnRvB6teT، ثم تتم إضافة الامتداد ".BiBi" (Bibi هو لقب يُستخدم لرئيس وزراء إسرائيل، بنيامين نتنياهو) مع رقم الجولة في النهاية بالطريقة التالية - <rand_filename>.BiBi

لذلك وبهذه الطريقة، سيقوم BiBi-Windows Wiper بتدمير جميع الملفات في الدلائل المستهدفة عن طريق استبدال البيانات في الملفات ببايتات عشوائية. وبما أن الحلقة أي الجولات تستمر إلى ما لا نهاية، فسيستمر Wiper في استبدال الملفات عدة مرات بشكل متكرر ببايتات عشوائية إلى ما لا نهاية ولن يتوقف، مما يؤدي إلى تدمير الملفات على الجهاز تمامًا!
تنفيذ BiBi-Windows Wiper يعرض الدليل المستهدف، أنوية المعالج، الخيوط، رقم الجولة، الإحصائيات، والملف المُدمَّر بامتداد .BiBi

شكرًا للقراءة! - knight0x07