در روزهای ابتدایی اینترنت، شبکهها و دستگاهها سادهتر و آسیبپذیرتر بودند و ارسال بستههای ناقص یا خیلی بزرگ از طریق پروتکل ICMP میتوانست باعث کرش سیستمها یا اختلال در شبکه شود. حمله PoD، سیستمعاملهای قدیمیتر را که قادر به مدیریت درست چنین بستههایی نبودند هدف قرار می داد. با پیشرفت سختافزار و سیستمعاملها و انتشار پچهای امنیتی، مقاومت در برابر PoD افزایش یافت اما مهاجمان نیز تاکتیکهای خود را تغییر دادند و راههای جدیدی برای بهرهبرداری از آسیبپذیریهای مختلف در پروتکلها و تجهیزات شبکه پیدا کردند.
حمله PoD یا Ping of Death چیست؟
حمله PoD یا Ping of Death یکی از انواع شناختهشده حملات DoS است. مهاجم در این حمله سعی میکند با فرستادن بستههای ICMP ناقص یا بزرگ از طریق فرمان ping، دستگاه، سرور یا سرویس هدف را ناپایدار کرده یا حتی از کار بیندازد. هنگام پردازش این بستهها در سمت قربانی، خطاهایی رخ میدهد که میتواند منجر به کرش سیستم شود.
این مفهوم شباهتهایی با mail bomb (بمب ایمیلی) دارد. در هر دو حالت، باز شدن یا پردازش ورودی مخرب میتواند مکانیزمی را فعال کند که به سیستم آسیب میرساند یا آن را از کار میاندازد. با این حال، نام PoD از ابزار ping گرفته شده است که خود ابزاری رایج برای بررسی دسترسی شبکه بوده و بر پایهٔ پروتکل ICMP (Internet Control Message Protocol) کار میکند، پروتکلی که برای ارسال پیامهای کنترلی و وضعیت در شبکه طراحی شده است.

تصویر(1)
این حمله چگونه عمل میکند؟
برای اجرای حمله PoD، مهاجم با دستور ping یا بستههای ICMP تلاش میکند دادههایی بیش از حد بزرگ یا بخشبندیشده ارسال کند تا هنگام سرهمکردن در سمت گیرنده، خطا رخ دهد و دستگاه ناپایدار شود.
یک پیام پاسخ بازتابی پروتکل ICMP (ICMP echo-reply) که عموماً بهعنوان پینگ شناخته میشود، ابزاری شناخته شده برای آزمون اتصال شبکه است. این پیامها برای بررسی دسترسی و وضعیت شبکه فرستاده میشوند و در صورت دریافت پاسخ، نشاندهندهٔ ارتباط موفق هستند.
در حملهٔ PoD، مهاجم بستهای با اندازهای فراتر از حد معمول میسازد و آن را به قطعات کوچکتر تقسیم میکند. وقتی قطعات در سمت مقصد دوباره کنار هم قرار میگیرند، اندازهٔ نهایی ممکن است از حدی که سیستم انتظار دارد بیشتر شود؛ این موضوع میتواند منجر به سرریز بافر حافظه (buffer overflow) یا خطاهای دیگر در فرایند بازسازی بستهها گردد و در نتیجه سیستم کرش کند.
مهاجمان میتوانند این نوع حمله DoS را از طریق پروتکلهای دیگر همچون UDP، IPX و TCP نیز اجرا کنند. در واقع هر چیزی که یک دیتاگرام پروتکل اینترنت (IP datagram) ارسال کند، قابلیت سوءاستفاده دارد.
نمونهای از اجرای PoD در ویندوز و لینوکس به صورت زیر است.
Ping of Death در ویندوز:
ping <ip address> -l 65500 -w 1 -n 1
Ping of Death در لینوکس:
ping <ip address> -s 65500 -t 1 -n 1
آیا Ping of Death هنوز موثر است؟
حمله PoD در واقع حملهای قدیمی است که نخستین بار در میانه دهه ۱۹۹۰ مشاهده شد. از آن زمان، اکثر دستگاهها و رایانهها در برابر این نوع حملات ایمن شدند. همچنین بسیاری از وبسایتها پیامهای پینگ ICMP را مسدود میکنند تا از وقوع و گسترش این حمله جلوگیری نمایند.
با این حال، اقدامات دفاعی سازمان ها ممکن است به دلیل وجود محتوای مخرب در یک رایانه، سرور یا شبکه تضعیف شود و همچنان در برابر تهدید PoD آسیبپذیر باقی بماند. این تهدید زمانی خطرناک است که بخشهای زیر تقویت نشده باشند:
-
تجهیزات قدیمی آسیبپذیر
-
درایور هسته در TCPIP.sys
-
نسخههای ویندوز XP و Windows Server 2013 در سیستمهایی که پیشتر مقابل ضعف فونتهای OpenType آسیبپذیر بودهاند.

