پرش به محتوای اصلی
آسیب‌پذیری‌های سایت

DNS Cache Poisoning چیست؟ بررسی مسموم‌سازی کش DNS و روش‌های جلوگیری

DNS Cache Poisoning یا مسموم‌سازی کش DNS حمله‌ای است که در آن اطلاعات جعلی وارد حافظه DNS Resolver شده و ممکن است کاربران را با وجود وارد کردن دامنه صحیح به مقصدی اشتباه هدایت کند. این حمله می‌تواند زمینه‌ساز فیشینگ، سرقت اطلاعات ورود، بدافزار و اختلال سرویس شود. استفاده از DNSSEC، Resolverهای به‌روز و امن، مانیتورینگ رکوردهای DNS، محافظت از حساب Registrar با 2FA و استفاده صحیح از HTTPS از مهم‌ترین راهکارهای کاهش خطر DNS Cache Poisoning هستند.

تیم امنیت رخنه‌کاو ۳۶ دقیقه مطالعه انتشار:

DNS Cache Poisoning یا مسموم‌سازی کش DNS نوعی حمله سایبری است که در آن اطلاعات نادرست وارد حافظه موقت یک DNS Resolver می‌شود و باعث می‌شود کاربران به‌جای سرور واقعی یک دامنه، به مقصدی جعلی یا تحت کنترل مهاجم هدایت شوند. مهم‌ترین راهکارهای مقابله با این تهدید شامل استفاده از DNSSEC، به‌روزرسانی نرم‌افزارهای DNS، تصادفی‌سازی مناسب درخواست‌ها، استفاده از Resolverهای معتبر، مانیتورینگ رکوردهای DNS و پیکربندی امن زیرساخت DNS است.

سامانه نام دامنه یا DNS یکی از مهم‌ترین بخش‌های زیرساخت اینترنت است. تقریباً هر بار که کاربری یک آدرس مانند example.com را در مرورگر وارد می‌کند، DNS وظیفه دارد نام قابل فهم برای انسان را به یک IP Address قابل استفاده توسط سیستم‌های شبکه تبدیل کند.

همین نقش حیاتی باعث شده است DNS همواره یکی از اهداف جذاب مهاجمان باشد. اگر مهاجم بتواند فرایند تبدیل نام دامنه به IP را دست‌کاری کند، ممکن است بدون تغییر خود وب‌سایت، کاربران را به مقصد دیگری هدایت کند.

یکی از مهم‌ترین حملاتی که این بخش از اینترنت را هدف قرار می‌دهد DNS Cache Poisoning است.

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

DNS Cache Poisoning می‌تواند زمینه‌ساز حملات گسترده‌تری مانند Phishing، سرقت اطلاعات ورود، توزیع Malware، هدایت ترافیک به وب‌سایت‌های جعلی و حتی مختل شدن سرویس‌های سازمانی شود.

در ادامه این مقاله بررسی می‌کنیم DNS Cache Poisoning چیست، DNS Cache چگونه کار می‌کند، مسموم‌سازی کش DNS چگونه اتفاق می‌افتد، چه تفاوتی با DNS Hijacking دارد، چه خطراتی ایجاد می‌کند و چگونه می‌توان احتمال وقوع آن را کاهش داد.

DNS چیست و چرا امنیت آن اهمیت دارد؟

DNS مخفف Domain Name System است و می‌توان آن را به‌صورت ساده دفترچه تلفن اینترنت در نظر گرفت.

کاربران معمولاً نمی‌خواهند برای باز کردن یک سایت مجموعه‌ای از اعداد مربوط به IP را به خاطر بسپارند. به همین دلیل دامنه‌هایی مانند:

rekhnekav.ir

استفاده می‌شوند.

اما تجهیزات شبکه برای برقراری ارتباط باید بدانند مقصد موردنظر روی چه IP Address قرار گرفته است. DNS این ارتباط را برقرار می‌کند.

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

کاربر نام دامنه را وارد می‌کند، سیستم DNS درباره IP مربوط به آن دامنه پرس‌وجو می‌کند و پس از یافتن پاسخ، مرورگر می‌تواند به سرور موردنظر متصل شود.

این فرایند در ظاهر ساده است، اما در پشت صحنه ممکن است چندین بخش مختلف شامل Stub Resolver، Recursive Resolver، Root DNS Server، TLD Server و Authoritative Name Server در آن نقش داشته باشند.

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

به همین دلیل امنیت DNS تنها مربوط به مدیران دامنه نیست. تقریباً امنیت بخش بزرگی از سرویس‌های اینترنتی به درستی پاسخ‌های DNS وابسته است.

DNS Cache چیست؟

اگر DNS Resolver مجبور بود برای هر درخواست کاربر تمام مسیر جستجوی DNS را از ابتدا طی کند، سرعت اینترنت کاهش پیدا می‌کرد و بار بسیار زیادی روی سرورهای DNS ایجاد می‌شد.

برای جلوگیری از این مشکل از Cache استفاده می‌شود.

DNS Cache یک حافظه موقت است که پاسخ‌های DNS قبلی را برای مدت مشخصی نگهداری می‌کند.

برای مثال اگر یک Resolver چند ثانیه قبل IP مربوط به یک دامنه را پیدا کرده باشد، در درخواست بعدی ممکن است به‌جای پرس‌وجوی مجدد از سرورهای بالادستی، پاسخ ذخیره‌شده داخل Cache را برگرداند.

این مکانیزم باعث می‌شود:

سرعت پاسخ‌دهی DNS افزایش پیدا کند، تعداد Queryهای تکراری کاهش یابد، فشار روی DNS Serverها کمتر شود و تجربه کاربر سریع‌تر باشد.

هر رکورد DNS معمولاً دارای مقداری به نام TTL یا Time To Live است.

TTL مشخص می‌کند پاسخ DNS چه مدت می‌تواند در Cache باقی بماند.

برای مثال اگر TTL یک رکورد 3600 ثانیه باشد، Resolver ممکن است پاسخ را تا حدود یک ساعت در حافظه نگهداری کند و سپس برای دریافت اطلاعات جدید دوباره Query ارسال کند.

همین قابلیت Cache که برای افزایش Performance طراحی شده است، در صورت سوءاستفاده می‌تواند به نقطه‌ای مهم برای حملات DNS Cache Poisoning تبدیل شود.

DNS Cache Poisoning چیست؟

DNS Cache Poisoning زمانی رخ می‌دهد که یک DNS Resolver اطلاعات نادرست یا جعلی را در Cache خود ذخیره کند.

این وضعیت می‌تواند باعث شود درخواست‌های بعدی کاربران به آدرس اشتباهی هدایت شوند.

برای مثال فرض کنید دامنه واقعی یک بانک یا فروشگاه اینترنتی روی یک IP مشخص قرار دارد. اگر Resolver به‌اشتباه رکورد جعلی دیگری را Cache کند، ممکن است کاربری که همان دامنه صحیح را وارد می‌کند، IP متفاوتی دریافت کند.

از دید کاربر، نام دامنه همچنان درست است.

اما مقصد شبکه تغییر کرده است.

همین ویژگی باعث می‌شود DNS Cache Poisoning خطرناک باشد؛ زیرا قربانی الزاماً لینک مشکوکی را باز نکرده و حتی ممکن است آدرس سایت را به‌صورت دستی وارد کرده باشد.

