سرورهای لینوکسی آسیب پذیر و دارای پیکربندی نادرست از 3 تا 4 سال گذشته تاکنون هدف یک حمله بدافزاری در حال انجام به نام perfctl قرار گرفتهاند. این بدافزار به طور فعال به دنبال بیش از بیست هزار نوع پیکربندی نادرست برای سوء استفاده از سرورهای لینوکسی بوده است.
بدافزار perfctl یک ماینر ارز دیجیتال و نرم افزار proxyjacking را بر روی سرور هدف مستقر میکند. این بدافزار از چندین تکنیک پیچیده استفاده مینماید.
به گفته محققان Aqua Nautilus، هزاران سرور در سراسر جهان تحت نفوذ این بدافزار قرار گرفتهاند و به نظر میرسد که Perfctl، هر سرور لینوکس آسیب پذیر یا دارای پیکربندی اشتباه متصل به اینترنت را مورد نفوذ قرار داده باشد.
ویژگیهای بدافزار perfctl
بدافزار perfctl دارای چندین ویژگی است از جمله:
- از روت کیت (rootkit)ها برای پنهان کردن حضور خود استفاده میکند.
- هنگامی که یک کاربر جدید وارد سرور میشود، بلافاصله تمام فعالیتهای پر سر و صدا و شک برانگیز را متوقف میسازد تا زمانی که سرور مجدداidle شود.
- از سوکت یونیکس برای ارتباطات داخلی و از TOR برای ارتباطات خارجی استفاده میکند.
- Perfctlپس از اجرا، باینری خود را حذف میکند و به صورت بی سر و صدا در پس زمینه به عنوان یک سرویس اجرا میشود.
- با استفاده از نامهای فریبنده، خود را از حافظه به مکانهای مختلف بر روی دیسک کپی میکند.
- Perfctl، بکدوری را بر روی سرور باز میکند و به ارتباطات TOR گوش میدهد.
- تلاش میکند از آسیب پذیری Polkit (CVE-2021-4043) برای افزایش سطح دسترسی سوء استفاده کند.
در تمامی حملات، مشاهده شده است که بدافزار perfctl برای اجرای کریپتو ماینر (cryptominer) مورد استفاده قرار میگیرد و در برخی موارد نیز نرمافزار proxy-jacking را اجرا میکند.
perfctl همانطور که گفته شد، از یک نقص امنیتی در Polkit (با شناسه CVE-2021-4043 و نام مستعار PwnKit) برای افزایش سطح دسترسی و استقرار یک ماینر به نام perfcc استفاده میکند.
دلیل نام “perfctl” به نظر می رسد تلاشی عمدی برای فرار از شناسایی و ترکیب شدن با فرآیندهای قانونی سیستم باشد، چرا که “perf” به ابزار نظارت بر عملکرد لینوکس اشاره دارد و “ctl” پسوندی است که به معنای کنترل در ابزارهای مختلف خط فرمان مانند systemctl، timedatectl و rabbitmqctl استفاده میشود.
زنجیره حمله بدافزار perfctl
پس از بهره برداری از یک آسیب پذیری (مانند CVE-2021-4043) و یا یک پیکربندی نادرست، پیلود اصلی از یک سرور HTTP (از یک نمونه آسیبپذیر Apache RocketMQ) که توسط مهاجم کنترل میشود دانلود میگردد.
پیلود اصلی در اینجا httpd نام دارد که پس از اجرا، خود را از حافظه به یک مکان جدید در دایرکتوری “tmp/” کپی و باینری جدید را اجرا میکند، فرآیند اصلی را خاتمه میدهد و باینری اولیه را در تلاش برای پوشاندن ردپای خود حذف میکند.
بدافزار perfctl علاوه بر کپی کردن خود در مکانهای دیگر و گذاشتن نامهای به ظاهر عادی و مشابه فرآیندهای سیستمی بر روی خود، به دنبال آن است که کمتر مشکوک به نظر برسد و شناسایی نگردد.
بدافزار perfctl در حمله بررسی شده توسط sh اجرا شده است. از این رو، نام بدافزار از httpd به sh تغییر یافته است. بدافزار در این مرحله، هم به عنوان یک dropper (نصب کننده بدافزار) و هم به عنوان یک فرآیند فرماندهی و کنترل (C2) لوکال عمل میکند. این بدافزار حاوی یک اکسپلویت برای CVE-2021-4043 است که سعی دارد آن را اجرا کند تا سطح دسترسی روت را بر روی سرور بدست آورد.
بدافزار perfctl به کپی کردن خود از حافظه در دهها مکان دیگر با نامهایی که به عنوان فایلهای سیستمی متداول ظاهر میشوند، ادامه میدهد. perfctl همچنین یک روت کیت و چند ابزار محبوب لینوکس را مستقر میکند که برای سرویس به عنوان روت کیت کاربر (یعنی ldd، lsof) اصلاح شدهاند.
یک کریپتو ماینر نیز بر روی سیستم قرار داده میشود و در تعدادی از اجراها، مشاهده شده است که برخی از نرم افزارهای proxy-jacking از یک سرور راه دور بر روی سیستم مورد نظر منتقل و اجرا میشوند.
این بدافزار به عنوان بخشی از عملیات فرماندهی و کنترل خود، یک سوکت یونیکس را باز میکند، دو دایرکتوری را در زیر پوشه tmp/ ایجاد و دادههایی را که بر عملکرد آن تأثیر میگذارند در آنجا ذخیره میکند.
این دادهها شامل رویدادهای میزبان، مکانهای کپیهای خود، نام فرآیندها، لاگهای ارتباطی، توکنها و اطلاعات لاگ اضافی است. علاوه بر این، بدافزار از متغیرهای محیطی برای ذخیره دادهها استفاده میکند که بر اجرا و رفتار آن تأثیر میگذارند.
همه باینریها به گونه ای بستهبندی و رمزگذاری شدهاند که نشان دهنده تلاشهای قابل توجه برای دور زدن مکانیزمهای امنیتی و جلوگیری از مهندسی معکوس آنها است. این بدافزار همچنین از تکنیکهای پیشرفته مانند تعلیق فعالیت خود در صورت شناسایی کاربر جدید در فایلهای btmp یا utmp و پایان دادن به هر بدافزار مشابه برای حفظ کنترل سیستم آلوده و تحت نفوذ استفاده میکند.
همانطور که قبلا ذکر شد، فایلهای زیادی بر روی دیسک و در درجه اول در دایرکتوریهای tmp/، /usr، و root/ نوشته یا اصلاح میشوند.
راهکارهای مقابله با بدافزار Perfctl
پچ کردن به موقع آسیب پذیریها: اطمینان حاصل کنید که تمام آسیب پذیریها وصله شدهاند. به ویژه اپلیکیشنهایی مانند RocketMQ servers و CVE-2021-4043 (Polkit). تمامی نرم افزارها و کتابخانههای سیستمی را به روز نگه دارید.
محدود کردن اجرای فایل: noexec را روی /tmp، /dev/shm و دیگر دایرکتوریهای قابل نوشتن تنظیم کنید تا از اجرای باینریها از این مکانها جلوگیری کنید.
غیرفعال سازی سرویسهایی که استفاده نمیشوند: هر سرویسی را که مورد نیاز نیست غیرفعال کنید، بهویژه سرویسهایی که ممکن است سیستم را در معرض دید مهاجمان خارجی قرار دهند، مانند سرویسهای HTTP.
پیاده سازی مدیریت دسترسی محدود (Strict Privilege Management): دسترسی root به فایلها و دایرکتوریهای بحرانی را محدود کنید. از کنترل دسترسی مبتنی بر نقش ([1]RBAC) برای محدود نمودن مواردی که کاربران و فرآیندها میتوانند به آن دسترسی داشته باشند یا تغییر دهند، استفاده کنید.
تقسیمبندی شبکه: سرورهای مهم را از اینترنت جدا کنید و یا از فایروالها برای محدود کردن ارتباطات خروجی، بهویژه ترافیک TOR یا اتصال به منابع استخراج ارز دیجیتال استفاده کنید.
استقرار Runtime Protection (حفاظت در زمان اجرا): از ابزارهای پیشرفته ضد بدافزار و تشخیص رفتار استفاده کنید تا روت کیتها، کریپتو ماینرها و بدافزارهای بدون فایل مانند perfctl را شناسایی کنند.
[1] Role-Based Access Control