Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Вы, наверное, слышали об ICMP, и если вы немного разбираетесь в технологиях, вы, вероятно, знаете (по крайней мере), что это как-то связано с Интернетом.

ICMP на самом деле является протоколом, очень похожим на IP, TCP и UDP (которые мы ранее обсуждали и объясняли), поэтому он играет довольно важную роль в правильном функционировании наших интернет-соединений.

ICMP больше имеет отношение к способу обнаружения и решения проблем с подключением, но давайте не будем слишком портить нашу лекцию. Продолжайте читать, если хотите узнать, что такое ICMP и как он помогает нам поддерживать работу наших соединений на оптимальном уровне.

Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Что такое ICMP?

Протокол управляющих сообщений Интернета, известный под более дружелюбной аббревиатурой ICMP, является протоколом, который имеет основополагающее значение для устранения различных проблем, связанных с подключением.

Этот протокол используется множеством сетевых устройств, включая, помимо прочего, маршрутизаторы, модемы и серверы, чтобы информировать других участников сети о потенциальных проблемах с подключением.

Выше мы упоминали, что ICMP - это протокол, такой же, как TCP и UDP, но в отличие от этих двух, ICMP обычно не используется для облегчения обмена данными между системами. Кроме того, он не часто используется в сетевых приложениях для конечных пользователей, если только они не являются диагностическими инструментами.

Первоначальное определение ICMP было набросано Джоном Постелом , который много раз вносил огромный вклад в развитие Интернета, а первый стандарт ICMP был опубликован в апреле 1981 года в RFC 777 .

Очевидно, первоначальное определение претерпело множество изменений, чтобы достичь той формы, с которой мы знакомы сегодня. Стабильная форма этого протокола была опубликована на 5 месяцев позже его первоначального определения, в сентябре 1981 года, в RFC 792, а также была написана Postel.

Как работает ICMP?

Короче говоря, ICMP используется для сообщения об ошибках, определяя, достигают ли данные своего места назначения относительно быстро.

В базовом сценарии два устройства подключаются через Интернет и обмениваются информацией с помощью того, что мы называем пакетами данных или дейтаграммами. ICMP генерирует ошибки и передает их устройству, отправившему исходные данные, на случай, если пакеты никогда не дойдут до места назначения.

Например, если вы отправляете пакет данных, который слишком велик для обработки маршрутизатором, маршрутизатор сначала отбрасывает пакет, а затем сгенерирует сообщение об ошибке, позволяющее устройству-отправителю, что его пакет никогда не достиг пункта назначения, к которому он направлялся.

Однако это то, что мы назвали бы пассивным навыком, поскольку вам абсолютно ничего не нужно делать, чтобы получать эти сообщения об ошибках (если возникает необходимость). Как вы вскоре узнаете, ICMP также имеет более активную утилиту, на которую вы можете положиться при выполнении различных операций по устранению неполадок в сети.

В отличие от TCP и UDP, ICMP не требует подключения устройства для отправки сообщения. Например, в TCP-соединении подключенным устройствам необходимо выполнить многоэтапное рукопожатие, после чего данные могут быть переданы.

С ICMP нет необходимости устанавливать соединение; сообщение может быть просто отправлено вместо соединения. Кроме того, для сообщения ICMP не требуется порт, на который будет направлено сообщение, по сравнению с TCP и UDP, которые используют определенные порты для маршрутизации информации. ICMP не только не требует порта, но и не позволяет настраивать таргетинг на определенные порты.

Сообщения ICMP переносятся IP-пакетами, но не содержатся в них. Вместо этого они совмещают эти пакеты, поскольку они генерируются только в том случае, если их носитель (то есть IP-пакеты) никогда не достигают места назначения. Чаще всего обстоятельства, которые позволили создать пакет ICMP, являются результатом данных, имеющихся в IP-заголовке неудачного пакета.

Поскольку ICMP включает данные IP-заголовка неудачного пакета, можно использовать инструменты сетевого анализа, чтобы точно определить, какие IP-пакеты не были доставлены. Однако заголовок IP - не единственный тип информации, переносимой пакетом ICMP.

