بدافزار Zloader که آخرین بار در اوت ۲۰۲۱ دیده شد، یک بدافزار بانکی است که برای سرقت اطلاعات اعتباری و خصوصی کاربر طراحی شده است و اکنون با یک زنجیرهی آلودگی ساده اما پیشرفته بازگشته است. کمپینهای Zloader قبلی که در سال ۲۰۲۰ دیده شده بودند، از اسناد مخرب، سایتهای بزرگسالان و تبلیغات Google برای آلوده کردن سیستمها استفاده میکردند.
شواهدی از کمپین جدید، برای اولین بار در حدود اوایل نوامبر ۲۰۲۱ دیده شد. تکنیکهایی که در زنجیرهی آلودگی به کار گرفته شده بود شامل استفاده از نرمافزار مدیریت Remote یا RMM برای کسب دسترسی اولیه به دستگاه هدف بود.
شکل ۱ – سادهسازی زنجیرهی آلودگی
سپس این بدافزار روش تایید امضای دیجیتال (Digital Signature Verification) مایکروسافت را اکسپلویت مینماید تا Payload خود را به یک DLL سیستم امضاشده تزریق کند و بیشازپیش از دفاع سیستم بگریزد. این شواهد نشان میدهد که نویسندگان کمپین Zloader تلاش زیادی برای گریز از دفاع میکنند و هنوز بهصورت هفتگی درحال بروزرسانی روشهای خود هستند
زنجیرهی آلودگی
آلودگی با نصب نرمافزار Atera روی دستگاه قربانی شروع میشود. Atera یک نرمافزار قانونی مدیریت و مانیتورینگ Remote سازمان است که برای استفادهی IT طراحی شده است. Ateraمیتواند یک Agent را نصب کند و با استفاده از یک فایل msi. منحصربهفرد که حاوی آدرس ایمیل Owner است، Endpoint را به یک حساب خاص اختصاص دهد. نویسندگان کمپین این نصبکننده (b9d403d17c1919ee5ac6f1475b645677a4c03fe9) را با یک آدرس ایمیل موقت ساختند: «Antik.Corp@mailto.plus». این فایل درست مثل کمپینهای Zloader قبلی، از یک نسخهی جاوا تقلید میکند. تا کنون روش دقیق توزیع این فایل مشخص نشده است.
شکل ۲ – نصبکنندهی مخرب
وقتیکه Agent روی دستگاه نصب شد، مهاجم دسترسی کاملی به سیستم دارد و میتواند فایلها را آپلود یا دانلود کرده و اسکریپتهایی را اجرا نماید. Atera یک نسخهی ۳۰ روزهی آزمایشی را برای کاربران جدید ارائه میدهد که این زمان برای اینکه مهاجم بتواند بهطور مخفیانه دسترسی اولیه خود را بدست بیاورد کافی است. در گذشته، Atera توسط گروه باجافزار Conti برای کسب دسترسی Remote و مداوم مورد استفاده قرار میگرفت.
شکل ۳ – ساخت نصبکننده سفارشی Atera
شکل ۴ – ایمیل مورد استفاده در نصبکننده مخرب
شکل ۵ – عملکردهای Atera
پس از نصب Agent، مهاجم دو فایل bat. را در دستگاهی که از عملکرد «Run Script» استفاده مینماید، آپلود و اجرا میکند:
bat برای اصلاح ترجیحات Windows Defender مورد استفاده قرار میگیرد.
bat برای لود کردن باقی بدافزار مورد استفاده قرار میگیرد.
شکل ۶ – defenderr.bat
محل Host شدن باقی فایلها روی دامین teamworks455[.]com است و از آنجا نیز دانلود میشوند.
شکل ۷ – load.bat
اسکریپت load.bat فایل new.bat را دانلود و اجرا میکند که دسترسیهای ادمین را چک کرده و با استفاده از اسکریپت BatchGotAdmin آنها را درخواست میدهد. سپس یک فایل Bat دیگر را نیز دانلود مینماید (new1.bat). این اسکریپت جدید استثناهای دیگری را به پوشههای متفاوت Windows Defender اضافه میکند، ابزار متفاوتی را که ممکن است برای شناسایی و بررسی مورد استفاده قرار گیرند (مثل cmd.exe و Task Manager) روی دستگاه غیرفعال مینماید. همچنین فایلهای دیگر را در پوشهی %appdata% دانلود مینماید:
- .dll9092 – Payload اصلی، Zloader.
- exe – Nsudo.exe اجرای برنامهها را با سطح دسترسی بالاتر ممکن میسازد.
- dll – برای اجرای .dll9092 و new2.bat مورد استفاده قرار میگیرد.
- dll – همچنین برای اجرای .dll9092 مورد استفاده قرار میگیرد.
- bat – «Admin Approval Mode» را غیرفعال کرده و رایانه را خاموش میکند.
- bat – برای تداوم Boot در پوشهی Startup قرار میگیرد.
شکل ۸ – New.BAT
شکل ۹ – New1.BAT
سپس اسکریپت mshta.exe را با فایل appContast.dll بهعنوان پارامتر اجرا میکند. وقتیکه نگاهی دقیقتری به DLL داشته باشیم، متوجه میشویم که فایل با یک امضای معتبر توسط مایکروسافت امضا شده است و Filename اصلی آن AppResolver.dll است. با مقایسهی این دو فایل، مشخص میشود که در DLL مخرب، نویسنده یک اسکریپت را به فایل ضمیمه کرده است.
شکل ۱۰ – امضای معتبر
شکل ۱۱ – Filename اصلی
شکل ۱۲ – مقایسهی appResolver.dll و appContast.dll
سپس این اسکریپت با استفاده از فایل WScriptSleeper.vbs وارد فاز خواب (WScriptSleeper.vbs) میشود که در دایرکتوری %temp% نوشته میشود. سپس .dll9092 (Zloader Payload اصلی) را با استفاده از regsvr32.exe اجرا میکند. نهایتاً، بدافزار msiexec.exe را Call کرده و Payload خود را در فرایند در حال اجرا تزریق مینماید. سپس Msiexec با سرور C2 در دامین lkjhgfgsdshja[.]com ارتباط برقرار مینماید.
شکل ۱۳ – ارتباط با سرور C2
شکل ۱۴ – رشتههایی که از حافظهی msiexec استخراج شدهاند
اسکریپت new2.bat، نهایتاً registry به مسیر SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System را ویرایش میکند تا «administrator in Admin Approval Mode» غیرفعال شود که بهطور پیشفرض تمام برنامههای کاربردی را با سطح دسترسی ادمین اجرا کرده و سپس رایانه را خاموش میکند تا تغییرات اعمال شوند.
تداوم
وقتیکه در ابتدا بدافزار اجرا میشود، یک اسکریپت auto.bat را تحت پوشهی Startup قرار میدهد که mshta.exe را با reboot.dll بهعنوان یک پارامتر اجرا مینماید. مشابه appContast.dll، اسکریپت خودش را پاک میکند. در شکل زیر میبینیم که regsvr32.exe با zoom.dll و .dll9092 فراخوانده (Call) میشود. فایل zoom.dll وجود ندارد که نشان میدهد شاید این کمپین هنوز درحالتوسعه باشد و در آینده آن را ببینیم. پس از تزریق کد مخرب به msiexec.exe یک Registry Key اتفاقی در مسیر HKCU\Software\Microsoft\Windows\CurrentVersion\Run ایجاد میشود که regsvr32.exe را با یک کپی از .dll9092 اجرا میکند که در یک پوشه که بهتازگی در %appdata% ساخته شده است، قرار میگیرد. اینگونه، دفعهی بعدی که سیستم ریبوت میشود، بدافزار تداوم خواهد داشت.
شکل ۱۵ – reboot.dll
امضای فایل
همانطور که بالاتر اشاره شد، فایل appContast.dll دارای یک امضای معتبر از مایکروسافت است اما فایل اصلاح شده و یک اسکریپت مخرب در آن تزریق شده است. اما این سؤال پیش میآید که، این کار چطور انجام شده؟
اگر DLL مخرب را با DLL اصلی در سطح بایت مقایسه کنیم، میتوانیم ببینیم که این فایل در چند نقطه دستخوش تغییر شده است: فایل Checksum و دو نقطه که با سایز امضا تطبیق دارند.
شکل ۱۶ – A فایل appResolver.dll است (بیخطر)، B فایل appContast.dll (مخرب)
شکل ۱۷ – appResolver.dll CheckSum
شکل ۱۸ – سایز امضای appResolver.dll
شکل ۱۹ – سایز امضای appResolver.dll (۲)
این تغییرات ساده در یک فایل امضاشده، اعتبار امضا را حفظ میکنند، اما به ما این توانایی را میدهد که داده را به بخش امضای فایل ضمیمه نماییم. از آن جایی که نمیتوانیم کد جمعآوری شده از بخش امضای یک فایل را اجرا کنیم، قرار دادن یک اسکریپت که در VBscript یا JavaScript نوشته شده باشد و فایل را با استفاده از mshta.exe اجرا کند، یک راهکار ساده است که میتواند از برخی از EDRها بگریزد. برای بررسی مجدد، فایل PE امضا شدهی خودمان را با یک اسکریپت ضمیمهشده (A6ED1667BB4BB9BAC35CE937FF08C7216D63EBB4) ساختیم که وقتی بهعنوان یک پارامتر برای mshta.exe اجرا شود، برنامهی کاربردی ماشین حساب را باز میکند.
ظاهراً این شکاف یک مشکل شناخته شده است که در CVEهای زیر به آن اشاره شده است: CVE-2020-1599، CVE-2013-3900 و CVE-2012-0151. مایکروسافت در سال ۲۰۱۳ با یک بیانیهی امنیتی به این مشکل پاسخ داد و راهکاری را نیز ارائه کرد. اما بیان کرد که پس از پیادهسازی این راهکار تأثیر روی نرمافزار موجود میتواند بالا باشد. درنتیجه در جولای ۲۰۱۴ آن اعتبارسنجی فایل سختگیرانهتر را برداشتند و تبدیلش کردند به یک بروزرسانی اختیاری.
بهعبارتدیگر، این اصلاح بهطور پیشفرض غیرفعال است و همین امر به نویسندهی بدافزار اجازه میدهد که فایل امضاشده را اصلاح کند.
شکل ۲۰ – Keyهای موردنیاز برای تغییر به سمت اصلاح مشکل
باید توجه کرد که Reboot.dll نیز به همان شکل امضا میشود. پس از اعمال کردن این اصلاح، هر دو DLL دارای امضای نامعتبری هستند.
قربانیان کمپین Zloader
درطول تجزیهوتحلیل ما، یک دایرکتوری باز پیدا شد که محل Host آن در teamworks455[.]com است و برخی از فایلهایی که دانلود شده و مورد استفاده قرار گرفتهاند در آن قرار دارند. هر چند روز یکبار، نویسنده تغییراتی را در فایلها اعمال میکند و اسکریپت check.php یک فایل DLL متفاوت با رفتار یکسان، اما یک Hash متفاوت را برمیگرداند. در فایل «entries»، میتوانیم فهرستی از قربانیان که به Zloader آلوده شدهاند و کشور آنها را ببینیم.
شکل ۲۱ – teamworks455[.]com/_country
از دوم ژانویه ۲۰۲۲، ۲۱۷۰ عدد IP منحصربهفرد قربانی وجود دارد که فایل DLL مخرب را دانلود کردند.
نویسندگان کمپین بدافزار ZLoader
به دلیل چندین شباهت با کمپینهای قبلی توسط MalSmoke، باور بر این است که همین مجرمان سایبری پشت این کمپین هستند:
- بدافزارها در کمپینهای قبلی MalSmoke خود را بهعنوان افزونههای جاوا جا میزنند، که در این مورد نیز همین اتفاق افتاده است.
- ارتباطی بین اطلاعات ثبتکنندهی دامین teamworks455[.]com که فایلهای کمپین کنونی در آن Host شدهاند و دامین pornislife[.]online که به کمپین MalSmoke در سال ۲۰۲۰ مربوط بود وجود دارد.
شکل ۲۲ – teamworks455[.]com/racoon
در نهایت وقتیکه به فایل «entries» نگاه کنیم، دو آدرس IP پیدا میکنیم که شاید به مهاجمین مربوط باشند.
شکل ۲۵ – آدرسهایی که ممکن است به کمپین ربط داشته باشند
آدرس اول یعنی ۱۸۵.۱۹۱.۳۴.۲۲۳ در یک لیست سیاه IP دیده شد که تحت عنوان «جرم سایبری» دستهبندی شده بود. آدرس دوم یعنی ۱۸۵.۱۹۱.۳۴.۲۰۹ را میتوان مشاهده کرد که چندین بار با استفاده از Agentهای کاربران مختلف سعی در دانلود Payload داشته است. این امر میتواند نشان دهد که نویسندگان Payload خود را تست میکردند. هر دو آدرس در AbuseIPDB پیدا شدند:
شکل ۲۳ – Abuseipdb 185.191.34.223
شکل ۲۴ – Abuseipdb 185.191.34.209
نتیجهگیری
کمپینهای Zloader در گذشته به شکلهای مختلفی دیده شدهاند. در این مورد خاص، میبینیم که نویسندگان تلاش زیادی درمورد روشهای گزیر کردهاند. دو روش قابلتوجه که در اینجا دیده شدند، استفاده از نرمافزار RMM قانونی بهعنوان دسترسی اولیه به دستگاه هدف و ضمیمه کردن کد به یک امضای فایل هستند، درحالیکه همچنان اعتبار امضا حفظ شود و با استفاده از mshta.exe اجرا گردد.
مدتها است که توانایی ضمیمه کردن کد به امضای یک فایل شناخته شده است و چندین CVE به این موضوع اختصاص داده شدهاند. برای حل کردن این مشکل، تمام Vendorها باید از مشخصات Authenticode جدید پیروی کنند تا این تنظیمات بهصورت پیشفرض وجود داشته باشد نه بهعنوان یک بروزرسانی اختیاری. تا وقتیکه این اتفاق بیفتد، هرگز نمیتوانیم مطمئن شویم که آیا میتوانیم حقیقتاً به امضای یک فایل اعتماد کنیم یا خیر.
توصیههای امنیتی برای جلوگیری از سوءاستفاده بدافزار ZLoader
پیشنهاد میشود که کاربران بروزرسانی مایکروسافت را برای اعتبارسنجی سختگیرانهی Authenticode اعمال کنند. برای انجام این کار، این خطوط باید در Notepad کپی شوند و فایل پیش از اجرا، با افزونهی reg. ذخیره گردد.
نسخهی ۵.۰۰ از Windows Registry Editor
[HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]
“EnableCertPaddingCheck”=”۱”
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config]
“EnableCertPaddingCheck”=”۱”
همچنین باید توجه کرد که پس از اعمال این اصلاح، برخی از امضاها از نصبکنندههای بیخطر قانونی، با یک امضای نامعتبر نشان داده میشوند. بهعلاوه، از mshta.exe در محیط کاربر کاربردی نباشد، کاربر میتواند آن را غیرفعال کند و اجرای اسکریپتهایی که در چنین فایلهای قرار گرفتهاند را اصلاح نماید.