در سناریوی مخرب، کاربر ممکن است به سایتی هدایت شود که از نظر ظاهری بسیار شبیه سرویس اصلی طراحی شده است.

اگر کنترل‌های امنیتی دیگری مانند HTTPS، اعتبارسنجی صحیح Certificate و سیاست‌های امنیتی مرورگر وجود نداشته باشند، احتمال موفقیت حملات بعدی افزایش پیدا می‌کند.

البته اینترنت مدرن نسبت به سال‌های گذشته در برابر بسیاری از تکنیک‌های قدیمی مسموم‌سازی DNS مقاوم‌تر شده است. استفاده از شناسه‌های تصادفی‌تر، Source Port Randomization، DNSSEC و بهبود Resolverها باعث شده برخی حملات کلاسیک دشوارتر شوند.

بااین‌حال، DNS Poisoning همچنان موضوعی مهم در امنیت شبکه است و ضعف در پیکربندی DNS، نرم‌افزارهای قدیمی، Resolverهای ناامن یا حمله به بخش‌های مرتبط با DNS می‌تواند ریسک جدی ایجاد کند.

DNS Resolver چگونه کار می‌کند؟

برای درک DNS Cache Poisoning ابتدا باید نقش Resolver را بشناسیم.

وقتی سیستم کاربر به دنبال IP یک دامنه است، معمولاً درخواست مستقیماً برای Authoritative Name Server ارسال نمی‌شود.

در بسیاری از شبکه‌ها درخواست ابتدا به یک Recursive DNS Resolver می‌رود.

Resolver بررسی می‌کند که آیا پاسخ دامنه از قبل داخل Cache وجود دارد یا خیر.

اگر پاسخ معتبر موجود باشد، همان نتیجه برای کاربر ارسال می‌شود.

اگر Cache فاقد پاسخ باشد، Resolver فرایند یافتن اطلاعات را آغاز می‌کند.

Resolver ممکن است ابتدا از Root DNS Server کمک بگیرد. Root Server اطلاعات مربوط به دامنه سطح بالا مانند .com، .org یا .ir را مشخص می‌کند.

سپس Resolver می‌تواند به TLD Name Server مربوطه مراجعه کند.

در مرحله بعد به Authoritative Name Server دامنه هدایت می‌شود و پاسخ نهایی را دریافت می‌کند.

در پایان، پاسخ برای مدتی Cache می‌شود.

این فرایند باعث می‌شود درخواست‌های بعدی سریع‌تر پاسخ داده شوند.

مشکل زمانی ایجاد می‌شود که Resolver به‌جای پاسخ معتبر، اطلاعات جعلی را قبول کرده و Cache کند. DNS Cache Poisoning چگونه اتفاق می‌افتد؟

DNS Cache Poisoning چگونه اتفاق می‌افتد؟

DNS Cache Poisoning معمولاً بر سوءاستفاده از اعتماد Resolver به پاسخ‌های DNS استوار است.

در یک مدل ساده، Resolver یک Query ارسال می‌کند و منتظر پاسخ معتبر می‌ماند.

برای اینکه Resolver بتواند پاسخ را به Query مربوطه مرتبط کند، بخش‌هایی از درخواست و پاسخ باید با یکدیگر مطابقت داشته باشند.

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

مهاجم در چنین شرایطی تلاش می‌کرد پیش از رسیدن پاسخ واقعی، یک پاسخ جعلی را به Resolver برساند.

اگر Resolver پاسخ نادرست را معتبر تشخیص می‌داد، اطلاعات جعلی ممکن بود Cache شود.

نسخه‌های جدیدتر DNS Serverها از چند مکانیزم برای دشوارتر کردن این حمله استفاده می‌کنند. یکی از مهم‌ترین آن‌ها افزایش Entropy یا غیرقابل‌پیش‌بینی کردن ویژگی‌های Query است.

برای مثال علاوه بر Transaction ID، Source Port نیز می‌تواند به شکل تصادفی انتخاب شود.

در نتیجه مهاجم برای جعل موفق یک پاسخ باید متغیرهای بیشتری را حدس بزند.

نکته مهم این است که DNS Cache Poisoning فقط یک سناریوی واحد ندارد. ضعف نرم‌افزاری، تنظیمات اشتباه، Resolverهای ناامن، زیرساخت‌های قدیمی و حتی نفوذ به بخش‌های مدیریتی DNS می‌توانند در نهایت خروجی مشابهی ایجاد کنند: کاربر پاسخ DNS نادرست دریافت می‌کند. یک مثال ساده از مسموم‌سازی کش DNS

یک مثال ساده از مسموم‌سازی کش DNS

فرض کنید کاربری قصد دارد وارد دامنه زیر شود:

shop.example

IP واقعی این دامنه فرضاً:

192.0.2.20

است.

Resolver شبکه هنوز پاسخ این دامنه را در Cache ندارد و برای پیدا کردن IP شروع به Query می‌کند.

در حالت طبیعی، Authoritative DNS Server پاسخ معتبر را ارسال می‌کند و Resolver IP واقعی را Cache خواهد کرد.

اما در یک حمله موفق DNS Cache Poisoning، Resolver ممکن است به‌جای پاسخ اصلی، یک پاسخ جعلی را بپذیرد.

برای مثال پاسخ نادرست می‌تواند دامنه را به یک IP متفاوت مرتبط کند.

در ادامه هر کاربری که از همان Resolver استفاده کند، ممکن است تا زمان پایان TTL یا حذف Cache، پاسخ نادرست را دریافت کند.

این مثال صرفاً برای توضیح معماری حمله است. در سیستم‌های مدرن، کنترل‌های متعددی برای سخت‌تر کردن جعل پاسخ DNS وجود دارد.

چرا DNS Cache Poisoning خطرناک است؟

خطر اصلی این حمله در این است که DNS در لایه‌ای قرار دارد که بسیاری از کاربران عادی آن را مشاهده نمی‌کنند.

کاربر ممکن است آدرس صحیح سایت را وارد کند و هیچ اشتباه ظاهری انجام نداده باشد، اما پاسخ DNS اشتباه دریافت کند.

این موضوع می‌تواند زمینه را برای چندین تهدید فراهم کند.

هدایت کاربران به صفحات فیشینگ

یکی از مهم‌ترین سناریوها، Redirect کاربران به وب‌سایتی جعلی است.

مهاجم ممکن است صفحه‌ای طراحی کند که ظاهر آن مشابه سایت اصلی باشد.

هدف می‌تواند دریافت Username، Password، اطلاعات بانکی یا سایر داده‌های حساس باشد.

HTTPS و بررسی صحیح Certificate می‌توانند نقش مهمی در جلوگیری از موفقیت چنین سناریوهایی داشته باشند.

توزیع بدافزار

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

به همین دلیل DNS Poisoning در برخی زنجیره‌های حمله می‌تواند به‌عنوان مرحله‌ای برای Redirect مورد استفاده قرار گیرد.

سرقت اطلاعات ورود

اگر سرویس جعلی بتواند کاربر را متقاعد کند اطلاعات ورود خود را وارد کند، Credentialها ممکن است در اختیار مهاجم قرار گیرند.

