بدافزار COMpfun
محققان کسپرسکی از بازگشت نوع جدیدی از بدافزار COMpfun در سال جاری میلادی خبر دادند. در پاییز ۲۰۱۹ خبرهایی از آلودهسازی فایلها برای نفوذ در ترافیک TLS توسط این بدافزار که در آن زمان به Reductor معروف بود به گوش رسید. سپس در ماه نوامبر ۲۰۱۹ محققین کسپرسکی تروجان جدیدی را کشف نمودند که کد آن شباهت زیادی با COMpfun داشت. در تحقیقات بعدی خود این محققان متوجه شدند این تروجان جدید از کدهای پایه COMpfun استفاده میکند و توسعه دهندگان آن در حال افزودن ویژگیهای جدید به آن هستند.
نگاهی به جزئیات بدافزار
گردانندگان بدافزار COMpfun این بار تمرکز خود را بر روی نهادهای دیپلماتیک در اروپا از طریق انتشار درخواست ویزای جعلی گذاشتهاند. دقیقا مشخص نیست که کد مخرب این بدافزار چگونه به یک هدف نفوذ میکند. فایل طعمه در داخل Dropper به همراه نسخه ۳۲ و ۶۴ بیتی بدافزار به صورت رمزشده نگهداری میگردد. طبق بررسیهای انجام شده، در این حمله از پروتکل ارتباطی جالب توجهی برای سرور فرمان و کنترل (C2) با استفاده از کدهای وضعیت غیرمعمول HTTP/HTTPS استفاده شده است. (IETF RFC 7231, 6585, 4918). چندین کد وضعیت HTTP (422 تا ۴۲۹) از سمت کلاینت، تروجان را در شناسایی اقدام بعدی قربانی یاری خواهند نمود. پس از ارسال وضعیت “Payment Required” (کد ۴۰۲) توسط سرور C2، تمام دستوراتی که قبلاً دریافت شدهاند اجرا خواهند شد. توسعهدهندگان، کلید عمومی RSA بدافزار را به همراه سرآیند HTTP (ETag) در یک فایل پیکربندی رمزگذاری شده نگهداری میکنند که برای ذخیره محتوای وب ساخته شده است. این نشانگر همچنین میتواند برای فیلتر کردن درخواستهای ناخواسته (مثل پویشگرهای شبکه) به سرور C2 مورد استفاده قرار بگیرد. بدافزار COMpfun علاوه بر استفاده از کلید عمومی RSA برای ارتباط با سرور C2، از یک کلید تولیدشده (توسط خود بدافزار) با الگوریتم رمزنگاری AES-128 نیز استفاده میکند.
توسعهدهندگان
بدافزار COMpfun برای اولین بار توسط شرکت G-DATA در سال ۲۰۱۴ شناسایی و مستندسازی شد. گرچه این شرکت هیچگاه نتوانست مشخص کند که کدام APT از این بدافزار استفاده میکند. با بررسی قربانیان این بدافزار میتوان به این نتیجه رسید که این بدافزار ممکن است با گروه Trula APT ارتباط داشته باشد.
بدفزار COMpfun قادر به انجام چه کارهایی است؟
این بدافزار توانایی دستیابی به موقعیت جغرافیایی هدف، جمعآوری دادههای مربوط به میزبانها و شبکه، Keylogging (ضبط کلیدهای فشرده شده توسط قربانی) و تهیه اسکرینشات را دارد. به عبارت دیگر، COMpfun یک بدافزار تکامل یافته است که قابلیت انتشار به رسانههای قابل حمل را نیز دارد. در سایر بدافزارهای منتشر شده توسط توسعهدهندگان COMpfun نیز تمام آدرسهای عملکردی لازم برای پیچیدهسازی فرآیند تحلیل، به صورت پویا ترجمه میشوند. برای ارسال دادههای هدف به سرور C2 از طریق HTTP/HTTPS بدافزار از الگوریتم رمزنگاری RSA استفاده میکند. برای مخفیسازی دادهها بر روی سیستم هدف نیز بدافزار از روش فشردهسازی LZNT1 و الگوریتم تک بایتی XOR استفاده میکند.
راهانداز اولیه بدافزار (Dropper)
اولین Dropper بدافزار از طریق یک دایرکتوری به اشتراک گذاشته شده در شبکه محلی منتشر شده بود. نام این فایل مرتبط با روند درخواست ویزا کاملا با اشخاص دیپلماتیک مورد هدف مطابقت داشت. همانند تمام ماژولهای مشابه با این ساختار کد، فایل Dropper ابتدا تمام آدرسهای مورد نیاز توابع API ویندوز را به صورت پویا مشخص کرده و آنها را درون ساختار برنامه قرار میدهد. سپس با رمزگشایی بخش منبع (.rsrc)، بدافزار را استخراج میکند. این فرآیند شامل رمزگشایی الگوریتم تک بایتی XOR به همراه کلید “۰x55” و رفع فشردهسازی LZNT1 است. فایلهای زیر علاوه بر فایل اصلی بدافزار بر روی سیستم قربانی قرار میگیرند.
Dropper از کاربران میخواهد که فایل را در حالت Administrator اجرا کنند. سپس یک نسخه متناسب با سیستمعامل قربانی بر روی سیستم وی قرار داده و جدول زمانی سیستم را به ۲۰۱۳٫۱۲٫۲۰ ۲۲:۳۱ تغییر میدهد. تواناییهای Dropper محدود به فایل اجرایی بدافزار (PE) نیست، بلکه در برخی موارد از فایلهای .doc و .pdf نیز برای اجرای دستورات Shell استفاده میکند.
ماژول اصلی، تروجان مبتنی بر وضعیت HTTP
تحلیل زیر بر اساس یک نمونه ۳۲ بیتی از بدافزار COMpfun مطابق جدول فوق انجام شده است. فایل ExplorerFrame.dll.mui یک منبع زبان برای ExplorerFrame.dll است که توسط Windows Explorer مورد استفاده قرار میگیرد.
مقداردهی اولیه
طبق معمول در کد خانواده این بدافزار، تمام رشتههای قابل خواندن توسط تعداد زیادی از توابع مستقل برگردانده میشوند. این کار به منظور پیچیدهتر کردن تحلیل از طریق مخفی کردن رشتهها برای تحلیلگر انجام میشود. مرحله آمادهسازی ماژول به صورت پویا تمام آدرسهای مورد نیاز تابع API ویندوز را در ساختارهای سفارشی قرار میدهد. پس از آن، بدافزار فقط از فراخوانی غیرمستقیم تابع استفاده میکند. این ماژول معماری پردازنده (۳۲ یا ۶۴ بیت) و نسخه سیستمعامل ویندوز را بدست میآورد. در چند مورد هم از روشهای پیشگیری از تحلیل (از قبیل VEN_VMWARE، VBOX_HARDDISK، Virtual_DVD_ROM و …) برای جلوگیری از اجرای آن در محیط کنترل شده استفاده میکند. بدافزار حتی محصولات امنیتی نصب شده بر روی سیستمعامل میزبان (مثلاً Symantec، Kaspersky ، Dr.Web یا Avast) را نیز شناسایی میکند. قبل از هرگونه ارتباط با سرور C2، بدافزار حضور ابزارهای دیباگر (WinDbg، OllyDbg و Visual Studio)، مانیتورینگ حافظه (Process Explorer، Process Monitor و …) و مانیتورینگ شبکه (Wireshark، TCPView و …) را بر روی سیستمعامل میزبان بررسی میکند. همچنین اتصال با شبکه اینترنت نیز مورد بررسی قرار میگیرد و در صورت عدم اتصال، هیچ تلاشی برای برقراری ارتباط با سرور C2 صورت نمیگیرد. سپس فایل dll بدافزار، فرآیندهای در حال اجرا در سیستمعامل را بررسی میکند تا در صورت امکان فایل اجرایی خودش را به آنها تزریق نماید. در شرایط PaymentRequired، تزریق حتی به فرآیندهای سیستمی، آنتیویروس و یا مرورگر هم امکانپذیر است. در ادامه، بدافزار برای رهاسازی فایلها، حذف آنها و … آمادهسازی میکند. آخرین مرحله در فرآیند مقداردهی اولیه، رمزگشایی و رفع فشردهسازی فایل پیکربندی است. رمزگشایی از طریق الگوریتم تک بایتی XOR با استفاده از کلید ۰xAA و رفع فشردهسازی نیز از روش LZNT1 انجام میشود. در اثر تجزیه این فایل پیکربندی، کلید عمومی RSA بدافزار، ETag و آدرسهای آیپی برای ارتباط با سرور C2 استخراج میگردند.
ماژول ارتباطی مبتنی بر وضعیت HTTP
این ماژول ابتدا موارد زیر را تولید میکند:
- کلید رمزنگاری AES-128 مورد استفاده در پارامترهای HTTP GET/POST و کد وضعیت ۴۲۷ برای HTTP
- شناسه سختافزاری یکتای ۴ بایتی (HWID) متعلق به کارت شبکه و پردازنده میزبان و همچنین اولین شماره سریال ثابت درایو منطقی
سپس ماژول یکی از فرآیندهای در حال اجرا را برای تزریق کد انتخاب میکند. این فرآیندها به ترتیب اولویت ممکن است فرآیندهای ویندوزی (مثل cmd.exe، smss.exe)، برنامههای امنیتی (nis.exe مرتبط با Symantec و spideragent.exe مرتبط با Dr.Web) و یا مرورگرها (مثل اپرا، فایرفاکس، یاندکس، کروم و …) باشند. در ادامه، بدافزار امکان برقراری ارتباط رمزشده از طریق پروتکل TLS را بررسی میکند و در صورت مثبت بودن، ارتباط با سرور C2 از طریق HTTPS و پورت ۴۴۳ انجام میشود، در غیر اینصورت پروتکل HTTP و پورت ۸۰ مورد استفاده قرار خواهد گرفت.
اولین درخواست GET ارسال شده حاوی سرآیند ETag میباشد که با استفاده از دادههای رمزگشایی شده از فایل پیکربندی ساخته شده است. سرآیندهای ETag معمولاً توسط وبسرورها برای اهداف ذخیرهسازی دادهها (Caching) و صرفهجویی در پهنای باند مصرفی استفاده میشوند. استفاده از سرآیندهای ETag بدین معنی است که سرور C2 میتواند تمام درخواستهایی را که از اهداف مورد نظرش ارسال نمیشوند، در صورتی که ارزش مورد انتظار ETag را نداشته باشند، نادیده بگیرد.
ماژول انتشار از طریق رسانههای قابل حمل
در صورتی که مقداردهی اولیه موفقیتآمیز باشد، بدافزار شروع به جستجوی رسانههای قابل حمل مرتبط با رویداد WM_DEVICECHANGE مینماید. در صورت اتصال یا عدم اتصال یک حافظه USB به میزبان، بدافزار کنترلکنندههای خود را اجرا میکند.
سایر ماژولهای جاسوسی از قبیل Keylogger و Screenshot
فعالیت کاربر با استفاده از چند روش نظارت میشود. هر کدام از این روشها فارغ از سرور C2، دیتای سیستم هدف را جمعآوری میکنند. کلیدهای فشرده شده صفحهکلید، توسط کلید عمومی RSA در فایل پیکربندی بدافزار ذخیره شده و هر دو ثانیه یکبار یا هنگامی که بیش از ۵۱۲ بایت دیتا ضبط گردد، ارسال میشوند. این ۵۱۲ کاراکتر همچنین شامل کلیکهای کلید سمت چپ ماوس (به عنوان رشته “MSLBTN”) و متون نوار عنوان ویندوز نیز هستند. برای محتوای کلیپبورد نیز یک هش MD5 محاسبه شده و در صورت تغییر، محتوای کلیپبورد با همان کلید عمومی RSA رمزگذاری و سپس ارسال میشود. از سوی دیگر، تروجان با استفاده از کتابخانه GDIPlus یک اسکرینشات (Bitmap) گرفته و آن را با الگوریتم LZNT1 فشردهسازی میکند. سپس آن را با استفاده از کلید موجود در فایل پیکربندی رمزگذاری کرده و به سرور C2 ارسال مینماید. این اسکرینشات در هر حال حتی بدون دریافت فرمان از سرور C2 نیز تهیه و ارسال میگردد.
موضوع آخر
موارد دیگری نیز در ساختار بدافزار تعبیه شدهاند هرچند از نظر فنی اهمیت چندانی ندارند. برای مثال روش پایداری مبتنی بر COM-hijacking که کد و ساختار مورد نظر را به عنوان یک پارامتر به درون فرآیندهای حافظه تزریق میکند. بدافزار COMpfun با استفاده از سرویسهای آنلاین موجود از قبیل geoplugin.net/json.gp، ip-api.com/json و telize.com/geoip موقعیت جغرافیایی قربانی را بدست میآورد. محاسبه مدت زمان هماهنگسازی در وضعیت HTTP نیز جالب توجه است که بخشی از آن از فرمول زیر محاسبه میگردد:
سری کامل این فرمول، به صورت نمایی محاسبه میشود. به نظر میرسد که توسعهدهندگان بدافزار از روش نمایی برای غیرقابل پیشبینی کردن وقفههای زمانی در ارتباطات استفاده کردهاند.
نتایج بدست آمده
در سال ۲۰۱۹ توسعهدهندگان بدافزار COMpfun در دو مورد رویکرد نوآورانه از خود نشان دادند. ابتدا آنها با دستکاری تابع سیستمی PRNG توانستند ترافیک رمزشده TLS را دور بزنند. سپس موفق به پیادهسازی سرور C2 منحصر به فردی از طریق کدهای وضعیت غیرمعمول HTTP شدند. گردانندگان بدافزار COMpfun، تمرکز خود را بر روی نهادهای دیپلماتیک و انتخاب یک برنامه مربوط به ویزا (که در یک دایرکتوری به اشتراک گذاشته شده در شبکه محلی ذخیره شده بود) حفظ کردند. این رویکرد متناسب با اهداف و توانایی گردانندگان بدافزار در تولید و اجرای ایدههای خود، مطمئناً از توسعهدهندگان COMpfun یک تیم قدرتمند تهاجمی خواهد ساخت.
آرمان داده پویان نمایندگی پلاتینیوم کسپرسکی در ایران
برای اطلاعات بیشتر با ما تماس بگیرید