خانه » نفوذ بدافزار DinodasRAT به سرورهای لینوکس در سراسر جهان

نفوذ بدافزار DinodasRAT به سرورهای لینوکس در سراسر جهان

توسط Vulnerbyte
219 بازدید
بکدور DinodasRAT

DinodasRAT که با نام XDealer نیز شناخته می‌شود، یک بکدور چند پلتفرمی است که به زبان C++  نوشته شده است و طیف وسیعی از قابلیت‌ها را ارائه می‌دهد. این RAT (تروجان دسترسی از راه دور) به عامل مخرب اجازه می‌دهد تا داده‌های حساس را از رایانه هدف نظارت و جمع‌آوری کند. نسخه ویندوزی این RAT در حمله علیه نهادهای دولتی در کشور گویان مورد استفاده قرار گرفته و توسط محققان ESET در اکتبر ۲۰۲۳ به عنوان عملیات Jacana مستند شده است.

عملیات Jacana
شکل ۱- جریان سازش عملیات Jacana

پس از انتشار ESET، نسخه لینوکس DinodasRAT کشف گردید. نمونه شواهد کشف شده نشان می‌دهد که این نسخه (V10 طبق سیستم نسخه‌سازی مهاجمان) ممکن است در سال 2022 شروع به کار کرده باشد، اگرچه اولین نوع لینوکس شناخته شده (V7) آن که هنوز به طور عمومی توضیح داده نشده است، به سال 2021 باز می‌گردد. ما در این تحلیل، با استناد به داده های آزمایشگاه تحقیقاتی کسپرسکی، جزئیات فنی یک ایمپلنت لینوکس مورد استفاده توسط مهاجمان را مورد بحث قرار خواهیم داد.

 

بررسی اجمالی نفوذ اولیه

ایمپلنت لینوکس DinodasRAT، عمدتاً توزیع‌های مبتنی بر Red Hat و اوبونتو (Ubuntu) لینوکس را مورد هدف قرار می‌دهد. بدافزار هنگامی که برای اولین بار اجرا می‌شود، یک فایل مخفی در همان دایرکتوری فایل اجرایی، با فرمت [executable_name].mu” .” ایجاد می‌کند. این فایل به ‌عنوان نوعی mutex استفاده می‌شود تا اطمینان حاصل گردد که ایمپلنت فقط یک نمونه را اجرا می‌کند و تنها در صورتی به آن اجازه می‌دهد که این فایل را با موفقیت ایجاد کند.

بکدور، تداوم دسترسی و راه اندازی خود را به صورت زیر به انجام می‌رساند:

DinodasRAT
شکل ۲- کد اصلی بکدور

بکدور، تداوم دسترسی را ایجاد کرده و با دنبال کردن مراحل زیر آغاز به کار می‌کند:

  1. اجرای مستقیم بدون هیچ آرگومانی؛
  • ابتدا بدون هیچ آرگومانی اجرا می‌گردد که باعث می‌شود با فراخوانی تابع ” daemon” لینوکس در پس زمینه اجرا شود.
  1. ایجاد تداوم دسترسی در سیستم آلوده و تحت نفوذ با استفاده از اسکریپت های راه اندازی SystemV یا SystemD (در بخش بعدی به تفصیل به آن پرداخته شده است).
  2. اجرای مجدد خود با ID فرآیند والد (PPID) به عنوان آرگومان.
  • فرآیند تازه ایجاد شده (child یا فرزند) نفوذ بکدور را در حالی که فرآیند والد منتظر می‌ماند ادامه می‌دهد.
  • این تکنیک نه تنها به Dinodas این امکان را می‌دهد تا تأیید کند که آیا درست اجرا شده است یا خیر، بلکه تشخیص آن را با ابزارهای دیباگینگ و مانیتورینگ سخت‌تر می‌کند.

 

تولید شناسه قربانی و تداوم دسترسی

