ICMP یک پروتکل لایهی شبکه است که توسط دستگاههای شبکه به منظور تشخیص مشکلات ارتباطات شبکه مورد استفاده قرار میگیرد. ICMP بررسی میکند آیا دادهها به موقع به مقصد مورد نظر خود میرسند یا خیر.
به طور معمول، پروتکل ICMP در دستگاههای شبکه مانند روترها مورد استفاده قرار میگیرد. این پروتکل برای گزارش و آزمایش خطا بسیار مهم است؛ اما در حملات DDoS نیز از آن استفاده میشود.
از ICMP به چه منظوری استفاده میشود؟
هدف اصلی Internet Control Message Protocol گزارش خطا است. زمانی که دو دستگاه از طریق اینترنت با یکدیگر ارتباط برقرار میکنند، در صورت عدم رسیدن هر یک از دادهها به مقصد مورد نظر، ICMP خطاهایی را برای اشتراک با سایر دستگاههای ارسال کننده ایجاد میکند. به عنوان مثال، در صورتی که یک پکت داده برای روتر خیلی بزرگ باشد، روتر پکت را رها نموده و پیام ICMP را به مبدا اصلی باز میگرداند.
استفاده دیگر پروتکل ICMP در امور مربوط به تشخیص شبکه است. Traceroute و ping هر دو با این پروتکل کار میکنند. از ابزار traceroute برای نشان دادن مسیر بین دو دستگاه اینترنتی استفاده میشود.
مسیر انتخاب شده، مسیر واقعی فیزیکی روترهای متصل است که یک درخواست میبایست قبل از رسیدن به مقصد از آن عبور کند. سفر بین یک روتر و دستگاه دیگر، تحت عنوان hop شناخته میشود و traceroute نیز زمان مورد نیاز برای هر “هاپ” را در طول مسیر گزارش میکند. این امر میتواند برای تعیین منابع تاخیر شبکه مفید باشد.
ابزار ping نسخهی ساده شدهی traceroute است. یک ping سرعت اتصال بین دو دستگاه را بررسی نموده و به طور دقیق اعلام میکند که یک پکت چقدر طول میکشد تا به مقصد خود برسد و مجددا به دستگاه فرستنده برگردد.
هرچند که ping، دادههای مربوط به مسیریابی یا هاپ را ارائه نمیدهد، اما هنوز هم یک معیار بسیار مفید برای اندازهگیری تاخیر بین دو دستگاه به شمار میرود. پیامهای echo-request و echo-reply به طور معمول برای انجام یک ping مورد استفاده قرار میگیرند.
متاسفانه حملات شبکه میتوانند از این فرایند سوء استفاده کرده و ابزارهایی جهت ایجاد اختلال مانند ICMP flood attack و ping of death attack تولید نمایند.
ICMP چگونه عمل میکند؟
برخلاف IP یا پروتکل اینترنت، ICMP با پروتکل لایهی انتقال مانند TCP یا UDP ارتباطی ندارد. همین امر موجب میشود ICMP یک پروتکل بدون اتصال باشد یعنی یک دستگاه نیازی به اتصال با دستگاه دیگر قبل از ارسال پیام ICMP ندارد.
ترافیک معمولی IP با استفاده از TCP ارسال میشود. به عبارت دیگر، هر دو دستگاهی که دادهها را رد و بدل میکنند، ابتدا میبایست اطمینان حاصل کنند که هر دو دستگاه آمادهی دریافت دادهها هستند. در ضمن پروتکل ICMP برای هدف قرار دادن یک پورت خاص بر روی دستگاه مجاز نیست.
چگونه از پروتکل ICMP در حملات DDoS استفاده میشود؟
– ICMP flood attack
یک ping flood یا ICMP flood زمانی رخ میدهد که مهاجم در تلاش است دستگاه مورد نظر را با پکتهای ICMP echo-request تحت فشار قرار دهد. هدف میبایست هر پکت را پردازش نموده و به آن پاسخ دهد، تا زمانی که کاربران قانونی نتوانند سرویس دریافت کنند.
![حمله دیداس ICMP - ستاک فناوری ویرا](https://www.setakit.com/wp-content/uploads/2022/05/ping-icmp-flood-ddos-attack-diagram-300x200.png)
– حمله Ping of death
حمله ping of death زمانی رخ میدهد که مهاجم یک ping بزرگتر از حداکثر اندازهی مجاز به پکت دستگاه مورد نظر بفرستد و در نهایت موجب آسیب رساندن به دستگاه گردد.
پکت در راه رسیدن به مقصد خود، پراکنده میشود اما زمانی که هدف مجددا پکت را در اندازهی اصلی بیش از حد اصلی خود جمع کند، اندازهی پکت منجر به جریان بیش از حد خواهد شد.
– حمله Smurf
در حمله smurf مهاجم یک پکت ICMP به همراه آدرس IP جعلی ارسال میکند. تجهیزات شبکه به پکتها پاسخ میدهند و پاسخها را به آدرس IP جعلی میفرستند و سیل عظیمی از پکتهای ناخواستهی ICMP را به سمت قربانی ارسال میکنند.
حملهی smurf نیز مانند ping of death تنها با تجهیزات قدیمی شبکه امکان پذیر است.
Internet Control Message Protocol تنها پروتکل لایهی شبکه نیست که در حملات لایهی 3 دیداس استفاده میشود. به عنوان مثال، مهاجمان در گذشته از پکتهای GRE استفاده میکردند.
حملات DDoS لایهی شبکه عموما تجهیزات و زیرساختهای شبکه را مورد هدف خود قرار میدهند؛ در مقابل، حملات دیداس لایهی Application، ویژگیهای وب را هدف قرار میدهند.