DNS poisoning و نحوه جلوگیری از آن
مقاله

DNS poisoning و نحوه جلوگیری از آن

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

به زبان ساده تر، در این حمله بازدیدکنندگان، وب سایتی شبیه به وب سایت شما مشاهده خواهند کرد اما در واقع تقلبی و خطرناک است. بنابراین می بایست چندین تکنیک به کار گیرید تا مطمئن شوید که آسیبی به کاربران نمی رسد و سایت تان از حملات در امان می باشد.

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

یک Primer در  سیستم نام دامنه (DNS)

قبل از بررسی جزئیات آلوده شدن DNS ها، نیاز است کمی در مورد Domain Name System (سیستم نام دامنه) بدانید. مرور وب سایت یک کار ساده به نظر می رسد اما کارهای زیادی سمت سرور صورت می گیرد تا وب سایت نمایش داده شود.

عناصر زیادی وجود دارند که شما را از نقطه «A» به «B» می رسانند:

آدرس IP: یک رشته از اعداد است که آدرس واقعی وب سایت ها می باشد. برای درک بهتر، آنها را مختصات خانه خود روی نقشه در نظر بگیرید. به عنوان مثال، 127.0.0.1:8080 یک آدرس استاندارد برای "localhost" است (یعنی کامپیوتر شما).

نام دامنه: اگر آدرس IP مختصات را نشان می دهد، نام دامنه آدرس شما می باشد.

"Example.com" نیز یکی از میلیون‌ها نمونه آدرس است.

درخواست DNS: این یک مثال خوب از یک کار سطح بالای frontend، با یک پردازش سطح پایین پیچیده است. برای مثال، در نظر بگیرید که مرورگر شما از یک سرور اختصاصی درخواست مجموعه ای از مختصات ها را داشته باشد.

سرور Dns: این سرور با سرور وب سایت شما متفاوت می باشد زیرا تلفیق چهار سرور در یک سرور است. وظیفه آن نیز پردازش درخواست های DNS است. در ادامه به جزئیات آن اشاره خواهد شد.

Recursive server: به این سرورها "Resolving name servers" نیز گفته می شود که بخشی از فرآیند جستجوی DNS بوده و مسئول جستجوی سرورها، برای نام دامنه متصل به آدرس IP  است.

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

فرآیند جستجوی DNS

فعالیت هایی که افراد را به مکان های دورافتاده می برد، مانند کوهنوردی یا قایقرانی، یک خطر مشترک دارند: گم شدن و به موقع پیدا نشدن. روش سنتی مکان یابی افراد گم شده، استفاده از مختصات است که به طور معمول صریح بوده و دقت بالایی را ارائه می دهد.

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

اپلیکیشن what3words فرآیند پیچیده محاسبه و انتقال مختصات را انجام می دهد و آن را به خلاصه ای سه کلمه ای از موقعیت مکانی عمومی شما تبدیل می کند. به عنوان مثال، دفتر مرکزی Automattic (یک شرکت فعال در زمینه خدمات توسعه وب است که در آگوست ۲۰۰۵ تأسیس شد. این شرکت تولید کنندهٔ وب‌سایت وردپرس و از مشارکت‌کنندگان اصلی در توسعهٔ سیستم مدیریت محتوای وردپرس است.) را در نظر بگیرید:

آلودگی DNS و نحوه جلوگیری از آن

تصویر(1)

مختصات مکان 37.744159, 122.421555- می باشد. با این حال، احتمالاً از آن اطلاعی ندارید، مگر اینکه یک موقعیت یاب متخصص باشید. حتی اگر این کار را انجام دهید، رساندن این مختصات به دست کسی که قصد کمک به شما را دارد، ایده جالبی نیست.

what3words مجموعه ای از مختصات را می گیرد و آنها را به سه کلمه خلاصه ترجمه می کند. برای مثال برای دفاتر Automattic، سه کلمه decent.transfers.sleeps استفاده می شود.

آلودگی DNS و نحوه جلوگیری از آن

تصویر(2)

این امر موقعیت یابی پیچیده را به ساده ترین شکل ممکن در دسترس تقریباً هر کسی که از آن استفاده می کند، قرار می دهد. در حال حاضر این ابزار، جان بسیاری از غیرنظامیان در سراسر دنیا را نجات داده است.

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

جستجوی DNS روال مشابهی دارد:

  • مرورگر آدرس IP مربوط به یک دامنه را درخواست می کند.
  • سیستم عامل (OS) از recursive server می خواهد که نام دامنه را پیدا کند و تمامی سرورهای خود را جستجو نماید.
  • هنگامی که نام دامنه را پیدا کرد، به مرورگر بازگردانده می شود.

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

جستجوی DNS دارای اشکالاتی نیز می باشد و مهاجمان می توانند از آن سوء استفاده کنند. با این حال، قبل از بررسی این موضوع، به یک بحث جانبی در مورد حافظه کش و چگونگی سرعت بخشیدن به جستجو، پرداخته می شود.

کش DNS

همانند کش وب، کش DNS نیز می تواند به شما کمک کند تا کوئری های تکراری را مجددا بازخوانی کنید. این روند یافتن آدرس IP را در بازدیدهای بعدی سریعتر می کند.

به طور خلاصه، کش در سیستم Dns Server ذخیره می شود و رفت و برگشت های اضافی به سرور اصلی را کمتر می کند. این بدان معنا است که مرورگر می‌تواند یک آدرس IP را مستقیماً از Dns Server دریافت نموده و درخواست GET را در زمان سریع‌تری تکمیل کند.

کش های DNS در کل سیستم شما وجود دارند. به عنوان مثال، کامپیوتر شما یک کش DNS، روتر و ارائه دهنده خدمات اینترنت (ISP) خواهد داشت. اغلب متوجه نمی‌شوید که تجربه بازدید شما از وب سایت ها، چقدر به حافظه کش DNS متکی است، تا زمانی که قربانی جعل DNS شوید.

DNS Poisoning یا جعل DNS چیست؟

پس از درک مفهوم درخواست DNS و کل فرایند پیدا کردن یک آدرس IP، می توانید نحوه سو استفاده از جعل dns را متوجه شوید.

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

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

DNS Spoofing و Cache Poisoning چگونه کار می کند

با توجه به اینکه کل فرآیند جعل dns پیچیده است، مهاجمان راه های مختلفی را برای رسیدن به هدف خود ایجاد کرده اند:

Machine-in-the-Middle : مهاجم بین مرورگر و سرور Dns قرار می گیرد، هر دو را آلوده کرده و کاربر را به یک سایت جعلی در سرور خودش هدایت می کند.

Server hijacking : اگر مهاجمی وارد سرور Dns شود، می‌تواند مجدد آن را پیکربندی کند تا تمام درخواست ها به سمت سایت خود او ارسال شود.

Poisoning through spam : برخلاف Server hijacking، این روش سمت کاربر (یعنی مرورگر کاربر) را آلوده می کند. دسترسی نیز اغلب از طریق لینک های اسپم، ایمیل ها و تبلیغات جعلی ایجاد می شود.

Birthday attacks : این یک حمله پنهانی پیچیده است که نیاز به توضیح بیشتری دارد.

Birthday attacks بر پایه "birthday problem" می باشد. این یک سناریوی احتمالی است که می گوید اگر 23 نفر در یک اتاق باشند، 50٪ احتمال دارد که دو نفر روز تولد یکسانی داشته باشند. اگر افراد بیشتری در اتاق باشند، این احتمال افزایش می یابد.

آلودگی DNS و نحوه جلوگیری از آن

تصویر(3)

اگر مهاجم تعداد مشخصی از درخواست‌ها و پاسخ‌های تصادفی را ارسال کند، به احتمال زیاد یکی از آنها منجر به آلودگی DNS می‌شود. از 450 درخواست، احتمال آن حدود 75٪ است و در 700 درخواست، مهاجم تقریباً به صورت تضمینی سرور را آلوده می کند.

به طور خلاصه، حمله به سرور Dns اغلب به این دلیل اتفاق می‌افتد که به مهاجم انعطاف‌پذیری بیشتری برای دستکاری سایت و داده‌های کاربر می‌دهد. همچنین هیچ اعتبار سنجی برای داده های DNS انجام نمی شود زیرا در درخواست ها و پاسخ ها از پروتکل TCP استفاده نمی کنند.

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

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

اگرچه، انجام همه این الزامات ضروری نیست و مهاجم می تواند از طریق روش های متعددی به سرورها دسترسی داشته باشد اما بررسی این موارد کار را برای آنها آسان تر می کند.

نمونه های واقعی از آلودگی DNS

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

به طور خلاصه، آنها سرورهای خود را برای ریدایرکت بازدیدکنندگانی که به سایت‌های غیرمجاز از نظر دولت، مانند توییتر و فیس‌بوک می‌روند، آلوده می‌کنند. در مواردی حتی محدودیت‌های چین به اکوسیستم جهان غرب نیز راه یافت.

در جایی دیگر، یک خطای شبکه از سمت یک ISP سوئدی، اطلاعات root DNS را از سرورهای چینی ارائه کرد و کاربران در شیلی و ایالات متحده هنگام دسترسی به برخی از وب سایت‌های رسانه‌های اجتماعی، به جای دیگری ریدایرکت می‌شدند.

در مثالی دیگر، هکرهای بنگلادشی در اعتراض به بدرفتاری ها در مالزی، بسیاری از دامنه‌های مربوط به مایکروسافت، گوگل، یوتیوب و سایر سایت‌های پرمخاطب را آلوده کردند. به نظر می‌رسد که این حمله Poisoning through spam نبوده و در واقع server hijacking است.

حتی WikiLeaks نیز از حملات آلودگی DNS مصون نمانده است. یک حمله پنهانی server hijack چند سال پیش باعث شد که بازدیدکنندگان وب سایت به صفحه ای که به هکرها اختصاص داشت، ریدایرکت شوند.

آلودگی DNS نباید یک فرآیند پیچیده باشد. "هکرهای اخلاق محور" (یعنی کسانی که به جای ایجاد آسیب، به دنبال افشای نقص های امنیتی هستند)، روش های ساده ای برای بررسی نفوذ به رایانه ها دارند.

با این حال، به نظر می رسد غیر از ریدایرکت، هیچ اثر طولانی مدتی از آلودگی DNS باقی نمی ماند، اما در واقع وجود دارد.

در ادامه به آنها پرداخته خواهد شد.

چرا آلودگی و جعل DNS بسیار مضر است؟

سه هدف اصلی برای مهاجمین وجود دارد که با آلودگی DNS، اهداف خود را روی سرور پیاده کنند:

  • انتشار بدافزار
  • ریدایرکت کاربران به وب سایتی که برای آن ها مفید است.
  • سرقت اطلاعات از مالک وب سایت یا کاربران.

البته، تصور اینکه چرا آلودگی یا جعل DNS مشکلی برای ISP ها، اپراتورهای سرور و کاربران است، آسان نیست.

همانطور که اشاره شد، جعل DNS یک مشکل بزرگ برای ISP ها است، به همین دلیل ابزارهایی مانند CAIDA Spoofer برای کمک به مقابله با این مشکل معرفی شده اند.

آلودگی DNS و نحوه جلوگیری از آن

تصویر(4)

چند سال پیش، آمار نشان می داد که روزانه حدود 30,000 حمله انجام می شود و مسلما این تعداد از زمان انتشار گزارش افزایش یافته است. علاوه بر این، همانند مثال بخش قبلی، ارائه سایت‌های جعلی در سراسر یک شبکه، مشکل عدم اعتماد کاربر و نگرانی‌هایی در مورد حریم خصوصی را در پی خواهد داشت.

صرف نظر از اینکه چه کسی هستید، زمانی که قربانی آلودگی و جعل DNS می شوید چند مشکل به وجود خواهد آمد:

  • مانند فایروال بزرگ چین، ممکن است تحت سانسور قرار بگیرید. به این معنی که اطلاعات دریافت شده دقیق نخواهد بود و بر بسیاری از عرصه های اجتماعی و سیاسی تأثیر منفی خواهد داشت.
  • نگرانی اصلی سرقت داده ها است و برای کسانی که می خواهند اطلاعات بانکی کاربر و سایر داده های حساس را به دست آورند، یک سرمایه گذاری پرسود خواهد بود.
  • شما ممکن است در معرض بدافزارها و سایر ویروس های تروجان روی سیستم خود قرار بگیرید. به عنوان مثال، یک مهاجم می تواند یک keylogger یا انواع دیگر بدافزار را از طریق یک وب سایت جعلی به سیستم کاربر تزریق کند.

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

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

تلاش ها برای از بین بردن آلودگی DNS بسیار زیاد است. با توجه به اینکه جعل DNS، هم بر تنظیمات سمت سرویس گیرنده و هم روی سرور تأثیر می گذارد، حذف از یک مورد، به این معنی نیست که همه چیز از بین رفته است.

نحوه جلوگیری از آلودگی DNS

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

اینترنت چگونه از آلودگی و جعل DNS در سمت سرور جلوگیری می کند

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

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

با این حال، راه حل بلندمدت (به گفته کارشناسان) استفاده از Domain Name System Security Extensions (DNSSEC) است. این فناوری برای مبارزه با آلودگی DNS طراحی شده و به عبارت ساده، سطوح مختلف اعتبارسنجی را در ابتدا انجام می دهد.

