در سال 2016 گروهی به نام «Shadow Broker» تعدادی از ابزارهای هک و نقص روز صفر را به طور عمومی منتشر کرد. این گروه وابسته به واحد عملیات آژانس امنیت ملی (NSA) بودند. سپس در 14 آپریل 2017 آنها اکسپلویتی شامل ETERNALBLUE و ETERNALROMANCE منتشر کردند که نسخههای ویندوز XP/Vista/8. 1/7/10 و ویندوز سرور 2003/2008/2012/2016 را مورد هدف قرار داده بود. این اکسپلویتها از CVE-2017-0144 و CVE-2017-0145 استفاده میکردند که با انتشار بولتن امنیتی MS17-010 توسط مایکروسافت، این نقص برطرف شد.
اکسپلویتهای ETERNALBLUE و ETERNALROMANCE اجرای کد از راه دور (RCE) هستند که از پروتکل اشتراک فایل SMBv1 استفاده میکنند. اشتراک فایل از طریق SMB به صورت معمول فقط در شبکه محلی انجام میشود اما بسیاری از سازمانها SMBv1 را در معرض اینترنت قرار دادهاند و در نتیجه حملاتی مشابه WannaCry و NotPetya از این اکسپلویتها استفاده میکنند.
امروزه با درخواستهای زیاد ارزهای دیجیتال، محققان دریافتهاند که نویسندگان بدافزار از اکسپلویت ETERNALBLUE در بدافزار استخراج ارز دیجیتال مانند Adylkuzz، Smominru و WannaMine استفاده میکنند.
اخیراً آزمایشگاه FortiGuard یک بدافزار استخراج ارز دیجیتال مبتنی بر پایتون یافته است که از اکسپلویت ETERNALROMANCE استفاده میکند و PyRoMine نام دارد. در این مقاله تجزیه و تحلیل این بدافزار را برای شما فراهم کردهام و نشان میدهم چطور این اکسپلویت در ماشینهای ویندوزی آسیبپذیر پخش میشود.
PyRoMine
در اصل من از طریق نشانی hxxp: //212. 83. 190. 122/server/controller. zip، جایی که بدافزار در قالب یک فایل zip قابل دانلود است شروع کردم. این فایل شامل یک فایل اجرایی کامپایل شده توسط PyInstaller است. PyInstaller برنامهای است که برنامههای نوشته شده به زبان پایتون را تبدیل به یک پکیج اجرایی مستقل تبدیل میکند که برای اجرا نیازی به نصب پایتون روی ماشین ندارند.
به منظور استخراج و تجزیه و تحلیل اسکریپت پایتون و پکیجهایی که استفاده میکند من از ابزار در PyInstaller به نام pyi-archive_viewer استفاده کردم و با کمک آن قادر بودم فایل اصلی که در این نمونه Controller نام دارد را استخراج کنم.

شکل 1: pyi-archive_viewer فایلها موجود در این پکیج را نمایش میدهد.
سپس فایل Controller را با دستور X کپیبرداری کردم.

شکل 2: کپیبرداری فایل مشخص شده با دستور X
فایل استخراج شده یک فایل. PYC است که حاصل کامپایل کد پایتون است. زمانی که یک اسکریپت پایتون (. PY) اجرا شود، پایتون قبل از اجرا اسکریپت را به کد بایتی کامپایل شده (. PYC) تبدیل میکند. برای دیکامپایل کردن کد، از ابزار uncompyle6 استفاده کردم. با این وجود اجرای uncompyle6 با فایل بدافزار به عنوان پارامتر خطای زیر را به دنبال داشت:
“ImportError: Unknown magic number 99 in controller. pyc”
شکل 3: خطای Unknown magic number
دلیل این خطا نبودن magic value در header فایل استخراج شده است. یک کد کامپایل شده پایتون 2. 7 با بایت 03 F3 0D 0A شروع میشود و در در ادامه یک تایم استمپ 4 بایتی دارد. من با افزودن این 8 بایت به اول فایل خطا را برطرف کردم. بعد از افزودن این 8 بایت توانستم فایل را به درستی دیکامپایل کنم.
شکل 4: فایل دیکامپایل شده
با توجه به اسکریپت، مشخص است که کد از اجرای ETERNALROMANCE، که در وبسایت پایگاه داده اکسپلویت پیدا میشود، کپی برداری شده و تغییرات مورد نیاز روی آن اعمال شده است. این بدافزار نشانیهای IP محلی را به منظور یافتن زیرشبکه (ها) دریافت میکند سپس از طریق همه این IPها خود را در زیرشبکهها تکرار میکند.
شکل 5: هدف قرار دادن آدرسهای IP موجود در یک نام میزبان مشابه
در حالی که ETERNALROMANCE نیاز به احراز هویت دارد، اما حتی برای یک حساب کاربری میهمان اکسپلویت دسترسیهای سیستمی را به مهاجم میدهد. در نمونههای تجزیه و تحلیل شده (شکل 5، بالا) تابع اکسپلویت با پارامتر از نوع "internal" فراخوانی میشود. در شکل 6، تابع اکسپلویت بررسی نمیکند که نوع "internal" یا نه، فقط بررسی میکند که از نوع "Anonymous" نباشد. اگر از نوع ناشناس یا Anonymous نباشد، تلاش میکند با نام کاربری Default و کلمه عبور P@ssw0rdf0rme به ماشین هدف وارد شود. اگر تلاش ناموفق بود، ورود ناشناس را امتحان میکند. از آنجا که internal ناشناس نیست، پس تلاش میکند با اعتبار گفته شده با نام کاربری و کلمه عبور خالی وارد شود.
شکل 6: ورود به ماشین هدف با نام کاربری و کلمه عبور
با وجود این که اعتبارهای مختلف قابل رؤیت هستند، اما به نظر میرسد در این نسخه استفاده نمیشوند، اگر چه ممکن است در آینده استفاده شود. همان طور که در شکل 6 (بالا) میبینید، نام متغیرهای user و password توسط تابع conn. login () فراخوانی نمیشوند.
شکل 7: سایر اعتبارها
همان طور که احتمالاً متوجه شدهاید، شانس استفاده یک ماشین از نام کاربری Default و کلمه عبور P@ssw0rdf0rme بسیار اندک است، بنابراین چرا این اعتبار برای ورود غیرناشناس استفاده شده است؟ یکی از کامپوننتهای این بدافزار یک حساب کاربری به نام Default با رمز عبور P@ssw0rdf0rme در سیستم ایجاد میکند که در ادامه این مقاله توضیح خواهم داد. من فکر میکنم هدف اصلی از افزودن این حساب کاربری برای آلودهسازی مجدد و حملات بعدی است. اگر چه آلوده کردن برای اولین بار حتی بدون حساب کاربری جدید Default و با استفاده از ورود ناشناس ممکن است.
سپس payload این اکسپلویت یک VBScript را از نشانی زیر دریافت و اجرا میکند:
hxxp: //212. 83. 190. 122/server/agent. vbs

شکل 8: VBScript از URL مخرب دریافت و اجرا میشود.
VBScript دانلود شده
فایل agent. vbs مسئول دانلود و شروع فایل ماینر و تنظیم سیستم است.
فایل vbs مخرب، اکانت Default را با رمز عبور P@ssw0rdf0rme میسازد و این حساب را در گروههای محلی Administrators، Remote Desktop Users و Users اضافه میکند. سپس RDP را فعال میکند و یک rule در فایروال ایجاد میکند که ترافیک RDP روی پورت 3389 مجاز باشد. همچنین سرویس به روزرسانی ویندوز را متوقف میکند و سرویس Remote Access Connection Manager را راهاندازی میکند. سپس Windows Remote Management Service را تنظیم میکند تا بتواند احراز هویت ساده را انجام دهد و اجازه دهد دادههای encrypt نشده منتقل شوند. همچنین ماشین را برای حملات احتمالی بعدی باز میکند.

شکل 9: تنظیم ماشین برای حملات بعدی
سپس فایل ماینر را دانلود میکند، xmrigMiner32. zip یا xmrigMiner64. zip بسته به معماری پردازنده از نشانی URL hxxp: //212. 83. 190. 122/server دانلود میشود.

