ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
ICMP, который расшифровывается как Internet Control Message Protocol это протокол третьего уровня модели OSI, который используется для диагностики проблем со связностью в сети. Говоря простым языком, ICMP помогает определить может ли достичь пакет адреса назначения в установленные временные рамки. Обычно, ICMP “юзают» маршрутизаторы и устройства третьего уровня.
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Для чего используется ICMP?
Про трассировку
Так и с “трассировкой». Когда говорят “сделайте трассировку маршрута» это означает, что мы хотим увидеть полный маршрут между хостом, на котором выполняется трассировка до хоста назначения. Трассировка покажет каждый из маршрутизаторов на пути до цели и время обработки и прохождения каждого из участков маршрута. Кстати, такой маршрут называется “хопом». Часто говорят: если от узла отправления до узла назначения на пути встретиться 7 маршрутизаторов, то говорят на пути будет 7 хопов. А если на 6 маршрутизаторе пакет обрабатывается дольше обычного, то в среде инженеров говорят “на 6 хопе повышенная задержка». Это один из базовых инструментов того, как можно понять, какой из сетевых узлов на маршруте пакет “сбоит». Именно в этом нам помогает протокол ICMP.
Про пинг
Теперь про ping. Можно сказать, это самый базовый инструмент инженера, который позволяет понять “»А жив ли хост?»
Помимо прочего, пинг поможет понять как долго пакет доходит до адреса назначения и, соответственно, поможет измерить задержку.
Работает ping предельно просто:
Темная сторона ICMP
Так же, раньше была популярна атака Ping of Death. Если кратко, ее суть заключалась в следующем: злоумышленник намеренно отправляет пакет больше максимального размера. Такой пакет фрагментируется на сети на несколько частей, прилетает в буфер устройства и попадает в очередь на сборка пакета “воедино». Переполнение этой очереди приводило к подвисанию хоста и полному отказу в работе.
Что же, теперь вы знаете, что такое ICMP, почему и как он используется в утилитах ping и трассировке, а так же, какие виды атак можно выполнить с помощью ICMP.
Keep calm and Merion!
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Ping-flooding атака с использованием WinPcap
ICMP протокол
Протокол ICMP является одним из компонентов стека TCP/IP (Transmission Control Protocol/Internet Protocol — протокол управления передачей/протокол сети Internet), который компенсирует неспособность протокола IP гарантированно доставлять данные. Вместе с тем протокол ICMP не устраняет ненадежность передачи данных протоколом IP. Он лишь уведомляет отправителя данных о том, что при их доставке возникли проблемы.
На рисунке показано место протокола ICMP в модели TCP/IP.
Протокол ICMP является механизмом отправки сообщений об ошибках для протокола IP.
Если при доставке дейтаграммы происходит ошибка, протокол ICMP сообщает об этом отправителю дейтаграммы. Например, предположим, что PC1, показанный на следующем рисунке, посылает дейтаграмму PC4. Если соответствующий интерфейс маршрутизатора Вorder выходит из строя, этот маршрутизатор использует протокол ICMP для отправки PC1 сообщения о том, что доставка дейтаграммы оказалась невозможной. Протокол ICMP не устраняет возникшую в сети проблему.
Сообщения протокола ICMP доставляются с использованием протокола IP.
ICMP-сообщения инкапсулируются в дейтаграммы, точно так же, как и обычные данные, доставляемые по протоколу IP. В таблице показана инкапсуляция ICMP-пакета в поле данных IP-дейтаграммы. Заголовок фрейма может формироваться по протоколу локальной сети, такому, как Ethernet, или по протоколу распределенной сети, такому, например, как HDLC.
Заголовок фрейма Заголовок IP-дейтаграммы Заголовок протокола ICMP Данные протокола ICMP
Заголовок фрейма Заголовок IP-дейтаграммы Поле данных IP-дейтаграммы
Заголовок фрейма Поле данных IP-дейтаграммы
Заголовок фрейма Поле данных фрейма
Когда данные поступают на сетевой уровень, они инкапсулируются в дейтаграмму. После этого дейтаграмма и инкапсулированные в ней данные вновь инкапсулируются во фрейм на канальном уровне. Сообщения протокола ICMP содержат в заголовках свою собственную информацию. Однако эта информация вместе с данными протокола ICMP инкапсулируется в дейтаграмму и передается таким же образом, что и все остальные данные. Поэтому сообщения об ошибках также подвержены риску быть утерянными при передаче. Таким образом, может возникнуть ситуация, в которой сами сообщения об ошибках могут создать новые ошибки, что лишь усложнит ситуацию с затором в уже работающей со сбоями сети. По этой причине ошибки, созданные сообщениями ICMP, не генерируют свои собственные ICMP-сообщения. Следовательно, возможен случай, когда при доставке дейтаграммы происходит ошибка, но о ней не сообщается отправителю данных.
Бодание с WinpCap и отправка ping’ов
Все знают команду ping, которая предназначена для отправки эхо-запроса и получения эхо-ответа. Мы же решили, что системного ping’a нам мало и попытались реализовать свою программу ping.
Инструментом для реализации был компилятор С++ и библиотечка WinPcap. WinPcap — Низкоуровневая библиотека для взаимодействия с драйверами сетевых интерфейсов.
И так начинаем сборку ICMP-пакета.
Формат ICMP-пакета успешно был взят с Wiki.
| Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0—3 | Тип | Код | Контрольная сумма | |||||||||||||||||||||||||||||
| … | Данные (формат зависит от значений полей «Код» и «Тип») | |||||||||||||||||||||||||||||||
Результаты посмотрим на следующем рисунке.
Видим запрос и ответ. Все ОК.
А что, если поставить левый MAC-адрес отправителя?
А что, если поставить левый IP-адрес отправителя?
А что, если MAC = FF-FF-FF-FF-FF-FF?
Можно пойти на Wiki и увидеть следующее:
ICMP-пакеты никогда не генерируются в ответ на IP-пакеты с широковещательным или групповым адресом, чтобы не вызывать перегрузку в сети (так называемый «широковещательный шторм»).
Попробуем нарушить это правило. С машины с IP 192.168.1.2 будем отправлять ping на 192.168.1.3, при этом IP отправителя будет равен 192.168.1.1, а MAC отправителя FF-FF-FF-FF-FF-FF.
Оказалось, что мы заставили 192.168.1.3 отвечать 192.168.1.1, при том, что последний этого не хотел. Самое интересное, то, что это был широковещательный ping и он прошел!
Смотрим что на других машинах.
На других машинках мы ловим широковещательные запросы.
А раз так, то есть повод написать в программе while(1) и наслаждаться DOS-атакой.
Icmp протокол что это ping
ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений). ICMP является протоколом контрольных сообщений Структура межсетевого протокола IPv4. Протокол ICMP используется устройствами сети для отправки управляющих сообщений и сообщений об ошибках на компьютеры и серверы. Существует несколько областей применения протокола ICMP, например, объявление об ошибках в сети, объявление о перегрузке сети и устранение неполадок.
Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Мало того, при большой загруженности сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, предусмотрели, что в случае потери пакетов IP, которые сами «несут» сообщения ICMP об ошибках, новые сообщения ICMP об ошибке рождаться не будут.
ICMP только сообщает о возникших ошибках отправителю пакета; отправитель сам должен связать ошибки с конкретными прикладными программами и предпринять действия по исправлению ошибок.
Почему ограничивают протокол ICMP взаимодействием только с отправителем? Потому что IP- пакет содержит поля, которые определяют только отправителя и получателя; он не содержит полного описания своего пути через сеть (кроме необычных случаев, о которых мы скажем позже).
Если маршрутизатор обнаруживает ошибку, он просто не может узнать, какие промежуточные машины обрабатывали этот пакет, и поэтому не может сообщить им об ошибке. Вместо простого удаления пакета этот маршрутизатор использует протокол ICMP, чтобы сообщить отправителю о возникшей проблеме, надеясь на то, что администратор сети затем локализует и исправит ошибку.
Команда PING это, пожалуй, самая используемая сетевая утилита командной строки. PING присутствует во всех версиях всех операционных систем с поддержкой сети и является простым и удобным средством опроса узла по имени или его IP-адресу.
Формат командной строки:
ping [-t] [-a] [-n число] [-l размер] [-f] [-i TTL] [-v TOS] [-r число] [-s число] [[-j списокУзлов] | [-k списокУзлов]] [-w таймаут] конечноеИмя
Обобщенная схема соединения компьютера (планшета, ноутбука домашней сети) с удаленным конечным узлом можно представить следующим образом:
Команда PING можно использовать для диагностики отдельных узлов:
В результате выполнения данной команды отображается и трассировка маршрута:
Статистика Ping для 87.250.251.11:
Пакетов: отправлено = 1, получено = 1, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 36мсек, Максимальное = 36 мсек, Среднее = 36 мсек
В данном примере, между отправителе и получателем пакетов выстраивается цепочка из 9 маршрутизаторов. Нужно учитывать тот факт, что в версии утилиты ping.exe для Windows, число переходов может принимать значение от 1 до 9. В случаях, когда этого значения недостаточно, используется команда tracert
Отсутствие эхо-ответа не всегда является признаком неисправности, поскольку иногда по соображениям безопасности, некоторые узлы настраиваются на игнорирование эхо-запросов, посылаемых PING. Примером может служить узел microsoft.com и некоторые маршрутизаторы в сетях небольших провайдеров.
Использование PING в командных файлах.
Ответ на такую команду может отличаться от конкретной версии утилиты, и может быть приблизительно таким
При проверке связи не удалось обнаружить узел 456.0.0.1. Проверьте имя узла и повторите попытку.
Ответ на ping доступного узла:
Обмен пакетами с yandex.ru [87.250.250.11] по 32 байт:
Ответ от 87.250.250.11: число байт=32 время=10мс TTL=55
В более простом варианте можно использовать команды:
ICMP: Протокол межсетевых управляющих сообщений
ICMP предназначен для отправки контрольных и тестовых сообщений по IP-сетям.
В отличие от протоколов транспортного уровня TCP (Протокол управления передачей) и UDP (User Datagram Protocol), которые работают поверх IP, ICMP существует рядом с IP.
Возможность понимать ICMP является требованием для любого IP-совместимого сетевого устройства. Однако многие устройства безопасности, такие как брандмауэры, блокируют или отключают все или часть функций ICMP для целей безопасности.
Типы сообщений ICMP
ICMP работает, отправляя и получая ограниченное количество типов сообщений. Типы сообщений ICMP определены в IAMA ICMP Type Numbers.
Наиболее распространенными типами сообщений ICMP являются:
| Type | Name |
|---|---|
| 0 | Эхо-ответ |
| 3 | Адресат недоступен |
| 4 | Сдерживание источника |
| 5 | Перенаправление |
| 6 | Альтернативный адрес узла |
| 8 | Эхо-запрос |
| 9 | Объявление маршрутизатора |
| 10 | Запрос маршрутизатора |
| 11 | Время жизни дейтаграммы истекло |
| 12 | Неверный параметр |
| 13 | Запрос метки времени |
| 14 | Ответ с меткой времени |
| 15 | Информационный запрос |
| 16 | Информационный ответ |
| 17 | Запрос адресной маски |
| 18 | Отклик на запрос адресной маски |
| 30 | Трассировка маршрута |
ICMP Echo Request и Echo Reply
Двумя наиболее важными сообщениями ICMP являются Echo Request (8) и Echo Reply (0).
Echo Request и Echo Reply используются командой `ping` для проверки сетевого подключения.
Здесь мы используем команду `ping` для отправки трех 64-байтных сообщений ICMP Echo Request на www.freebsd.org и получения в ответ трех сообщений ответа Echo:
Этот вывод говорит о том, что сетевое подключение к www.freebsd.org работает. Он также сообщает нам время, которое каждый пакет принял для возврата.
`ping` — чрезвычайно полезный инструмент для устранения неполадок в сети.





