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

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 کنید تا تغییرات اعمال شود.

حملات DNS سرور ، جزو حملات بسیار خطرناک در بحث آموزش امنیت شبکه و تست نفوذ به حساب می آیند. در پایان اگر می خواهید در مورد این مباحث بیشتر بدانید به شما عزیزان توصیه می کنم که برای یادگیری و ورود به دنیای امنیت شبکه و اطلاعات با دوره آموزش سکیوریتی پلاس Security+ شروع کنید و سپس وارد دوره آموزش CEH یا دوره آموزشی هک قانونمند شوید تا دید بازتر و بهتری نسبت به امنیت تدافعی و تهاجمی داشته باشید. اگر برای شما این پیشنهاد جای سوال دارد ، پیشنهاد می کنم حتما مقاله چگونه هکر شویم را مطالعه کنید و مسیر راه یادگیری هک و امنیت را به خوبی درک کنید.


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

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات