ICMP-туннелирование или Ping Power
ICMP-туннелирование — прекрасный способ незаметной отправки либо получения данных, а также удобный и относительно простой вариант обхода ряда ограничений. Поняв суть ICMP-туннелирования, вы сможете создавать много других решений, например, DNS- и SSH-туннелирование.
Internet Control Message Protocol (ICMP) — это вспомогательный протокол стека TCP/IP, используемый сетевыми устройствами в целях отправки информации о работе и сообщений об ошибках. Наиболее известное и популярное ICMP-сообщение — ping.
Отправка ping осуществляется от одного узла в сети к другому. Сам по себе он состоит из заголовков второго и третьего уровней (речь идет о MAC и IP-заголовках, определенных OSI-моделью), а также специального ICMP-пакета. На практике отправляющий узел определяет параметры адресата и, если сообщение до этого адресата дойдет, узел отправит его обратно:
Вот как выглядит IP-датаграмма ping-пакета:
Идем дальше. ICMP-туннелирование мы можем выполнить, поместив в данные полезной нагрузки лишь то, что желаем отправить. Как правило, по дефолту полезная нагрузка содержит что-то типа ASCII-строки «abcdefghijklmnopqrstuvwabcdefghi»:
При этом инкапсуляция HTTP-пакета в полезную нагрузку нередко применяется в целях обхода платного Wi-Fi. Возможно такое и посредством прокси-сервера, ожидающего ping-сообщения и отсылающего эти сообщения по мере надобности (к примеру, в HTTP-форме).
Что же, давайте рассмотрим пример использования ICMP-туннеля:
- Посредством нужных инструментов типа ptunnel выполняем инкапсуляцию HTTP-пакета, который мы желаем отправить в Google в составе ping-пакета, то есть внутри полезной нагрузки. Далее выполняем его отправку по IP прокси-сервера.
- Как известно, роутеры в аэропорту нередко позволяют отправлять ICMP-трафик за пределы сети, следовательно, роутер без проблем доставит ping-сообщение на прокси-сервер.
- В итоге прокси-сервер получит ping-пакет и разобьет его на 2 части:
а) ICMP-заголовки; b) полезную нагрузку с исходным HTTP-сообщением.
При этом важно понимать, что IP-адрес отправителя HTTP-пакета (адрес, который прокси отправляет Google), должен быть одновременно и IP-адресом самого прокси-сервера, а не вашего компьютера либо роутера аэропорта, ведь Google должен ответить как раз прокси, а не вам.
Источник: https://infosecwriteups.com/ping-power-icmp-tunnel-31e2abb2aaea.