خلاصه

یک خوشهٔ بزرگ شامل نزدیک به 800 بستهٔ مخرب در رجیستری npm شناسایی شده که با استفاده از نام‌های تولیدشده خودکار و typo-squatting پکیج، تروجان دسترسی از راه دور (RAT) و نرم‌افزارهای سرقت‌کنندهٔ اطلاعات را برای سیستم‌های ویندوز، macOS و لینوکس توزیع می‌کنند. این پکیج‌ها یک دانلودر به‌نام WEL1DROPPER را فعال می‌کنند که بسته به سیستم‌عامل و معماری، payload سازگار را از میزبان‌های ابری یا رکوردهای DNS دریافت و اجرا می‌کند.

نحوهٔ انتشار و مکانیزم اجرا

این کمپین برخلاف حملات متداول زنجیرهٔ تأمین که از هوک‌های نصب استفاده می‌کنند، توسعه‌دهندگان را در مستندات README به بارگذاری مستقیم پکیج با require() تشویق می‌کند. هنگام وارد کردن پکیج، دانلودر WEL1DROPPER اجرا شده، ابتدا سیستم‌عامل و معماری را تشخیص می‌دهد و سپس payload مناسب را از یکی از سه میزبان Cloudflare Workers فراخوانی می‌کند:

  • oob-worker.cf103-070.workers[.]dev
  • oob-worker.cf102-baf.workers[.]dev
  • oob-worker.cf99-9b3.workers[.]dev

در صورت شکست دانلود HTTPS، بدافزار به رکوردهای DNS TXT دامنهٔ wel1[.]ru متکی می‌شود تا مرحلهٔ بعدی را دریافت کند. نگاشت دامنه‌های payload بر اساس پلتفرم به این صورت است:

  • Linux x64 — sdk.dl.wel1[.]ru
  • Linux ARM64 — ext.dl.wel1[.]ru
  • macOS — pkg.dl.wel1[.]ru
  • Windows — net.dl.wel1[.]ru

تحویل مرحله‌ای از طریق رکوردهای DNS TXT

فرایند دریافت payload از DNS شامل این مراحل است: ابتدا رکورد TXT از c.<domain> خوانده می‌شود تا تعداد قطعات تعیین گردد (مقدار عددی بین 1 تا 2000). سپس رکوردهای TXT شماره‌گذاری‌شده خوانده، رشته‌ها به هم پیوسته، Base64 دیکد و بافر باینری در پوشهٔ موقت نوشته می‌شود و توسط شِل اجرا می‌شود (/bin/sh در لینوکس/macOS و cmd.exe در ویندوز).

رفتار نهایی روی هر پلتفرم

  • ویندوز: نسخهٔ ویندوزی (Sonatype نام «Flooding Dropper» را برای کمپین گزارش داده) فرآیند نهایی را در یک پروسس جدا اجرا می‌کند، تلاش به پَچ کردن ETW و AMSI برای جلوگیری از مانیتورینگ انجام می‌دهد، وجود سندباکس یا ماشین مجازی را بررسی می‌کند و از طریق کلید Run در رجیستری و یک تسک زمان‌بندی‌شده پایداری ایجاد می‌کند. payload نهایی رمزنگاری‌شده است و مسیر نمونهٔ آن /pkg/update_win.exe گزارش شده است.
  • macOS: زنجیرهٔ آلودگی مشابه است: بررسی دیباگرها و محیط تحلیل، بازیابی payload سازگار (/pkg/beacon_mac.bin)، استفاده از رکوردهای DNS TXT در صورت نیاز و ایجاد پایداری توسط LaunchAgent و اجرای اجرایی در پروسس جدا.
  • لینوکس: باینری ELF بسته‌بندی‌شده با UPX از یک Cloudflare Worker برای دانلود ماژول‌های کمکی استفاده می‌کند و در مرحلهٔ نهایی می‌تواند فریم‌ورک C2 متن‌باز مانند Sliver را مستقر کند.

نقش تِلمتری جعلی و نویزسازی در کد

پکیج‌ها در پوشهٔ lib/telemetry.js یک SDK تِلمتری به‌ظاهر مشروع دارند که در واقع شامل منطق دانلودر است. این پیاده‌سازی‌های سنگین برای ایجاد نویز و پنهان‌سازی رفتار مخرب در بازبینی‌های سریع طراحی شده‌اند؛ فایل تِلمتری معمولاً نقطهٔ ورود بسته را import نمی‌کند اما نقش فریب‌دهندهٔ مهمی دارد.

