حملات، پیشگیری و شناسایی آسیب پذیری سرقت DLL

DLL مخفف Dynamic Link Libraries و بخش های خارجی برنامه هایی هستند که روی ویندوز(Windows) یا هر سیستم عامل دیگری اجرا می شوند. اکثر برنامه ها به خودی خود کامل نیستند و کد را در فایل های مختلف ذخیره می کنند. در صورت نیاز به کد، فایل مربوطه در حافظه بارگذاری شده و مورد استفاده قرار می گیرد. این کار باعث کاهش حجم فایل برنامه و در عین حال بهینه سازی استفاده از RAM می شود. این مقاله به شما توضیح می دهد که DLL Hijacking چیست و چگونه می توان از آن جلوگیری کرد.

فایل های(Files) DLL یا کتابخانه های پیوند پویا چیست؟(Dynamic Link Libraries)

ربودن DLL

(DLL)فایل‌های DLL کتابخانه‌های پیوند پویا(Dynamic Link Libraries) هستند و همانطور که از نامشان مشخص است، پسوند برنامه‌های مختلف هستند. هر برنامه ای که استفاده می کنیم ممکن است از کدهای خاصی استفاده کند یا نباشد. چنین کدهایی در فایل های مختلف ذخیره می شوند و تنها زمانی که کد مربوطه مورد نیاز است ، فراخوانی یا در RAM بارگذاری می شوند. (RAM)بنابراین، یک فایل برنامه را از بزرگ شدن بیش از حد و جلوگیری از هجوم منابع توسط برنامه ذخیره می کند.

مسیر فایل های DLL توسط سیستم عامل ویندوز(Windows) تنظیم می شود. مسیر با استفاده از متغیرهای جهانی محیطی(Global Environmental Variables) تنظیم شده است . به طور پیش‌فرض، اگر برنامه‌ای یک فایل DLL درخواست کند ، سیستم عامل به همان پوشه‌ای که برنامه در آن ذخیره شده است نگاه می‌کند. اگر در آنجا یافت نشد، به پوشه های دیگر می رود که توسط متغیرهای سراسری تنظیم شده است. اولویت‌هایی به مسیرها متصل است و به ویندوز(Windows) کمک می‌کند تا تعیین کند چه پوشه‌هایی را برای DLL(DLLs) جستجو کند. اینجاست که سرقت DLL وارد می شود.

DLL Hijacking چیست؟

از آنجایی که DLL(DLLs) ها پسوند هستند و برای استفاده تقریباً از همه برنامه های کاربردی در دستگاه های شما ضروری هستند، همانطور که توضیح داده شد در پوشه های مختلف روی رایانه وجود دارند. اگر فایل DLL اصلی با یک فایل DLL جعلی حاوی کد مخرب جایگزین شود، به آن DLL Hijacking می گویند .

همانطور که قبلاً ذکر شد، اولویت هایی در مورد جایی که سیستم عامل به دنبال فایل های DLL می گردد وجود دارد. ابتدا(First) به همان پوشه پوشه برنامه نگاه می کند و سپس بر اساس اولویت های تعیین شده توسط متغیرهای محیطی سیستم عامل به جستجو می پردازد. بنابراین، اگر یک فایل good.dll در پوشه SysWOW64 باشد و شخصی یک فایل bad.dll را در پوشه‌ای قرار دهد که اولویت بیشتری نسبت به پوشه SysWOW64 دارد، سیستم عامل از فایل bad.dll استفاده می‌کند، زیرا همنام DLL است. درخواست شده توسط برنامه پس از وارد شدن به رم(RAM) ، می‌تواند کد مخرب موجود در فایل را اجرا کند و ممکن است رایانه یا شبکه‌های شما را در معرض خطر قرار دهد.

نحوه تشخیص ربودن DLL

ساده ترین روش برای شناسایی و جلوگیری از ربودن DLL ، استفاده از ابزارهای شخص ثالث است. چند ابزار رایگان خوب در بازار موجود است که به شناسایی تلاش برای هک DLL و جلوگیری از آن کمک می کند.

یکی از این برنامه ها DLL Hijack Auditor است اما فقط از برنامه های 32 بیتی پشتیبانی می کند. می‌توانید آن را روی رایانه خود نصب کنید و تمام برنامه‌های ویندوز خود را اسکن کنید تا ببینید همه برنامه‌ها در برابر ربودن DLL آسیب‌پذیر هستند. (DLL)رابط کاربری ساده و قابل توضیح است. تنها عیب این برنامه این است که نمی توانید برنامه های 64 بیتی را اسکن کنید.

برنامه دیگری برای تشخیص سرقت DLL ،  DLL_HIJACK_DETECT، از طریق GitHub در دسترس است . این برنامه برنامه ها را بررسی می کند تا ببیند آیا هر یک از آنها در برابر ربودن DLL آسیب پذیر هستند یا خیر. (DLL)در صورت وجود، برنامه به کاربر اطلاع می دهد. این برنامه دارای دو نسخه - x86 و x64 است که می توانید از هر کدام برای اسکن برنامه های 32 بیتی و 64 بیتی استفاده کنید.

لازم به ذکر است که برنامه های فوق فقط برنامه های موجود در پلتفرم ویندوز را از نظر (Windows)آسیب پذیری اسکن می کنند و عملاً از ربوده شدن فایل های DLL جلوگیری نمی کنند .

چگونه از ربودن DLL جلوگیری کنیم

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

برای بازگشت به آنچه می توانید انجام دهید، فقط سعی کنید سیستم های امنیتی خود را افزایش دهید تا سیستم ویندوز خود را بهتر ایمن کنید(secure your Windows system) . از فایروال(firewall) خوب استفاده کنید . در صورت امکان، از فایروال سخت افزاری استفاده کنید یا فایروال روتر را روشن کنید. از سیستم های تشخیص نفوذ خوب استفاده کنید تا متوجه شوید که آیا کسی سعی دارد با رایانه شما بازی کند.

اگر به عیب‌یابی رایانه‌ها علاقه دارید، می‌توانید موارد زیر را نیز برای ارتقای امنیت خود انجام دهید:

  1. بارگیری DLL(DLL) را از اشتراک‌گذاری‌های شبکه راه دور غیرفعال کنید
  2. بارگیری فایل های DLL را از WebDAV غیرفعال کنید(WebDAV)
  3. سرویس WebClient(WebClient) را به طور کامل غیرفعال کنید یا آن را به صورت دستی تنظیم کنید
  4. (Block)پورت های TCP 445 و 139 را (TCP)مسدود کنید زیرا بیشتر برای رایانه های در معرض خطر استفاده می شوند.
  5. آخرین به روز رسانی سیستم عامل و نرم افزار امنیتی را نصب کنید.

مایکروسافت(Microsoft) ابزاری را برای جلوگیری از حملات ربودن بار DLL منتشر کرده است. (DLL)این ابزار خطر حملات ربودن DLL را با جلوگیری از بارگیری ناایمن کد از فایل های DLL توسط برنامه ها کاهش می دهد .

اگر می خواهید چیزی به مقاله اضافه کنید، لطفاً در زیر نظر دهید.(If you would like to add anything to the article, please comment below.)



About the author

من یک دانشمند کامپیوتر با تمرکز بر حریم خصوصی و حساب های کاربری و ایمنی خانواده هستم. من در چند سال گذشته روی بهبود امنیت گوشی های هوشمند کار کرده ام و تجربه کار با شرکت های بازی را دارم. من همچنین در مورد مسائل مربوط به حساب های کاربری و بازی در موارد متعدد نوشته ام.



Related posts