Пакет ICMP содержит заголовок IP, за которым следует заголовок ICMP и первые восемь байтов полезной нагрузки.

  • Заголовок IP - содержит сведения о версии IP, IP-адресах источника и назначения, количестве отправленных пакетов, используемом протоколе, длине пакета, времени жизни (TTL), данных синхронизации, а также идентификационных номерах для определенных пакетов данных.
  • Заголовок ICMP - содержит код, который помогает классифицировать ошибку, подкод, который упрощает идентификацию ошибки, предлагая описание, и контрольную сумму.
  • Заголовок транспортного уровня - первые восемь байтов полезной нагрузки (передаваемой через TCP или UDP)

Контрольные сообщения ICMP

Как мы упоминали выше, при возникновении ошибки значения в первом поле заголовка ICMP могут использоваться для ее идентификации. К этим типам ошибок и их идентификаторам относятся следующие:

  • 0 - эхо-ответ - используется для проверки связи
  • 3 - Пункт назначения недоступен
  • 5 - Сообщение о перенаправлении - используется для указания выбора другого маршрута.
  • 8 - Echo Request - используется для проверки связи
  • 9 - Объявление маршрутизатора - используется маршрутизаторами для объявления своих IP-адресов, доступных для маршрутизации.
  • 10 - Запрос маршрутизатора - обнаружение, запрос или выбор маршрутизатора
  • 11 - Превышено время - истек срок действия TTL или истекло время сборки
  • 12 - Проблема с параметром: неверный IP-заголовок - неправильная длина, отсутствует необходимая опция или указанная указателем ошибка
  • 13 - Отметка времени
  • 14 - ответ с отметкой времени
  • 41 - используется для протоколов экспериментальной мобильности
  • 42 - Extended Echo Request - запрашивает расширенное эхо
  • 43 - Расширенный эхо-ответ - отвечает на 42 расширенный эхо-запрос
  • 253 и 254 - экспериментальные

Поле TTL (время жизни)

Поле TTL является одним из полей заголовка IP, которое может (и часто вызывает) ошибку ICMP. Он содержит значение, которое представляет собой максимальное количество маршрутизаторов, через которое может пройти отправленный пакет, прежде чем он достигнет своего конечного пункта назначения.

После обработки пакета маршрутизатором это значение уменьшается на единицу, и процесс продолжается до тех пор, пока не произойдет одно из двух: либо пакет достигнет пункта назначения, либо значение не достигнет нуля, что обычно сопровождается отключением маршрутизатора. пакет и отправка сообщения ICMP исходному отправителю.

Таким образом, само собой разумеется, что если пакет отбрасывается из-за того, что его TTL достиг нуля, это не из-за поврежденных данных в заголовке или проблем, связанных с маршрутизатором. На самом деле TTL был разработан, чтобы блокировать нежелательные пакеты, препятствующие подключению, и привел к созданию инструмента, который имеет первостепенное значение для устранения неполадок в сети: Traceroute.

Использование ICMP в сетевой диагностике

Как упоминалось выше, ICMP можно использовать с диагностическими инструментами для определения исправности сетевого подключения. Возможно, вы не знали, что такое ICMP, до того, как прочитали наше руководство, но мы уверены, что вы, по крайней мере, слышали о ping, известной сетевой утилите, которая позволяет узнать, доступен ли хост или нет.

Что ж, на самом деле ping - это один из важных инструментов, использующий ICMP в качестве основы. Traceroute - еще один хороший пример инструментов, которые помогают нам диагностировать и устранять проблемы с подключением в наших сетях. Pathping, который представляет собой комбинацию ping и traceroute, является еще одним отличным инструментом на основе ICMP.

пинг

Ping - это встроенный инструмент Windows, доступ к которому можно получить через CMD, и он является одним из наиболее важных инструментов, использующих ICMP для устранения потенциальных сетевых ошибок. Ping использует два кода из списка выше, 8 (эхо-запрос) и 0 (эхо-ответ), чтобы быть более конкретным.

Вот как выглядят два примера команды ping :

ping 168.10.26.7
ping TipsWebTech360.com

Когда вы запустите его, ping отправит ICMP-пакет с кодом 8 в поле типа и будет терпеливо ждать ответа типа 0. После получения ответа команда ping определит время между запросом (8) и его ответом (0) и вернет значение кругового обхода, выраженное в миллисекундах.