بکدور پیش از برقراری ارتباط با سرور C2، اطلاعاتی در مورد دستگاه آلوده و زمان نفوذ جمع آوری می‌کند تا یک شناسه منحصر به فرد (ID) برای دستگاه قربانی ایجاد کند. قابل ذکر است، مهاجمان هیچ داده خاصی از کاربر را برای تولید این UID جمع آوری نمی‌کنند. UID معمولاً شامل موارد زیر است:

  • تاریخ نفوذ؛
  • هش MD5 خروجی فرمان dmidecode (گزارش مفصلی از سخت افزار سیستم آلوده)؛
  • شماره تولید شده به صورت تصادفی به عنوان ID ؛
  • نسخه بکدور.

 

شناسه منحصر به فرد دارای فرمت Linux_{DATE}_{HASH}_{RAND_NUM}_{VERSION} است.

تولید شناسه منحصر به فرد ماشین
شکل ۳- تولید شناسه منحصر به فرد ماشین

ایمپلنت در مرحله بعد، تمام اطلاعات لوکال مربوط به شناسه قربانی، سطح دسترسی و سایر جزئیات مرتبط را در یک فایل مخفی به نام etc/.netc.conf” /” ذخیره می‌کند. این فایل پروفایل، حاوی متادیتاهای جمع آوری شده فعلی بکدور است. اگر این فایل وجود نداشته باشد، Dinodas  آن را با رعایت ساختار Section (بخش) و Key:Value ایجاد می‌کند.

پروفایل DinodasRAT
شکل ۴- پیکربندی پروفایل DinodasRAT

ایمپلنت همچنین تضمین می‌کند که هرگونه دسترسی به این فایل یا به خودش (هنگام خواندن مسیر فایل خود)، زمان «دسترسی» را در ساختار stat ، که حاوی timestamp  دسترسی یک فایل معین در سیستم فایل است، به‌روزرسانی نمی‌کند و این کار را با استفاده از فرمان ” touch” با پارامتر “-d” برای اصلاح این متادیتا انجام می‌دهد.

جایگزینی کد زمان دسترسی فایل اصلی
شکل ۵- جایگزینی کد زمان دسترسی فایل اصلی
DinodasRAT
شکل ۶- زمان دسترسی اصلاح شده در فایل اجرایی بکدور

نسخه لینوکس DinodasRAT از دو نسخه Systemd و SystemV برای ایجاد تداوم دسترسی در سیستم تحت نفوذ استفاده می‌کند. هنگامی که بدافزار راه اندازی می‌گردد، تابعی برای تعیین نوع توزیع لینوکس که قربانی اجرا می‌کند فراخوانی می‌شود.

در حال حاضر دو نوع توزیع RedHat و Ubuntu 16/18 وجود دارد که ایمپلنت بر اساس خواندن proc/version” /”، آنها را مورد هدف قرار می‌دهد. با این حال، این بدافزار می‌تواند هر توزیعی را که از یکی از نسخه‌های بالا از مدیران سرویس سیستم (system service managers) پشتیبانی می‌کند، آلوده سازد. DinodasRAT پس از آن که سیستم شناسایی شد، یک اسکریپت init مناسب را نصب می‌کند که تداوم دسترسی را برای RAT فراهم می‌آورد. این اسکریپت پس از تکمیل راه اندازی شبکه اجرا می‌شود و بکدور راه اندازی می‌گردد.

ثبت سرویس SystemD
شکل ۷- ثبت سرویس SystemD

اسکریپت‌های راه‌اندازی سرویس در سیستم‌های مبتنی بر RedHat و اوبونتو، به منظور بررسی تداوم دسترسی و حضور باینری chkconfig مورد استفاده واقع می‌شوند. این راهی است برای نشان دادن اینکه مقداردهی اولیه به جای Systemd با SysV انجام می‌شود. ایمپلنت، در صورت عدم وجود اسکریپت مورد نظر، فایل اسکریپت etc/rc.d/rc.local” /” را باز و یا ایجاد می‌کند و خود را به زنجیره اجرایی که بکدور را در طول اولیه سازی سیستم اجرا می‌نماید، اضافه می‌کند. از سوی دیگر، در صورت وجود اسکریپت مورد نظر، مسیر SysV مشخص می‌شود و بدافزار اسکریپت‌های تداوم دسترسی را در etc/init.d” /” ایجاد می‌کند.

 

