UUID Shellcode Execution

UUID Shellcode Execution
في يوم 21-10-2021 تمكن فريق بحثي تابع لCheckPoint من اكتشاف مالوير بخصائص متقدمةيستخدم في حملات اختراق واسعة النطاق لمنظمة إجرامية تسمى Lazarus Group والمثير في هذا المالوير انه يستخدم تقنية لتشغيل الشيل كود عن طريق تخزينه بشكل نصي ك UUID وهذا الشكل من التنفيذ لا يعتبر شائع بين البرمجيات الخبيثة.
Lazarus Group
هي مجموعة قراصنة إلكترونية تتبع لكوريا الشمالية ترعاها الدولة وقد نُسبت إلى المكتب العام للاستطلاع. كانت المجموعة نشطة منذ عام 2009 على الأقل ، وبحسب ما ورد كانت مسؤولة عن هجوم الممسحة المدمر(destructive wiper attack) في نوفمبر 2014 ضد شركة Sony Pictures Entertainment كجزء من حملة تسمى عملية Blockbuster. ترتبط البرامج الضارة المستخدمة من قبل Lazarus Group بحملات أخرى تم الإبلاغ عنها ، بما في ذلك Operation Flame و Operation 1Mission و Operation Troy و DarkSeoul و Ten Days of Rain
شرح التقنية :-
الأن سنقوم بشرح تقنية وإعادة تطبيقها بشكل عملي لتشغيل الشيل كود مع العلم ان الشرح فقط لأهداف تعليمية .
في البداية فكرة هذه التقنية هي بتحويل ملف شيل كود مولد عن طريق أي أداة او فريمورك الى UUID .
ما هو UUID ؟
هو اختصار ل Universally unique identifier او المعرف الفريد عالميًا وهو معرف يستخدم للمعلومات في أنظمة الكمبيوتر.
ويمكن تمثيله ب16 ثماني بتات من UUID في شكل 32 رقمًا سداسيًا عشريًا (أساس 16) ، معروضة في خمس مجموعات مفصولة بواصلات
مثال:
01486f74-50d0-8b3e-4818-3e448b402049
بعد ان تعرفنا على الUUID سننتقل الان للخطوات البرمجية .
- بعد توليد الشيل كود نقوم باستخدام أداة مكتوبة بلغة البايثون لتحويل الشيل كود الى هيئة UUID ومن ثم طباعته على الشاشة
2-نقوم بتخزين الناتج بداخل مصفوفة من نوع const char*
3. حجز مساحة في الذاكرة لنسخ الشيل كود اليها لاحقاً
4. عمل لوب على المصفوفة مع تحويل كل عنصر بالمصفوفة الى صيغته ال Binary عن طريق
استخدام فنكشن UuidFromStringA
5. استخدام أي فنكشن لتنفيذ الشيل كود من داخل مساحة الذاكرة التي قمنا بحجزها في خطوة رقم 3
ويمكنك الان الاطلاع على الكود بشكل كامل .
مع ملاحظة انه يمكن تنفيذ الشيل كود عن طريق أي فنكشن مثل
EnumDesktopsA
EnumChildWindows
EnumSystemLocalesA
وهذه روابط للتعرف اكثر عليها:
6. النتيجة :
قمنا هنا بطباعة الشيل كود بعد تحويله الى صيغة binary
وتم وصول الاتصال بنجاح: