آخرین اخبار
همهٔ اخبار
اکسپلویت‌ها گزارش بحرانیت ۴/۱۰

تکنیک جدید تزریق کد در ویندوز برای دور زدن سیستم‌های EDR بدون استفاده از WriteProcessMemory

تکنیک جدید تزریق کد در ویندوز برای دور زدن سیستم‌های EDR بدون استفاده از WriteProcessMemory

یک روش جدید برای تزریق فرآیند (Process Injection) در سیستم‌عامل ویندوز توسط پژوهشگر امنیتی Two Seven One Three معرفی شده است که می‌تواند دو API کلیدی و متداول در حملات تزریق کد، یعنی VirtualAllocEx و WriteProcessMemory را دور بزند.

مکانیسم حمله: تزریق از طریق Named-Pipe کنسول

این تکنیک که Console Named-Pipe Injection نامیده شده است، به جای تخصیص مستقیم حافظه در فرآیند هدف، بایت‌های Payload را از طریق ورودی استاندارد (Standard Input) یک فرآیند کنسول فرزند (Child Process) منتقل می‌کند و از حافظه‌ای که پیش‌تر توسط ویندوز تخصیص یافته است، بهره‌برداری می‌کند. این رویکرد باعث می‌شود توالی‌های شناسایی متداول (Allocate-Write-Execute) که بسیاری از سیستم‌های EDR بر اساس آن‌ها طراحی شده‌اند، مختل شوند.

در حالت معمول، تزریق فرآیند (که در چارچوب MITRE ATT&CK با کد T1055 رصد می‌شود) شامل باز کردن فرآیند هدف، تخصیص حافظه از راه دور، کپی کد با استفاده از WriteProcessMemory و در نهایت اجرای یک Thread است. اما در این متد جدید، مهاجم یک کنسول تعاملی (مانند nslookup.exe یا netsh.exe) ایجاد کرده و ورودی استاندارد آن را به یک Pipe تغییر مسیر می‌دهد تا Payload را با استفاده از WriteFile ارسال کند.

مراحل اجرایی و فنی

  • انتقال داده: والد (Parent) انتهای خواندن Pipe را به عنوان Handle ورودی استاندارد فرزند تعیین کرده و انتهای دیگر را برای نوشتن نگه می‌دارد.
  • یافتن Payload: بایت‌های ارسالی در فضای آدرس برنامه کنسول قرار می‌گیرند. کد اکسپلویت با استفاده از یک Marker خاص، حافظه را جستجو کرده و نقطه ورود Shellcode را محاسبه می‌کند.
  • تغییر سطح دسترسی: پس از یافتن بافر، مهاجم از VirtualProtectEx استفاده می‌کند تا صفحات حافظه موجود را به حالت قابل اجرا (Executable) تغییر دهد.
  • تسخیر جریان اجرا: در نهایت، یک Thread متوقف شده، اشاره‌گر دستورالعمل (Instruction Pointer) آن تغییر یافته و سپس اجرا از سر گرفته می‌شود.

محدودیت‌ها و چالش‌های شناسایی

این روش با محدودیت‌هایی روبروست؛ برای مثال، Payload نباید شامل کاراکترهای Carriage Return، Line Feed یا Ctrl+Z باشد، زیرا کنسول آن‌ها را به عنوان پایان دستور یا پایان فایل (EOF) تفسیر می‌کند. همچنین، عملیاتی مانند اسکن حافظه و تغییر دسترسی‌ها توسط VirtualProtectEx همچنان قابل شناسایی هستند.

توصیه‌های دفاعی برای SOC و تیم‌های امنیت

مدیران SOC و مهندسان امنیت باید از تکیه بر هشدارهای تک-API دست بردارند و به دنبال تحلیل رفتاری (Behavioral Analysis) باشند. سیگنال‌های با ارزش برای شناسایی این حمله عبارتند از:

  • اجرای یک باینری کنسول تعاملی توسط یک فرآیند والد غیرمعمول با Handleهای تغییر مسیر یافته.
  • نوشتن داده‌های شبیه به باینری در ورودی استاندارد (Standard-Input).
  • تغییر دسترسی حافظه به حالت Executable از طریق VirtualProtectEx در یک فرآیند خارجی.
  • استفاده از SetThreadContext بلافاصله پس از تغییرات حافظه.

برای رصد این فعالیت‌ها، استفاده از Sysmon Event IDs 17 و 18 جهت تحلیل تله‌متری Named-Pipe توصیه می‌شود.