Мы уже установили, что ICMP-пакеты обычно генерируются и отправляются в результате ошибки. Однако пакет запроса (тип 8) не требует ошибки для отправки, поэтому ping также может получить ответ (0) обратно, не вызывая ошибки.

Как вы, наверное, догадались из приведенных выше примеров, вы можете пропинговать IP-адрес или хост. Более того, ping имеет множество дополнительных опций, которые вы можете использовать для более продвинутого устранения неполадок, просто добавив опцию к команде.

Например, использование опции -4 заставит ping использовать исключительно IPv4 , тогда как -6 будет использовать только адреса IPv6 . На скриншоте ниже представлен полный список параметров, которые вы можете добавить в команду ping .

Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Распространенное заблуждение относительно ping заключается в том, что вы можете использовать его для проверки доступности определенных портов в целевых системах. Короче говоря, вы не можете этого сделать, поскольку ICMP не осуществляет реального обмена сообщениями между хостами, в отличие от TCP или UDP, и не требует использования порта.

Приложения сканера портов используют пакеты TCP или UDP, чтобы определить, открыты и доступны ли определенные порты. Инструменты отправляют пакеты TCP или UDP на определенный порт и генерируют ICMP-сообщение типа 3 (хост недоступен), подтипа 3 (порт назначения недоступен), если этот порт не активен.

Traceroute

Как и ping, traceroute - это еще один инструмент для устранения неполадок в сети, который каждый сетевой администратор должен иметь не только в своем наборе инструментов, но и мастером. Что делает traceroute , так это помогает вам составить карту маршрута всех устройств, через которые проходит ваше соединение, до тех пор, пока оно не достигнет указанного пункта назначения.

Поэтому, если вы хотите найти весь маршрут между вами и другой машиной, traceroute может предоставить вам именно эту информацию. Этот инструмент также можно использовать, чтобы определить, есть ли что-то не так на маршруте, по которому следует ваше соединение.

Если, например, на пути подключения есть устройство, которому сложно переадресовать ваши пакеты к их предполагаемому месту назначения, traceroute сообщит вам, какой маршрутизатор дает вам отложенный ответ (или вообще не дает).

Принцип работы traceroute заключается в отправке пакета со значением TTL ( Time To Live ), равным 0, который будет автоматически отброшен первым встречным маршрутизатором, как мы объяснили выше в разделе TTL. После отбрасывания пакета маршрутизатор генерирует пакет ICMP и отправляет его обратно в traceroute.

Программа извлекает адрес источника пакета, а также время, которое потребовалось пакету, чтобы вернуться, а затем отправляет другой пакет со значением TTL, равным 1 . После того, как второй пакет проходит через шлюз, его TTL уменьшается на 1 (становится 0 ) и направляется ко второму маршрутизатору, который, обнаружив нулевое значение TTL, отбрасывает пакет и отправляет ICMP-пакет обратно в traceroute.

Каждый раз, когда traceroute получает пакет ICMP, он увеличивает TTL на единицу и отправляет его обратно на свой путь, и эта операция продолжается и продолжается до тех пор, пока не будет достигнут указанный пункт назначения или пока у traceroute не закончатся переходы. По умолчанию Windows выделяет максимум 30 прыжков, но вы можете увеличить это количество, указав это в синтаксисе команды.

Вот пример того, как вы можете запустить traceroute в CMD:

tracert TipsWebTech360.com

Как и ping, traceroute имеет ряд параметров, которые вы можете добавить к синтаксису, если хотите быть более конкретными. Вы можете принудительно использовать IPv4 или IPv6, но вы также можете пропустить преобразование адресов в имена хостов и увеличить максимальное количество переходов для поиска цели. Посмотрите наш снимок экрана ниже, чтобы увидеть пример использования traceroute и список всех опций, которые вы можете с ним использовать.

Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Однако стоит упомянуть, что traceroute может предоставлять вам информацию только в режиме реального времени. Поэтому, если вы столкнулись с замедлением вашего соединения и хотите использовать этот инструмент для его расследования, вы можете получить вводящие в заблуждение результаты, так как за это время маршрут мог измениться.