تصویر(2)
حملات PoD اخیر
حملات PoD رسماً در اوت ۲۰۱۳ مجددا وارد صحنه شدند و شبکههای IPv6 را تهدید کردند. مهاجم از ضعف ویندوز XP و Windows Server 2013 (که در آستانه کنار گذاشته شدن بودند) سوءاستفاده کرد (بهویژه در فونتهای OpenType). نقص موجود در پیادهسازی IPv6 پروتکل ICMP به مهاجم امکان میداد درخواستهای پینگ حجیمی ارسال کند که هنگام بازسازی بستهها، قربانی را از کار میانداخت. این تهدید خاص، بهسادگی میتوانست با غیرفعال کردن IPv6 رفع شود.
اکتبر ۲۰۲۰، نقصی در مؤلفه TCPIP.sys ویندوز کشف شد که یک درایور هسته (Kernel) بود و در صورت سوءاستفاده، میتوانست به هسته هر سیستم ویندوزی نفوذ کند. نتیجه، یک کرش شدید و خاموشی کامل دستگاه بود که راهاندازی مجدد سیستم را در پی داشت. با این حال، بهرهبرداری عملی از این آسیبپذیری برای مجرمان سایبری نسبتاً دشوار بود. بنابراین کاربران شروع به نصب پچهای امنیتی کردند تا این تهدید برطرف شود.
اگرچه حمله PoD کوچک و ساده به نظر میرسد اما همین ویژگی آن را به سلاحی مؤثر علیه دستگاههای خاص تبدیل میکند. نباید آن را دستکم گرفت؛ زیرا اگر گروهی از دستگاهها بهطور همزمان عمل کنند، میتوانند یک وبسایت را که زیرساخت کافی برای مقابله ندارد، از کار بیندازند. نمونههای فوق نشان میدهند که حمله Ping of Death همچنان میتواند رخ دهد.

تصویر(3)
اقدامات پیشگیرانه در برابر حمله PoD
راهکارهای متعددی برای پیشگیری و محافظت در برابر حمله PoD وجود دارد که بیشتر آنها ساده و قابل اجرا هستند:
-
پیکربندی فایروال برای انسداد پیامهای پینگ ICMP: این کار شبکه را از تهدید PoD محافظت میکند اما مانع پینگهای مجاز نیز خواهد شد. علاوه بر این، حملات بستههای نامعتبر میتوانند از طریق پورتهای دیگر مانند FTP نیز انجام شوند. پس این راهکار ایده آل نیست.
-
مانیتورینگ با ICMP Ping:اگر تمایلی به انسداد کامل پیامهای ICMP Ping ندارید، استفاده از مانیتورینگ پینگ میتواند راهکار مناسبتری باشد. این روش مشکلات شبکه را سریعا شناسایی کرده و به بهبود امنیت کلی کمک میکند.
-
پیاده سازی حفاظت در برابر DDoS: سرویسهای ضد DDoS یک تکنیک مؤثر برای امنیت شبکه و مقابله با حملات DDoS و PoD فراهم میکنند.
-
بروزرسانی منظم نرمافزار: پچها معمولاً اندکی پس از شناسایی ضعفها ارائه میشوند. نصب آنها برای ایمن نگهداشتن دستگاه ضروری است.
-
اجرای بافر اضافی: قابلیت پذیرش بستههای بزرگ را با ایجاد یک بافر اضافی بهبود دهید.
-
فیلتر کردن ترافیک: میتوانید مانع رسیدن پینگهای تقسیم شده به دستگاهها شوید. این کار اجازه میدهد از ابزار ping استفاده کنید بدون آنکه در معرض خطر قرار بگیرید.
-
فعالسازی یک بررسیکننده در فرآیند بازسازی: اگر دادههای بیشازحد بزرگ شناسایی شوند، بستههای غیرعادی متوقف شده و از کرش جلوگیری میشود.
انسداد درخواستهای Ping با iptables
برای مسدود کردن درخواستهای پینگ ورودی و خروجی در سرور با استفاده از iptables، دستورات زیر بهکار میروند:
برای رد کردن درخواستهای پینگ ورودی:
$ sudo iptables -A INPUT -p icmp –icmp-type echo-request -j REJECT
این دستور به پینگ های مسدود شده، پیام خطا نمایش می دهد. اگر ترجیح میدهید این درخواستها بدون تولید پیام خطا حذف شوند، از دستورات زیر استفاده کنید:
$ sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
$ sudo iptables -A OUTPUT -p icmp –icmp-type echo-reply -j DROP
دستور اول درخواستهای پینگ ورودی را بدون واکنش مسدود میکند، در حالیکه دستور دوم مانع ارسال پاسخ پینگ از سرور میشود.