استفاده از 2FA یا MFA می‌تواند بخشی از ریسک سوءاستفاده از Password سرقت‌شده را کاهش دهد، هرچند به‌تنهایی جایگزین امنیت DNS و بررسی مقصد نیست.

اختلال در دسترسی به سرویس‌ها

هدف حمله همیشه سرقت اطلاعات نیست.

گاهی پاسخ‌های DNS نادرست می‌توانند باعث شوند یک دامنه به سرور غیرقابل دسترس اشاره کند.

در این حالت DNS Poisoning ممکن است عملاً باعث اختلال یا Denial of Service برای کاربران شود.

آسیب به اعتبار برند

اگر کاربران یک سازمان به مقصد مخرب هدایت شوند، ممکن است اعتبار آن برند آسیب ببیند؛ حتی اگر سرور اصلی سازمان مستقیماً هک نشده باشد.

برای کسب‌وکارهای مالی، فروشگاه‌های اینترنتی، سرویس‌های SaaS و وب‌سایت‌هایی که اطلاعات حساس کاربران را مدیریت می‌کنند، این موضوع اهمیت بیشتری دارد.

تفاوت DNS Cache Poisoning با DNS Spoofing چیست؟

اصطلاح‌های DNS Spoofing و DNS Cache Poisoning گاهی به‌جای یکدیگر استفاده می‌شوند، اما از نظر مفهومی می‌توان بین آن‌ها تفاوت قائل شد.

DNS Spoofing اصطلاح گسترده‌تری برای جعل پاسخ یا اطلاعات DNS است.

اما DNS Cache Poisoning مشخصاً به حالتی اشاره دارد که اطلاعات جعلی وارد Cache یک Resolver می‌شوند و برای درخواست‌های بعدی نیز مورد استفاده قرار می‌گیرند.

بنابراین می‌توان Cache Poisoning را یکی از شکل‌های DNS Spoofing در نظر گرفت.

ویژگی مهم Cache Poisoning ماندگاری موقت پاسخ جعلی است.

اگر داده جعلی در Cache ثبت شود، ممکن است چندین کاربر بدون اجرای مجدد حمله همان اطلاعات اشتباه را دریافت کنند. تفاوت DNS Cache Poisoning با DNS Hijacking

تفاوت DNS Cache Poisoning با DNS Hijacking

DNS Cache Poisoning و DNS Hijacking نتیجه مشابهی ایجاد می‌کنند: کاربر ممکن است به مقصد اشتباه هدایت شود.

اما روش وقوع آن‌ها متفاوت است.

در DNS Cache Poisoning، هدف اصلی دست‌کاری یا آلوده کردن Cache Resolver است.

در مقابل، DNS Hijacking معمولاً مفهوم گسترده‌تری دارد و ممکن است شامل تغییر تنظیمات DNS دستگاه، مودم، Router، حساب Registrar، Name Server یا زیرساخت DNS باشد.

برای مثال اگر مهاجم به پنل مدیریت دامنه دسترسی پیدا کند و Name Server یا رکوردهای DNS را تغییر دهد، بیشتر با سناریوی DNS Hijacking یا Domain/DNS Account Compromise روبه‌رو هستیم تا Cache Poisoning کلاسیک.

مقایسه کلی این دو مفهوم:

ویژگیDNS Cache PoisoningDNS Hijacking
هدف اصلیCache مربوط به DNS Resolverتنظیمات یا مسیر DNS
ماندگاریمعمولاً تا پایان TTL یا پاک شدن Cacheممکن است تا اصلاح تنظیمات ادامه داشته باشد
نیاز به تغییر رکورد اصلیمعمولاً خیرممکن است بله
تأثیرکاربران Resolver آلودهبسته به محل تغییر ممکن است گسترده‌تر باشد
کنترل مهمDNSSEC و Resolver امنامنیت Registrar، MFA و مانیتورینگ DNS

در عمل، هنگام بررسی یک Incident باید مشخص شود پاسخ غلط واقعاً از Cache آلوده آمده یا رکورد اصلی، Name Server، Router یا تنظیمات Client تغییر کرده است. DNSSEC چیست؟

DNSSEC چیست؟

یکی از مهم‌ترین فناوری‌هایی که برای افزایش امنیت DNS طراحی شده DNSSEC یا Domain Name System Security Extensions است.

DNSSEC با استفاده از امضاهای رمزنگاری‌شده امکان بررسی اصالت اطلاعات DNS را فراهم می‌کند.

نکته مهم این است که DNSSEC معمولاً اطلاعات DNS را رمزنگاری نمی‌کند.

هدف اصلی آن فراهم کردن Authenticity و Integrity است.

یعنی Resolver اعتبارسنج می‌تواند بررسی کند که پاسخ DNS واقعاً از زنجیره مورد اعتماد آمده و در مسیر تغییر نکرده است.

در یک ساختار صحیح DNSSEC، رکوردهای DNS با کلیدهای رمزنگاری مرتبط امضا می‌شوند.

Resolverهایی که DNSSEC Validation را انجام می‌دهند می‌توانند امضا را بررسی کنند.

اگر پاسخ جعلی باشد یا اعتبار رمزنگاری آن تأیید نشود، Resolver نباید آن را به‌عنوان داده معتبر قبول کند.

به همین دلیل DNSSEC یکی از مهم‌ترین مکانیزم‌های دفاعی در برابر Cache Poisoning محسوب می‌شود.

آیا DNSSEC به‌تنهایی تمام حملات DNS را متوقف می‌کند؟

خیر.

DNSSEC ابزار بسیار مهمی است، اما راه‌حل همه مشکلات DNS نیست.

برای مثال اگر حساب Registrar دامنه هک شود و مهاجم بتواند تنظیمات اصلی دامنه را تغییر دهد، مسئله فقط جعل پاسخ Cache نیست.

همچنین اگر Endpoint کاربر آلوده شده و تنظیمات DNS سیستم تغییر کرده باشند، DNSSEC لزوماً تمام اثرات چنین حمله‌ای را خنثی نمی‌کند.

امنیت واقعی DNS باید چندلایه باشد.

DNSSEC، امنیت حساب Registrar، MFA، محدود کردن دسترسی مدیریتی، به‌روزرسانی Resolverها، مانیتورینگ رکوردها و امنیت شبکه باید در کنار یکدیگر استفاده شوند.

نقش Transaction ID در امنیت DNS

در پروتکل DNS، Query و Response دارای اطلاعاتی هستند که Resolver از آن‌ها برای مرتبط کردن پاسخ با درخواست استفاده می‌کند.

یکی از بخش‌های مهم، Transaction ID است.

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

به همین دلیل Randomization اهمیت زیادی دارد.

Resolverهای مدرن باید از تولید مقادیر غیرقابل پیش‌بینی استفاده کنند.

بااین‌حال تنها اتکا به Transaction ID کافی نیست.

به همین دلیل مکانیزم‌های دیگری مانند Source Port Randomization نیز به کار گرفته شده‌اند.

Source Port Randomization چیست؟

Resolver برای ارسال Queryهای DNS از پورت شبکه استفاده می‌کند.

اگر Source Port همیشه مقدار قابل پیش‌بینی داشته باشد، فضای لازم برای حدس زدن ویژگی‌های درخواست کاهش پیدا می‌کند.

