استفاده بسته مخرب NPM از تکنیک های Unicode Steganography برای دور زدن ابزارهای امنیتی
یک بستهی مخرب در مخزن Node Package Manager (NPM) با بهرهگیری از کاراکترهای نامرئی یونیکد (invisible Unicode characters) اقدام به پنهانسازی کد مخرب کرده و از لینکهای تقویم Google (Google Calendar) برای میزبانی آدرس ارتباط با سرور فرماندهی و کنترل (Command-and-Control – C2) استفاده میکند.
این بسته که با نام os-info-checker-es6 منتشر شده، در ظاهر بهعنوان یک ابزار اطلاعاتی سیستم معرفی شده و از ابتدای ماه جاری تاکنون بیش از ۱۰۰۰ بار دانلود شده است.
بهگفتهی محققان شرکت Veracode، که در زمینه ارزیابی امنیت کد فعالیت دارد، نخستین نسخه از این بسته در تاریخ ۱۹ مارس به فهرست NPM افزوده شد. این نسخه اولیه رفتاری مخرب نداشته و صرفاً اطلاعات مربوط به سیستم عامل میزبان را جمعآوری میکرد.
با این حال، نویسندهی بسته چند روز بعد تغییراتی در آن اعمال کرد که شامل اضافه کردن باینریهای پلتفرممحور و اسکریپتهای نصب مبهمسازیشده بود.
در تاریخ ۷ می نسخهای جدید از این بسته منتشر شد که به گفتهی Veracode، شامل کدی برای یک مکانیزم پیشرفته فرماندهی و کنترل (C2) بوده و مسئول تحویل نهایی payload مخرب است.
آخرین نسخهی در دسترس این بسته در زمان نگارش این خبر، نسخه ۱.۰.۸ است که طبق هشدار Veracode، دارای رفتار مخرب است.
همچنین این بسته بهعنوان وابستگی (dependency) در چهار بستهی دیگر NPM تعریف شده است:
skip-tot، vue-dev-serverr، vue-dummyy، و vue-bit
که همگی بهصورت جعلی خود را بهعنوان ابزارهای مربوط به دسترسیپذیری و توسعهی پلتفرم معرفی کردهاند.
در حال حاضر مشخص نیست که این بستهها چگونه و از چه طریقی توسط مهاجم تبلیغ یا توزیع شدهاند.
جزئیات فنی از نحوه استفاده بستهی مخرب از Unicode Steganography
در نسخهی مخرب بسته، مهاجم دادههایی را در رشتهای که ظاهراً تنها شامل کاراکتر «|» (خط عمودی) بود، پنهان کرده است. با این حال، بلافاصله پس از این کاراکتر، رشتهای طولانی از کاراکترهای نامرئی یونیکد از محدودهی Variation Selectors Supplement (از U+E0100 تا U+E01EF) قرار داده شده است.
این دسته از کاراکترهای یونیکد معمولاً بهعنوان تعدیلکنندهی گلیفها در زبانهای پیچیده بهکار میروند. اما در این حمله، از آنها برای پیادهسازی استگانوگرافی متنی (text-based steganography) استفاده شده است؛ بهعبارتی، اطلاعات مخرب در دل دادههایی ظاهراً بیضرر پنهان شدهاند.
محققان Veracode موفق به رمزگشایی و دیابفاسکیشن این رشته شدند و دریافتند که این بخش حاوی payload مورد استفاده در یک مکانیزم پیشرفته فرماندهی و کنترل (C2) است. این مکانیزم از یک لینک کوتاهشدهی Google Calendar برای دسترسی به موقعیت نهایی میزبانی payload استفاده میکند.
نحوه عملکرد مکانیزم C2
فرآیند اجرای این مکانیزم به این صورت است:
- ابتدا لینک تقویم گوگل بازیابی میشود.
- سپس مجموعهای از ریدایرکتها دنبال میشوند تا در نهایت یک پاسخ HTTP 200 OK دریافت شود.
- در ادامه، اسکریپت مقدار data-base-title را از صفحه HTML رویداد استخراج میکند. این مقدار حاوی آدرس URL رمزگذاریشده با base64 است که به payload نهایی اشاره دارد.
- تابعی با نام ymmogvj برای رمزگشایی این آدرس استفاده میشود.
- درخواست ارسالی به سرور، انتظار دارد که در بدنهی پاسخ، payload مرحله دوم (stage-2 malware) بهصورت base-encoded وجود داشته باشد و احتمالاً کلید رمزنگاری و بردار اولیه (IV) نیز در سربرگهای HTTP گنجانده شده باشند؛ که این موضوع نشانهای از رمزگذاری payload نهایی است.
اجرای نهایی و مکانیزم ماندگاری
Payload دریافتی در نهایت با استفاده از تابع eval() اجرا میشود. علاوهبر این، اسکریپت دارای یک مکانیزم سادهی ماندگاری در دایرکتوری موقتی سیستم است که مانع اجرای همزمان چندین نمونه از بدافزار میشود.
در زمان تحلیل Veracode، payload نهایی قابل بازیابی نبود، که این میتواند نشانهای از متوقف شدن موقت کمپین یا قرار داشتن آن در مراحل اولیه باشد.
با وجود اعلام رسمی یافتهها به پلتفرم NPM، بستههای مشکوک همچنان در دسترس هستند.
بهروزرسانی ۱۷ مه: محققان شرکت Aikido نیز موفق به شناسایی زودهنگام همین کمپین مخرب شدهاند. گزارش آنها نیز در دسترس است.