یک روش جدید برای تزریق فرآیند (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 توصیه میشود.