Bind Link؛ وقتی یک قابلیت ویندوز، EDR رو کور میکنه
خلاصهٔ کاملتر
ویندوز یه قابلیت مجازیسازی فایلسیستم داره که یه مسیر محلی رو به مسیر دیگهای هدایت میکنه — بدون تغییر فایل اصلی و بدون اینکه ردپای ماندگاری روی فایلسیستم بذاره. پیادهسازیاش با درایور minifilterای به اسم bindflt.sys (همون Bind Filter) انجام میشه و کاربردهای کاملاً مشروع داره: اپهای Store، Windows Sandbox و کانتینرهای ویندوز. تیم Bitdefender Labs حالا سه تکنیک تازه رو روی همین قابلیت مستند و نامگذاری کرده.
نویسنده توضیح میده که چرا این موضوع مهمه: بخش بزرگی از منطق امنیتی ویندوز از یه مسیر شروع میشه. پروسه ساخته میشه و درایور یه image path میگیره؛ محصول امنیتی همون مسیر رو باز میکنه تا هش بگیره؛ AppLocker قاعدهای بر اساس مسیر یا هش یا ناشر چک میکنه؛ فایروال بر اساس مسیر فایل اجرایی تصمیم میگیره؛ و PowerShell کتابخانهٔ AMSI رو از System32 لود میکنه و فرض میکنه همون فایل واقعیه. فرض مشترک همهٔ اینها یه چیزه: مسیر به همون فایلی اشاره میکنه که همه فکر میکنن. bind link دقیقاً همین فرض رو میشکنه.
تفاوتش با symlink معمولی هم همون جاییه که برای شناسایی اهمیت داره: bind link یه شیء روی دیسک یا reparse point نیست، بلکه تو جدول نگاشت داخلی درایور و در حافظه زندگی میکنه، با ریبوت یا حذف نگاشت از بین میره، و بیشتر ابزارهای پیمایش فایلسیستم اصلاً نمیبیننش. مهمتر اینکه میتونه روی فایلی که از قبل وجود داره سایه بندازه: فایل واقعی بایتبهبایت سرجاش میمونه و تمیز به نظر میرسه، ولی هر باز کردن اون مسیر فایل پشتیبان رو برمیگردونه.
تکنیک اول File-Bindingه، یعنی ربودن مسیر. مهاجم از یه مسیر مورد اعتماد به فایل خودش لینک میسازه و هر پروسهای که اون مسیر رو باز کنه فایل مهاجم رو میگیره. مثال شاخصش AMSIه: PowerShell طبق معمول amsi.dll رو لود میکنه، ولی چیزی که تو حافظه میشینه DLL مهاجمه که همون توابع رو export کرده و عملاً هیچی اسکن نمیکنه — بدون وصلهزدن به PowerShell، بدون دستزدن به فایل روی دیسک و بدون تزریق کلاسیک. همین کار روی DLL حسگر یوزرمود خود EDR (که ظاهراً موفق لود میشه ولی تلهمتریاش هرگز نمیرسه) یا روی فایل لاگ رویدادها برای دستکاری شواهد جرمشناسی هم جواب میده.
تکنیک دوم Process-Bindingه: همون ایده روی فایل اجرایی. تو نمونهٔ نمایشی، یه ابزار سیستمی بیخطر به cmd.exe بایند شده؛ کاربر اولی رو اجرا میکنه، ولی چیزی که واقعاً اجرا میشه دومیه. سیگنالهای استاندارد ساخت پروسه — از جمله ImageFileName و SeLocateImageName — همون مسیر مورد اعتماد رو گزارش میدن و فقط فراخوان کماستفادهتر PsReferenceProcessFilePointer حقیقت رو برمیگردونه. ضعف این تکنیک اینه که لینک سراسریه و ابزار دیگهای که مسیرها رو دوباره باز کنه میتونه ناهماهنگی رو ببینه.
تکنیک سوم Silo-Binding همین ضعف رو میبنده. سایلو نسخهٔ قویتر job objectه که به مجموعهای از پروسهها نمای ایزولهای از فایلسیستم و رجیستری و نام اشیا میده — همون چیزی که زیر کانتینرهای ویندوز و Windows Sandbox نشسته. مهاجم دو لینک میسازه: یکی محدود به سایلو که مسیر مورد اعتماد رو به پیلود میبره، و یکی سراسری و معکوس که مسیر پیلود رو برای بقیهٔ سیستم به همون فایل تمیز برمیگردونه. نتیجه دو نمای متفاوت از یک فایلسیستمه.
پیامدهاش رو نویسنده با چند نمونه نشون میده: دور زدن AppLocker (قاعده بر اساس چیزی که از بیرون سایلو میبینه تصمیم میگیره)، دور زدن فایروال ویندوز (چون فایروال مسیر برنامه رو هویت فرض میکنه)، و مسمومکردن Sysmon — چون Sysmon بیرون سایلو اجرا میشه و موقع هشگرفتن به فایل تمیز هدایت میشه، پس شکار تهدید بر اساس هش هیچی پیدا نمیکنه. تیم حتی یه اسکریپت شناختهشدهٔ سرقت اعتبارنامه رو که در حالت عادی بلافاصله بلاک میشد، با دادن هویت یه پروسهٔ سیستمی مورد اعتماد از سد آنتیویروس رد کرده — بدون اینکه خود اسکریپت ذرهای تغییر کنه.
دربارهٔ دامنهٔ خطر، مقاله شفافه: این حمله دسترسی ادمین محلی میخواد و مایکروسافت بعد از افشای مسئولانه شدتش رو پایین ارزیابی کرده. موضع Bitdefender اما مثل موضع صنعت دربارهٔ BYOVDه — ادمین شدن یعنی پایان بازی نیست، بهخصوص که بیشتر گروههای باجافزاری حرفهای «EDR killer» رو بهعنوان یه گام استاندارد قبل از رمزگذاری به کار میبرن. ضمناً تیم یه سناریوی ارتقای سطح دسترسی در Docker Desktop هم پیدا و گزارش کرده که تو اون عضو گروه docker-users بدون ادمین بودن میتونه به SYSTEM برسه؛ داکر بعد از گزارش، مستنداتش رو بهروز کرد.
توصیههای دفاعی هم مشخصن: vetoای که ویندوز 24H2 اضافه کرده فقط یه لایهٔ جزئیه (روی نسخههای قدیمیتر نیست، فقط برای پارتیشن بوت فعال میشه و قابل دور زدنه)؛ به image path حاصل از کالبک ساخت پروسه اعتماد نکنید و هر تصمیم مبتنی بر مسیر رو روی فایل پشتیبان واقعی بگیرید؛ موقع هر بازگشایی تأخیری (هش، اسکن غیرهمزمان، پاکسازی) هویت رو دوباره حل کنید؛ نگاشتهای فعال bind link رو شمارش کنید تا لینکهای محدود به سایلو از قلم نیفتن؛ و بعد از نفوذ، هر لایهٔ مجازیسازی فایلسیستم رو تحت کنترل مهاجم فرض کنید.
نکات کلیدی:
- bind link یه قابلیت مشروع ویندوزه که مسیر رو در حافظه و بدون ردپای دیسکی به فایل دیگهای هدایت میکنه
- برخلاف symlink میتونه روی فایل موجود سایه بندازه و از دید پیمایش فایلسیستم پنهون بمونه
- File-Binding: مسیر مورد اعتماد محتوای مهاجم برمیگردونه (خنثیسازی AMSI و حسگر EDR)
- Process-Binding: سیستم یه مسیر گزارش میده ولی فایل دیگهای اجرا میشه؛ ضعفش سراسری بودن لینکه
- Silo-Binding: دو نمای متفاوت از یک مسیر، داخل و خارج سایلو — دور زدن AppLocker، فایروال و هش Sysmon
- حمله ادمین محلی میخواد، ولی مثل BYOVD نباید دستکم گرفته بشه
- یه مسیر ارتقای دسترسی در Docker Desktop هم گزارش و مستنداتش اصلاح شد
- توصیهٔ اصلی به سازندگان دفاع: هویت رو از فایل پشتیبان واقعی حل کنید، نه از مسیر گزارششده




