Domain Name System (DNS) Spoofing چیست؟
DNS Spoofing که با عنوان DNS Cache Poisoning نیز شناخته میشود، نوعی حمله سایبری است که در آن مهاجم با دستکاری اطلاعات ذخیرهشده در حافظه کش سرور DNS، کاربران را به سایتهای جعلی هدایت میکند، سایتی که ممکن است از نظر ظاهری کاملاً مشابه نسخه اصلی باشد و کاربر متوجه تفاوت آن نشود. در این سناریو، کاربر قربانی ممکن است بدون آگاهی اطلاعات ورود خود را (مانند نام کاربری و رمز عبور) در این سایت جعلی وارد کند، در حالی که تصور میکند در حال ورود به حساب واقعی خود است. به این ترتیب، مهاجم میتواند این اطلاعات حساس را جمعآوری کرده و از آنها برای دسترسی به حسابها یا دادههای ارزشمند قربانی استفاده کند. علاوه بر سرقت اطلاعات، وبسایت جعلی ممکن است به صورت مخفیانه بدافزار، جاسوسافزار یا ویروسهایی را روی دستگاه کاربر نصب کند. این بدافزارها میتوانند به مهاجم اجازه دهند تا به صورت بلندمدت به سیستم قربانی دسترسی داشته باشد، فعالیتهای او را زیر نظر بگیرد یا دادههای بیشتری سرقت کند.

DNS Cache چگونه عمل میکند؟
زمانی که شما یک وبسایت را در مرورگر خود باز میکنید، سیستم برای پیدا کردن آدرس IP آن وبسایت از سرویسی به نام DNS Resolver کمک میگیرد. این سرویس آدرس IP مربوط به نام دامنهای که وارد کردهاید (مثلاً example.com) را پیدا میکند و به مرورگر شما بازمیگرداند. برای افزایش سرعت پاسخدهی در دفعات بعدی و کاهش فشار روی سرورهای DNS، این اطلاعات برای مدت مشخصی در حافظه موقت (یا همان DNS Cache) ذخیره میشوند. مدت زمان ذخیرهسازی هر پاسخ، بر اساس عددی به نام TTL (Time to Live) تعیین میشود. TTL مشخص میکند که اطلاعات تا چه زمانی معتبر هستند و بعد از آن باید دوباره از منبع اصلی بازیابی شوند. به این ترتیب، تا زمانی که TTL تمام نشده است، اگر دوباره همان وبسایت را باز کنید، سیستم شما مستقیماً از کش استفاده میکند و دیگر نیازی به پرسوجو از سرورهای مختلف DNS نخواهد بود. این کار باعث افزایش سرعت، کاهش مصرف پهنای باند و بهبود عملکرد شبکه میشود.
پاسخ DNS Uncached:

پاسخ DNS Cached:

حملات DNS Spoofing چگونه انجام میشوند؟
مهاجمان میتوانند با جعل DNS nameservers و ارسال درخواست به DNS resolver و سپس جعل پاسخ زمانی که DNS resolver از یکnameserver پرسوجو میکند، اقدام به آلوده کردن DNS cache کنند. این امکان به دلیل استفاده DNS از پروتکل UDP به جای TCP و عدم وجود تایید برای صحت اطلاعاتDNS فراهم میشود.
فرآیند DNS Cache Poisoning:

Poisoned DNS Cache:

