کشف آسیب‌پذیری در بدافزار Phemedrone Stealer

کشف آسیب‌پذیری در بدافزار Phemedrone Stealer

تاریخ ایجاد

یک گروه هکری جدید به نام Phemedrone Stealer، یک بدافزار جدید را توسعه داده اند که می‌تواند اطلاعات حساس کاربران را از جمله نام کاربری، رمز عبور، آدرس ایمیل و شماره تلفن آن‌ها را سرقت کند. این بدافزار از طریق ایمیل‌های فیشینگ توزیع می‌شود که حاوی یک لینک آلوده هستند. هنگامی که کاربر روی لینک کلیک می‌کند، بدافزار بر روی سیستم او بارگیری شده و شروع به جمع‌آوری اطلاعات می‌کند. بدافزار Phemedrone Stealer از چند تکنیک جهت سرقت اطلاعات استفاده می‌کند که یکی از این تکنیک‌ها، استفاده از جاسوس‌افزار است. این جاسوس‌افزار می‌تواند کلیدهای فشرده‌شده توسط کاربر را ثبت کند و از این طریق رمزهای عبور آن‌ها را به دست آورد.
تکنیک دیگری که بدافزار Phemedrone Stealer از آن استفاده می‌کند، استفاده از اسکنر پورت است. اسکنرِ پورت، می‌تواند پورت‌های باز را در یک رایانه شناسایی کند. در این مورد، اسکنرِ پورت به دنبال پورت‌های بازی می‌گردد که می‌تواند از آن‌ها جهت دسترسی به اطلاعات حساس استفاده کند. محققان یک نسخه اصلاح شده از بدافزار Phemedrone Stealer را که در یک حمله استفاده شده است، مورد تجزیه و تحلیل قرار دادند.
برای آلوده کردن قربانیان به این بدافزار، مهاجم از فایل‌های مخرب URL استفاده کرده است که در دیسکورد یا سرویس‌های ابری مانند FileTransfer.io نگهداری می‌شوند. برای فریب، از کوتاه‌کننده‌های لینک مانند shorturl.at نیز استفاده شده است تا فایل‌های مخرب را پشت آن‌ها پنهان کند. اگر کاربری به دلیل ناآگاهی یا فریب، فایل‌های مخرب را باز کند، منجر به اکسپلویت آسیب‌پذیری CVE-2023-36025 می‌شود.

1

شکل 1 سلسله آلودگی Phemedrone Stealer


بدافزار طیف وسیعی از برنامه‌ها و سرویس‌هایی که ممکن است در سیستم قربانی وجود داشته باشد را هدف قرار میدهد و اطلاعات خاصی را استخراج می‌کند :
•    مرورگرهای مبتنی بر Chromium: داده‌هایی مانند پسوردها، کوکی‌ها و اطلاعات Autofill ذخیره شده در برنامه‌هایی مانند LastPass، KeePass، NordPass، Google Authenticator، Duo Mobile و Microsoft Authenticator را به سرقت می‌برد.
•    کیف پول ارزهای دیجیتال: فایل‌های حساس را از برنامه‌های کیف پول ارزهای دیجیتالی مانند Armory، Atomic، Bytecoin، Coninomi، Jaxx، Electrum، Exodus و Guarda به سرقت می‌برد.
•    دیسکورد: توکن‌های احراز هویت را به سرقت می‌برد که امکان دسترسی غیرمجاز به اکانت را فراهم می‌کند.
•    FileGrabber: بدافزار از این سرویس جهت جمع‌آوری فایل‌ها از پوشه‌های خاصی مانند Documents و Desktop استفاده می‌کند.
•    FileZilla: جزییات اتصال و اعتبارنامه‌های FTP را از این برنامه به سرقت می‌برد.
•    Gecko: مرورگرهای مبتنی بر Gecko را مورد هدف قرار می‌دهد.
•    اطلاعات سیستم: جزییاتی از سیستم، مانند موقعیت مکانی، مشخصات سخت‌افزاری و اطلاعاتی از سیستم عامل را جمع‌آوری می‌کند. همچنین امکان گرفتن اسکرین‌شات را هم دارد.
•    Steam: امکان دسترسی به فایل‌های پلتفرم بازی Steam را دارد.
•    تلگرام: داده‌های کاربران در پوشه نصب برنامه از جمله فایل‌های مرتبط با احراز هویت در tdata را استخراج می‌کند. این فایل‌ها را هم می‌تواند براساس سایز یا الگوی نام‌گذاری جستجو کند.
بدافزار از یک متد سفارشی با عنوان RuntimeResolver.GetInheritedClasses<IService>() جهت پیدا کردن زیر کلاس‌های IService بصورت داینامیک استفاده می‌کند. این متد از reflection جهت اسکن Assembly استفاده می‌کند. سرویس‌ها براساس سطوح اولویت خودشان، گروه‌بندی می‌شوند که به آن‌ها این امکان را خواهد داد تا با ترتیب خاصی پردازش شوند. برای هر سرویس در لیست گروه‌بندی شده، بدافزار یک Thread جدید ایجاد و استارت می‌کند. این کار به هر سرویسی این امکان را می‌دهد تا متد Run خودش را بصورت همزمان شروع و متد Collect تعریف شده در هر سرویس را اجرا کند.

