بدافزار جدید لینوکس با نام SprySOCKS

بدافزار جدید لینوکس با نام SprySOCKS

تاریخ ایجاد

بدافزار جدید لینوکس با نام SprySOCKS در حملات جاسوسی سایبری استفاده می‌شود. در اوایل سال 2021، مقاله‌ای تحقیقی منتشر شد که در آن به بررسی عملکرد یک عامل تهدید به نام "Earth Lusca" پرداخته شد. از زمان انتشار تحقیق اولیه، این گروه فعالیت خود را ادامه داده و حتی در نیمه اول سال 2023 عملیات‌های خود را گسترش داده و به کشورهای مختلف در سراسر جهان حمله کرده است.
یک گروه محقق در حین نظارت بر این گروه، موفق به به‌دست آوردن یک فایل رمزگذاری شده جالب از سرور تهدیدکننده شد و توانست بارگذار اصلی این فایل را در VirusTotal پیدا کرده و با موفقیت آن را رمزگشایی کنند. جالب اینجاست که پس از رمزگشایی، این گروه متوجه شدند که این بارگذار یک درب پشتی جدید برای سیستم‌های لینوکس است که تا آن زمان دیده نشده بود. این درب پشتی جدید به نام "SprySOCKS" نامگذاری شده است، که به سرعت و توانایی اجرایی Trochilusو پیاده‌سازی جدید امنیتی SOCKS اشاره دارد.
تحلیل درب پشتی SprySOCKS نشان می‌دهد که این درب پشتی دارای ویژگی‌های جالبی است. این درب پشتی حاوی نشانگری است که به شماره نسخه آن اشاره دارد. دو نسخه مختلف از درب پشتی SprySOCKS با دو شماره نسخه متفاوت شناسایی شده، که نشان می‌دهد که این درب پشتی همچنان در دست توسعه است. علاوه بر این، پروتکل (C&C) SprySOCKS شبیه به پروتکلی است که توسط درب پشتی RedLeaves که یک تروجان دسترسی از راه دور (RAT) برای سیستم‌های ویندوز است، استفاده می‌شود. این پروتکل شامل دو مؤلفه، بارگذار و بارگذاری کردن بسته‌های اصلی رمزگذاری شده است. بارگذار مسئولیت خواندن، رمزگشایی و اجرای بسته‌های اصلی را دارد.
در نیمه اول سال 2023، Earth Lusca فعالیت خود را ادامه داد و حملات آن به‌طور اساسی بر روی کشورهای جنوب شرق آسیا، آسیای مرکزی و کشورهای بالکان تمرکز داشت (با چندین حمله گسترده به کشورهای لاتین و آفریقایی). اهداف اصلی این گروه ادارات دولتی هستند که در امور خارجی، فناوری و ارتباطات فعالیت دارند.
Earth Lusca در حال حاضر به‌طور فزاینده‌ای به سرورهای عمومی حمله می‌کند. علاوه بر این، ما دیده‌ایم که آنها به‌طور مکرر آسیب‌پذیری‌های N-day مبتنی بر سرور را بهره‌بری می‌کنند، از جمله (اما نه محدود به) آسیب‌پذیری‌های زیر:
•    CVE-2022-40684: یک آسیب‌پذیری دور زدن احراز هویت در Fortinet FortiOS، FortiProxy و FortiSwitchManager
•    CVE-2022-39952: یک آسیب‌پذیری اجرای کد از راه دور بدون نیاز به احراز هویت (RCE) در Fortinet FortiNAC
•    CVE-2021-22205: یک آسیب‌پذیری اجرای کد از راه دور بدون احراز هویت (RCE) در GitLab CE/EE
•    CVE-2019-18935: یک آسیب‌پذیری اجرای کد از راه دور بدون احراز هویت در Progress Telerik UI for ASP.NET AJAX
•    CVE-2019-9670 / CVE-2019-9621: یک دسته از دو آسیب‌پذیری برای اجرای کد از راه دور بدون احراز هویت در Zimbra Collaboration Suite
•    ProxyShell (CVE-2021-34473، CVE-2021-34523v، CVE-2021-31207): یک مجموعه از سه آسیب‌پذیری متصل که اجرای کد از راه دور بدون احراز هویت در Microsoft Exchange را انجام می‌دهند.
Earth Lusca از آسیب‌پذیری‌های سرور برای نفوذ به شبکه‌های قربانیان خود بهره می‌گیرد، پس از آن یک پوسته وب (web shell) را نصب کرده و Cobalt Strike را برای جابجایی جانبی استفاده می‌کند. اسناد و اطلاعات از حساب‌های ایمیل را جابجا می‌کند، همچنین به نصب داده‌های پشتیبان پیشرفته مانند ShadowPad و نسخه لینوکسی Winnti برای انجام فعالیت‌های جاسوسی بلندمدت علیه اهداف خود می‌پردازد.

