Введение

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

Технические детали

ICMP-туннелирование работает путем ввода произвольных данных в эхо-пакет, отправленный на удаленный компьютер. Удаленный компьютер отвечает тем же способом, вводя ответ в другой пакет ICMP и отправляя его обратно. Клиент выполняет всю связь с помощью пакетов запросов echo ICMP, в то время как прокси использует пакеты ответа echo. Теоретически, можно использовать прокси-пакеты запросов эхо (что значительно облегчает реализацию), но эти пакеты не обязательно пересылаются клиенту, поскольку клиент может быть за переведенным адресом (NAT). Этот двунаправленный поток данных может быть абстрагирован с помощью обычной последовательной линии. ICMP-туннелирование возможно, потому что RFC 792, который определяет структуру ICMP-пакетов, позволяет произвольную длину данных для любых ICMP-пакетов типа 0 (эхо-ответ) или 8 (эхо-сообщение).

Применение

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

Смягчение

Один из способов предотвращения этого типа туннелирования - блокирование трафика ICMP, с потерями некоторой сетевой функциональности, которую люди обычно принимают как должное (например, может потребоваться десятки секунд, чтобы определить, что одноранговый оператор не в сети, а не почти мгновенно). Другой метод смягчения этого типа атаки - разрешать только пакеты ICMP фиксированного размера через брандмауэры, которые могут препятствовать или устранять этот тип поведения. ICMP-туннели иногда используются для обхода брандмауэров, которые блокируют трафик между локальной сетью и внешним миром. Например, коммерческие услуги Wi-Fi, которые требуют от пользователя оплаты за использование, или библиотека, которая требует от пользователя сначала войти в веб-портал. Если оператор сети ошибочно предположил, что достаточно блокировать только обычные транспортные протоколы, такие как TCP и UDP, но не основные протоколы, такие как ICMP, то иногда можно использовать туннель ICMP для доступа к Интернету, несмотря на то, что он не был авторизован для доступа к сети. Шифрование и правила для каждого пользователя, которые запрещают пользователям обмениваться пакетами ICMP (и всеми другими типами пакетов, возможно, с использованием IEEE 802.1X) с внешними партнерами до авторизации решает эту проблему.