محمد نصیری
هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات

DNS Cache Poisoning چیست و DNS Cache Locking چه می کند؟

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

همانطور که می دانید یکی از مرسوم ترین حملاتی که در اینترنت به سرورها انجام می شود ، حمله به حافظه Cache سرورهای DNS است که با آلوده شدن آنها در واقع یک سرور آلوده و هک شده است و با توجه به حساسیت سرویس DNS اختلالات جبران ناپذیری ممکن است برای شبکه شما پیش بیاید ، در این مطلب در انجمن تخصصی فناوری اطلاعات ایران می خواهیم در خصوص قابلیتی به نام Cache Locking یا قفل کردن حافظه کش صحبت کنیم.

Cache Locking در واقع یک مکانیزم امنیتی جدید است که از ویندوز سرور 2008 نسخه R2 به سرویس DNS اضافه شده است و شما با استفاده از این قابلیت می توانید تعیین کنید که آیا اطلاعات موجود در حافظه کش قابل بازنویسی باشند یا نباشند که البته در لفظ فنی می گوییم Cache Locking تعیین می کند که آیا Cache در DNS قابل Overwrite شدن است یا اینکه نمی توان آن را تغییر داد.

DNS Cache Poisoning چیست ؟

زمانیکه شما قابلیت Cache Locking در DNS را فعال می کنید ، DNS سرور به رکوردهایی که درون حافظه Cache قرار گرفته اند اجازه Overwrite شدن در طی مقدار TTL یا Tile To Live اختصاص یافته به آن رکورد را نمی دهد. در واقع می توان از Cache Locking به عنوان یک مکانیزم امنیتی در برابر حملات DNS Cache Poisoning نام برد.

این قابلیت بصورت پیشفرض بر روی سیستم عامل ویندوز سرور 2008 نسخه R2 وجود دارد اما شما می توانید تنظیمات مربوط به این قابلیت جالب را بصورت دستی نیز دلخواه سازی کنید. همانطور که قبلا در سری معرفی سرویس DNS به صورت طنز در انجمن تخصصی فناوری اطلاعات ایران عنوان کردیم ، یک DNS سرور که بصورت بازگشتی یا Recursive فعالیت می کند با دریافت کردن هر query و بدست آوردن پاسخ آن ، رکورد مربوطه را در حافظه کش خود نگهداری می کند تا در صورت دریافت query بعدی بتواند در سریعترین زمان ممکن پاسخگو باشد.

مدت زمانی که قرار است DNS سرور رکوردهای کش شده را در خود نگهداری کند با توجه به مقدار TTL ای تعیین می شود که به آن رکورد کش شده اختصاص یافته است. تا زمان منقضی شدن زمان TTL اطلاعات موجود در حافظه کش در صورت دریافت اطلاعات جدید در خصوص رکورد کش شده قابل تغییر و Overwrite می باشند. اگر یک مهاجم بتواند در این میان اطلاعات موجود در حافظه کش سرور DNS را دستکاری کند و آن را Overwrite کند ، قادر خواهد بود ترافیک مربوط به درخواست های کلاینت ها برای رکورد مربوطه را به سمت مسیر مورد نظر خودش که ممکن است یک وب سایت جعلی باشد هدایت کند ، به این نوع حمله همانطور که قبلا هم اشاره شد DNS Cache Poisoning گفته می شود.

این مکانیزم امنیتی بیشتر به درد افرادی می خورد که در شبکه خود اکتیودایرکتوی و سرویس DNS دارند و یا به عنوان کارشناس امنیت در شبکه مشغول به کار هستند. نکته مهمی که باید در خصوص Cache Locking در نظر داشته باشید این است که این قابلیت در قالب درصد یا Percent بیان می شود. برای مثال اگر قابلیت Cache Locking بصورت 50 در بیاید ، DNS تا زمانیکه 50 درصد مدت زمان TTL نگذشته باشد اجازه Overwrite شدن آن را نمی دهد.

بصورت پیشفرض این عدد بصورت 100 است یعنی در کل مدت زمان TTL هیچکس نمی تواند حافظه کش سیستم سرور را دستکاری و آن را Overwrite کند. مقدار Cache Locking در کلید رجیستری به نام CacheLockingPercent ذخیره می شود ، اگر این کلید وجود نداشته باشد DNS سرور بصورت پیشفرض عدد 100 را برای آن در نظر می گیرد ، بنابراین با توجه به قرارگیری عدد 100 در این میان میتوان گفت که DNS سرور بصورت پیشفرض در برابر حملات Cache Poisoning مقاوم شده اند.

چگونه تنظیمات مربوط به Cache Locking را انجام دهیم ؟

برای پیکربندی و البته دلخواه سازی Cache Locking در ویندوز سرور 2008 نسخه R2 و بعد از آن شما می توانید از دو روش استفاده کنید ، روش اول با استفاده از محیط خط فرمان و با استفاده از ابزار dnscmd.exe است و روش دوم با استفاده از محیط گرافیکی و دستکاری کردن کلید رجیستری است که قبلا عنوان کردیم ، بنابراین بعد از Login کردن به سیستم با استفاده از کاربری که دسترسی های لازم را داشته باشد دستور زیر را برای تغییر درصد Cache Locking وارد می کنیم :

dnscmd /Config /CacheLockingPercent <percent>

در قسمت Percent کافیست درصد مورد نظرتان را وارد کنید ، اما برای اینکه همین کار را توسط محیط گرافیکی و البته تغییر کلیدهای رجیستری انجام دهید مراحل زیر را دنبال کنید ، به مسیر زیر در رجیستری سیستم بروید :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters

اگر کلیدی به شکل CacheLockingPercent را مشاهده کردید کافیست آن را ویرایش کرده و درصد مورد نظر خود را وارد کنید اما اگر کلید مورد نظر وجود نداشت کافیست ابتدا بر روی Parameters راست کلیک کنید و گزینه New و سپس یک کلید به شکل DWORD (32-bit) Value به نام CacheLockingPercent ایجاد کنید ، بر روی کلید CacheLockingPercent دابل کلیک کنید و از قسمت Base گزینه Decimal را انتخاب کنید و در قسمت Value data عدد درصد مورد نظرتان را قرار دهید. فراموش نکنید بعد از OK کردن حتما بعد از خارج شدن از رجیستری سرویس DNS را یکبار Restart کنید تا تغییرات اعمال شود.


محمد نصیری
محمد نصیری

هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات

هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات و کشف جرائم رایانه ای ، بیش از 12 هزار ساعت سابقه تدریس در بیش از 40 سازمان دولتی ، خصوصی و نظامی ، علاقه مند به یادگیری بیشتر و عاشق محیط زیست ، عضو کوچکی از مجموعه توسینسو

07 دی 1393 این مطلب را ارسال کرده

نظرات