معرفی حمله Ping of Death

امروز قصد داریم یک متود متفاوت و البته قدیمی به نام Ping of Death از حملات DDoS را  معرفی کنیم.

در اواخر دهه 90 میلادی یک آسیب پذیری در اکثر سیستم عامل ها کشف شد،اگر یک سیستم عامل مجبور به پردازش یک بسته بزرگتر از 65535 بایت بود ؛ این امر باعث به وجود آمدن مشکلاتی از قبیل buffer overruns یا هنگ کردن سیستم عامل و یا ریبوت کامل سیستم عامل می شد؛ البته این روش دیگر کارآیایی ندارد و سیستم عامل های امروزی چنین باگی ندارند اما در آن زمان این یک مشکل عمده محسوب می شد.

این مشکل به عنوانping of death یا پینگ مرگ معروف شد؛دلیل آن هم این بود که راهی برای کرش کردن سیستم عامل از راه دور با استفاده از ارسال رکوئست های ICMP  به آی پی قربانی یا همان پینگ با ارسال پکت هایی با حجم خاص به وجود آمده بود. حجم استاندارد یک پکت پینگ 64 بایت است.

request-time-out

مطلب زیر از ویکی پدیا برای شما بازنشر شده است :

همانطور که در RFC 791 تعریف شده‌است، بیشترین طول بسته‌ی پروتکل اینترنت نسخه ۴ که شامل سرآیند آی پی (به انگلیسی: IP header) نیز باشد، ۶۵۵۳۵ بایت است، محدوده نشان داده شده با استفاده از محدوده‌ی سرآیند آی‌پی به عرض ۱۶ بیت است که طول کل بسته را شرح می‌دهد. لایه‌ی زیرین پیوند داده‌ها محدودیت‌هایی روی بیشترین اندازه‌ی فریم می‌گذارد(MTU را ببینید). در اترنت معمولاً ۱۵۰۰ بایت است. در چنین حالتی، یک بسته‌ی آی‌پی بزرگ به چندین بسته‌ی آی‌پی تقسیم می‌شود (که با نام قطعه‌های آی‌پی شناخته می‌شود)، به طوری که هر قطعه‌ی آی‌پی با حد قرارداد شده مطابقت خواهد داشت. گیرنده‌ی قطعه‌های آی‌پی، آن‌ها را دوباره سر هم خواهد کرد تا به بسته‌ی کامل آی‌پی مبدل شود و طبق معمول به پردازش آن ادامه خواهد داد. هنگامی که قطعه‌قطعه کردن انجام شد، هر قطعه آی‌پی نیاز دارد اطلاعاتی در مورد قسمتی از بسته‌ی آی‌پی اصلی که در آن وجود دارد، حمل کند. این اطلاعات در فیلد افست قطعه در سرآیند آی‌پی نگهداری می‌شود. طول این فیلد ۱۳ بیت است و شامل افست داده‌ها در قطعه آی‌پی فعلی، در بسته‌ی آی‌پی اصلی می‌باشد. افست در واحدی از ۸ بایت داده می‌شود. این مسئله اجازه‌ی داشتن بیشترین افست یعنی ۶۵۵۲۸ را می‌دهد. یعنی هر قطعه آی‌پی با بیشترین افست، نباید داده‌های بیشتر از ۷ بایت داشته باشد، در غیر این صورت از حد مجاز تعیین شده برای بیشترین طول بسته تجاوز خواهد کرد. یک کاربر مخرب می‌تواند یک قطعه آی‌پی با بیشترین افست و با داده‌هایی خیلی بیشتر از ۸ بایت(به همان بزرگی که لایه‌ی فیزیکی اجازه می‌دهد) ارسال کند. هنگامی که گیرنده تمام قطعه‌های آی‌پی را سر هم می‌کند، با یک بسته آی‌پی بزرگتر از ۶۵۵۳۵ بایت به کار خود خاتمه می‌دهد. این احتمالاً منجر به سرریز در بافرهای حافظه‌ای می‌شود که گیرنده برای بسته در نظر گرفته‌است و می‌تواند منجر به مشکلات بسیاری شود. همانطور که از توصیف بالا مشهود است، مشکل هیچ ربطی به ICMP ندارد. این مشکلی در زمینه‌ی دوباره سر هم کردن قطعه‌های آی پی است که می‌تواند شامل هر نوع پروتکلی مانند(IGMP, UDP, TCP, …) باشد. راه حل این مشکل، اضافه کردن کنترل‌هایی در روند سر هم کردن قطعات است. این کنترل برای هر قطعه‌ی ورودی آی‌پی اطمینان حاصل می‌کند که افست قطعه و کل طول فیلدها در سرآیند آی‌پی هر قطعه آی‌پی، کوچکتر از ۶۵۵۳۵ است. اگر جمع بزرگتر شد، بنابراین بسته نامعتبر است و قطعه‌ی آی‌پی نادیده گرفته می‌شود. این کنترل توسط دیوار آتش انجام می‌شود، برای محافظت از میزبان‌هایی که این مشکل را درست نکرده‌اند. راه حل دیگر برای این مسئله، استفاده از یک میانگیر حافظه بزرگتر از ۶۵۵۳۵ بایت برای دوباره سر هم کردن بسته‌است.(این اساساً نادیده گرفتن مشخصات است، چرا که پشتیبانی از بسته‌هایی را اضافه می‌کند که بزرگتر از اندازه‌ی مجاز هستند).