Source Port Randomization باعث می‌شود Resolver برای Queryها از پورت‌های تصادفی‌تر استفاده کند.

این کار Entropy را افزایش داده و جعل موفق پاسخ را سخت‌تر می‌کند.

پس از شناخته شدن حملات جدی علیه Resolverهای قدیمی، Source Port Randomization به یکی از مهم‌ترین بهبودهای دفاعی در نرم‌افزارهای DNS تبدیل شد.

البته این مکانیزم جایگزین DNSSEC نیست.

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

TTL چه ارتباطی با DNS Cache Poisoning دارد؟

TTL مشخص می‌کند یک رکورد DNS چه مدت در Cache نگهداری شود.

اگر اطلاعات جعلی وارد Cache شوند، مقدار TTL می‌تواند بر مدت باقی ماندن آن‌ها اثر بگذارد.

بااین‌حال کاهش شدید TTL راه‌حل اصلی DNS Cache Poisoning نیست.

TTL پایین ممکن است مدت Cache شدن بعضی رکوردها را کاهش دهد، اما Queryهای بیشتری ایجاد کرده و بار بیشتری روی زیرساخت DNS وارد می‌کند.

از طرف دیگر، امنیت پاسخ همچنان باید از طریق Resolver امن، DNSSEC و کنترل‌های صحیح تأمین شود.

بنابراین TTL باید بر اساس معماری سرویس، نیاز به تغییر رکوردها، Performance و سیاست عملیاتی تنظیم شود؛ نه اینکه صرفاً به‌عنوان ابزار امنیتی در برابر Cache Poisoning در نظر گرفته شود.

چه سیستم‌هایی ممکن است DNS Cache داشته باشند؟

تصور رایجی وجود دارد که DNS Cache فقط روی DNS Server قرار دارد، اما در عمل Cache ممکن است در چندین سطح وجود داشته باشد.

سیستم‌عامل می‌تواند پاسخ‌های DNS را Cache کند.

مرورگر ممکن است مکانیزم‌های داخلی مرتبط با DNS و Connection Management داشته باشد.

Router یا Gateway شبکه ممکن است نقش DNS Forwarder را ایفا کند.

ISP ممکن است Recursive Resolver ارائه دهد.

سازمان‌ها نیز ممکن است Resolver داخلی خود را داشته باشند.

همچنین سرویس‌های Public DNS Resolver مانند Resolverهای عمومی نیز پاسخ‌ها را Cache می‌کنند.

به همین دلیل هنگام عیب‌یابی DNS باید مشخص شود پاسخ نادرست دقیقاً در کدام لایه ایجاد یا Cache شده است.

نشانه‌های احتمالی DNS Cache Poisoning

تشخیص DNS Cache Poisoning همیشه ساده نیست، زیرا بسیاری از مشکلات DNS علائم مشابه ایجاد می‌کنند.

برای مثال تغییر IP یک سایت، اختلال CDN، خطای DNS، تنظیمات اشتباه Hosts File یا تغییر Resolver می‌تواند علائمی شبیه Poisoning ایجاد کند.

بااین‌حال چند نشانه می‌توانند نیاز به بررسی بیشتر را نشان دهند.

یکی از مهم‌ترین موارد این است که یک دامنه در یک شبکه به IP متفاوتی نسبت به Resolverهای معتبر دیگر Resolve شود.

اگر پاسخ DNS یک سازمان با Authoritative DNS Server دامنه تفاوت غیرمنتظره داشته باشد، باید موضوع بررسی شود.

Certificate Warningهای ناگهانی نیز می‌توانند نشانه مهمی باشند.

اگر کاربر دامنه صحیحی را باز کند اما مرورگر اخطار HTTPS درباره Certificate نامعتبر نمایش دهد، یکی از احتمالات می‌تواند هدایت کاربر به سرور اشتباه باشد.

همچنین Redirectهای غیرمنتظره، نمایش سایت متفاوت، تفاوت پاسخ میان شبکه‌های مختلف و تغییر عجیب رکوردها باید جدی گرفته شوند.

البته هیچ‌یک از این موارد به‌تنهایی اثبات‌کننده DNS Cache Poisoning نیستند.

چگونه DNS Cache Poisoning را تشخیص دهیم؟

برای بررسی حرفه‌ای، بهتر است پاسخ DNS از چند منبع مستقل مقایسه شود.

برای مثال تیم امنیت می‌تواند نتیجه Resolver داخلی را با Resolverهای قابل اعتماد و Authoritative DNS Server مقایسه کند.

اگر Resolver داخلی یک IP متفاوت ارائه کند، باید علت مشخص شود.

بررسی TTL نیز مفید است.

همچنین باید مشخص شود آیا رکورد روی Authoritative Server واقعاً تغییر کرده یا فقط یک Resolver خاص پاسخ متفاوت می‌دهد.

در محیط سازمانی، بررسی Logهای Resolver اهمیت زیادی دارد.

وجود Queryهای غیرعادی، حجم زیاد درخواست برای یک دامنه خاص، پاسخ‌هایی از منابع غیرمنتظره یا رفتار متفاوت DNS Server می‌تواند در تحلیل Incident کمک کند.

تیم امنیت همچنین باید Router، Firewall، DNS Forwarder و تنظیمات Client را بررسی کند تا احتمال DNS Hijacking یا تغییر تنظیمات محلی رد شود.

پاک کردن DNS Cache آیا مشکل را حل می‌کند؟

گاهی پاک کردن Cache می‌تواند پاسخ اشتباه ذخیره‌شده روی یک Client یا Resolver را حذف کند.

اما این اقدام به‌تنهایی راه‌حل کامل نیست.

اگر علت اصلی هنوز وجود داشته باشد، پاسخ جعلی ممکن است دوباره وارد Cache شود.

برای مثال اگر Resolver آسیب‌پذیر است، نرم‌افزار قدیمی دارد یا تنظیمات DNS دستگاه توسط Malware تغییر کرده، Flush کردن Cache تنها اثر موقت خواهد داشت.

پس از مشاهده DNS مشکوک باید ابتدا منشأ مشکل شناسایی شود.

سپس Cache آلوده حذف، Resolver اصلاح یا Patch شود و تنظیمات DNS مورد بررسی قرار گیرد. روش‌های جلوگیری از DNS Cache Poisoning

روش‌های جلوگیری از DNS Cache Poisoning

پیشگیری مؤثر نیازمند رویکرد چندلایه است.

استفاده از DNSSEC

مهم‌ترین کنترل تخصصی برای جلوگیری از پذیرش پاسخ‌های جعلی DNS، استفاده صحیح از DNSSEC است.

اگر دامنه از DNSSEC پشتیبانی کند و Resolver نیز Validation انجام دهد، پاسخ‌ها می‌توانند از نظر رمزنگاری بررسی شوند.

پیاده‌سازی DNSSEC باید با دقت انجام شود.

مدیریت اشتباه Keyها، DS Recordها یا فرآیند Rotation ممکن است باعث اختلال در Resolve شدن دامنه شود.

در سازمان‌های مهم بهتر است DNSSEC بخشی از فرایند رسمی مدیریت DNS باشد.

به‌روزرسانی DNS Server

نرم‌افزار Resolver باید همواره به‌روز باشد.

بسیاری از روش‌های حمله علیه DNS در طول سال‌ها باعث ایجاد Patchها و بهبودهای امنیتی در نرم‌افزارهای DNS شده‌اند.

استفاده از نسخه‌های قدیمی BIND، Unbound، Windows DNS Server یا سایر Resolverها ممکن است سازمان را در معرض آسیب‌پذیری‌های شناخته‌شده قرار دهد.

Patch Management برای DNS Server باید همان اندازه جدی گرفته شود که Patch کردن Web Server یا سیستم‌عامل اهمیت دارد.

استفاده از Source Port Randomization

Resolver باید از پیاده‌سازی امن و تصادفی‌سازی مناسب Source Port استفاده کند.

این قابلیت در نرم‌افزارهای مدرن DNS معمولاً به‌صورت پیش‌فرض وجود دارد، اما مدیر شبکه باید مطمئن شود تجهیزات واسط یا NAT باعث کاهش غیرضروری Entropy نمی‌شوند.

استفاده از Resolverهای معتبر

کاربران و سازمان‌ها باید از DNS Resolverهایی استفاده کنند که مدیریت و امنیت مناسبی دارند.

استفاده از DNS Serverهای ناشناس، قدیمی یا بدون پشتیبانی می‌تواند ریسک ایجاد کند.

در سازمان‌ها بهتر است Resolverهای داخلی Harden شوند و دسترسی Recursive عمومی به آن‌ها محدود شود.

جلوگیری از Open Resolver غیرضروری

DNS Resolver سازمانی که برای تمام اینترنت قابل استفاده است، ممکن است سطح حمله بزرگ‌تری ایجاد کند.

Recursive Resolverها باید فقط برای Clientهایی که واقعاً نیاز دارند در دسترس باشند.

Access Control List و محدودیت شبکه می‌توانند از سوءاستفاده از DNS Server جلوگیری کنند.

مانیتورینگ پاسخ‌های DNS

مانیتورینگ DNS یکی از کنترل‌های مهم و گاهی نادیده گرفته‌شده است.

سازمان‌ها باید تغییرات رکوردهای حساس مانند A، AAAA، MX، NS، CNAME و TXT را زیر نظر داشته باشند.

اگر IP یک سرویس حیاتی بدون Change Request معتبر تغییر کند، سیستم Monitoring باید هشدار ایجاد کند.

محافظت از حساب Registrar

اگرچه این کنترل مستقیماً مربوط به Cache Poisoning نیست، اما در امنیت کلی DNS اهمیت بسیار زیادی دارد.

مهاجمی که به حساب Registrar دسترسی پیدا کند ممکن است Name Serverها یا تنظیمات دامنه را تغییر دهد.

برای حساب Registrar باید MFA یا 2FA فعال باشد.

استفاده از Password قوی و منحصربه‌فرد، محدود کردن دسترسی و فعال‌سازی Registry Lock در سرویس‌هایی که آن را ارائه می‌دهند، می‌تواند امنیت دامنه را افزایش دهد.

استفاده صحیح از HTTPS

HTTPS نمی‌تواند DNS Cache Poisoning را مستقیماً متوقف کند، اما یک لایه دفاعی بسیار مهم در برابر پیامدهای آن محسوب می‌شود.

اگر کاربر به IP اشتباه هدایت شود، سرور مهاجم معمولاً نمی‌تواند Certificate معتبر همان دامنه را به‌سادگی ارائه کند.

مرورگر در چنین شرایطی باید هشدار امنیتی نمایش دهد.

به همین دلیل کاربران نباید هشدار Certificate را نادیده بگیرند.

استفاده صحیح از HSTS نیز می‌تواند مقاومت سرویس در برابر برخی حملات Downgrade و دست‌کاری ارتباط را افزایش دهد.

کنترل دسترسی مدیریتی

مدیریت DNS باید فقط برای افراد و سیستم‌های ضروری در دسترس باشد.

دسترسی مدیریتی بیش از حد باعث افزایش سطح حمله می‌شود.

اصل Least Privilege باید برای DNS Server، Registrar، Cloud DNS و سیستم‌های مرتبط رعایت شود.

Logging و Alerting

Resolverهای سازمانی باید Log مناسب داشته باشند.

Logها می‌توانند برای تشخیص رفتار غیرعادی، بررسی Incident و مقایسه پاسخ‌ها استفاده شوند.

در محیط‌های حساس می‌توان داده‌های DNS را به SIEM ارسال کرد و Ruleهایی برای تشخیص تغییرات غیرمعمول ایجاد کرد.

چک‌لیست امنیتی جلوگیری از DNS Cache Poisoning

برای کاهش ریسک، این موارد باید به‌صورت دوره‌ای بررسی شوند:

  • DNS Resolverها و سیستم‌عامل آن‌ها کاملاً Patch و به‌روز باشند؛ DNSSEC در صورت امکان برای دامنه فعال و روی Resolver اعتبارسنجی شود؛ Recursive DNS فقط برای شبکه‌ها و کاربران مجاز در دسترس باشد؛ Source Port Randomization و سایر مکانیزم‌های امنیتی Resolver غیرفعال نشده باشند؛ رکوردهای مهم DNS به‌طور مداوم مانیتور شوند؛ دسترسی به پنل Registrar و DNS Provider با MFA محافظت شود؛ Passwordهای مدیریتی منحصربه‌فرد باشند؛ تغییرات DNS ثبت و Audit شوند؛ Certificate Warningها جدی گرفته شوند؛ Resolverهای ناشناس و غیرقابل اعتماد استفاده نشوند؛ تنظیمات Router و DHCP از نظر DNS Serverهای غیرمنتظره بررسی شوند؛ Logهای DNS در محیط‌های حساس به SIEM یا سامانه Monitoring ارسال شوند؛ و برای رخدادهای DNS یک Incident Response Plan مشخص وجود داشته باشد.

DNS Cache Poisoning در شبکه سازمانی

در یک شبکه سازمانی، اثر Cache Poisoning ممکن است بسیار گسترده‌تر از یک کامپیوتر شخصی باشد.

اگر صدها یا هزاران Client از Resolver مشترک استفاده کنند، یک پاسخ اشتباه Cache شده می‌تواند روی تعداد زیادی کاربر اثر بگذارد.

به همین دلیل DNS Resolver سازمانی باید به‌عنوان یک دارایی Critical در نظر گرفته شود.

سرور باید Harden شده باشد، دسترسی مدیریتی محدود شود، Patchها منظم نصب شوند و ترافیک DNS مانیتور شود.

همچنین بهتر است Resolver مستقیماً از شبکه‌های غیرضروری قابل دسترسی نباشد.

در معماری‌های Enterprise ممکن است DNSهای داخلی و خارجی از یکدیگر جدا باشند.

برای مثال Internal DNS مسئول نام‌های داخلی سازمان است و Public Authoritative DNS رکوردهای قابل مشاهده از اینترنت را مدیریت می‌کند.

این جداسازی می‌تواند سطح حمله را کاهش دهد.

DNS Cache Poisoning در سایت‌های وردپرسی

وردپرس به‌خودی‌خود DNS Resolver اینترنت نیست، اما سایت وردپرسی همچنان می‌تواند از مشکلات DNS آسیب ببیند.

برای مثال اگر DNS دامنه سایت به مقصد اشتباه Resolve شود، کاربران حتی قبل از رسیدن به WordPress ممکن است به سرور دیگری هدایت شوند.

به همین دلیل امنیت WordPress تنها به Plugin، Theme یا wp-admin محدود نمی‌شود.

مالک سایت باید امنیت Registrar، DNS Provider، Hosting و CDN را نیز جدی بگیرد.

برای سایت‌های وردپرسی بهتر است MFA روی حساب Registrar و Cloud DNS فعال شود.

همچنین تغییرات A Record، AAAA، CNAME و NS باید مانیتور شوند.

اگر از CDN یا Reverse Proxy استفاده می‌شود، حساب آن سرویس نیز باید به‌خوبی محافظت شود.

DNS Cache Poisoning در فروشگاه‌های ووکامرسی

در سایت‌های WooCommerce، ریسک DNS حتی حساس‌تر است؛ زیرا کاربران ممکن است اطلاعات حساب، آدرس، سفارش و پرداخت را در سایت وارد کنند.

فرض کنید فروشگاه از نظر WordPress و WooCommerce کاملاً امن باشد، اما کاربران به دلیل مشکل DNS به دامنه یا IP جعلی هدایت شوند.

در چنین سناریویی امنیت Application به‌تنهایی کافی نیست.

برای فروشگاه‌های اینترنتی، محافظت از DNS بخشی از امنیت زنجیره خرید است.

HTTPS صحیح، HSTS، DNSSEC، MFA برای Registrar، مانیتورینگ رکوردها و مدیریت امن CDN می‌توانند بخشی از این زنجیره دفاعی باشند.

تأثیر DNS over HTTPS و DNS over TLS

DNS over HTTPS یا DoH و DNS over TLS یا DoT برای رمزنگاری ارتباط DNS میان Client و Resolver طراحی شده‌اند.

این فناوری‌ها از مشاهده یا دست‌کاری ساده Queryهای DNS در مسیر ارتباط جلوگیری می‌کنند.

اما DoH و DoT با DNSSEC یک وظیفه ندارند.

DoH و DoT بیشتر روی Confidentiality و Integrity ارتباط Client تا Resolver تمرکز دارند.

در مقابل DNSSEC برای اعتبارسنجی داده DNS در زنجیره طراحی شده است.

برای امنیت بهتر می‌توان این فناوری‌ها را مکمل یکدیگر در نظر گرفت.

برای مثال کاربر می‌تواند از ارتباط رمزنگاری‌شده با Resolver معتبر استفاده کند و Resolver نیز DNSSEC Validation انجام دهد.

آیا VPN از DNS Cache Poisoning جلوگیری می‌کند؟

VPN به‌تنهایی تضمینی برای جلوگیری از DNS Cache Poisoning نیست.

VPN معمولاً ترافیک کاربر را از تونل رمزنگاری‌شده عبور می‌دهد و ممکن است DNS Resolver مخصوص خود را نیز ارائه دهد.

این موضوع می‌تواند کاربر را در برابر برخی دست‌کاری‌های DNS در شبکه محلی محافظت کند.

اما اگر Resolver ارائه‌شده توسط VPN خود مشکل امنیتی داشته باشد یا پاسخ نادرست ارائه کند، استفاده از VPN مشکل را حل نخواهد کرد.

بنابراین کیفیت و امنیت DNS Resolver همچنان اهمیت دارد.

آیا تغییر DNS به Resolver عمومی کافی است؟

تغییر DNS از Resolver نامطمئن به یک Resolver معتبر می‌تواند امنیت و پایداری را افزایش دهد، اما به‌عنوان راه‌حل کامل نباید در نظر گرفته شود.

امنیت DNS فقط به انتخاب Provider مربوط نیست.

امنیت Endpoint، Router، Registrar، Authoritative DNS و اعتبارسنجی DNSSEC نیز اهمیت دارند.

در شبکه‌های سازمانی بهتر است انتخاب Resolver بخشی از طراحی معماری امنیتی باشد، نه تصمیمی تصادفی در سطح Client.

ارتباط HTTPS با DNS Cache Poisoning

یکی از پرسش‌های رایج این است که اگر DNS جعل شود، HTTPS چه اتفاقی می‌افتد؟

اگر کاربر به سروری متفاوت هدایت شود، سرور جعلی باید بتواند Certificate معتبر همان دامنه را ارائه کند.

در حالت عادی مهاجم نباید به Private Key یا Certificate معتبر دامنه دسترسی داشته باشد.

اگر Certificate ارائه‌شده معتبر نباشد، مرورگر Warning نمایش می‌دهد.

به همین دلیل نادیده گرفتن خطای SSL/TLS بسیار خطرناک است.

کاربر نباید صرفاً به دلیل اینکه نام دامنه در Address Bar صحیح است، از هشدار Certificate عبور کند.

DNS و HTTPS دو لایه متفاوت هستند که در کنار یکدیگر امنیت بیشتری ایجاد می‌کنند.

نقش HSTS در کاهش خطر

HSTS یا HTTP Strict Transport Security به سایت اجازه می‌دهد به مرورگر اعلام کند که ارتباط با دامنه باید فقط از طریق HTTPS انجام شود.

اگر سیاست HSTS از قبل شناخته‌شده باشد، مرورگر نباید اجازه دهد ارتباط به نسخه HTTP ناامن Downgrade شود.

HSTS مستقیماً DNS Poisoning را متوقف نمی‌کند، اما می‌تواند بخشی از زنجیره سوءاستفاده را دشوارتر کند.

در سایت‌های حساس استفاده صحیح از HTTPS و HSTS توصیه می‌شود.

نقش Firewall در امنیت DNS

Firewall می‌تواند بخشی از کنترل امنیت DNS باشد.

برای مثال سازمان می‌تواند مشخص کند Clientها فقط مجاز باشند با Resolverهای تعیین‌شده ارتباط برقرار کنند.

اگر Malware تلاش کند از DNS Server خارجی غیرمجاز استفاده کند، Policy شبکه ممکن است ارتباط را مسدود کند.

همچنین دسترسی مستقیم به Resolverهای داخلی باید فقط از شبکه‌های مجاز امکان‌پذیر باشد.

در محیط‌های پیشرفته، DNS Filtering و Network Monitoring می‌توانند رفتارهای غیرعادی را شناسایی کنند.

بااین‌حال Firewall به‌تنهایی جایگزین DNSSEC یا Patch Management نیست.

نقش SIEM در شناسایی حملات DNS

در سازمان‌هایی که زیرساخت امنیتی پیشرفته دارند، Logهای DNS می‌توانند به SIEM ارسال شوند.

تحلیل رفتار DNS اطلاعات ارزشمندی در اختیار تیم SOC قرار می‌دهد.

برای مثال افزایش ناگهانی Query برای یک دامنه، پاسخ‌های غیرمنتظره، Resolve شدن دامنه‌های مهم به IPهای جدید یا تغییر رفتار Resolver می‌تواند مورد بررسی قرار گیرد.