شکل 10: دانلود فایل ماینر بسته به معماری پردازنده

شکل 11: آرشیو دانلود شده شامل چند فایل مختلف است
فایل shcm. exe شامل یک VBScript است که سرویسها را متوقف، غیرفعال و حذف میکند و کابران شبکه و فایلها را پاک میکند و پردازشها متوقف میکند. همان طور که در شکل زیر مشاهده میشود:

شکل 12: shcm. exe سرویسها را متوقف، غیرفعال و حذف میکند

شکل 13: shcm. exe کاربران شبکه را حذف میکند
شکل 14: shcm. exe فایلها را حذف میکند
شکل 15: shcm. exe پردازشها را متوقف میکند
فایلهای rmsg. exe و svcm. exe هم شامل VBScriptهایی هستند که به عنوان نگهبان عمل میکنند تا مطمئن شوند همه فایلها در حال اجرا هستند.
شکل 16: نگهبانان مطمئن میشوند همه فایلها در حال اجرا هستند
فایل WinSvcMan. exe ماینر اصلی است که توسط svchost. exe به عنوان سرویس SmbAgentService شناخته میشود. فایل svchost. exe در حقیقت یک NSSM (Non-Sucking Service Manager) اجرایی است.
شکل 17: فایل ماینر به عنوان سرویس Non-Sucking Service Manager ثبت شده است
در حقیقت فایل ماینر XMRig است که یک ماینر CPU با عملکرد بالا Monero (XMR) است.
شکل 18: XMRig 2. 5. 2
همان طور که از این مقاله مشخص است، یکی از Address Poolهای استفاده شده در این بدافزار در حال حاضر 2. 4 Monero پرداخت شده است. همان طور که در شکل 19 دیده میشود در حال حاضر 650 دلار ارزش دارد. با این حال این فقط یک نمونه است و ما مطمئن نیستیم که تهدید کننده در مجموع چه مقدار سود کرده است.
شکل 19: درآمد مربوط به آدرس Monero مورد استفاده توسط PyRoMine
مکانیسم شروع خودکار
این بدافزار نیز یک فایل BAT به نام help. bat ایجاد میکند که فایل shcm. exe را اجرا میکند. سپس یک وظیفه برنامهریزی شده برای اجرای فایل BAT به نام ONSTART را ایجاد میکند. اجرای shcm. exe باعث اجرای همه فایلها از جمله فایل ماینر میشود.
شکل 20: مکانیزم شروع خودکار
چرا مونرو؟
دو دلیل ممکن است وجود داشته باشد که چرا توسعه دهندگان بدافزار مونرو را از میان ارزهای دیجیتالی مانند بیتکوین انتخاب کردهاند.
اولاً الگوریتم استخراج مونرو برای رایانههای معمولی طراحی شده و نیازی به GPU ندارد، بنابراین اهداف بالقوه بیشتری دارد. دلیل دوم وعده مونرو برای تبادلات مالی ناشناس است.
نتیجه
PyRoMine اولین ماینر ارز دیجیتال نیست که از اکسپلویتهای لو رفته NSA برای گسترش استفاده میکند. ماشینهای ویندوزی که اصلاحیه را از مایکروسافت نصب نکردهاند کماکان در معرض خطر حملات مشابه هستند. این بدافزار یک تهدید واقعی است، زیرا نه تنها از ماشین برای استخراج ارز دیجیتال استفاده میکند بلکه دستگاه را برای حملات احتمالی آینده باز میکند، زیرا سرویس RDP فعال میشود و سرویسهای امنیتی را غیرفعال میکند.
FortiguardLabs انتظار دارد این بدافزار همچنان به سوءاستفاده از اکسپلویتهای NSA ادامه دهد تا توانایی خود را برای حمله به سیستمهای آسیبپذیر را ارتقا دهد و سود بیشتری به دست آورد.
راه حل:
به کاربران توصیه میشود اصلاحیه منتشر شده توسط مایکروسافت برای CVE-2017-0144 و CVE-2017-0145 را نصب کنند.