حملات Man-in-the-Middle Attack (جعل DNS) – قسمت دوم

در بخش اول از این سری، ارتباطات عادی ARP را بررسی كردیم و این‌كه چگونه حافظه نهان ARP یك دستگاه می‌تواند به منظور تغییر مسیر ترافیك شبكه ماشین‌ها از طریق یك دستگاه دیگر با امكان قصد مخرب آلوده شود. این حمله با نام آلودگی حافظه نهان ARP شناخته می‌شود و به راحتی با استفاده از نرم افزار مناسب قابل اجرا است. در این مقاله به نوع دیگری از حملات MITM با نام جعل DNS می‌پردازیم.
جعل DNS
جعل DNS روشی است كه برای عرضه اطلاعات نادرست از DNS به میزبان استفاده می‌شود، در نتیجه زمانی‌كه میزبان‌ها تلاش می‌كنند به عنوان مثال به سایت www.bankofamerica.com با آدرس IP، XXX.XX.XX.XX وصل شوند، آن‌ها در واقع به سمت سایت جعلی www.bankofamerica.com با آدرس IP، YYY.YY.YY.YY هدایت می‌شوند. مهاجم به منظور سرقت اطلاعات كارت اعتباری بانكی آنلاین و اطلاعات حساب از كاربران قابل اعتماد این آدرس جعلی را ایجاد كرده است. در واقع این كار به راحتی انجام می‌شود و در این مقاله خواهیم دید كه این حمله چگونه كار می‌كند و چگونه می‌توان در برابر آن دفاع كرد.
ارتباطات عادی DNS
سیستم نامگذاری دامنه (DNS) پروتكلی است كه برخی معتقدند یكی از مهم‌ترین پروتكل‌های استفاده شده در اینترنت است. به طور خلاصه، زمانی‌كه شما در نوار آدرس مرورگرتان آدرسی مانند http://www.google.com را تایپ می‌كنید، یك درخواست DNSای ساخته شده و برای سرور DNS فرستاده می‌شود تا آدرس IP متناظر با این آدرس را بدست آورد زیرا روترها و دستگاه‌هایی كه به اینترنت وصل می‌شوند آدرس google.com را درك نمی‌كنند. آن‌ها تنها آدرس‌هایی مانند 74.125.95.103 را درك می‌كنند.
یك سرور DNS بوسیله ذخیره‌سازی ورودی‌ها (ركوردهای منابع نامیده می‌شود) در یك پایگاه داده كار می‌كند. این پایگاه داده حاوی نگاشت آدرس IP به نام DNS، ارتباط ركوردهای منابع با كلاینت‌ها و ارتباط ركوردهای منابع با سرورهای DNS دیگر است. معماری سرورهای DNS در سراسر شركت و اینترنت چیزی است كه می‌تواند كمی پیچیده باشد. در حقیقت، كتاب‌هایی وجود دارد كه كل آن به معماری DNS اختصاص داده شده است. در این‌جا به جنبه‌های معماری یا حتی به انواع مختلف ترافیك DNS نمی‌پردازیم ولی همان‌گونه كه در شكل 1 می‌بینید نگاهی به تراكنش اصلی DNS می‌اندازیم.
DNS Spoofing
شكل(1): یك پرسش و پاسخ DNS
عملكرد DNS در یك فرمت از نوع پرسش/پاسخ است. كلاینتی كه آدرس IP متناظر با یك نام DNSای را می‌خواهد، یك پرسش را به یك سرور DNS می‌فرستد و آن سرور اطلاعات خواسته شده را در پاسخ آن می‌فرستد. از دیدگاه كلاینت، تنها دو بسته پرسش و پاسخ دیده می‌شود.
 