توصیه‌های امنیتی
1.  به‌روزرسانی سیستم‌ها و نرم‌افزارها:  اطمینان حاصل کنید که تمام سیستم‌ها، نرم‌افزارها و ابزارهای خود به‌روزرسانی شده و با آخرین تصحیحات امنیتی مجهز باشند. به‌خصوص، توجه داشته باشید که به روزرسانی‌های امنیتی مهمی را که توسط تأمین کنندگان نرم‌افزار ارائه می‌شوند، اعمال کنید.
2.  مدیریت آسیب‌پذیری‌ها:  اسکن دوره‌ای آسیب‌پذیری‌های سیستم‌ها و شبکه‌ها را انجام دهید و آسیب‌پذیری‌های شناخته شده را به‌سرعت رفع کنید. SprySOCKS از آسیب‌پذیری‌ها برای حملات خود استفاده می‌کند.
3.  پشتیبانی از داده‌ها:  ایجاد نسخه‌پشتیبان منظم از داده‌های مهم و اطلاعات حیاتی در مواجهه با احتمال حملات و بهره‌برداری‌های ناخواسته به کمک می‌آید.

تحلیل بدافزار
یک فایل با نام libmonitor.so.2 در سرور تحویل Earth Lusca مشاهده شده که ابتدا، به نظر می‌رسید یک فایل باینری است که فقط بایت‌های تصادفی دارد، که شبیه به یک فایل رمزنگاری شده است. نام منحصر به فرد فایل برای جستجو در VirusTotal استفاده شد که امکان شناسایی یک فایل ELF مرتبط با نام "mkmon" را فراهم نماید.
 (SHA256: 65b27e84d9f22b41949e42e8c0b1e4b88c75211cbf94d5fd66edc4ebe21b7359) این فایل ELF برای رمزگشایی فایل libmonitor.so.2 مورد استفاده قرار گرفت و پیامدهای اصلی آن را بازیابی کرد، که نشان می‌دهد "mkmon" لودری است که با libmonitor.so.2 همراه است.
این لودر از ابتدا توسعه داده نشده بود - توسعه‌دهنده آن از یک ابزار نهایی Linux ELF عمومی به نام "mandibule" استفاده کرده بود. پروژه اصلی این ELF ابزاری خط فرمانی است که توانایی تزریق یک بارگیری را به خودش (self-injection) یا به یک پروژه دیگر دارد. به‌عنوان یک ابزار معمولی خط فرمانی، متن استفاده از آن که پارامترهای پشتیبانی شده را فهرست می‌کند، چاپ می‌کند. این درزنده اصلی همچنین پیام‌های اشکال‌زدایی متنوعی را برای آگاهی کاربر از پیشرفت درزنده چاپ می‌کند.
 

SprySOCKS

شکل 1. لودر با اطلاعات اشکال زدایی توزیع شده است. توجه داشته باشید که بخش ".debug_*" وجود دارد

