محققان شرکت Elastic Security، بدافزار BLOODALCHEMY را در حمله به سازمانهای دولتی در جنوب و جنوب شرق آسیا شناسایی کردند.
BloodAlchemy در اکتبر 2023، به عنوان یک RAT جدید (تروجان دسترسی از راه دور) نامگذاری شد. تحقیقات عمیقتر نشان داد که BloodAlchemy یک بدافزار کاملاً جدید نیست، بلکه نسخه تکامل یافته و بهروزرسانی شده تروجان Deed RAT و جایگزین بدافزار ShadowPad میباشد.
ShadowPad یک خانواده بدافزار بدنام است که در حملات سایبری توسط گروههای APT41، APT23 و APT17 استفاده شده است. این بدافزار اولین بار در یک حمله زنجیره تامین نرم افزار در جولای 2017 گزارش گردید. تروجان Deed RAT نیز حداقل از سال 2017 فعال میباشد و شباهت کد بالایی با ShadowPad دارد.
بدافزار BloodAlchemy بر اساس تحلیلهای آزمایشگاه Elastic Security ، دارای ویژگیهای متعددی مانند استفاده از باینریهای قانونی برای بارگیری DLLهای مخرب، حالتهای اجرای چندگانه، مکانیزم تداوم دسترسی و استفاده از پروتکلهای ارتباطی مختلف به هنگام برقراری ارتباط با سرور فرماندهی و کنترل (C2) است.
این ویژگیها بیانگر آن است که BloodAlchemy یک نوع جدید از Deed RAT میباشد که توسط مهاجمان در حال توسعه است. اطلاعات عمومی در خصوص بدافزارهای ShadowPad، Deed RAT و BloodAlchemy در تصویر زیر نشان داده است:
بردار نفوذ اولیه و جریان نفوذ
مهاجمان از یک مجموعه فایل برای آلوده سازی اهداف به بدافزار BloodAlchemy با در اختیار گرفتن یک حساب VPN استفاده کردهاند. شکل 2 جریان نفوذ را نشان میدهد.
مجموعه فایلهای مخرب شامل سه فایل BrDifxapi.exe، BrLogAPI.dll و DIFX. میباشند. این فایلها در دایرکتوری C:\windows ذخیره میشوند. علاوه بر این، یک تسک زمانبندی شده (C:\Windows\System32\Tasks\Dell\BrDifxapi) به منظور حفظ و تداوم دسترسی ایجاد میگردد.
تجزیه و تحلیل DLLهای مخرب
هنگامی که BrDifxapi.exe بر روی میزبان آلوده اجرا میشود، از تکنیک بارگذاری جانبی DLL برای بارگذاری یک فایل DLL مخرب به نام BrLogAPI.dll در همان دایرکتوری استفاده میکند. این DLL نیز فایل مخرب دیگری به نام DIFX را بارگیری کرده و shellcode را از آن رمزگشایی و در حافظه اجرا میکند. الگوریتم رمزگذاری مورد استفاده، AES128 (حالت CBC) میباشد و کلید آن نیز 16 بایت اول فایل DIFX است.
تحلیل و بررسی shellcode
shellcode رمزگشایی شده حاوی فرم رمزگذاری و فشرده شده BloodAlchemy است. این فرآیند رمزگشایی سفارشی بر اساس الگوریتم هش FNV-1a و فشرده سازی lznt1 میباشد.
پیلود BloodAlchemy دارای یک فرمت داده منحصر به فرد است که تا حدودی شبیه به فرمت PE میباشد. ساختار دادههای فرمت سفارشی در جدول زیر ارائه شده است.
داده | توضیحات | آفست |
45 AB 45 AB | عدد جادویی | 0x00 |
0x10 | plugin id | 0x04 |
0x698c | نقطه ورود | 0x08 |
0x400000 | پایه اصلی | 0x0c |
0 | افست مطلق | 0x10 |
0x17000 | سایز virtualalloc | 0x14 |
0x16fab | سایز داده های خام | 0x18 |
0x163bc | سایز ناشناخته | 0x1c |
0x1000 | پایه کد؟ | 0x20 |
0x0 | بخش 1: آدرس مجازی | 0x24 |
0x50 | بخش 1: آدرس داده های خام | 0x28 |
0x10fa0 | بخش 1: اندازه داده های خام | 0x2c |
0x11000 | بخش 2: آدرس مجازی | 0x30 |
– | – | 0x34 |
هنگامی که پیلود BloodAlchemy بازیابی شد، shellcode نیز این فرمت سفارشی را برای استقرار پیلود نهایی در حافظه تفسیر کرده و آن را به عنوان بدافزار اجرا میکند (شکل ۷).
تحلیل و بررسی پیلود (BloodAlchemy)
ساختار
BloodAlchemy دارای چندین ویژگی است که معمولاً در سایر بدافزارها مشاهده نمیشود. یکی از این ویژگیها مقدار ” run mode ” یا «حالت اجرا» است که دارای ۷ آرگومان میباشد. جدول زیر مقادیر هر حالت اجرا و رفتارهای مربوطه را بطور خلاصه بیان میکند:
run mode (حالت اجرا) | رفتار مربوط به هر حالت اجرا |
0 | ارتباط با C2 و پیاده سازی عملکرد بکدور؛ ایجاد یک فرآیند مشخص برای تزریق کد (code injection)؛ تزریق کد به فرآیندهای خاص و مشخص شده؛ آنتی دیباگینگ؛ تکنیکهای آنتی سندباکس (anti-sandbox)؛ تداوم دسترسی. |
1 | ارتباط با C2 و پیاده سازی عملکرد بکدور |
2 | ایجاد thread برای ارتباط با C2 و پیاده سازی عملکرد بکدور |
3 | ارتباط با C2 و پیاده سازی عملکرد بکدور؛ تزریق کد به فرآیندهای خاص و مشخص شده؛ آنتی دیباگینگ؛ تکنیکهای آنتی سندباکس؛ تداوم دسترسی. |
4 | ایجاد فرآیند مشخص شده برای تزریق کد |
5 | ایجاد pipeهای نامگذاری شده |
6 | نصب بدافزار |
BloodAlchemy، توانایی بارگذاری یک بدافزار را دارد. این پیکربندی در یک حالت رمزگذاری شده در shellcode قبلی تعبیه شده است و در طول اجرای بدافزار BloodAlchemy رمزگشایی و استفاده میشود (شکل ۸).
علاوه بر این، اگر فایلی با نام فایل 15 کاراکتری متشکل از [a-zA-Z] در دایرکتوری C:\ProgramData\Store وجود داشته باشد، به عنوان فایل پیکربندی بدافزار در نظر گرفته شده و بارگذاری میشود. همچنین همان الگوریتم رمزگشایی مورد استفاده در پیلودی که قبلا ذکر شد برای این فرآیند رمزگشایی نیز استفاده میگردد.
فایل پیکربندی بدافزار حاوی دادههای مهم مربوط به پردازش کدهای مخرب است. این دادهها شامل مقادیری برای تغییر در رفتار تنظیم شده در حالت اجرا، URL سرور C2، نام فرآیندهای مشخص شده برای تزریق کد و موارد دیگر میباشند. برخی از دادههای مهم مانند مقدار MUTEX، سرور C2، نام فرآیند هدف و غیره، رمزگذاری شدهاند. فایل پیکربندی همچنین، مقادیر آفست را نیز شامل میشود که موقعیت این دادههای رمزگذاری شده مانند ShadowPad را نشان میدهد.
هر یک از این دادههای رمزگذاری شده به این ترتیب ذخیره میشوند: اندازه دادههای رمزگذاری شده، کلید یک بایتی و خود داده رمزگذاری شده.
رمزگشایی با استفاده از یک الگوریتم سفارشی دیگر به همراه کلید ذخیره شده انجام میشود. شرکت Elastic Security، یک اسکریپت ساده پایتون برای رمزگشایی دادههای رمزگذاری شده نوشته است.
بررسی عملکردهای مختلف بدافزار BloodAlchemy
همانطور که پیشتر ذکر شد، BloodAlchemy بسته به حالت اجرا و مقادیر موجود در فایل پیکربندی بدافزار، رفتار متفاوتی دارد. ما با توجه به این ویژگی، معتقدیم که BloodAlchemy یک نمونه نسبتا منحصر به فرد است. عملکرد اصلی BloodAlchemy شامل ارتباط با سرور C2 و کنترل میزبان آلوده از طریق دستورات بکدور اجرا شده است.
عملکردهای منحصر به فرد پیاده سازی شده در بدافزار BloodAlchemy به شرح زیر میباشند:
تداوم دسترسی
پیلود، دارای قابلیت تداوم دسترسی است. اگر run_mode دارای مقدار 0 یا 3 باشد و مسیر فایل اجرایی برای تداوم دسترسی مشخص نباشد و چنانچه persistence_flag (مقدار 0x34 در فایل پیکربندی بدافزار) ، 0 نباشد، متد تداوم دسترسی بر اساس مقدار persistence_flag از 1 تا ۴ انتخاب خواهد شد.
1: service + startup + taskschd (COM obj)
2: service
3: startup
4: taskschd (COM obj)
آنتی سندباکس
پیلود همچنین دارای قابلیت آنتی سندباکس (Anti Sandbox) برای فرار از تجزیه و تحلیل در محیطهای sandbox است. این ویژگی فقط زمانی عمل میکند که run_mode دارای مقدار 0 باشد، مسیر فایل اجرایی برای تداوم دسترسی مشخص نباشد و مقدار 0x1c در فایل پیکربندی 1 باشد.
این عملکرد، نام process_name، فایلها و نتایج DNS را بررسی میکند. به نظر میآید هدف از این ویژگی، جلوگیری از شناسایی عملکرد سندباکس Trellix بر اساس نام فرآیندهای بررسی شده باشد.
تزریق فرآیند
ویژگی تزریق فرآیند یا Process Injection، با شرایط زیر پیادهسازی میگردد:
مقدار run_mode، 0 یا 3 باشد؛
مقدار 0x54 در فایل پیکربندی، 1 باشد؛
shellcode قبلی به فرآیندهای مشخص شده زیر در فایل پیکربندی تزریق شود:
%windir%\system32\SearchIndexer.exe
%windir%\system32\wininit.exe
%windir%\system32\taskhost.exe
%windir%\system32\svchost.exe
دستورات بکدور
15 فرمان بکدور برای کنترل ماشین قربانی در نظر گرفته شده است. عملیات انجام شده توسط هر شناسه فرمان به شرح زیر میباشد:
شناسه فرمان | توضیحات |
0x1101 | به روزرسانی فایل پیکربندی |
0x1102 | دریافت فایل پیکربندی فعلی |
0x1201 | به روز رسانی فایل test.exe |
0x1202 | به روز رسانی BrLogAPI.dll |
0x1203 | به روز رسانی DIFX |
0x1204 | حذف نصب و خاتمه |
0x1205 | اجرای persistence_dir\test.exe |
0x1301 | شناسه فرمان مجهول و ناشناخته |
0x1302 | بارگیری پیلود دریافتی و ذخیره آن در مقدار رجیستری |
0x1303 | حذف مقدار رجیستری |
0x1304 | شناسه فرمان مجهول و ناشناخته |
0x1401 | دریافت اطلاعات پروکسی |
0x1402 | به روز رسانی اطلاعات پروکسی |
0x1501 | جمع آوری اطلاعات قربانی |
0x1502 | بازگرداندن 0x1502 (echo 0x1502) |
منشا BloodAlchemy و تروجان Deed RAT، بدافزار ShadowPad میباشد و با توجه به سابقه استفاده از ShadowPad در حملات متعدد APT، توجه ویژه به روند استفاده از این بدافزار بسیار حائز اهمیت است.