Хотя можно заставить traceroute следовать определенному пути, используя параметр -j и добавляя адреса маршрутизатора вручную, это означает, что вы уже знаете о неверном пути. Это несколько парадоксально, поскольку для обнаружения пути в первую очередь необходимо использовать traceroute без опции -j .

Если вы не совсем фанат использования инструментов CLI (интерфейса командной строки) и предпочитаете подход с графическим интерфейсом пользователя ( GUI ), существует множество сторонних программных решений для traceroute. Traceroute NG компании SolarWinds  - один из лучших примеров, о которых мы могли подумать. Мы упоминали, что это совершенно бесплатно ?

Pathping

Как мы вкратце упомянули выше, определение путей завершает тройку незаменимых инструментов для устранения неполадок в сети. С точки зрения функциональности, патфинг представляет собой комбинацию ping и traceroute, поскольку он использует все три типа сообщений, которые использует вышеупомянутый дуэт: эхо-запрос (8), эхо-ответ (0), а также превышенное время (11).

Чаще всего определение пути используется для идентификации узлов подключения, на которые влияет высокая задержка и потеря пакетов. Конечно, вы можете использовать traceroute, а затем ping, чтобы получить эти данные, но наличие функциональности обоих инструментов под одной командой намного удобнее для сетевых администраторов.

Одним из недостатков использования pathping является то, что для завершения запроса может потребоваться некоторое время (25 секунд на переход для получения статистики ping). Pathping покажет вам как маршрут к указанному пункту назначения, так и время туда и обратно.

В отличие от ping и traceroute, pathping будет многократно проверять каждый маршрутизатор на своем пути, что увеличивает его общую эффективность. Однако, если он встречает маршрутизатор, который отключил свои функции ICMP, pathping остановит его запрос информации, тогда как ping все еще может достичь маршрутизатора без функций ICMP, а traceroute перейдет к следующему маршрутизатору на своем пути и отобразит строку звездочек. для любых маршрутизаторов, не поддерживающих ICMP.

Pathping - это встроенный в Windows инструмент, который использовался со времен Windows NT, поэтому вы можете использовать его так же, как ping или tracert: через командную строку.

Вот пример того, как вы можете использовать pathping:

pathping TipsWebTech360.com -h 40 -w 2 -4

Приведенная выше команда покажет вам маршрут к нашему веб-сайту, а также время приема-передачи до каждого маршрутизатора в пути подключения. Кроме того, параметры, которые мы использовали в нашем примере, увеличат максимальное значение по умолчанию для прыжков с 30 до 40, добавят значение тайм-аута в 2 миллисекунды для каждого ответа и принудительно включат IPv4.

Посмотрите наш снимок экрана ниже, чтобы увидеть краткое руководство по использованию путей и список параметров, которые вы можете добавить в синтаксис команды.

Что такое ICMP? Понимание протокола управляющих сообщений Интернета

Применимость ICMP в кибератаках

Хотя диапазон ICMP облегчает множество операций по устранению неполадок с подключением, этот протокол также можно использовать для выполнения различных кибератак. Если вы достаточно долго находитесь в Интернете, вы, вероятно, слышали о ping-флуда, DDoS, Ping of Death, Smurf Attacks или ICMP-туннелях.

В то время как некоторые из этих атак в настоящее время используются в качестве PoC (Proof of Concept), другие по-прежнему используются злоумышленниками для нанесения вреда системам, подключенным к Интернету, или экспертами по безопасности для проверки уязвимостей.

Мы начнем с самого популярного, а именно с ping-флуда (кстати, все еще широко используемого), и объясним, как он использует ICMP для зла.

Пинг флуд

Использование ping для отправки эхо-запросов и ожидания эхо-ответов кажется довольно безобидным. Но что, если вместо ожидания ответа ping просто отправит огромное количество эхо-запросов ICMP? В этом классическом сценарии атаки DoS (отказ в обслуживании) целевое устройство будет испытывать серьезную задержку и даже разрыв соединения, если атака будет успешной.

Эта атака наиболее эффективна, если у злоумышленника более широкая полоса пропускания, чем у жертвы, и если жертва отправляет эхо-ответы ICMP на множество получаемых ею запросов, потребляя таким образом входящую и исходящую полосу пропускания.