تهدید کننده از پروژه mandibule به‌عنوان پایه برای لودر بدافزار خود استفاده کرد. خالق پروژه متن استفاده از اسکرین استفاده و قابلیت تزریق به پروسه‌های دیگر را حذف کرده و سپس یک تابع برای بارگیری و رمزگشایی مرحله دوم اضافه کرده بود.

SprySOCKS

 شکل 2. پیام های اشکال زدایی که هنگام اجرای لودر نمایش داده می شوند

پیام‌های اشکال‌زدایی نمایش داده شده در شکل 2 دارای دو نشان‌گر متمایز هستند. نشان‌گر ">" از پروژه اصلی mandibule استفاده شده است، در حالی که نشان‌گرهای "[+]" یا "[-]" پیام‌های اشکال‌زدایی اضافه شده به لودر توسط تهدید کننده می‌باشند.
نام فرآیند لودر توسط دستور prctl به "kworker/0:22" تنظیم شده است. به‌طور معمول، kworker یک فرآیند نمادگذاری‌شده برای رشته‌های کارگر هستند. اما در این حالت، نام "kworker" هیچ ارتباطی با رشته‌های worker هسته ندارد. به جای این، لودر از این نام سوءاستفاده می‌کند تا از شناسایی جلوگیری کند، وقتی کاربر تمام وظایف در حال اجرا را از طریق دستورهایی مانند ps یا top فهرست می‌کند.

SprySOCKS

شکل 3. نام فرآیند روی "kworker/0:22" تنظیم شده است

لودر دو پارامتر خط فرمان را قبول می‌کند: مسیر فایل مرحله دوم رمزنگاری شده و پرچم خودپاک‌شونده (self-delete). مرحله دوم با یک رمزگذاری AES-ECB رمزنگاری شده است و رمز عبور به‌صورت ثابت در لودر وارد شده است.
 

SprySOCKS

شکل 4. فهرست فرآیندهای "kworker*" در یک ماشین آلوده. فرآیند برجسته شده لودر تحلیل شده است

لودر دو پارامتر خط فرمان را قبول می‌کند: مسیر به فایل مرحله دوم رمزنگاری شده و پرچم خودپاک‌شونده (self-delete). مرحله دوم با یک رمزگذاری AES-ECB رمزنگاری شده است و رمز عبور به‌صورت ثابت در لودر وارد شده است.
لودر نیز مسئولیت تنظیم بقایا (persistence) را بر عهده دارد. ابتدا خود را و مرحله دوم رمزنگاری شده را به دایرکتوری /usr/sbin/ کپی می‌کند (لطفاً یادداشت‌های اشکال‌زدایی "[+] rename loader ok" و "[+] rename server ok" را مشاهده کنید). سپس از chkconfig یا systemd برای شروع لودر به‌عنوان یک سرویس استفاده می‌کند. اگر پرچم خودپاک‌شونده به "1" تنظیم شده باشد، آنگاه لودر اصلی اجرا شده و فایل‌های مرحله رمزنگاری شده همچنین حذف می‌شوند.
 

SprySOCKS

شکل 5. تابع رمزگشایی مرحله دوم

اجزای SprySOCKS
در هنگام بررسی مرحله دوم رمزنگاری شده، رشته‌های قابل مشاهده نشان می‌دهند که این ماژول به‌صورت استاتیک با پروژه HP-Socket که یک چارچوب شبکه با عملکرد بالا و منشأ چینی است، کامپایل شده است.
 

 SprySOCKS6

 شکل 6. مراجع به HP-Socket در میان رشته‌های قابل مشاهده

مراحل مقدماتی نشان می‌دهد که یک رمز عبور AES-ECB به‌صورت ثابت برای رمزنگاری ارتباط با سرور C&C (کنترل و کنترل) استفاده شده است.
 

SprySOCKS

