در تاریخ ۸ دسامبر سال ۲۰۲۲، سایت VMware ESXi یک خبر منتشر کرد و در آن از خطرات فعال بودن سرویس OpenSLP گزارشی ارائه کرد که چندان مورد توجه تخصصین حوزه شبکه قرار نگرفت. اکنون در تاریخ ۵ فوریه سال ۲۰۲۳ (دو روز پیش از انتشار این مطلب) هکرها از همین راه برای نفوذ استفاده کرده و بسیاری از سرورهایی که توسط این مجازی ساز مدیریت میشوند را مورد حمله قرار دادهاند.
ما ابتدا این حمله را از ابعاد مختلفی مورد بررسی قرار دادیم و اکنون با تهیه این مطلب قصد داریم نتایج را با شما در میان بگذاریم.
در این روش هکر با استفاده از سرویس SLP و دسترسی ریموت به سرور، فایلهای کانفیگ ماشینهای مجازی را کد میکند و سپس مبلغی را برای این که فایل پچ آن را در اختیار سرور ادمین قرار دهد درخواست میکند. البته در چنین شرایطی هیچ تضمینی وجود ندارد که پس از دریافت مبلغ نیز فایل پچ را در اختیار ادمین سرور قرار دهد یا خیر.
در این مطلب به شما کمک میکنیم تا نه تنها از نفوذ هکرها جلوگیری کنید بلکه در صورتی که شخصی به سرور شما نفوذ کرد بتوانید ماشین مجازی خود را درست کنید.
ابتدا باید اشاره کنیم که اگر ماشین مجازی شما هنوز در دسترس است، باید سرویس OpenSLP آن را غیرفعال کنید. سپس از تمام اطلاعات خود یک نسخه پشتیبان تهیه کنید و طبق مراحل این آموزش، بر اساس ورژن Esxi مورد استفاده خود، تمام پچهای امنیتی را نصب کنید.
باج افزار جدید ESXiArgs
به نظر میرسد این باجافزار از خانواده باجافزارهای جدیدی باشد.
این باجافزار فایلهای با پسوندهای vmxf، .vmx، .vmdk، .vmsd، و nvram. در سرورهای ESXi که در معرض آسیبپذیری قرار دارند را رمزگذاری میکند و یک فایل args. برای هر سند رمزگذاری شده با ابرداده ایجاد میکند.
جزئیات فنی ESXiArgs
تجزیه و تحلیل اسکریپت و رفتار رمزگذار به ما این امکان را می دهد که نحوه صورت گرفتن این حملات را بهتر درک کنیم.
زمانی که سرور مورد نفوذ قرار می گیرد، فایل های زیر در پوشه /tmp ذخیره میشوند:
فایل encrypt: فایل اجرایی رمزگذار ELF.
فایل encrypt.sh: یک اسکریپت پوسته که نقش منطق یا logic حمله را بر عهده دارد و وظایف مختلفی را پیش از اجرای رمزگذاری انجام میدهد.
فایل public.pem: یک کلید عمومی RSA که برای رمزگذاری کلیدی که وظیفهی رمزگذاری یک فایل دیگر را بر عهده دارد، کاربرد دارد.
فایل motd: یک یادداشت متنی از باجافزار که در /etc/motd کپی میشود و هنگام لاگین نمایش داده میشود. فایل اصلی سرور در /etc/motd1 نگهداری میشود.
فایل index.html: یک یادداشت متنی html از باج افزار که با صفحه اصلی VMware ESXi جایگزین میشود و فایل اصلی سرور در همان پوشه در index1.html کپی میشود.
پیشگیری از نفوذ باجافزار ESXI
برای پیشگیری از نفوذ هکرها به سرور مراحل زیر را انجام دهید
ابتدا لازم است تا سرویس slpd را با وارد کردن دستوراتی که در ادامه قرار دادهایم غیرفعال کنید:
[enesdev@ESXi:~] /etc/init.d/slpd stop
دستور esxi network firewall ruleset برای مدیریت کردن rule های فایروال در esxi است:
[enesdev@ESXi:~] esxcli network firewall ruleset set -r CIMSLP -e 0
برای غیرفعال کردن دائم آن میتوانید از دستور زیر استفاده کنید:
[enesdev@ESXi:~] chkconfig slpd off
سپس میتوانید برای بررسی خاموش بودن آن در ریبوتهای بعدی از این دستور استفاده کنید:
[enesdev@ESXi:~] chkconfig --list | grep slpd
در ادامه لازم است تا بر روی پورت ۴۴۳ و ۸۰ که مربوط به ui esxi هستند محدودیت آیپی اعمال کنید.
برای این کار ابتدا به صفحه مدیریت تحت وب ESXI لاگین کرده و وارد بخش Networking شوید. سپس Rule مربوط به vSphere Web Client را انتخاب و روی گزینه Edit کلیک کنید.
اکنون گزینه Only allow connections from the following networks را در پنجره باز شده انتخاب کنید و در کادر پایین پنجره آدرس آیپی مورد نظر و یا رنج آیپیهایی که میخواهید به محیط وب ESXI دسترسی داشته باشند را وارد نمایید.
اکنون لازم است تا سرویسهای shell و ssh را از طریق کنسول سرور متوقف کنید.
همچنین توصیه میشود esxi را به 6.7 build 20497097 یا بالاتر بهروزرسانی نمایید.
رفع مشکل کد شدن و غیرفعال شدن ماشینهای مجازی
از تاریخ ۰۳ فوریه ۲۰۲۳ نسخههای ESXi 6 به بالا، در معرض این باج افزار قرار گرفته و سرورهای مجازی آنها غیرقابل استفاده شدند.
برای کاربرانی که مورد نفوذ باج افزار cryptolock گرفتهاند و با فایلهای vmdk رمزگذاری شده مواجه شدهاند و عملا امکان دسترسی به سرور خود را ندارند نیز راه حلی برای بازیابی سرور وجود دارد. نکتهای که وجود دارد این است که این ویروس تنها فایلهای .vmdk و .vmx را مورد حمله قرار میدهد ولی به فایلهای بزرگتری مثل server-flat.vmdk آسیبی نمیرساند. در ساختار esxi دادهها در فایل های flat.vmdk نگه داری میشود. بنابراین در ادامه این مطلب نحوه بازیابی ماشینهای مجازی از طریق همین فایلهای flat.vmdk را به شما آموزش میدهیم.
ابتدا باید از طریق SSH وارد سرور شوید. زمانی که وارد سرور ESXi خود میشوید، یک اخطار در SSH مشابه تصویر زیر مشاهده خواهید کرد.
اکنون باید یک بار esxi را ریبوت کرده و بعد از بوت شدن از طریق ssh وارد سرور شوید.
سپس وارد دایرکتوری سروری که قصد بازیابی آن را دارید شوید.
پس از این که به datastore که ماشین مجازی در آن قرار دارد وارد شدید دستورات ls -la را وارد نمایید. با استفاده از این دستورات حجم فایل vmname-flat.vmdk را مشاهده میکنید.
در این مرحله باید فایل vmname.vmdk را با استفاده از دستور mv به مسیر دیگری منتقل کنید.
اکنون باید حجم فایل vmname-flat.vmdk که در مراحل قبل به دست آوردید را در دستور زیر با 64424509440 جایگزین کنید.
vmkfstools -c 64424509440 -d thin temp.vmdk
بعد از اجرای دستور بالا دو فایل به نامهای temp.vmdk و temp-flat.vmdk ایجاد شدهاند. فایل temp.vmdk را با vi باز کرده و در خط ۹ آن temp-flat.vmdk را با vmname-flat.vmdk جایگزین کنید.
سپس خط «ddb.thinProvisioned = 1» را هم حذف کنید.
پس از اعمال این تغییرات باید فایل temp-flat.vmdk را حذف کرده و فایل temp.vmdk را به مقدار vmname.vmdk (نام ماشین مجازی خود) تغییر دهید.
در این مرحله باید فایل .vmx ماشین را مورد بررسی قرار دهیم ، اگر این فایل رمزگذاری یا ENCRYPT شده باشد میتوانیم از فایل .vmx~ که در واقع بکاپ فایل .vmx است استفاده کنیم. پس اگر فایل .vmx کد شده بود باید فایل .vmx~ را با آن جایگزین کنید.
اکنون باید فایل .vmsd را نیز به مسیر دیگری منتقل کنید، این فایل نیز کدگذاری شده است و دیگر نیازی به آن نداریم. اکنون به ssh سرور برگردید و سپس دستور زیر را وارد کنید:
vmkfstools -e xxxx.vmdk
اکنون فرایند بازیابی ماشین مجازی شما به پایان رسیده است و در صورتی که ماشین مجازی، register نشده باشد میتوانید از آن را طریق پنل esxi آن را رجیستر کنید.
همچنین اگر ماشین register شده باشد ابتدا نیاز است تا آن را unregister کنید. به منظر unregister کردن ماشینها میتوانید در SSH از دستورات زیر استفاده کنید و سپس از طریق پنل esxi آن را register نمایید.
با دستور زیر میتوانید لیستی از ماشینهای رجیستر شده را مشاهده کنید:
vim-cmd /vmsvc/getallvms
سپس میتوانید با این دستور، ماشین دارای IP مورد نظر خود را unregister کنید:
vim-cmd /vmsvc/unregister <id>
اکنون میتوانید وارد پنل ESXI شده، با کلیک راست و انتخاب گزینه Register VM ماشین خود را رجیستر کرده و در دسترس قرار دهید.
پس از رجیستر کردن ماشین، سرور شما در بخش ماشینهای مجازی ESXi نمایش داده میشود و میتوانید آن را باز کنید و از آن استفاده نمایید.پس از اتمام فرایند بازیابی ماشین مجازی، فرمت ESXi و خاموش کردن آن را فراموش نکنید. بعلاوه توصیه میشود ESXi خود را با آخرین پچهای امنیتی موجود به روزرسانی کنید.