•    C2 برای استخراج داده
پس از اجرای همه‌ی رشته‌ها، کد از طریق سرویس‌ها دوباره اجرا می‌شود و داده‌های جمع‌آوری‌شده توسط هر سرویس را جمع‌آوری می‌کند. سپس از کلاس‌های MemoryStream و ZipStorage برای مدیریت و فشرده‌سازی این اطلاعات استفاده می‌کند. MemoryStream یک بافر درون‌حافظه‌ای انعطاف‌پذیر است که می‌تواند داده‌ها را به‌صورت موقت ذخیره کند و امکان مدیریت سریع و کارآمد اطلاعات را بدون نیاز به عملیات I/O دیسک می‌دهد. سپس ZipStorage برای فشرده‌سازی مستقیم داده‌های داخل MemoryStream، در قالب فایل ZIP استفاده می‌شود. شکل  2 نشان‌دهنده اجرای داینامیک سرویس‌هاست.
 

2

شکل 2  سرویس‌های Phemedrone به صورت پویا اجرا می‌شوند

3

شکل 3 پیاده سازی سرویس FileZilla

شکل 4  اجرای سرویس FileZilla را نشان می‌دهد:

4

شکل 4  اجرای سرویس FileZilla را نشان می‌دهد

 

شکل 5، کلاس IService را نشان می‌دهد که جهت مدیریت و فشرده‌سازی داده‌های جمع‌آوری‌شده استفاده می‌شود.

5

شکل 5  اعتبارسنجی توکن تلگرام

قبل از شروع استخراج داده‌ها، بدافزار توکن Telegram API را با استفاده از متد TokenIsValid و ایجاد یک API call به نقطه پایانی getMe تلگرام بررسی می‌کند. این API call از طریق توکن Telegram API ذخیره شده ساخته می‌شود. اگر پاسخ با {"ok":true شروع شود، نشان‌دهنده یک توکن معتبر است. اگر در طول این فرایند استثنایی رخ دهد، آن استثناء لاگ شده و متد false را برمی‌گرداند که نشان‌دهنده معتبر نبودن توکن است. در این صورت، با فراخوانی متد Environment.Exit(0) به اجرای فرآیند خاتمه می‌دهد.
کد زیر نشان دهنده فرآیند بررسی اعتبار توکن است.
 

6

شکل 6 پیاده سازی TokenIsValid

شکل 7، درخواست بررسی معتبر بودن توکن را نشان می دهد

7

شکل 7 مثالی از درخواست اعتبارسنجی توکن شبکه

پس از تأیید توکن تلگرام، بدافزار شروع به ارسال داده‌های جمع‌آوری‌شده به مهاجم می‌کند. این کار توسط متد SendMessage() در کلاس global::Telegram.Telegram انجام می‌شود. متد Collect() اطلاعات گسترده‌ای از سیستم را جمع‌آوری می‌کند، از جمله:
•    داده‌های موقعیت مکانی مانند: IP، کشور، شهر، کدپستی
•    اطلاعات سخت‌افزاری مانند: نام کاربری، نام ماشین، سیستم‌عامل، ID سخت‌افزار، GPU، CPU، RAM
•    داده جمع‌آوری شده از مرورگرهای وب مانند: رمزهای عبور، کوکی‌ها، کارت‌های اعتباری، autofillها، افزونه‌ها، کیف‌های پول، فایل‌ها

 

8

شکل 8 گزارش جمع‌آوری داده‌های بدافزار، تعداد گذرواژه‌ها، کوکی‌ها و کارت‌های اعتباری را در میان سایر موارد ردیابی می‌کند

شکل 9 خلاصه‌ای از داده‌های جمع‌آوری شده جهت ارسال به مهاجم می‌باشد.

9

شکل 9 خلاصه رمزگشایی شده URL داده‌های استخراج شده

مرحله بعدی، استخراج داده‌های فشرده است. این کار توسط متد SendZip و درخواست HTTP POST برای اتصال از طریق Telegram API انجام می‌شود. فایل فشرده شده، به عنوان document ارسال می‌شود.
متدهای SendZip و MakeFormRequest2 مسئول ایجاد درخواست multipart/form-data هستند. این متد‌ها اطمینان حاصل می‌کنند که هدر و داده‌های فایل به درستی تنظیم شده‌اند. این درخواست توسط token بات و chat ID و از طریق Telegram sendDocument API ارسال می‌شود. فرایند ارسال شامل مدیریت خطا و تلاش مجدد است تا از ارسال فایل مطمئن شود. شکل زیر نشان‌دهنده نحوه ارسال فایل فشرده از طریق Telegram API است:
 

10

شکل 10 بدافزاری که داده‌های فشرده را از طریق API تلگرام استخراج می‌کند

شکل 11 نشان‌دهنده ترافیک ارسال فایل است:
 

11

شکل 11 ترافیک شبکه استخراج داده

منابع خبر:


[1]https://www.trendmicro.com/en_us/research/24/a/cve-2023-36025-exploited-for-defense-evasion-in-phem…
[2]https://infosecwriteups.com/cve-2023-36025-an-in-depth-analysis-of-circumventing-windows-smartscree…
[3] https://onhexgroup.ir/phemedrone-cve-2023-36025/