Злоумышленник может указать опцию «флуд» для команды ping, но эта опция встречается довольно редко и не встроена во встроенные инструменты операционной системы. Например, пинг Windows не имеет опции «флуд» , но есть некоторые сторонние инструменты, которые интегрируют эту функцию.

Атака ping flood действительно может стать катастрофической, если превратиться в DDoS- атаку (распределенный отказ в обслуживании) . DDoS-атака использует несколько систем для нацеливания на одну, таким образом подавляя ее пакетами из нескольких мест одновременно.

Один из верных способов защитить себя от ping-флуда - отключить функции ICMP на вашем маршрутизаторе. Вы также можете установить брандмауэр веб-приложения, если вам нужно защитить веб-сервер от таких атак.

Звон смерти

Эта атака включает отправку неверно сформированного пинга на целевой компьютер. В этом типе атаки отправленный пакет будет содержать количество заполнителя в полезной нагрузке, которое слишком велико для одновременной обработки.

Однако перед отправкой этот злонамеренный эхо-запрос будет фрагментирован на более мелкие части, так как передача его в исходной, собранной форме будет невозможна для процессора Интернет-протокола .

Компьютер, на который нацелен «Пинг смерти», получит фрагменты и попытается собрать их перед отправкой вредоносного пакета в целевое приложение. Вот где происходит повреждение: если собранный пакет длиннее, чем доступная память на целевом компьютере, его повторная сборка может привести к переполнению буфера , сбоям системы и даже может позволить внедрить вредоносный код в пораженную машину.

С другой стороны, Ping of Death больше не является новинкой, так как многие системы безопасности распознают его без сбоев и успешно блокируют.

Смурф атака

В отличие от двух предыдущих типов атак, Smurf-атака не атакует устройство напрямую, а использует другие устройства в той же сети для координации распределенной DoS-атаки ( DDoS ) на одну машину.

Злоумышленнику нужен IP-адрес своей цели и широковещательный IP-адрес целевой сети. Злоумышленник добавляет IP-адрес жертвы к пакетам ICMP (подделывает его), а затем транслирует их в сеть цели, используя широковещательный IP-адрес .

В ответ большинство устройств, подключенных к той же сети, отправят ответ на исходный IP-адрес (замененный, чтобы отразить целевую машину), который может быть перегружен трафиком, если сеть достаточно велика (имеет огромное количество подключенных устройств).

В результате компьютер цели может замедлиться и даже стать непригодным для использования в течение определенного периода времени, если атака достаточно серьезна.

Как и прежде, вы можете избежать атаки Smurf, просто отключив возможности ICMP вашего шлюзового маршрутизатора. Другой способ обеспечить защиту - занести в черный список запросы, поступающие с широковещательного IP-адреса вашей сети.

Приступ твинга

Атака Twinge проводится программой, которая отправляет поток поддельных пакетов ICMP, чтобы нанести вред системе. Пакеты ICMP являются поддельными, поскольку все они используют случайные поддельные IP-адреса, но на самом деле пакеты поступают из одного источника (машины злоумышленника).

Сообщается, что пакеты ICMP содержат сигнатуру, которая может выдать тот факт, что атака исходила не из нескольких источников, а вместо этого была скоординирована с помощью Twinge.

Хотя эта атака может иметь катастрофические последствия, если ее спланировать правильно, отключение ICMP на маршрутизаторе шлюза и установка брандмауэра или системы обнаружения вторжений могут помочь вам защитить себя от нее.

ICMP туннель

По умолчанию маршрутизаторы сканируют только заголовки ICMP-пакетов, что позволяет пакетам, которые на самом деле содержат много дополнительных данных, легко обходить обнаружение, пока они содержат раздел ICMP. Этот тип атаки называется пингом или туннелем ICMP. К счастью, стандартные утилиты ping не могут выполнять туннелирование через брандмауэры и шлюзы, поскольку туннели ICMP необходимо тщательно адаптировать к сетям, для которых они предназначены.

