محققای Aquasec یه گزارشی منتشر کردن در خصوص یه بدافزار استخراج ارز مونرو که 1200 سرور Redis رو هدف قرار داده.
Redis تقریبا یه ساختار داده موقت در حافظه هستش که بعنوان پایگاه داده ، کش و بروکر پیام مورد استفاده قرار میگیره. در یه کلاستر Redis ، کارها توسط سرور Master و Slave انجام میشه. یه سرور بعنوان Master انتخاب میشه و بقیه Slave هستن. کارها به Master ارسال میشه و اون کارها رو براساس اولویت ، نوع و … به Slaveها ارسال میکنه. (برای درک راحتتر ، ارباب و برده رو در نظر بگیرید).
روش حمله :
Redis بصورت پیش فرض احراز هویتش فعال نیست. دلیلشم اینه که برای داخل شبکه طراحی شده و نباید از طریق اینترنت قابل مشاهده باشه. همونطور هم که بالا گفتیم دو نوع سرور Slave و Master رو داریم. در Redis یه دستوری داریم بنام SLAVEOF که کارش اینه که یه سرور، Slave میکنه. وقتی یه سروری Slave میشه ، با سرور Master همگام میشه ، از جمله دانلود ماژولهای موجود در Master . ماژولها یسری فایل اجرایی از نوع Shared Object هستن که با دستور MODULE LOAD لوود میشن.
مهاجمین سرورهای Redis در معرض دید اینترنت رو شناسایی میکنن. چون بصورت پیش فرض نصب شدن ، در نتیجه احراز هویت ندارن و امکان اجرای دستورات روشون فراهم هستش. مهاجم از طریق دستور SLAVEOF ، اونو بعنوان Slave سروری که تحت کنترلشون هست ، قرار میده. این سرور حالا ماژولهای Master (سرور تحت کنترل مهاجم) رو دانلود میکنه که یکیشون یه بدافزار بعنوان HeadCrab هستش.
نقشه توزیع آلودگی بصورت زیر هستش:
مهاجمین از این بدافزار برای استخراج مونرو استفاده میکنن. کانفیگ مونرو هم از یسری IP قانونی دانلود میشه. با بررسی کیف پول درج شده در کانفیگ ، این بدافزار سالانه حدود 4500 دلار از هر Worker اش درآمد داره.
نکته بعدی در خصوص این بدافزار اینه که ، سازنده اون کاری کرده که حملات و بدافزار قابل شناسایی نباشه. با توجه به اینکه در حافظه اجرا میشه ، اسکن های volume-based رو دور میزنه. همچنین لاگها رو حذف میکنه. همچنین با اتصال با یسری IPهای قانونی ، از لیست سیاه خودش دور میکنه. با بررسی فایل بدافزار در VT متوجه شدن که اونو اصلا بعنوان مخرب هم شناسایی نمیکنه. یکی از دلایلش اینه که این بدافزار صرفا یسری دستورات Redis رو اجرا میکنه. (انگاری یه فریمورک برای Redis هستش)
چرا اسم HeadCrab :
یه نکته جالب در خصوص این بدافزار اسمشه. بازیگر تهدید یه یادداشتی برای محققین قرار داده و اونجا اسم خودش HeadCrab گذاشته. HeadCrab در واقع اسم یه هیولا در بازی HalfLife هستش که خودشو به انسانها وصل میکرد و اونارو زامبی میکرد. تقریبا کاری که این بدافزار روی سرورهای Redis انجام میده.
علاوه بر اشاره به نام بدافزار ، در ادامه مطالبی از وبلاگ این محققا هم قرار داده که مرتبط با بدافزار Redigo هستش که از آسیب پذیری CVE-2022-0543 برای اجرای کد در سرورهای Redis استفاده میکرد.
اقدامات امنیتی :
برای اینکه بتونید در برابر این بدافزار ایمن باشید به موارد زیر دقت کنید :
- در کل Redis برای محیطهای امن ایجاد شده. در نتیجه درست نیست که از طریق اینترنت در معرض دید باشه یا در دسترسی کلاینهای غیر معمتد قرار بگیره.
- اگه از Redis در محیط ابری استفاده میکنید ، از پیکربندی محافظت شده استفاده کنید. در این حالت از آدرس loopback استفاده میکنه و در نتیجه در برابر IP های دیگه ایمن میشه.
- با استفاده از پارامتر Bind اتصالات رو محدود به شبکه خودتون بکیند
- غیر فعال کردن ویژگی slaveof
- اعمال توصیه های امنیتی در وبلاگ امنیتی Redis
نکته ای که وجود داره ، اگه Redis اتون آلوده شده باشه ، این در نظر بگیرید که کل شبکه اتون هک شده و اقدامات لازم بسته به پروتکل امنیتیون رو اجرا کنید.