این روش یعنی یک فایل DLL را بدون ذخیره روی دیسک، مستقیماً داخل حافظه سیستم (RAM) بارگذاری و اجرا کنیم.
در حالت عادی، وقتی یک برنامه میخواهد از یک DLL استفاده کند، سیستمعامل با تابعی مثل LoadLibrary آن DLL را از هاردخوانده و لود میکند. اما در Reflective DLL Loading، مهاجم نسخهی باینری DLL را بهشکل خام (مثلاً از اینترنت یا داخل یک payload دیگر) دریافت میکند و آن را با دستوراتی مثل VirtualAlloc و WriteProcessMemory مستقیماً در حافظه یک پروسه قرار میدهد.
درون این DLL یک کد خاص به نام Reflective Loader هست که نقش همان LoadLibrary را در حافظه بازی میکند: جدول توابع را تنظیم میکند، آدرس APIها را پیدا میکند و ساختار DLL را برای اجرا آماده میکند. بعد از این مرحله، کنترل به کد اصلی DLL داده میشود و برنامه بدون نیاز به فایل روی دیسک اجرا میشود.
مزیت برای مهاجم چیست؟
آنتیویروسها سختتر میتوانند آن را پیدا کنند چون هیچ فایل واقعی برای اسکن وجود ندارد.
نقاط شکار کجاست؟ با ابزارهایی مثل Sysmon میتوان Load شدن ماژولهای بدون مسیر دیسک (Event ID 7) یا ایجاد Thread از راه دور (Event ID 8) را دید. EDRها هم میتوانند حافظه فرآیندها را بررسی و DLLهای مشکوک را شناسایی کنند.