شکل 7. رمز عبور AES برای ارتباط با C&C

آدرس و پورت C&C نیز در ماژول به‌صورت ثابت وارد شده است، اما رمزنگاری نشده و به‌صورت متن ساده قابل مشاهده است.
 

SprySOCKS

شکل 8. تنظیمات سرور و پورت C&C

ارتباط C&C شامل بسته‌هایی است که از طریق پروتکل TCP (پروتکل کنترل انتقال) ارسال می‌شوند. هر بسته دارای سربرگی با طول 0x12 بایت است، که پس از آن پیامی رمزنگاری شده با AES-ECB و کدگذاری پایه 64 دنبال می‌شود. مشابه جدول B-2 در تجزیه و تحلیل قبلی بدافزار RedLeaves، سربرگ شامل برخی از مقادیر تصادفی و ثابت است، به علاوه طول بسته (در شکل 9 به رنگ آبی مشخص شده است).
 

SprySOCKS

شکل 9. نمونه‌ای از بسته‌ای که از ماشین قربانی به سرور C&C ارسال می‌شود

مقدار ثابت مورد استفاده در نسخه اصلی Trochilus 0xAFAFBFBF است، در حالی که در نسخه RedLeaves مقدار آن 0xBFD9CBAE است.

SprySOCKS

شکل 10. مقدار ثابت 0xACACBCBC; در بسته های ارسالی در افست 4 تا 7 رخ می دهد

پس از رمزگشایی و رمزگذاری پیام، کلمات کلیدی مانند "__handler"، "__msgid"، "__serial" و "clientid" آشکار می‌شوند. برخی از این کلمات کلیدی در Trochilus قابل یافتن هستند، اما بیشتر از همه، این پیام‌ها به‌طور نزدیک به پروتکل ارتباطی RedLeaves شباهت دارند.
 

SprySOCKS

شکل 11. پیام رمزگشایی و رمزگذاری شده AES-ECB

این RAT چندین دستور پشت‌در را اجرا می‌کند، از جمله جمع‌آوری اطلاعات سیستم، شروع یک شل تعاملی، لیست اتصالات شبکه، ایجاد پروکسی SOCKS، بارگذاری و دانلود فایل‌ها، و دیگر عملیات پایه فایل (لیست‌کردن، حذف، تغییرنامه‌دهی و ایجاد دایرکتوری). جدول 1 شناسه‌های پیام و توضیحات تقریبی مربوط به توابع پیام را نشان می‌دهد.


جدول 1. فهرست پیام های مدیریت شده و توضیح عملکرد آنها

دستورالعمل شماره پیام
Gets machine information 0x09
Starts interactive shell 0x0a
Writes data to interactive shell 0x0b
Stops interactive shell 0x0d
Lists network connections (parameters: “ip”, “port”, “commName”, “connectType”) 0x0e
Sends packet (parameter: “target”) 0x0f
Sends initialization packet 0x14, 0x19
Generates and sets clientid 0x16
Lists network connections (parameters: “tcp_port”, “udp_port”, “http_port”, “listen_type”, “listen_port”) 0x17
Creates SOCKS proxy 0x23
Terminates SOCKS proxy 0x24
Forwards SOCKS proxy data 0x25
Uploads file (parameters: “transfer_id”, “size”) 0x2a
Gets file transfer ID 0x2b
Downloads file (parameters: “state”, “transferId”, “packageId”, “packageCount”, “file_size”) 0x2c
Gets transfer status (parameters: “state”, “transferId”, “result”, “packageId”) 0x2d
Enumerates files in root / 0x3c
Enumerates files in directory 0x3d
Deletes file 0x3e
Creates directory 0x3f
Renames file 0x40
No operation 0x41
Is related to operations 0x3c – 0x40 (srcPath, destPath) 0x42

منبع خبر:

https://www.trendmicro.com/en_us/research/23/i/earth-lusca-employs-new-linux-backdoor.html