1 آنالیز پیکربندی بدافزار Lu0Bot
بدافزار Lu0Bot که در زبان node.js نوشته شده است، در ابتدا صرفأ رباتی جهت حمله انکارسرویس توزیعشده بنظر میآمد و انتظار میرفت بواسطه محدودیتهای ذاتی node.js چندان توانمند نباشد اما قابلیتهای چشمگیری دارد و میتواند با اجرای یک فرآیند مبهمسازی چند لایه مبتنی بر پلتفرم، اهدافش را به طور جدی تهدید کند.
گفتنی است حمله انکار سرویس توزیع شده تلاشی مخرب جهت ایجاد اختلال در ترافیک عادی یک سرور، سرویس یا شبکه هدفمند است که با روانهسازی سیل ترافیک غیرعادی اینترنت به سمت یک سرور و زیرساختهای آن ایجاد اختلال میکند.
شکل 1: نماد بدافزار Lu0Bot
با توجه به گستردگی توضیحات، در دو بخش مختلف به آنالیز این بدافزار میپردازیم:
- بخش اول: آنالیز بخشهای اصلی: بررسی معماری و آنچه که درون بدافزار ذخیره شده
- بخش دوم: آنالیز ترافیک بدافزار: بررسی یک نمونهی واقعی که با یک سرور C2 ارتباط برقرار میکند.
1-1 بخش اول: آنالیز قسمتهای اصلی
محتوای نمونه مورد بررسی در یک فایل با پسوند SFX ذخیره شده بود که با هریک از ابزارهای آرشیو محتوا قابل بازگشاییست.
شکل 2: محتوای فایل اصلی
این فایل شامل یک فایل bat، چهار فایل eqnyiodbs.dat، یک فایل lknidtnqmg.dat و یک فایل gyvdcniwvlu.dat است که در ادامه به بررسی آنها پرداخته خواهد شد.
1-1-1 فایل .bat
پسوند .bat، اغلب برای فایلهای batch استفاده میشود که این فایلها یک سری دستورات جهت اجرا در خطفرمان سیستمعامل را شامل میشوند.
شکل 3: محتوای فایل bat
خط ابتدایی، یک کامنت مبهم است.
خط دوم، محتوای چند فایل را در fjlpexyjauf.exe که یک مفسر node است، قرار میدهد.
در خط آخر، مفسر یک فایل حاوی محتوای بایتی به همراه یک عدد دریافت میکند که به عنوان کلید رمزنگاری برای فایل بایتی عمل میکند.
1-1-2 فایلهای eqnyiodbs.dat
فایل dat، فایل دادهایاست که محتوی آن دادههای دودویی میباشد.
شکل 4: محتوای فایلهای eqnyiodbs.dat
این فایل به چند بلوک تقسیم شده ات تا با ترکیب آنها، مفسر node ساخته شود.
1-1-3 فایل lknidtnqmg.dat
شکل 5: محتوای فایل lknidtnqmg.dat
این فایل را بایتهایی که با الگوی Base64 رمزنگاری شدهاند تشکیل میدهند که احتمالأ بعدأ با عددی که به عنوان ورودی دریافت میشود رمزگشایی میشود.
1-1-4 فایل gyvdcniwvlu.dat
این فایل به عنوان یک درایور جهت اجرای برنامه های ۳۲ بیتی برروی سیستمهای ۶۴x عمل میکند.
1-2 بخش دوم: آنالیز یک نمونهی واقعی
در این بخش، آنالیز یک نمونهی واقعی بدافزار که در بستر Any.Run که یک بستر آمایش و تحلیل بدافزارها میباشد، انجام شدهاست. این نمونه، با یک سرور (command-and-control)C2 که ابزاری برای رصد حملات سایبریاست، تعامل میکند.
1-2-1 روند پردازش و فعالیت
شکل 6: درخت پردازش
همانطور که در تصویر فوق مشاهده میشود، پردازش با خواندن فایل bat که قبلا به آن اشاره شد آغاز شده که منجر به فراخوانی فایل اجرایی مفسر Node می شود. این فایل، به عنوان ورودی کد جاوا اسکریپت رمزنگاریشده را دریافت کرده و سپس این کد، داده مورد نیاز سیستم -ازجمله اطلاعات مربوط به محل اجرای پردازهها- را از طریق اجرای فایل WMIC.exe(Windows Management Instrumentation Command line) جمعآوری میکند.
شکل 7: WMIC.exe
در ادامه مشخص شد که فایل مفسر در پوشه startup سیستم کپی میشود تا بدافزار بتواند حتی پس از restart نیز به حیات و فعالیت خود ادامه دهد.
شکل 8: مسیر startUp
1-2-2 شبکه و ترافیک
یک ویژگی منحصر بفرد این بدافزار، شیوهای است که برای مونتاژ دامنهها اتخاذ کردهاست. دامنه، از قسمتهای مختلفی ساخته شده و سپس به شکل یک کمیت واحد در کد جاوا اسکریپت قرار میگیرد.
شکل 9: درخواستهای DNS
بدافزار مذکور درواقع، از دامنههایی که به صورت تصادفی تولید میکند، جهت ایجاد سیل درخواستهای DNS در راستای حملهی انکار رویس استفاده میکند.
1-3 تجزیه و تحلیل فنی بدافزار Lu0Bot با استفاده از دی اسمبلر و دیباگر
جهت دستیابی به کد جاوا اسکریپت اصلی، باید هم فایل آرشیو و هم رمزنگاری کد را بکشنیم پس:
- آرشیو sfx را باز میکنیم.
- دستوری برای ترکیب فایلهای اولیه و رسیدن به فایل مفسر Node.js اجرا میکنیم.
- فایل fjlpexyjauf.exe را در دیباگر ۳۲بیتی اجرا کرده و کد بدستآمده را در خطفرمان وارد میکنیم.
- نقطهی شروع اجرای کد جاوا اسکریپتی را پیدا میکنیم.
- کد را در حافظه مستقر کرده و اسکریپت را ذخیره میکنیم.
1-3-1 آنالیز کد جاوا اسکریپت
کد اولیه جاوا اسکریپت که با آن مواجه میشویم، شدیدأ مبهمسازی و ناخوانا شده است.
شکل 10: کد اولیهی جاوا اسکریپت
با حذف بایتهای اضافی و استفاده از یک رفعابهامکنندهی جاوااسکریپت، به کد واضحتری میرسیم:
شکل 11: نتیجه عملیات رفع ابهام
مطابق شمارههای اشاره شده در شکل:
1. کد، با آرایهاي شامل رشتههای رمزنگاری شده
2. بلافاصله، آرایه دستخوش تغییر شده و المانهای خاصی به انتهای آرایه منتقل میشوند.
3. سپس از یک تابع جهت رمزگشایی از رشتههای آرایه استفاده میشود. ابتدا از یک فرم جایگزین base64(AltBase64) استفاده کرده، پس از آن از URLencode-decode، و نهایتا الگوی RC4 را اعمال میکند.
تابع با دو متغیر فراخوانی میشود که یکی المانی از آرایه است و دیگری کلید RC4
در نهایت با اجرای یک اسکریپت خاص، از کد رفع ابهام میکنیم و نتیجه به این شکل میشود:
شکل 12: پس از رفع ابهام کد
به این صورت، قسمتی از کد که مسئول مونتاژ دامنهها بود کشف میشود:
شکل 13: مونتاژ دامنهها
1-3-2 دیباگ کردن کد جاوا اسکریپت
برای دیباگ، breakpoint را روی “var” قرار داده و خروجی هر خط را رصد میکنیم.
مشخص میشود که تابع اول، ginf، اطلاعات سیستم را جمعآوری میکند و آرایهای متشکل از ۱۵ المان که جزئیات سیستم را دربرمیگیرد، تولید میکند.
شکل 14: brekpoint و ginf
شکل 15:آرایه محتوی خروجی تابع ginf
تابع بعدی که hwco است، آرایه خروجی ginf را به عنوان ورودی دریافت کرده و خروجیاش، آخرین بخش تشکیل دهنده دامنه تا نقطه خواهد بود. این خروجی در حقیقت همان اطلاعات سیستم است که به صورت hash رمز شدهاند.
شکل 16: hwco
شکل 17: رشته خروجی تابع hwco
سپس پورت، شماره و قسمت دامنه بعد از نقطه از آرایه acc استخراج میشوند.
شکل 18: استخراج المانهای دامنه از آرایه acc
پس از آن، یک متغیر حاوی یک عدد تصادفی به بخشی از دامنه که قبل از نقطه است اضافه میشود. خط بعدی انتخاب دامنه را بعد از نقطه کنترل میکند: اگر شرایط خاصی موجود باشد، یک دامنه جایگزین انتخاب میشود.
شکل 19: انتخاب دامنه، بخش بعد از نقطه
پس از انجام چندین عملیات دیگر، دامنه کامل مونتاژ شده و تمام عناصر مورد نیاز در یک شی JSON قرار میگیرند:
شکل 20: قسمتهای تشکیل دهنده دامنه
پس از اجرا، بدافزار به دنبال آدرسی جهت انتقال دادهها میگردد. هنگامی که سرور ترافیک را دریافت کرد، کد جاوا اسکریپت را ارسال میکند.
1-4 تشخیص Lu0Bot
در پژوهش انجام شده، اشاره شده که میتوان از قوانین YARA و SIGMA جهت نوشتن ابزارهایی برای تشخیص این بدافزار کمک گرفت.
قوانین اشاره شده، الگوهای تشخیص بدافزار هستند که تشخیص حملات هدفمند و تهدیدهای امنیتی مبتنی بر فضای سامانه مورد نظر قابل تغییر و تطبیق هستند.
2 جمع بندی
Lu0Bot، یک بدافزار غیرمعمول است که کد Node.js و جاوا اسکریپت را با هم ترکیب کردهاست. دارای ساختار منحصر بفرد تشکیل دامنه است و از روشهای متنوعی جهت رمزنگاری رشتهها استفاده میکند.
اگرچه هماکنون از فعالیت سطح پایینی برخوردار است، اما میتواند درصورتی که سرورهای C2 به شکل فعال پاسخگو باشند، تهدیدی جدی به حساب بیاید.
میتوان با استفاده از ابزارها و بسترهایی همچون بستر Any.Run برای تشخیص و آنالیز فوری بدافزارها کمک گرفت و از امنیت سامانههای سازمانی محافظت کرد.
منابع:
[1]https://thehackernews.com/2023/10/analysis-and-config-extraction-of.html
[2]https://any.run/cybersecurity-blog/lu0bot-analysis/?utm_source=hacker_news&utm_medium=article&utm_c…
- 188