تصویر(4)
اجرای پروتکلهای شبکه در برابر حمله PoD
علاوه بر راهکارهای رایج، اقدامات در سطح پروتکل شبکه نیز میتوانند دفاع را تقویت کند:
-
بازرسی عمیق بستهها (Deep Packet Inspection - DPI): این روش فراتر از بررسی هدر بستهها، محتوای واقعی داده را تحلیل میکند و میتواند بستههایی با الگوهای غیرمعمول مانند تقسیمبندی غیرطبیعی یا اختلال در payload را شناسایی و مسدود نماید.
-
سیستمهای تشخیص نفوذ (Intrusion Detection Systems - IDS): سیستم IDS میتواند برای شناسایی الگوهای حملات PoD پیکربندی شود. با مانیتورینگ مداوم ترافیک شبکه، IDS قادر است مدیران را مطلع کرده و اقدامات خودکاری را علیه بستههای مشکوک انجام دهد.
-
تشخیص ناهنجاری پروتکلها (Protocol Anomaly Detection): این روش شامل تحلیل رفتار پروتکلهایی مانند ICMP، TCP و UDP بر اساس استانداردهای تعریفشده است. هرگونه انحراف، مانند بستههای تقسیم شده ICMP، میتواند شناسایی و مسدود شود.
-
بازرسی مبتنی بر وضعیت بستهها (Stateful Packet Inspection - SPI): برخلاف فایروالهای بدونوضعیت که تنها هدر بستهها را بررسی میکنند، فایروالهای SPI وضعیت اتصالات فعال را ردیابی کرده و بر اساس میزان ترافیک تصمیم میگیرند. این روش بهطور مؤثر بستههای ناقص و غیرمجاز PoD را مسدود میکند.
Ping of Death در برابر سایر حملات DoS
PoD تنها یکی از انواع حملات DoS است اما ویژگیهایی دارد که آن را از دیگر روشها متمایز میکند. هرچند تمام حملات DoS با هدف ازکارانداختن هدف اجرا میشوند، روشها و پروتکلهایی که مورد سوء استفاده قرار می گیرند، متفاوت هستند:
-
حملات SYN Flood: مهاجم تعداد زیادی درخواست SYN به سرور ارسال کرده و منابع آن را با اتصالات ناقص TCP مصرف میکند. برخلاف PoD که به بستههای ICMP بیشازحد بزرگ متکی است، SYN Flood فرآیند TCP handshake را هدف قرار میدهد.
-
حملات UDP Flood: در حمله UDP Flood حجم بسیار زیادی از بستههای UDP به پورتهای تصادفی هدف فرستاده میشود و سیستم یا سرویسگیرنده مجبور است برای هر بسته بررسی انجام داده و در صورت نیاز، پاسخ تولید کند؛ این کار باعث میشود منابع شبکه و پردازشی هدف بهسرعت تحلیل بروند. در مقابل، PoD مبتنی بر ارسال بستههای بیشازحد بزرگ یا تقسیمشده است که هنگام بازسازی در سمت گیرنده باعث خطا یا سرریز بافر میشوند.
-
حملات HTTP Flood: این حملات وبسرورها را با درخواستهای HTTP سنگین هدف قرار می دهند که ظاهری مشابه ترافیک عادی دارند و تشخیص آنها دشوارتر است.در مقابل، PoD آسانتر شناسایی میشود زیرا به بستههای ناقص و غیرمعمول متکی است.
-
حملات Smurf: مشابه PoD، از ICMP استفاده میکنند اما با ارسال درخواستهای پینگ جعلی به آدرس broadcast یک شبکه، موجب میشوند تمام دستگاهها به هدف پاسخ دهند و آن را از کار بیندازند. Smurf به amplification (تقویت) وابسته است، در حالی که PoD بر بستههای بیشازحد بزرگ تکیه دارد.

تصویر(5)
چگونه باید حمله PoD را شناسایی کرد؟
تشخیص حمله PoD در زمان وقوع دشوار می باشد زیرا نشانههای آن ممکن است مشابه مشکلات دیگر شبکه باشند. با این حال، علائم مشخصی وجود دارند:
-
کرشها یا راهاندازی مجدد سیستم بدون دلیل
-
بیثباتی اتصال شبکه
-
خطاهای سرریز بافر حافظه (Memory Buffer Overflow)
-
افزایش غیرمعمول ترافیک ICMP که توسط ابزارهای مانیتورینگ شناسایی شده
-
رفتار غیرعادی سیستم (کندی، هنگ یا عدم پاسخگویی)
بهترین شیوهها برای مقابله با Ping of Death
دفاع مقابل حمله PoD نیازمند ترکیبی از مدیریت پیشگیرانه سیستم و حفاظت در سطح شبکه است:
-
بروزرسانی مداوم سیستمعاملها و دستگاههای شبکه
-
پیکربندی فایروال یا روتر برای فیلتر کردن ترافیک ICMP
-
استفاده از سرویسهای محافظت در برابر DDoS
-
بهرهگیری از IDS یا DPI در سطح سرور
-
مانیتورینگ مداوم شبکه برای شناسایی الگوهای غیرمعمول
نتیجهگیری
اغلب تصور میشود که حمله Ping of Death دیگر منسوخ شده و در شبکههای امروزی شانسی برای اجرا ندارد. با این حال همچنان میتواند در شرایط خاص راهی برای سوءاستفاده پیدا کرده و موجب از کار افتادن سیستم شود. بنابراین بیتوجهی به آن اشتباه خواهد بود و بهترین رویکرد، به کار بردن تمامی تدابیر پیشگیرانه و راهکارهای امنیتی برای مقابله و جلوگیری از بروز چنین حملات مخربی است.