حمله تزریق DLL (DLL Injection) چیست؟ چگونه از آن جلوگیری کنیم؟

حمله تزریق DLL (DLL Injection) چیست؟ چگونه از آن جلوگیری کنیم؟

در دنیای ویندوز فایل‌های DLL نقش مهمی در اجرای برنامه‌ها دارند، زیرا به نرم‌افزارها امکان استفاده از توابع مشترک را می‌دهند. اما این ویژگی می‌تواند به یک ضعف امنیتی تبدیل شود، زیرا مهاجمان از طریق حمله DLL Injection می‌توانند کد مخرب خود را به فرآیندهای معتبر سیستم وارد کرده و کنترل آن‌ها را در دست بگیرند. این حمله یکی از روش‌های رایج برای سرقت اطلاعات، دور زدن مکانیزم‌های امنیتی و اجرای کدهای مخرب است.

حمله تزریق DLL چیست؟

حمله تزریق DLL یک تکنیک مخرب است که در آن یک مهاجم یک فایل DLL جعلی یا مخرب را در یک فرآیند معتبر در حال اجرا تزریق می‌کند. این حمله به مهاجم اجازه می‌دهد تا کد دلخواه خود را درون برنامه هدف اجرا کرده و کنترل آن را به دست بگیرد. از آنجایی که بسیاری از برنامه‌ها برای اجرای صحیح خود به DLLهای خارجی وابسته هستند، مهاجمان می‌توانند این وابستگی را دستکاری کرده و سیستم را فریب دهند تا DLL مخرب را به جای نسخه اصلی بارگذاری کند.

این حمله معمولاً برای مقاصد مختلفی از جمله دور زدن مکانیزم‌های امنیتی، سرقت اطلاعات، ثبت فعالیت‌های کاربر و اجرای کد مخرب استفاده می‌شود. یکی از دلایل محبوبیت این روش، امکان اجرای کد بدون نیاز به مجوزهای خاص یا تغییر مستقیم در فایل‌های اجرایی است. به همین دلیل DLL Injection یکی از تکنیک‌های پرکاربرد در بدافزارها، ابزارهای هک و حتی تست نفوذ برای تحلیل امنیتی نرم‌افزارها محسوب می‌شود.

ProcessDLL min

DLL Injection چگونه کار می‌کند؟

  1. شناسایی فرآیند هدف:

مهاجم ابتدا باید فرآیند (Process) مورد نظر را که قصد تزریق DLL به آن دارد، شناسایی کند. این کار معمولاً از طریق ابزارهای مدیریت پردازش یا APIهای سیستم‌عامل مانند OpenProcess در ویندوز انجام می‌شود.

  1. اختصاص حافظه برای DLL:

پس از شناسایی فرآیند هدف، مهاجم باید فضایی را در حافظه آن فرآیند برای بارگذاری مسیر DLL مخرب رزرو کند. این کار معمولاً با استفاده از VirtualAllocEx انجام می‌شود که حافظه‌ای را در فضای فرآیند مقصد ایجاد می‌کند.

  1. نوشتن مسیر DLL در حافظه فرآیند هدف:

مسیر DLL مخرب در حافظه اختصاص داده شده نوشته می‌شود. این مرحله با استفاده از WriteProcessMemory انجام می‌شود که به مهاجم اجازه می‌دهد داده‌های خود را در حافظه فرآیند دیگر وارد کند.

  1. اجرای DLL مخرب در فرآیند هدف:

در مرحله نهایی، مهاجم از توابعی مانند CreateRemoteThread یا NtCreateThreadEx برای اجرای DLL درون فرآیند هدف استفاده می‌کند. پس از اجرای موفقیت‌آمیز، کد مخرب درون برنامه اجرا شده و مهاجم کنترل آن را به دست می‌گیرد.

انواع روش‌های تزریق DLL

  • تزریق از طریق APIهای سیستم

یکی از رایج‌ترین روش‌های DLL Injection استفاده از APIهای سیستم‌عامل مانند CreateRemoteThread، WriteProcessMemory و LoadLibrary در ویندوز است. در این روش، مهاجم ابتدا مسیر DLL مخرب را در حافظه فرآیند هدف قرار داده و سپس با استفاده از یک Thread جدید، آن را اجرا می‌کند. این تکنیک به دلیل استفاده از توابع قانونی ویندوز، به‌راحتی توسط ابزارهای امنیتی تشخیص داده نمی‌شود.