شواهد هدف‌گیری و ارتباط با کمپین‌های قبلی

وجود دامنه‌هایی مثل tcsbank[.]ru و cloudpayments[.]ru در payload مکینتاش نشان‌دهندهٔ احتمال هدف‌گیری مؤسسات مالی روسی و سرویس‌های پرداخت موبایلی است. تحلیل‌ها اشاره دارند که این مجموعه ممکن است ادامهٔ یک عملیات dependency confusion با نام رمز Moika باشد که اوایل آوریل بیش از 250 بسته منتشر کرده بود.

شاخص‌های تهدید (IoC) و مسیرهای مرتبط

  • Cloudflare Workers: oob-worker.cf103-070.workers[.]dev، oob-worker.cf102-baf.workers[.]dev، oob-worker.cf99-9b3.workers[.]dev
  • دامنه‌های payload: sdk.dl.wel1[.]ru (Linux x64)، ext.dl.wel1[.]ru (Linux ARM64)، pkg.dl.wel1[.]ru (macOS)، net.dl.wel1[.]ru (Windows)
  • دامنهٔ DNS برای مرحله‌بندی: wel1[.]ru
  • مسیرهای payload گزارش‌شده: /pkg/update_win.exe, /pkg/beacon_mac.bin
  • فایل فریب‌دهنده در پکیج: lib/telemetry.js

اقدامات دفاعی و توصیه‌های عملی

برای کاهش ریسک و جلوگیری از بهره‌برداری‌های مشابه، این اقدامات توصیه می‌شود:

  1. فقط از منابع معتبر پکیج نصب کنید و نام‌های شبیه یا تولیدشدهٔ مشکوک را بررسی کنید؛ typo-squatting را جدی بگیرید.
  2. قفل‌فایل‌ها (lockfiles) را استفاده و نسخه‌های وابستگی را صریحاً مشخص کنید تا انتشار پکیج جدید، به‌طور ناخواسته به محیط شما وارد نشود.
  3. ابزارهای تحلیل زنجیرهٔ تأمین و SCA (software composition analysis) را در خط توسعه و CI/CD ادغام کنید تا پکیج‌های دارای رفتار مشکوک پیش از ورود به محیط اجرا شناسایی شوند.
  4. از اجرای خودکار یا بی‌دقت require() پکیج‌های ناشناخته پرهیز کنید؛ پیش از اجرا، کد منبع را مرور کنید و به دنبال فایل‌هایی مانند lib/telemetry.js که ممکن است دانلودر مخفی باشند بگردید.
  5. نظارت بر رفتار runtime را تقویت کنید: EDR و لاگینگ پروسس‌ها می‌توانند تلاش‌های پَچ ETW/AMSI، اجرای پروسس‌های جداشده یا عملیات شبکهٔ مشکوک را آشکار کنند.
  6. قوانین شبکه‌ای برای محدودکردن دسترسی خروجی سرورها و توسعه‌دهندگان وضع کنید تا دانلود payload از میزبان‌های غیرمنتظره دشوارتر شود.
  7. شاخص‌های تهدید (IoC) را در سیستم‌های محافظتی وارد کنید و اتوماسیون هشدار برای ترافیک به دامنه‌ها و مسیرهای گزارش‌شده برقرار نمایید.

نگاه رو به جلو

این کمپین نشان می‌دهد مهاجمان به روش‌های پیچیده‌تری برای انتشار و تحویل مرحله‌ای روی آورده‌اند، از جمله استفاده از میزبان‌های ابری موقتی و رکوردهای DNS TXT برای تقسیم payload. توسعه‌دهندگان و سازمان‌ها باید سیاست‌های مدیریت وابستگی سخت‌گیرانه‌تر، اسکن خودکار و مانیتورینگ runtime را پیاده‌سازی کنند تا از تبدیل یک پکیج به نقطهٔ ورود برای نفوذ گسترده جلوگیری شود.

منابع و مطالعهٔ بیشتر

گزارش‌های Sonatype درباره Flooding Dropper و تحلیل‌های OpenSourceMalware و Unit 42 منابع اصلی تحلیل این کمپین هستند. مستندات Cloudflare درباره Workers را می‌توانید در مستندات رسمی بخوانید و برای بررسی موضوعات مرتبط با Workers به مطلب داخلی ما دربارهٔ Cloudflare Workers مراجعه کنید.