پژوهشگران امنیتی از شناسایی بدافزار Gaslight خبر دادهاند؛ یک ایمپلنت (implant) ناشناخته و مبتنی بر Rust برای سیستمعامل مکاواس (macOS) که برای فریب و ایجاد اختلال در ابزارهای تحلیل بدافزار مبتنی بر هوش مصنوعی طراحی شده است. بدافزار Gaslight در ساختار خود از تکنیک تزریق پرامپت (Prompt Injection) استفاده میکند تا سیستمهای تحلیل خودکار مبتنی بر مدلهای زبانی بزرگ (LLM) را دچار سردرگمی کرده و آنها را به توقف یا امتناع از ادامه تحلیل یک آرتیفکت (artifact) مخرب وادار کند.
این بدافزار که پیشتر ناشناخته و مستند نشده بود، علاوه بر نقش یک سرقتکننده اطلاعات (information stealer)، دارای مکانیزم اختصاصی برای ایجاد اختلال در فرآیند تحلیل مبتنی بر هوش مصنوعی است. بر اساس ارزیابیهای فنی، این بدافزار با اطمینان بالا به عوامل تهدید همسو با کره شمالی نسبت داده میشود.
مکانیزم فریب در بدافزار Gaslight
مکانیزم فریب در بدافزار Gaslight مبتنی بر تزریق یک زنجیره از پیامهای جعلی مربوط به خرابی سیستم در ساختار کد بدافزار است؛ پیامهایی که بهصورت هدفمند طراحی شدهاند تا در فرآیند تحلیل مبتنی بر LLM، باعث ایجاد تردید و عدم اطمینان در عامل تحلیل (triage agent) شوند.
بر اساس گزارش فنی شرکت SentinelOne، این بدافزار بهجای تمرکز بر دور زدن محیطهای اجرایی مانند سندباکس (sandbox)، مستقیماً لایه تصمیمگیری و تفسیر عامل تحلیل را هدف قرار میدهد. در نتیجه، سیستم تحلیلگر ممکن است اینگونه برداشت کند که فرآیند بررسی با خطاهای سیستمی مواجه شده و به همین دلیل باید متوقف شده یا ناتمام رها گردد.
زیرساخت فرماندهی و کنترل
در معماری بدافزار Gaslight یک کانال فرماندهی و کنترل (C2) مبتنی بر Telegram Bot API تعبیه شده است. این کانال در قالب یک polling loop (لوپ polling) فعالیت میکند و به اپراتور اجازه میدهد از طریق یک شل تعاملی (interactive shell) دستورات مورد نظر را برای سیستم آلوده ارسال کرده و خروجی اجرای آنها را دریافت کند.
اگر دو نمونه از یک توکن ربات (bot token) بهطور همزمان درخواست polling ارسال کنند، سرویس تلگرام پاسخ Conflict را برمیگرداند که در نتیجه آن نمونه دوم بدافزار بهطور خودکار متوقف میشود.
دستورات اجرایی برای کنترل سیستم آلوده
شل تعبیهشده در بدافزار Gaslight از شش دستور اصلی پشتیبانی میکند که به مهاجم امکان کنترل مداوم سیستم قربانی را میدهد:
- help: نمایش راهنمای دستورات
- id: شناسایی ایمپلنت برای اپراتور
- shell: اجرای دستور شل از طریق تابع execvp
- kill: خاتمه دادن به یک پردازه هدف بر اساس شناسه پردازه (PID)
- upload: استخراج فایل و ارسال آن از طریق مکانیزم attach:// در تلگرام
- stop: توقف اجرای ایمپلنت
همچنین محققان SentinelOne نشانههایی از وجود دستور هفتمی با نام focus را مشاهده کردهاند، اگرچه عملکرد دقیق آن هنوز مشخص نشده است. این بدافزار برای حفظ پایداری (Persistence)، از یک LaunchAgent استفاده میکند که در فایل .plist خود دارای برچسب com.apple.system.services.activity است.
ماژول سرقت اطلاعات
در ساختار بدافزار Gaslight یک اسکریپت پایتون (Python) با حجم حدود 6.6 کیلوبایت قرار دارد که بهصورت Base64 کدگذاری شده است. این ماژول بهعنوان یک مجموعه جمعآوری اطلاعات عمل میکند و دادههای متعددی از سیستم قربانی استخراج میکند، از جمله:
- تاریخچه دستورات ترمینال (Terminal)
- فهرست برنامههای نصبشده
- اسنپشات(snapshot) از پردازههای در حال اجرا
- پروفایل سختافزاری و نرمافزاری سیستم
- پایگاه داده Keychainمکاواس
- دادههای مرورگرهای کروم، بریو(Brave) ، فایرفاکس و سافاری
در ادامه، اطلاعات جمعآوریشده در قالب فایل ZIP با مسیر temp/collected_data.zip فشرده شده و از طریق تلگرام برای اپراتور ارسال میشود.
استقرار ماژول سرقت اطلاعات
بخش دیگر، ماژول سرقت اطلاعات مبتنی بر پایتون از طریق یک نصبکننده Bash جداگانه با اندازه تقریبی 2 کیلوبایت و بهصورت Base64 کدگذاری شده مستقر میشود. این اسکریپت، یک مفسر پایتون نسخه cpython-3.10.18 را از پروژه astral-sh/python-build-standalone دریافت کرده و در سیستم قربانی اجرا میکند.
وجود ایموجیها و همچنین هدرهای کامنتی گسترده در کد نشان میدهد که این اسکریپت بهاحتمال زیاد با استفاده از یک LLM تولید شده است.
تکنیکهای پیشرفته پنهانسازی و فریب در بدافزار Gaslight
نکته قابل توجه درباره بدافزار Gaslight این است که اطلاعات مربوط به توکن ربات، شناسه چت(chat ID) و سایر پیکربندیهای مربوط به اپراتور بهصورت هاردکد شده در نمونه قرار نگرفتهاند، بلکه در زمان اجرا به سیستم تزریق میشوند. همچنین این ایمپلنت بهگونهای طراحی شده که در خروجی زمان اجرا، توکن تلگرام را بهصورت خودکار حذف یا پنهان میکند؛ بهطوری که حتی در صورت جمعآوری لاگها یا آرتیفکتهای کرش، این اطلاعات قابل بازیابی نباشند.
علاوه بر این، بدافزار تلاش میکند از سیستمهای تشخیص مبتنی بر هوش مصنوعی عبور کند. برای این منظور، یک بلوک قالببندیشده Markdown را در کد خود قرار میدهد که شامل 38 پیام جعلی سیستمی است؛ پیامهایی که برای فریب عامل تحلیل امنیتی طراحی شدهاند تا فرآیند تحلیل را متوقف کنند.
این ساختار شامل پیامهای جعلی درباره مواردی مانند انقضای توکن، توقف ناشی از کمبود حافظه (out-of-memory kills)، پر شدن دیسک (disk exhaustion) و خطاهای مکرر اجرای عملیات است. همچنین هشدارهای ساختگی درباره آسیبپذیریهای تزریق (injection) و فلگهای تحلیل ایستا (static-analysis flags) نیز در آن گنجانده شده است. شرکت SentinelOne این تکنیک را تلاشی برای تبدیل پایپلاینهای تحلیل مبتنی بر LLM به ابزار تهاجمی توصیف کرده است. این پایپلاینها بهطور فزایندهای در چرخه مهندسی معکوس (reverse-engineering loop) مورد استفاده قرار میگیرند.