به عبارتی دیگر، DNSSEC از public-key cryptography برای اعتبارسنجی استفاده می کند. این روش مهر تاییدی بر داده های اصلی و قابل اعتماد است که در کنار سایر اطلاعات DNS شما ذخیره می شود و recursive server از آن برای بررسی اینکه هیچ یک از اطلاعات دریافتی تغییر نکرده است، استفاده می کند.

در مقایسه با سایر پروتکل‌ها و فن‌آوری‌های اینترنتی، DNSSEC در ابتدای راه قرار دارد اما به اندازه کافی توسعه یافته تا در سطح اصلی اینترنت پیاده‌سازی شود، اگرچه هنوز معیار اصلی نیست. Google's Public DNS یکی از سرویس‌هایی است که DNSSEC را به طور کامل پشتیبانی می‌کند و همواره امکانات جدیدی به آن اضافه می نماید.

با این وجود، هنوز هم DNSSEC اشکالاتی دارد که شایان ذکر است:

  • این پروتکل پاسخ ها را رمزگذاری نمی کند. این بدان معنا است که مهاجمان همچنان می‌توانند ترافیک را بررسی کنند، اگرچه حملات دور زدن DNSSEC پیچیده‌تر می باشند.
  • از آنجایی که DNSSEC از رکوردهای اضافی برای جمع‌آوری داده‌های DNS استفاده می‌کند، آسیب‌پذیری دیگری به نام «zone enumeration» به وجود می آید. این آسیب‌پذیری از یک رکورد برای پیشروی و جمع آوری تمام رکوردهای DNS در یک منطقه خاص استفاده می کند. برخی از نسخه‌های این رکوردها، داده‌ها را رمزگذاری می‌کنند اما برخی دیگر هنوز این کار را انجام نمی‌دهند.
  • DNSSEC یک پروتکل پیچیده می باشد و به دلیل جدید بودن آن، گاهی اوقات ممکن است به اشتباه پیکربندی شود. البته، این مورد می تواند مزایای استفاده از آن را از بین ببرد و مشکلات بیشتری را ایجاد کند.

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

چگونه می توانید از آلودگی DNS در سمت کاربر جلوگیری کنید

راه‌های بیشتری برای جلوگیری از آلودگی DNS از سمت کاربر وجود دارد، اگرچه هیچ‌کدام به اندازه DNSSEC در سمت سرور که توسط یک متخصص پیاده‌سازی شده است قدرتمند نخواهند بود. با این حال، چند مورد ساده وجود دارد که می‌توانید به عنوان مالک سایت آن را انجام دهید:

  • برای هرگونه درخواست و پاسخ از رمزگذاری کامل استفاده کنید. گواهینامه های Secure Sockets Layers (SSL) در اینجا بسیار خوب عمل می کنند.
  • از ابزارهای تشخیص جعل، مانند Xarp استفاده کنید. این ابزار بسته های داده دریافتی را قبل از ارسال اسکن می کند. این امر انتقال هرگونه داده مخرب را کاهش می دهد.
  • افزایش مقادیر Time-To-Live (TTL) به پاکسازی ورودی های مخرب قبل از دسترسی به کاربران کمک می کند.
  • همچنین باید یک استراتژی DNS، DHCP و IPAM (DDI) خوب داشته باشید که شامل استراتژی DNS، Dynamic Host Configuration Protocol و Address Management می باشد. این یک فرآیند پیچیده و در عین حال ضروری است که توسط مدیران سیستم و کارشناسان امنیت سرور انجام می شود.

به عنوان یک کاربر، چند کار دیگر وجود دارد که می توانید برای کمک به جلوگیری از آلودگی و جعل انجام دهید:

  • از یک شبکه خصوصی مجازی (VPN) استفاده کنید، زیرا داده های شما از ابتدا تا انتها رمزگذاری می شوند. همچنین از سرور DNS خصوصی با رمزگذاری end-to-end، استفاده کنید.
  • اقدامات احتیاطی ساده را انجام دهید، مانند کلیک نکردن روی لینک های ناشناس و انجام اسکن های امنیتی منظم.
  • پاکسازی کش DNS به طور منظم، داده های مخرب را از سیستم شما نیز پاک می کند. این کاری است که چند ثانیه طول می کشد و انجام آن بسیار ساده است.

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

خلاصه

حملات اینترنتی امری عادی می باشد. آلودگی DNS (یا جعل) یک حمله رایج است که در صورت عدم کنترل می تواند میلیون ها کاربر را تحت تأثیر قرار دهد. دلیل آن نیز قدیمی بودن پروتکل DNS بوده که برای مرور وب مدرن مناسب نیست، اگرچه فناوری‌های جدیدتری در حال راه اندازی هستند.

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

اشتراک گذاری:

نظرات

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

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