چند روز پیش خبری مبنی بر حمله یه باج افزار بنام ESXiArgs در سایت قرار داده بودیم که سرورهای ESXi رو مورد هدف قرار میداد و بعد رمزنگاری اونا رو تبدیل به فایلی با پسوند .args میکرد. در این پست به بررسی جزییات فنی تره این باج افزار می پردازیم.
هنگامیکه سرور مورد حمله قرار میگیره ، فایلهای زیر در فولدر tmp قرار میگیرن:
- فایل encrypt : فایل ELF که مسئول رمزگذاری هستش.
- فایل encrypt.sh : این فایل یه شل اسکریپت هستش که کارهای مختلفی انجام میده که در ادامه بهش میپردازیم.
- فایل public.pem : کلید عمومی RSA که برای رمزگذاری، کلیدی که فایلها باهاش رمز میشن مورد استفاده قرار میگیره.
- فایل motd : یادداشت باج بصورت متنی که در مسیر /etc/motd کپی میشه تا هنگام لاگین نمایش داده بشه. فایل اصلی خود سرور در مسیر /etc/motd1 قرار میگیره.
- فایل index.html : یادداشت باج بصورت html که جایگزین Home Page خوده VMware ESXi میشه و فایل اصلی خود سرور تبدیل به index1.html میشه.
ID Ransomware با بررسی رمز کننده اعلام کرده که این فایل متاسفانه امنه یعنی باگی نداره که بشه رمزگشایی کرد.
باج افزار برای این که فایلها رو رمز کنه در ابتدا با استفاده از CPRNG RAND_pseudo_bytes در openssl ، یه مقدار 32 بایتی تولید میکنه که در حقیقت کلید هستش. در ادامه با استفاده از این کلید و الگوریتم Sosemanuk ، که یه نوع stream cipher هستش ، فایلها رو رمز میکنه. در آخر هم این کلید رو با RSA_public_encrypt در openssl رمز میکنه و به انتهای فایل اضافه میکنه.
استفاده از الگوریتم Sosemanuk تقریبا منحصر به فرد هستش و اغلب باج افزارهایی که از کدهای لو رفته Babuk نسخه ESXi مشتق شدن ، مورد استفاده قرار میگیره. البته اینا به جای Curve25519 در Babuk از RSA استفاده کردن.
این نشون میده که احتمالا این باج افزار هم مانند CheersCrypt و PrideLocker ، از کدهای افشا شده Babuk توسعه داده شده.
نکته بعدی اینکه یادداشت باج برای هر دو باج افزار ESXiArgs و Cheerscrypt خیلی شبیه هم هستش و مشخص نیست که این یه نسخه جدید از Cheerscrypt هستش یا یه باج افزار جدید که صرفا کدهاشون با Babuk مشترکه.
فرایند رمزگذاری با فایل شل اسکریپت شروع میشه که آرگومانهای مختلفی رو هم میگیره. از جمله این آرگومانها : فایل کلید عمومی RSA ، فایلی که قراره رمز بشه ، قسمتهایی که قرار نیست رمز بشن ، اندازه بلاک رمزگذاری و سایز فایل.
1 2 3 4 |
usage: encrypt <public_key> <file_to_encrypt> [<enc_step>] [<enc_size>] [<file_size>] enc_step - number of MB to skip while encryption enc_size - number of MB in encryption block file_size - file size in bytes (for sparse files) |
اسکریپت encrypt.sh پس از راه اندازی ، دستور زیر رو برای تغییر فایلهای پیکربندی ماشین مجازی Esxi اجرا میکنه که در اون .vmdk رو به 1.vmdk تبدیل میکنه و .vswp رو به 1.vswp تبدیل میکنه.
در ادامه این اسکریپت تمام پروسس هایی که دارای vmx هستن رو بصورت اجباری ، طبق این آموزش میبنده و در ادامه با استفاده از دستور زیر ، لیستی از ESXi volume هارو بدست میاره.
1 |
esxcli storage filesystem list | grep "/vmfs/volumes/" | awk -F' ' '{print $2} |
مواردی هم که برای volume ها جستجو میکنه ، فایلهایی با پسوند زیر هستش:
1 2 3 4 5 6 7 8 9 |
.vmdk .vmx .vmxf .vmsd .vmsn .vswp .vmss .nvram .vmem |
هر فایلی رو که پیدا میکنه یه فایلی بصورت [file_name].args در همون فولدر همراه با مقدار محاسبه شده size step و 1 و اندازه فایل ، ایجاد میکنه . مثلا فایل server.vmx یه فایل server.vmx.args داره. (شکل زیر)
اسکریپت فایل encrypt رو براساس پارامترهایی که بالا گفته شد ، اجرا میکنه و فرایند رمزگذاری شروع میشه.
بعد از رمرگذاری فایلها ، متن باج ، همانطور که در بالا اشاره کردیم ، توسط فایلهای index.html و motd نمایش داده میشن.
در مرحله نهایی ، اسکریپت ، یسری پاکسازی رو انجام میده. از جمله بکدور /store/packages/vmtools.py و فایلهای زیر رو :
1 2 3 4 |
/var/spool/cron/crontabs/root /bin/hostd-probe.sh /etc/vmware/rhttpproxy/endpoints.conf /etc/rc.local.d/local.sh |
این پاکسازی و اشاره به /store/packages/vmtools.py شبیه بکدور Juniper هستش که روی سرورهای ESXi نصب میشد و در دسامبر 2022 کشف شد.
اگه ادمین هستید بررسی کنید که فایل vmtools.py در سیستمتون نباشه و در صورت مشاهده اونو پاک کنید.
اجرای اسکریپت در نهایت با اجرای /sbin/auto-backup.sh برای بروزرسانی پیکربندی ذخیره شده در /bootbank/state.tgz و باز کردن SSH تموم میشه.
نحوه بازیابی :
اگه درگیر این باج افزار شدید برای بازیابی فایلهاتون می تونید از لینک های زیر استفاده کنید : (از فایلهاتون بک آپ داشته باشید حتما)
بازیابی فایلهای vmdk تحت تاثیر حمله CVE-2020-3992 / CryptoLocker
بازیابی سرورهای مجازی تحت تاثیر CVE-2020-3992
آژانس CISA یه اسکریپتی رو منتشر کرده میتونید با اون سرورهای VMware ESXi که توسط این باج افزار رمز شده رو بازیابی کنید.
در زمان نگارش این مقاله ، تقریبا 2800 سرور دچار آلودگی شدن.
فایلهای باج افزار :
برای دانلود فایلهای رمزگذار + اسکریپت + نمونه های آلوده شده + فایلهای بکدور ، اینجا رو کلیک کنید