С другой стороны, существует множество онлайн-ресурсов, которые злоумышленники могут использовать и эмулировать такой туннель, предоставляя себе свободный проход через частные сети и подключенные к нему машины. Как и прежде, отключение возможностей ICMP на маршрутизаторе шлюза, использование брандмауэров и соблюдение строгих правил внесения в черный список может иметь первостепенное значение для предотвращения атак этого типа.

ICMP - Заключение

Учитывая все обстоятельства, хотя ICMP не используется для обмена информацией между подключенными устройствами в данной сети, как TCP и UDP, он по-прежнему имеет огромный диапазон применимости. Фактически, ICMP - один из самых гибких фундаментальных протоколов, которые помогают сохранить Интернет в том виде, в каком мы его знаем.

Помимо своей основной цели - сообщить одной системе, когда есть дросселирование в ее соединении с другой системой, ICMP является основой множества инструментов устранения неполадок, таких как ping, pathping и traceroute. К сожалению, это также помогает вредоносным агентам доставлять широкий спектр DoS-атак и атак проникновения на уязвимые машины.


6 лучших инструментов управления сетью, которые отслеживают производительность

6 лучших инструментов управления сетью, которые отслеживают производительность

Рынок программного обеспечения для управления сетью очень переполнен. Сократите свой поиск, следуя нашим рекомендациям по лучшим инструментам управления сетью.

10 лучших инструментов Ping Sweep, чтобы рассказать вам больше о вашей сети

10 лучших инструментов Ping Sweep, чтобы рассказать вам больше о вашей сети

Проверка связи может быть использована в ваших интересах многими способами. Читайте дальше, пока мы обсуждаем, как и представляем 10 лучших инструментов проверки Ping, которые вы можете найти.

6 лучших инструментов для мониторинга веб-сайтов

6 лучших инструментов для мониторинга веб-сайтов

Веб-сайты важны и должны постоянно контролироваться для адекватной работы. Вот некоторые из лучших инструментов для мониторинга веб-сайтов.

Лучшие инструменты развертывания программного обеспечения для команд разработчиков в 2022 году

Лучшие инструменты развертывания программного обеспечения для команд разработчиков в 2022 году

Вот некоторые из лучших инструментов для развертывания программного обеспечения, которые облегчают управление любым количеством машин.

Контрольный список соответствия HIPAA и инструменты для использования

Контрольный список соответствия HIPAA и инструменты для использования

Если вы работаете в сфере здравоохранения или каким-либо образом связаны с ИТ в этой отрасли, скорее всего, вы слышали о HIPAA. Переносимость медицинского страхования

Обзор лучших бесплатных сборщиков и анализаторов sFlow в 2021 году

Обзор лучших бесплатных сборщиков и анализаторов sFlow в 2021 году

sFlow - это протокол анализа потока, который встроен во многие сетевые устройства. Мы рассматриваем пятерку лучших бесплатных сборщиков и анализаторов sFlow.

Лучшие инструменты и программное обеспечение для безагентного мониторинга инфраструктуры в 2021 году

Лучшие инструменты и программное обеспечение для безагентного мониторинга инфраструктуры в 2021 году

Чтобы помочь вам выбрать правильный, мы представили лучшие инструменты безагентного мониторинга инфраструктуры и дали вам быстрый обзор каждого из них.

SolarWinds Mail Assure - ОБЗОР 2021 г.

SolarWinds Mail Assure - ОБЗОР 2021 г.

Безопасность электронной почты - важная задача поставщиков управляемых услуг. Мы рассматривали SolarWinds Mail Assure, один из лучших инструментов для этой цели.

Лучшие инструменты сетевого мониторинга для Windows 10 в 2021 году

Лучшие инструменты сетевого мониторинга для Windows 10 в 2021 году

Для сетевого монитора Windows требуются инструменты с ограниченными требованиями. Сегодня мы познакомились с лучшими инструментами сетевого мониторинга для Windows 10.

9 лучших инструментов для устранения неполадок сети, которые мы рассмотрели в 2021 году

9 лучших инструментов для устранения неполадок сети, которые мы рассмотрели в 2021 году

Чтобы помочь вам разобраться в лабиринте инструментов, доступных для устранения неполадок в сети, мы раскрыли наш выбор лучших инструментов для устранения неполадок в сети.