این سناریو هنگامی‌كه ساختار بازگشتی DNS را بررسی كنید‌ كمی پیچیده می‌شود. با توجه به ماهیت سلسله مراتبی ساختار DNS در اینترنت، سرورهای DNS نیاز به توانایی برقراری ارتباط با یكدیگر را دارند تا بتوانند به پرسش‌های ارسال شده توسط كلاینت‌ها پاسخ دهند. پس از این مراحل، منصفانه است كه از سرور DNS داخلی انتظار داشته باشیم تا نگاشت اسم به آدرس IP را در شبكه داخلی محلی بداند اما از سرور DNS داخلی نمی‌توانیم انتظار داشته باشیم تا آدرس‌های IP متناظر با آدرس‌های google یا Dell را بداند. در این‌ مرحله است كه قابلیت بازگشتی DNS‌ها وارد عمل می‌شود. عملیات بازگشتی سرورهای DNS زمانی اتفاق می‌افتد كه یك سرور DNS به نمایندگی از یك كلاینت كه یك درخواست را ساخته است، از سرور DNS دیگری سوال می‌پرسد. در نهایت همان‌گونه كه در شكل 2 می‌بینید، سرور DNS مستقر در شبكه داخلی است كه پاسخ را برای كلاینت خودش ارسال می‌كند.
DNS Spoofing
شكل(2): یك پرسش و پاسخ DNSای بازگشتی
DNS جعلی
قطعا برای اجرای حملات جعل DNS بیش از یك روش وجود دارد. در اینجا به توضیح مختصری در خصوص یكی از این روش‌ها با نام روش جعل DNS ID می‌پردازیم. هر درخواست DNS كه به منظور بررسی این درخواست و یافتن پاسخ آن بر روی شبكه‌ فرستاده می‌شود، شامل یك شماره شناسایی تولید شده منحصر به فرد است. این بدان معنی است كه اگر كامپیوتر مهاجم بتواند یك درخواست DNS فرستاده شده از دستگاه هدف را سرقت كند، می تواند با ساختن یك بسته جعلی شامل همان شماره شناسایی كه دستگاه هدف آن را بپذیرد، این حمله را انجام دهد.  
این حمله در دو مرحله انجام می‌شود. ابتدا باید حمله آلودگی حافظه نهان ARP بر روی دستگاه مقصد انجام گیرد تا ترافیك‌های میزبان قربانی شنود شود. در نتیجه می‌توان درخواست DNS آن را سرقت كرد و بسته جعلی را برای قربانی فرستاد. هدف اصلی این سناریو آن است كه میزبان قربانی به جای مشاهده وب سایت اصلی در خواست داده، وب سایت مخرب را مشاهده كند. تصویر این حمله در شكل (3) نشان داده شده است.  
DNS Spoofing
 
شكل(3): حمله جعل DNS با استفاده از روش جعل DNS ID
دفاع در برابر جعل DNS
دفاع در برابر حملات جعل DNS دشوار است زیرا این گونه حملات اغلب انفعالی هستند. به طور معمول شما هرگز از كلاهبرداری DNSتان باخبر نمی‌شوید تا زمانی‌كه این اتفاق بیافتد. چیزی كه دریافت می‌كنید صفحه‌ی وبی متفاوت با آن چیزی است كه شما انتظارش را دارید. در بسیاری از حملات هدفمند این امكان وجود دارد كه  هرگز مطلع نشوید اطلاعات كارت اعتباری خود را در یك وب سایت جعلی وارد می‌كنید تا زمانی‌كه در این زمینه اطلاع رسانی شود.
می توان گفت كه هنوز هم راه‌هایی برای دفاع در برابر این نوع حملات وجود دارد:
·         ایمن‌سازی ماشین‌های داخلی: حملاتی از این قبیل معمولا از درون شبكه اجرا می‌شوند. اگر دستگاه‌های شبكه امن باشند در نتیجه برای راه‌اندازی یك حمله كلاهبرداری بوسیله سوء استفاده از میزبان‌ها شانس كمتری وجود دارد.
·         برای سیستم های امن به DNS اعتماد نكنید: برای سیستم هایی كه از امنیت و حساسیت بالایی برخوردار هستند، استفاده نكردن از DNS بهترین كار است. اگر بر روی این سیستم ها نرم افزاری دارید كه برای تابعی به نام میزبان احتیاج دارد، می توانید در دستگاه های فایل میزبان به صورت دستی آن را مشخص نمایید.  
·         استفاده از شناسه‌ها: زمانی‌كه یك سیستم تشخیص نفوذ به درستی راه اندازی شود و گسترش یابد، به طور معمول می‌تواند بیشتر حالات آلودگی حافظه نهان ARP و جعل DNS را تشخیص دهد.
·         استفاده از DNSSEC: DNSSEC یك جایگزین جدید برای DNS است كه از ركوردهایی كه امضای دیجیتالی شده‌اند، استفاده می‌كند تا از اعتبار یك پرسش و پاسخ مطمئن شود. DNSSECهنوز به طور گسترده استفاده نمی‌شود اما به عنوان آینده DNS پذیرفته شده است.    
خلاصه:

جعل DNS زمانی كه با یك سطح مهارت درست و یك قصد مخرب همراه شود، حالت بسیار كشنده از یك حمله MITM می‌شود.بااستفاده از این روشمی‌توانیم تكنیك‌های سرقت هویت را برای سرقت اطلاعات كارت‌های اعتباری و نصب بدافزار برای سوء استفاده از حملات drive-by یا حتی ایجاد یك موقعیت انكار سرویس DoS به كار ببریم. در مقاله بعدی از این مجموعه مقالات نگاهی به حمله عبور از رشته hash می‌اندازیم