ارتباطات C2

نسخه لینوکس DinodasRAT مانند نسخه ویندوز از طریق TCP یا UDP با C2 ارتباط برقرار می‌کند. دامنه C2 در باینری هارکد شده است:

DinodasRAT
شکل ۸- سرور و پورت C2 در ایمپلنت هاردکد شده‌اند

DinodasRAT یک بازه زمانی زمان‌بندی شده برای ارسال اطلاعات به C2 دارد، اگرچه این یک فاصله زمانی ثابت برای همه کاربران یا تمامی اتصالات نیست. اگر کاربری که ایمپلنت را اجرا می‌کند root باشد (EUID = 0)، ایمپلنت منتظر نمی‌ماند تا اطلاعات را به C2 بازگرداند.

در مورد غیر superuser  نیز که پیکربندی آن روی checkroot  تنظیم شده است، ایمپلنت دو دقیقه برای یک انتظار کوتاه (پیش‌فرض) و 10 ساعت برای یک انتظار طولانی منتظر خواهد ماند. انتظار طولانی زمانی آغاز می‌شود که یک اتصال راه دور به سرور آلوده از یکی از آدرس های IP پیکربندی شده C2 وجود داشته باشد.

ایمپلنت برای برقراری ارتباط با سرور C2 و ارسال هرگونه اطلاعات، از یک ساختار پکت شبکه با فیلدهای زیاد پیروی می کند، اما در اینجا فیلدهای ساختار ارائه شده است:

نسخه ساده شده پکت شبکه Dinodas
شکل ۹- نسخه ساده شده پکت شبکه Dinodas

در اینجا لیستی از دستورات C2 وجود دارد که DinodasRAT آنها را تشخیص می‌دهد:

ID

تابع

دستور

0x02

DirClass

محتوای دایرکتوری را فهرست می‌کند.

0x03

DelDir

دایرکتوری را حذف می‌کند.

0x05

UpLoadFile

یک فایل را به C2 آپلود می‌کند.

0x06

StopDownLoadFile

آپلود فایل را متوقف می‌کند.

0x08

DownLoadFile

فایلی را از راه دور به سیستم دانلود می‌کند.

0x09

StopDownFile

دانلود فایل را متوقف می‌کند.

0x0E

DealChgIp

آدرس سرور C2 را تغییر میدهد.

0x0F

CheckUserLogin

کاربران لاگین شده را بررسی می‌کند.

0x11

EnumProcess

فرآیندهای در حال اجرا را می‌کند.

0x12

StopProcess

یک فرآیند در حال اجرا را Kill می‌کند.

0x13

EnumService

از chkconfig استفاده می‌کند و تمام سرویس های موجود را شمارش می‌کند.

0x14

ControlService

یک سرویس موجود را کنترل می‌کند. اگر 1 به عنوان آرگومان ارسال شود، یک سرویس را شروع می کند، 0 آن را متوقف می کند، در حالی که 2 متوقف می شود و سرویس را حذف می کند.

0x18

DealExShell

دستور shell را اجرا کرده و خروجی آن را به C2 ارسال می‌کند.

0x19

ExecuteFile

یک مسیر فایل مشخص شده را در یک thread  جداگانه اجرا می‌کند.

0x1A

DealProxy

ارتباط پروکسی C2 از طریق یک پراکسی راه دور.

0x1B

StartShell

یک shell را برای تعامل با مهاجم (عامل تهدید) ایجاد می‌کند.

0x1C

ReRestartShell

shell ذکر شده قبلی را مجددا راه اندازی می‌کند.

0x1D

StopShell

اجرای shell فعلی را متوقف می‌کند.

0x1E

WriteShell

دستورات را در shell فعلی نوشته و یا در صورت لزوم یکی ایجاد می‌کند.

0x27

DealFile

نسخه جدیدی از ایمپلنت را دانلود و راه اندازی می‌کند.

0x28

DealLocalProxy

“ok ” را ارسال می‌کند.

0x2B