تزریق حمله از طریق APIهای سیستم

  • تزریق از طریق تغییر رجیستری

در این روش، مهاجم کلیدهای رجیستری مربوط به DLLهای بارگذاری‌شده هنگام راه‌اندازی برنامه‌ها یا سیستم‌عامل را تغییر می‌دهد. برای مثال، کلید AppInit_DLLs در ویندوز می‌تواند برای بارگذاری خودکار DLLهای مخرب در برنامه‌های سیستمی استفاده شود. این روش باعث اجرای دائمی DLL مخرب شده و حتی پس از ریستارت سیستم نیز فعال می‌ماند.

  • تزریق از طریق هک پردازش‌ها

در این روش، مهاجم با تغییر کد اجرایی یک فرآیند در حال اجرا، DLL مخرب را به آن تزریق می‌کند. این کار می‌تواند از طریق تغییر جدول Import Address Table (IAT) یا Hook کردن توابع سیستمی انجام شود. این تکنیک معمولاً برای دور زدن مکانیزم‌های امنیتی و دسترسی به منابع حساس سیستم استفاده می‌شود و شناسایی آن دشوارتر است.

چگونه از حمله تزریق DLL جلوگیری کنیم؟

  1. فعال‌سازی Windows Defender و سایر آنتی‌ویروس‌ها

استفاده از یک آنتی‌ویروس یا ابزار امنیتی به‌روز می‌تواند به شناسایی و مسدودسازی تلاش‌های تزریق DLL کمک کند. Windows Defender و سایر آنتی‌ویروس‌های معتبر قابلیت شناسایی رفتارهای مشکوک مانند بارگذاری DLLهای غیرمجاز را دارند و می‌توانند از اجرای آن‌ها جلوگیری کنند.

فعال‌سازی Windows Defender و سایر آنتی‌ویروس‌ها

  1. استفاده از امضاهای دیجیتالی برای DLLها

یکی از روش‌های مهم برای جلوگیری از تزریق DLL، امضای دیجیتالی فایل‌های DLL مجاز است. با این کار، سیستم‌عامل تنها DLLهایی را که از منابع معتبر امضا شده‌اند بارگذاری می‌کند و DLLهای مشکوک یا غیرمجاز امکان اجرا نخواهند داشت.

  1. فعال‌سازیASLR

ASLR یک تکنیک امنیتی است که مکان بارگذاری DLLها و سایر داده‌های اجرایی را در حافظه تصادفی می‌کند. این کار باعث می‌شود مهاجمان نتوانند به‌راحتی محل دقیق DLLهای مهم را شناسایی کرده و آن‌ها را دستکاری کنند، در نتیجه حملات تزریق DLL دشوارتر می‌شود.

ASLR چیست و چگونه در حافظه رایانه شما تغییر ایجاد می کند؟

  1. محدود کردن دسترسی‌های کاربری و اجرای نرم‌افزارها با کمترین سطح دسترسی

اجرای برنامه‌ها با دسترسی محدود (Limited User Account) می‌تواند از دسترسی غیرمجاز به حافظه فرآیندهای حیاتی سیستم جلوگیری کند. در صورت استفاده از حساب کاربری با دسترسی بالا، مهاجمان می‌توانند DLLهای مخرب را به برنامه‌های حیاتی سیستم تزریق کرده و کنترل بیشتری بر روی سیستم بگیرند.

  1. نظارت بر تغییرات رجیستری و جلوگیری از اصلاح کلیدهای حساس

برخی از تکنیک‌های تزریق DLL از تغییر کلیدهای رجیستری برای بارگذاری DLLهای مخرب استفاده می‌کنند. ابزارهایی مانند Windows Event Viewer و نرم‌افزارهای نظارت بر رجیستری می‌توانند تغییرات مشکوک را شناسایی کرده و از اجرای DLLهای غیرمجاز جلوگیری کنند.

جمع‌بندی…

حمله تزریق DLL یکی از تکنیک‌های خطرناک است که مهاجمان برای اجرای کدهای مخرب و کنترل فرآیندهای سیستم از آن استفاده می‌کنند. این حمله می‌تواند برای سرقت اطلاعات، دستکاری برنامه‌ها و اجرای بدافزارها به کار رود. درک نحوه عملکرد این حمله و روش‌های مختلف آن به کاربران و مدیران شبکه کمک می‌کند تا راهکارهای امنیتی مؤثری مانند فعال‌سازی ASLR را به کار گیرند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دیدگاه