Correlation میان DNS Log، Firewall Log، Proxy Log و Endpoint Detection می‌تواند تصویر دقیق‌تری از Incident ایجاد کند. اگر به DNS Cache Poisoning مشکوک شدیم چه کار کنیم؟

اگر به DNS Cache Poisoning مشکوک شدیم چه کار کنیم؟

اولین اقدام نباید صرفاً پاک کردن Cache باشد.

ابتدا باید مشخص شود مشکل در چه سطحی رخ داده است.

پاسخ Resolver مشکوک را با چند Resolver مستقل و Authoritative DNS مقایسه کنید.

سپس رکوردهای اصلی دامنه را بررسی کنید تا مشخص شود تغییر قانونی یا غیرقانونی در DNS رخ داده است یا خیر.

تنظیمات DNS روی Client، Router و DHCP نیز باید بررسی شوند.

اگر Resolver سازمانی پاسخ اشتباه می‌دهد، آن را از شبکه جدا یا از مدار سرویس خارج کنید و Logها را حفظ کنید.

در ادامه نرم‌افزار Resolver، Patch Level، تنظیمات Recursion، دسترسی مدیریتی و DNSSEC Validation بررسی شوند.

بعد از شناسایی Root Cause، Cache آلوده پاک شده و سرویس با پیکربندی امن بازگردانده شود.

در محیط‌های حساس بهتر است این فرایند بخشی از Incident Response Plan رسمی سازمان باشد.

اشتباهات رایج در امنیت DNS

یکی از اشتباهات رایج این است که مدیران سایت تمام تمرکز خود را روی امنیت Application قرار می‌دهند و DNS را فراموش می‌کنند.

ممکن است WordPress، Server و Database کاملاً Harden شده باشند، اما یک حساب Registrar با Password ضعیف تمام زنجیره امنیت را آسیب‌پذیر کند.

اشتباه دیگر استفاده از DNS Serverهای قدیمی است.

DNS Server یک سرویس زیرساختی محسوب می‌شود و عدم Patch کردن آن می‌تواند ریسک جدی ایجاد کند.

اشتباه سوم غیرفعال کردن یا نادیده گرفتن DNSSEC بدون ارزیابی ریسک است.

در سرویس‌هایی که DNSSEC به‌درستی قابل استفاده است، این فناوری می‌تواند لایه مهمی از اعتماد رمزنگاری را ایجاد کند.

اشتباه دیگر، نادیده گرفتن Certificate Warning است.

اگر کاربر پس از باز کردن دامنه‌ای معتبر با هشدار TLS روبه‌رو شود، نباید بدون بررسی روی گزینه ادامه کلیک کند.

همچنین بعضی مدیران تصور می‌کنند استفاده از HTTPS تمام مشکلات DNS را حل می‌کند، درحالی‌که HTTPS و DNS Security دو لایه متفاوت هستند.

DNS Cache Poisoning و حملات Man-in-the-Middle

DNS Poisoning گاهی در کنار حملات Man-in-the-Middle مطرح می‌شود، اما این دو مفهوم یکسان نیستند.

در MITM مهاجم تلاش می‌کند میان دو طرف ارتباط قرار گیرد و ترافیک را مشاهده یا دست‌کاری کند.

در DNS Cache Poisoning، هدف تغییر پاسخ DNS است.

بااین‌حال یک مهاجم ممکن است از دست‌کاری DNS برای هدایت قربانی به زیرساختی استفاده کند که مرحله بعدی حمله در آن انجام می‌شود.

استفاده از TLS معتبر، DNSSEC و شبکه امن می‌تواند بخش‌های مختلف چنین زنجیره‌ای را دشوارتر کند.

آیا DNS Cache Poisoning هنوز در اینترنت مدرن تهدید مهمی است؟

بله، اما شرایط امروز با سال‌های ابتدایی اینترنت متفاوت است.

بسیاری از Resolverهای مدرن مکانیزم‌هایی دارند که حملات کلاسیک جعل پاسخ DNS را بسیار دشوارتر می‌کنند.

افزایش Entropy، Randomization بهتر، Patchهای امنیتی، DNSSEC و معماری‌های امن‌تر نقش مهمی داشته‌اند.

اما این به معنی حذف خطر DNS نیست.

زیرساخت‌های قدیمی همچنان وجود دارند.

خطاهای پیکربندی رخ می‌دهند.

آسیب‌پذیری‌های جدید در نرم‌افزارهای DNS ممکن است کشف شوند.

همچنین مهاجمان می‌توانند به‌جای حمله مستقیم به پروتکل، DNS Provider، Registrar، Router یا Endpoint را هدف قرار دهند.

بنابراین سازمان‌ها باید امنیت DNS را به‌عنوان فرآیندی مداوم در نظر بگیرند.

مقایسه DNS Cache Poisoning، DNS Hijacking و Pharming

این سه اصطلاح گاهی با یکدیگر اشتباه گرفته می‌شوند.

DNS Cache Poisoning روی Cache مربوط به DNS تمرکز دارد.

DNS Hijacking به تغییر مسیر DNS از طریق تغییر تنظیمات یا کنترل زیرساخت اشاره می‌کند.

Pharming اصطلاح گسترده‌تری برای هدایت کاربران به سایت جعلی بدون نیاز به کلیک روی لینک Phishing است و ممکن است از DNS Hijacking، Poisoning یا تغییر Hosts File استفاده کند.

حملههدف اصلینتیجه
DNS Cache PoisoningCache Resolverپاسخ DNS جعلی
DNS Hijackingتنظیمات یا کنترل DNSتغییر مسیر Query
Pharmingهدایت مخفی کاربرانتقال به سایت جعلی
Phishingفریب مستقیم کاربرکلیک یا ارسال اطلاعات

شناخت این تفاوت‌ها هنگام تحلیل Incident اهمیت زیادی دارد.

چرا DNS برای مهاجمان جذاب است؟

DNS در نقطه‌ای قرار دارد که تقریباً تمام ارتباط‌های اینترنتی به آن وابسته هستند.

وب‌سایت، ایمیل، API، CDN، Cloud Service و بسیاری از سرویس‌های سازمانی برای پیدا کردن مقصد خود از DNS استفاده می‌کنند.

اگر مهاجم بتواند این لایه را تحت تأثیر قرار دهد، ممکن است بدون نفوذ مستقیم به Web Server مسیر ارتباط را تغییر دهد.

همین مسئله اهمیت Defense in Depth را نشان می‌دهد.

امنیت سایت نباید فقط روی CMS یا Server متمرکز باشد.

DNS، Registrar، CDN، Certificate، Email و Cloud Control Plane نیز بخشی از سطح حمله هستند.

بهترین معماری دفاعی برای DNS

هیچ کنترل منفردی امنیت کامل ایجاد نمی‌کند.

یک معماری امن باید چند لایه داشته باشد.

Authoritative DNS باید روی زیرساخت قابل اعتماد قرار گیرد.

DNSSEC در صورت امکان فعال شود.

Registrar با MFA محافظت شود.

Recursive Resolverهای سازمان Patch و Harden شوند.

دسترسی Recursion محدود شود.

Clientها فقط به Resolverهای مورد اعتماد متصل شوند.

DNS Logها مانیتور شوند.

تغییرات رکوردها Alert ایجاد کنند.

TLS و HTTPS نیز برای سرویس‌های وب به‌درستی پیاده‌سازی شوند.