ConnectCtl

نوع اتصال را کنترل می‌کند.

0x2C

ProxyCtl

نوع پروکسی را کنترل می‌کند.

0x2D

Trans_mode

حالت انتقال فایل (TCP/UDP) را تنظیم یا دریافت می‌کند.

0x2E

Uninstall

ایمپلنت را حذف نصب و هرگونه آبجکتی را از سیستم پاک می‌کند.

DinodasRAT
شکل ۱۰- دستور حذف خود از سیستم آلوده و تحت نفوذ

رمزگذاری

نسخه لینوکس DinodasRAT نیز ویژگی‌های رمزگذاری را با نسخه ویندوز به اشتراک می‌گذارد. DinodasRAT برای رمزگذاری و رمزگشایی ارتباطات بین ایمپلنت و C2 و همچنین رمزگذاری داده ها، از توابع کتابخانه libqq qq_crypt Pidgin استفاده می‌کند. این کتابخانه از الگوریتم رمزگذاری کوچک (TEA) در حالت CBC برای رمزگذاری و رمزگشایی داده ها استفاده می‌نماید که انتقال آن را بین پلتفرم ها نسبتاً آسان می‌کند. ایمپلنت لینوکس همچنین دو مورد از کلیدهای مورد استفاده در نسخه ویندوز را به اشتراک می‌گذارد:

For C2 encryption:   A1 A1 18 AA 10 F0 FA 16 06 71 B3 08 AA AF 31 A1

For name encryption: A0 21 A1 FA 18 E0 C1 30 1F 9F C0 A1 A0 A6 6F B1

زیرساخت

دامنه

IP

اولین مشاهده

ASN

ثبت

update.centos-yum[.]com

199.231.211[.]19

May 4, 2022

18978

Name.com, Inc.

به نظر می رسد زیرساختی که در حال حاضر توسط نسخه های لینوکس DinodasRAT استفاده می‌شود، در زمان تجزیه و تحلیل این ایمپلنت آماده و راه اندازی شده است. ما یک آدرس IP را شناسایی کردیم که برای دامنه C2 هر دو نوع ویندوز و لینوکس قابل تجزیه است. نسخه ویندوز DinodasRAT از دامنه update.microsoft-settings[.]com استفاده می‌کند که به آدرس 199.231.211[.]19 اشاره دارد. این آدرس IP همچنین به update.centos-yum[.]com تغییر می‌کند که (به اندازه کافی جالب است) از همان الگوی زیر دامنه و دامنه به روز رسانی سیستم عامل استفاده می‌نماید.

 

قربانیان

این تهدید در داده‌های تله‌متری و پایش مستمر از اکتبر 2023، مشاهده شده است که بیشترین کشورها و مناطق تحت تأثیر چین، تایوان، ترکیه و ازبکستان می‌باشند.

 

سخن پایانی

ESET در اکتبر 2023، مقاله ای در مورد کمپینی به نام Operation Jacana (عملیات Jacana) منتشر کرد که کاربران ویندوز را مورد هدف قرار داده است. ما اندکی بعد متوجه شدیم که اپراتورهای Jacana توانایی آلوده سازی زیرساخت‌های لینوکس را با یک نوع جدید و ناشناخته به نام DindoasRAT دارند. این نوع جدید اطلاعات کاربر را جمع آوری نمی‌کند اما در مقابل، اطلاعات مربوط به سخت‌افزار را جمع‌آوری می‌کند که برای تولید یک UID استفاده می‌شود. این خود نشان دهنده آن است که استفاده اصلی DinodasRAT به ‌جای شناسایی، ایجاد و حفظ دسترسی از طریق سرورهای لینوکس است. این بکدور کاملاً کاربردی است و امکان کنترل کامل بر دستگاه آلوده را برای اپراتور استخراج داده و جاسوسی فراهم می‌آورد.

 

شاخص‌های نفوذ

مبتنی بر هاست:

مبتنی بر شبکه:

update.centos-yum[.]com (199.231.211[.]19)

منبع

همچنین ممکن است دوست داشته باشید

پیام بگذارید