در ارتباطات DNS به جای استفاده از پروتکل TCP که پیش از برقراری ارتباط نیازمند انجام فرآیند handshake بین دو طرف ارتباط است، از پروتکل UDP استفاده میشود. برخلاف TCP، در UDP هیچ تضمینی وجود ندارد که ارتباط برقرار شده باشد یا گیرنده برای دریافت داده آماده باشد. همین ویژگی باعث میشود UDP نسبت به جعل آسیبپذیر باشد؛ زیرا مهاجم میتواند تنها با دستکاری اطلاعات هدر، پیامی را از طریقUDP ارسال کرده و آن را بهعنوان پاسخ جعلی از یک سرور معتبر جا بزند. اگر یک DNS resolver پاسخ جعلی را دریافت کند، آن را بدون هیچگونه تایید و بررسی ذخیره میکند زیرا هیچ راهی برای بررسی صحت اطلاعات و تایید اینکه آیا این اطلاعات از یک منبع معتبر آمده است، وجود ندارد. با وجود آسیبپذیریهای قابل توجه در فرآیند DNS cache، اجرای حملات DNS poisoning کار سادهای نیست و دلیل اصلی آن، این است که DNS resolver درخواست را به authoritative nameserver ارسال میکند، بنابراین مهاجم تنها یک بازه زمانی بسیار کوتاه(در حد چند میلیثانیه) فرصت دارد تا پاسخ جعلی خود را قبل از رسیدن پاسخ واقعی ازauthoritative nameserver به مقصد برساند.
پیامدهای ناشی از حملات DNS Spoofing:
حمله DNS Spoofing یا DNS Poisoning میتواند پیامدهای گسترده و مخربی برای کاربران و سازمانها به همراه داشته باشد. در ادامه، مهمترین تهدیدهای ناشی از این نوع حمله بررسی میشود:
- سرقت اطلاعات (Data Theft)
یکی از رایجترین پیامدهای DNS Poisoning، هدایت کاربران به وبسایتهای فیشینگ است. این وبسایتها معمولاً ظاهری مشابه نسخههای اصلی دارند و هدف آنها فریب کاربر و دریافت اطلاعات حساس است. مهاجم پس از بهدست آوردن این دادهها میتواند از آنها برای نفوذ به حسابهای کاربر استفاده کند یا آنها را به سایر مجرمان سایبری بفروشد.
- آلودگی به بدافزار (Malware Infection)
در این نوع حمله، کاربر به وبسایتی مخرب هدایت میشود که بدون اطلاع او، بدافزاری را روی سیستمش نصب میکند. این فرآیند ممکن است از طریق Drive-by Download (دانلود ناخواسته و خودکار بدافزار هنگام باز کردن صفحه) یا کلیک روی لینکهای آلوده انجام شود. بدافزارهایی مانند تروجانها یا باتنتها میتوانند کنترل سیستم را در اختیار مهاجم قرار دهند و زمینهساز حملات پیچیدهتر شوند.
- جلوگیری از دریافت بهروزرسانیهای امنیتی (Halted Security Updates)
یکی از پیامدهای حملات DNS Spoofing، مسدود شدن روند بهروزرسانی نرمافزارهای امنیتی است. در این نوع حمله، مهاجم با جعل آدرس وبسایت رسمی شرکتهای ارائهدهنده خدمات امنیتی یا آنتیویروس، تلاش میکند مسیر ارتباطی میان سیستم کاربر و سرور واقعی بهروزرسانی را منحرف کند. زمانی که سیستم کاربر برای دریافت جدیدترین بستههای امنیتی تلاش میکند به سرور اصلی شرکت امنیتی متصل شود، بهجای آن، به یک سرور جعلی هدایت میشود که ممکن است هیچ پاسخی ندهد یا اطلاعات نادرست ارائه کند. در نتیجه، فرآیند بهروزرسانی متوقف شده و سیستم کاربر بدون دریافت پچهای امنیتی باقی میماند. این وضعیت میتواند عواقب جدی به همراه داشته باشد؛ زیرا بهروزرسانیهای امنیتی معمولاً برای رفع آسیبپذیریهای شناساییشده طراحی شدهاند. اگر این آسیبپذیریها بدون اصلاح باقی بمانند، زمینه برای نفوذ و حملات بعدی به سیستم فراهم میشود.
- دستکاری اطلاعات (Censorship)
DNS Poisoning همچنین میتواند بهعنوان ابزاری برای اعمال دستکاری اطلاعات مورد استفاده قرار گیرد. برای مثال، در برخی کشورها مانند چین، دولت با تغییر و دستکاری DNS، دسترسی به بسیاری از وبسایتها را مسدود کرده و تنها اجازه مشاهدهی سایتهایی را میدهد که از نظر آنها مجاز هستند. این روش یکی از متداولترین شیوههای اعمال کنترل بر اینترنت در سطح ملی محسوب میشود.
در مجموع، حمله DNS Poisoning نه تنها حریم خصوصی و امنیت کاربران را به خطر میاندازد، بلکه میتواند ابزار قدرتمندی برای انتشار بدافزار، جاسوسی سایبری و محدودسازی دسترسی به اطلاعات باشد.
مثالی از حملات DNS Spoofing:
در ادامه، یک سناریو از حملهیDNS Cache Poisoning را بررسی میکنیم. در این حمله، مهاجمی با آدرس IP به ظاهر ۱۹۲٫۱۶۸٫۳٫۳۰۰، ارتباط میان یک کاربر با آدرس IP برابر با ۱۹۲٫۱۶۸٫۱٫۱۰۰ و یک سرور واقعی متعلق به سایت www.estores.com با IP برابر با ۱۹۲٫۱۶۸٫۲٫۲۰۰ را قطع و دستکاری میکند.
مراحل اجرای حمله:
- مهاجم با استفاده از ابزاری مانند arpspoof، کاری میکند که کاربر فکر کند سرور واقعی، همان IP جعلی مهاجم (۱۹۲٫۱۶۸٫۳٫۳۰۰) است.
- همزمان، سرور نیز فریب میخورد و تصور میکند کاربر واقعی، همان IP مهاجم است.
- مهاجم با اجرای دستور زیر در لینوکس:
echo 1 > /proc/sys/net/ipv4/ip_forward
باعث میشود تمام بستههای IP که میان کاربر و سرور رد و بدل میشوند، از طریق سیستم مهاجم عبور کنند.
- سپس، مهاجم روی سیستم خود یک فایل میزبان (hosts) میسازد که در آن، آدرس www.estores.com به IP جعلی ۱۹۲٫۱۶۸٫۳٫۳۰۰ اشاره میکند. این یعنی هر کسی این دامنه را درخواست کند، به سیستم مهاجم هدایت میشود.
- یک سرور وب جعلی روی همان IP ساخته میشود که از نظر ظاهری شبیه سایت اصلی estores.com است.
- در نهایت، مهاجم با استفاده از ابزاری مانند dnsspoof همه درخواستهای DNS را به فایل hosts دستکاری شده خود هدایت میکند. به این ترتیب، کاربر به سایت جعلی منتقل میشود و در صورت تعامل با آن، ممکن است بدافزار روی سیستمش نصب شود.
یکی از نمونههای بارز حملات DNS Spoofing در دنیای واقعی، در سال ۲۰۱۸ رخ داد. در این حمله، یک هکر با دستکاری یک ارائهدهنده خدمات اینترنتی (ISP)، ترافیک مربوط به سرویس DNS Amazon Route 53 را تغییر مسیر داد و کاربران وبسایت ارز دیجیتال MyEtherWallet را مورد هدف قرار داد. در این حمله، هنگامی که کاربران تلاش میکردند به سایت مذکور دسترسی پیدا کنند، به طور خودکار به یک سایت فیشینگ تقلبی هدایت میشدند که بر روی سرور جعلی میزبانی میشد. در صورتی که کاربران اطلاعات ورود خود را وارد میکردند، هکر قادر بود به حسابهای آنها دسترسی پیدا کرده و مبلغی بالغ بر ۱۵۰,۰۰۰ دلار ارز دیجیتال را سرقت کند. این حمله به مدت دو ساعت ادامه داشت تا اینکه شناسایی و متوقف شد.
راههای پیشگیری از حملات DNS Poisoning:
راهکارهایی برای مالکان وبسایتها و ارائهدهندگان خدمات DNS:
مالکان وبسایتها و شرکتهای ارائهدهنده سرویس DNS نقش مهمی در جلوگیری از حملات DNS ایفا میکنند. با بهکارگیری اقدامات امنیتی مناسب میتوان از هدایت کاربران به وبسایتهای جعلی جلوگیری کرد:
- استفاده از ابزارهای DNS Spoofing Detection Tools: این ابزارها به صورت مداوم ترافیک DNS را مانیتور کرده و محتوای درخواستها و پاسخهای دریافتی را تحلیل میکنند تا از صحت و معتبر بودن آنها اطمینان حاصل شود. این ابزارها در صورت شناسایی نشانههایی از دستکاری، مغایرت یا پاسخهای جعلی، بلافاصله آنها را مسدود کرده و مانع از انتقال دادههای مخرب به سیستم کاربر میشوند.
- پیادهسازی افزونههای امنیتی: DNSSEC یا Domain Name System Security Extensions، قابلیتی است که به رکوردهای DNS یک برچسب امنیتی اضافه میکند. این برچسب به سیستمها کمک میکند تا مطمئن شوند اطلاعات دریافتشده از DNS، جعلی یا دستکاری شده نیست و واقعاً از منبع اصلی ارسال شده است.
- رمزنگاری End-to-End Encryption: این روش، روشی مطمئن برای محافظت از اطلاعات است که در آن دادهها از لحظه ارسال تا زمان دریافت، به صورت کامل رمزگذاری میشوند و تنها گیرنده اصلی قادر به خواندن آنهاست. در حوزه DNS، این نوع رمزنگاری باعث میشود مهاجمان حتی اگر به ترافیک دسترسی پیدا کنند، نتوانند محتوای درخواستهای DNS را مشاهده یا دستکاری کنند. استفاده از پروتکلهایی مانند DoH و DoT این امنیت را فراهم میکند. پروتکلهای DoH (DNS over HTTPS) و DoT (DNS over TLS) روشهایی پیشرفته برای رمزنگاری ترافیک DNS هستند که از افشای اطلاعات جلوگیری میکنند. DoH با استفاده از پروتکل HTTPS و DoT با بهرهگیری از TLS، باعث میشوند درخواستهای DNS به صورت ایمن و رمزنگاریشده منتقل شوند و در نتیجه، امکان شنود، تغییر مسیر یا دستکاری آنها تقریباً از بین برود.
توصیههای امنیتی برای کاربران:
کاربران نیز هدف اصلی حملات DNS هستند. با رعایت نکات زیر میتوان تا حد زیادی از خطر این نوع حملات در امان ماند:
- از کلیک روی لینکهای ناشناس خودداری کنید. همیشه URL وبسایت را به صورت دستی در مرورگر وارد کنید. کلیک روی لینکهای ناشناس یا مشکوک حتی در پیامک، ایمیل یا شبکههای اجتماعی میتواند شما را به صفحات جعلی هدایت کند که شبیه نسخه اصلی طراحی شدهاند.
- سیستم خود را به طور مرتب برای اطمینان از عدم وجود بدافزار اسکن کنید. سایتهای جعلی ممکن است برای آلوده کردن سیستم شما با بدافزار طراحی شده باشند. استفاده منظم از نرمافزارهای آنتیویروس به روز میتواند این بدافزارها را شناسایی و حذف کند.
- کش DNS را پاکسازی کنید. پاک کردن کش DNS باعث میشود اطلاعات ذخیرهشده که ممکن است دستکاری شده باشند، حذف شوند. همه سیستمعاملها قابلیت Flush کردن DNS را دارند و با این کار، سیستم از اطلاعات جدید و معتبر برای هدایت کاربران استفاده خواهد کرد.