این مدل باعث می‌شود شکست یک کنترل به‌تنهایی به معنی شکست کامل امنیت نباشد.

نقش Zero Trust در امنیت DNS

در معماری Zero Trust فرض نمی‌شود که یک درخواست صرفاً به دلیل قرار داشتن در شبکه داخلی قابل اعتماد است.

DNS نیز می‌تواند بخشی از این معماری باشد.

Queryهای DNS می‌توانند بر اساس Policy کنترل شوند، Endpointها مجبور به استفاده از Resolver مشخص باشند و رفتارهای مشکوک مانیتور شوند.

همچنین دسترسی مدیران به زیرساخت DNS باید بر اساس Identity، MFA و Least Privilege کنترل شود.

Zero Trust جایگزین DNSSEC نیست، اما می‌تواند نحوه مدیریت و کنترل زیرساخت DNS را بهبود دهد.

نقش آموزش کاربران

بخش مهمی از امنیت DNS به کاربران نیز مربوط می‌شود.

کاربران باید بدانند هشدار Certificate را نادیده نگیرند.

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

همچنین کاربران نباید تنظیمات DNS دستگاه یا Router را بدون شناخت تغییر دهند.

در سازمان‌ها، آموزش Security Awareness می‌تواند نشانه‌های Redirect مشکوک، SSL Warning و صفحه ورود جعلی را پوشش دهد.

سؤالات متداول درباره DNS Cache Poisoning

DNS Cache Poisoning چیست؟

DNS Cache Poisoning حمله‌ای است که در آن اطلاعات جعلی DNS وارد Cache یک Resolver می‌شود. در نتیجه کاربر ممکن است هنگام باز کردن یک دامنه معتبر، IP اشتباهی دریافت کرده و به سرور دیگری هدایت شود.

آیا DNS Cache Poisoning همان DNS Spoofing است؟

این دو اصطلاح نزدیک هستند، اما DNS Spoofing مفهوم گسترده‌تری دارد. Cache Poisoning معمولاً به حالتی گفته می‌شود که پاسخ جعلی وارد Cache Resolver شود و برای Queryهای بعدی نیز استفاده شود.

آیا DNSSEC جلوی DNS Cache Poisoning را می‌گیرد؟

DNSSEC یکی از مهم‌ترین دفاع‌ها در برابر جعل اطلاعات DNS است. Resolverهایی که DNSSEC Validation انجام می‌دهند می‌توانند اصالت و تمامیت پاسخ را بررسی کنند. البته DNSSEC تمام انواع حملات DNS را پوشش نمی‌دهد.

آیا HTTPS از DNS Poisoning جلوگیری می‌کند؟

HTTPS مستقیماً جلوی تغییر پاسخ DNS را نمی‌گیرد، اما می‌تواند مانع موفقیت بخشی از حمله شود. اگر کاربر به سرور جعلی هدایت شود، مهاجم باید Certificate معتبر دامنه را ارائه کند. در غیر این صورت مرورگر معمولاً هشدار امنیتی نمایش می‌دهد.

آیا آنتی‌ویروس می‌تواند DNS Cache Poisoning را تشخیص دهد؟

آنتی‌ویروس ممکن است برخی Malwareهایی را که تنظیمات DNS را تغییر می‌دهند شناسایی کند، اما DNS Cache Poisoning یک مشکل شبکه‌ای و زیرساختی است و نمی‌توان تنها به Antivirus متکی بود.

پاک کردن DNS Cache چه فایده‌ای دارد؟

Flush کردن Cache می‌تواند پاسخ‌های قدیمی یا نادرست ذخیره‌شده روی Client یا Resolver را حذف کند. بااین‌حال اگر علت اصلی مشکل برطرف نشده باشد، پاسخ جعلی ممکن است دوباره Cache شود.

آیا تغییر DNS به Resolver عمومی امنیت را بیشتر می‌کند؟

استفاده از Resolver معتبر معمولاً بهتر از Resolver ناشناس یا ناامن است، اما امنیت کامل نیازمند کنترل‌های دیگری مانند DNSSEC، HTTPS، امنیت Router و محافظت از Registrar نیز هست.

آیا DNS over HTTPS جلوی Cache Poisoning را می‌گیرد؟

DoH ارتباط Client و Resolver را رمزنگاری می‌کند و از دست‌کاری ساده Query در مسیر جلوگیری می‌کند، اما جایگزین DNSSEC نیست. Resolver همچنان باید اطلاعات DNS معتبر دریافت و مدیریت کند.

DNS Poisoning چه تأثیری روی وردپرس دارد؟

اگر DNS دامنه وردپرسی به IP اشتباه هدایت شود، کاربران ممکن است قبل از رسیدن به WordPress به سرور دیگری منتقل شوند. بنابراین حتی یک سایت وردپرسی کاملاً به‌روز نیز باید امنیت DNS و Registrar را جدی بگیرد.

چگونه بفهمیم DNS یک سایت دست‌کاری شده است؟

می‌توان پاسخ DNS را از چند Resolver مستقل و Authoritative Name Server مقایسه کرد. اختلاف غیرمنتظره IP، هشدار Certificate و Redirectهای عجیب از نشانه‌هایی هستند که باید بررسی شوند.

جمع‌بندی

DNS Cache Poisoning یکی از حملات مهم علیه زیرساخت Domain Name System است که می‌تواند باعث شود DNS Resolver اطلاعات نادرست را در Cache خود ذخیره کند.

در نتیجه کاربر با وجود وارد کردن دامنه صحیح ممکن است به IP دیگری هدایت شود.

این مسئله می‌تواند زمینه‌ساز Phishing، سرقت Credential، توزیع Malware، اختلال سرویس و حملات پیچیده‌تر شود.

نسخه‌های جدید Resolverها نسبت به گذشته مکانیزم‌های امنیتی بیشتری مانند Source Port Randomization و سایر روش‌های افزایش Entropy دارند، اما امنیت DNS همچنان نیازمند توجه جدی است.

یکی از مهم‌ترین لایه‌های دفاعی، DNSSEC است که امکان بررسی رمزنگاری‌شده اصالت و یکپارچگی اطلاعات DNS را فراهم می‌کند.

در کنار آن، مدیران سایت و شبکه باید DNS Serverها را به‌روز نگه دارند، Recursive Resolverها را فقط در اختیار کاربران مجاز قرار دهند، Registrar را با MFA محافظت کنند، تغییرات DNS را مانیتور کنند و Logهای DNS را بررسی کنند.

HTTPS، HSTS، SIEM، Firewall و Resolverهای معتبر نیز لایه‌های مکمل امنیتی هستند.

برای سایت‌های وردپرسی و فروشگاه‌های WooCommerce نیز نباید امنیت را صرفاً به WordPress و Pluginها محدود کرد. دامنه، DNS Provider، Registrar، CDN و Certificate همگی بخشی از زنجیره امنیت سایت هستند.

در نهایت، بهترین راه مقابله با DNS Cache Poisoning استفاده از یک کنترل واحد نیست؛ بلکه ترکیبی از DNSSEC، پیکربندی امن DNS، Patch Management، Monitoring، امنیت حساب‌های مدیریتی و Defense in Depth است.

مطالب مرتبط