Что такое туннели в компьютерных сетях

Туннелирование (компьютерные сети)

Туннелирование (от англ. tunnelling — «проложение туннеля») в компьютерных сетях — процесс, в ходе которого создается защищенное логическое соединение между двумя конечными точками посредством инкапсуляции различных протоколов. Туннелирование представляет собой метод построения сетей, при котором один сетевой протокол инкапсулируется в другой. От обычных многоуровневых сетевых моделей (таких как OSI или TCP/IP) туннелирование отличается тем, что инкапсулируемый протокол относится к тому же или более низкому уровню, чем используемый в качестве тоннеля.

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

Типы протоколов

В процессе инкапсуляции (туннелирования) принимают участие следующие типы протоколов:

Протокол транзитной сети является несущим, а протокол объединяемых сетей — транспортируемым. Пакеты транспортируемого протокола помещаются в поле данных пакетов несущего протокола с помощью протокола инкапсуляции. Пакеты-«пассажиры» не обрабатываются при транспортировке их по транзитной сети никаким образом. Инкапсуляцию выполняет пограничное устройство (маршрутизатор или шлюз), которое находится на границе между исходной и транзитной сетями. Извлечение пакетов транспортируемого протокола из несущих пакетов выполняет второе пограничное устройство, расположенное на границе между транзитной сетью и сетью назначения. Пограничные устройства указывают в несущих пакетах свои адреса, а не адреса узлов в сети назначения.

Согласование транспортных протоколов

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

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

Основные компоненты туннеля

Основными компонентами туннеля являются:

  • инициатор туннеля;
  • маршрутизируемая сеть;
  • туннельный коммутатор;
  • один или несколько туннельных терминаторов.

Инициатор туннеля встраивает (инкапсулирует) пакеты в новый пакет, содержащий наряду с исходными данными новый заголовок с информацией об отправителе и получателе. Несмотря на то, что все передаваемые по туннелю пакеты являются пакетами IP, инкапсулируемые пакеты могут принадлежать к протоколу любого типа, включая пакеты немаршрутизируемых протоколов. Маршрут между инициатором и терминатором туннеля определяет обычная маршрутизируемая сеть IP, которая может быть и сетью, отличной от Internet. Терминатор туннеля выполняет процесс, который является обратным инкапсуляции — он удаляет новые заголовки и направляет каждый исходный пакет в локальный стек протоколов или адресату в локальной сети. Инкапсуляция сама по себе никак не влияет на защищенность пакетов сообщений, передаваемых по туннелю VPN. Но инкапсуляция даёт возможность полной криптографической защиты инкапсулируемых пакетов. Конфиденциальность инкапсулируемых пакетов обеспечивается путем их криптографического закрытия, т. е. зашифровывания, а целостность и подлинность — путем формирования цифровой подписи. Так как существует множество методов криптозащиты данных, необходимо чтобы инициатор и терминатор туннеля использовали одни и те же методы и могли согласовывать друг с другом эту информацию. Более того, для возможности расшифровывания данных и проверки цифровой подписи при приеме инициатор и терминатор туннеля должны поддерживать функции безопасного обмена ключами. Чтобы туннели VPN создавались только между уполномоченными пользователями, конечные стороны взаимодействия требуется аутентифицировать.

Читайте также:  Основой любой глобальной компьютерной сети являются компьютерные узлы и каналы связи

Ссылки

  • Архитектура компьютерных сетей
  • Сетевые протоколы
  • Информационная безопасность

Wikimedia Foundation . 2010 .

Источник

ICMP-туннели. Что это и с чем едят?

Совсем недавно пролетала новость про новый RAT’ник (Remote Access Trojan — троян удаленного доступа) RomCom.

RomCom

Помимо прочего функционала он умеет использовать ICMP-протокол для подключения к С2-серверу (Command and Control). Кстати, несмотря на то, что ICMP-туннели — уже довольно бородатая история, они по-прежнему используются злоумышленниками для обхода средств защиты информации (СЗИ).

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

Кто такой этот ваш ICMP?

Существует такой протокол: ICMP (Internet Control Message Protocol — протокол межсетевых управляющих сообщений), который располагается на сетевом уровне. Он помогает устанавливать проблемы с сетевой передачей, например, когда IP-пакет не может достичь пункта назначения, маршрутизатор отправляет ICMP-сообщение о проблеме (недостижимом сетевом пункте назначения или превышении времени и др.) Это очень важный и необходимый инструмент для работы системных администраторов и сетевых инженеров. Обычный пользователь мог косвенно с ним сталкиваться, используя утилиту ping. Она предназначена для проверки связи (может подтвердить работоспособность сетевых соединений).

Ping использует два типа контрольных сообщений:

Что мы видим, когда Что мы видим, когда

За исключением средств проверки связи и отслеживания маршрутов пользователи редко взаимодействуют с ICMP.

ICMP — больше, чем диагностический протокол, он умеет передавать данные между двумя системами ⇒ это делает ICMP привлекательным вектором, например для туннелирования, чтобы тайно передавать команды и извлекать данные. Это возможно благодаря тому, что в RFC 792, в котором описана работа ICMP, не определено, что должно быть в поле данных, а значит часть полезной нагрузки является произвольной и не проверяется большинством межсетевых экранов. Получается, что мы можем в payload вставить ЛЮБЫЕ данные, включая backdoor-приложение.

Читайте также:  Серверная локальная компьютерная сеть это

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

Какие данные встраивают в ICMP?

В дейтаграмму ICMP могут быть встроены различные типы данных – от небольших фрагментов кода до больших инкапсулированных пакетов HTTP, TCP, SSH etc. Дейтаграмма похожа на пакет, но дейтаграммы не требуют установленного соединения или подтверждения того, что передача была получена (в отличие от TCP). Дейтаграммы ICMP включают раздел данных любого размера (см. RFC 792). Например, если злоумышленник хочет создать обратную оболочку SSH (которая позволяет удаленному злоумышленнику взаимодействовать с жертвой), злоумышленник может вставить пакет SSH в раздел данных дейтаграммы ICMP, который установит обратную оболочку. Или скомпрометированное устройство может вставить небольшие фрагменты украденных данных в дейтаграмму эхо-запроса.

SSH внутри ICMPHTTP внутри ICMPФрагмент украденных данных (имя файла)

Недостатки метода

  1. В процессе передачи данных в ICMP-туннеле может возникать задержка, поскольку ICMP-пакеты могут быть приоритетом ниже других типов трафика в сети. Это делает ICMP-туннелирование менее привлекательным, но всё ещё популярным методом обхода систем безопасности для связи с зараженными системами.
  2. Некоторым ОС требуются привилегии root или локального администратора для создания пользовательских дейтаграмм ICMP.
  3. Туннелирование ICMP через межсетевые экраны с отслеживанием состояния или маршрутизаторы преобразования сетевых адресов (NAT) также могут создавать проблемы, поскольку эти устройства фильтруют эхо-ответы ICMP, не имеющие соответствующего эхо-запроса. (Но и их обходят, используя пустые эхо-запросы ICMP с непрерывными интервалами)

В этих случаях туннелирование ICMP может быть не таким надежным.

Модель злоумышленника

Например, пользователь загрузил и запустил ВПО (вредоносное программное обеспечение) или злоумышленник сам воспользовался уязвимостью для установки ВПО на устройстве жертвы. ВПО должно установить туннель С2 изнутри сети для связи с внешним злоумышленником, а ICMP – доверенный протокол, который помогает администраторам, поэтому ICMP-сообщениям часто разрешается проходить через межсетевые экраны и сегменты сети, которые обычно блокируют входящий и исходящий вредоносный трафик.

Как детектировать?

Чтобы в сетевом трафике определять неправомерный, нужно понимать, как выглядит стандартный. Для OC семейства Windows характерен следующий набор данных (алфавит) в data:

ICMP Echo Request OS Windows

ICMP Echo Request от OS Linux

Также стоит обратить внимание на ttl (time to live): Windows — 128, Linux — 64.

Итак, какие индикаторы могут служить активностью ICMP туннеля:

  • необычно большой объем трафика ICMP между хостами;
  • размер пакета, размер поля data одного пакета ICMP может достигать 65’507 байт, однако стандартное значение mtu — 1’500 => размер data сокращается до возможных 1472 байт;
  • нестандартные или необычные дейтаграммы ICMP;
  • легитимные эхо-запросы и эхо-ответы имеют совпадающие идентификаторы и полезные данные фиксированного или стандартного размера (стандартное поведение выглядит так: когда сервер получает эхо-запрос, он просто копирует полезную нагрузку в эхо-ответ).

Можно ли полностью предотвратить ICMP-туннелирование?

Можно. Например, заблокировав в сети весь ICMP трафик. Однако ICMP помогает поддерживать исправное сетевое соединение, его блокировка приведёт к ряду проблем, оказывающих прямое влияние на работу пользователей. Поэтому следует использовать NGFW, который умеет определять и блокировать соединения с вредоносными конечными точками и доменами, позволяет настраивать блокировку исходящих эхо-запросов на внешние конечные точки, разрешает проходить ICMP-пакетам только фиксированного размера, производит анализ проходящих пакетов с последующей блокировкой, если признаки вредоносной активности были обнаружены.

Читайте также:  Уровнями сетевой модели tcp ip являются

Как определить ICMP-туннель в трафике

icmptx

Это инструмент, позволяющий пользователю с привилегиями root создавать виртуальный сетевой канал между двумя компьютерами, инкапсулирующий данные внутри ICMP-пакетов.

Отличительной чертой является то, что при установлении туннеля отправляется ICMP Echo request (Type:8) с пустым полем data и конкретным Identifier: 7537 (определяется в исходниках), который позволяет серверу однозначно определить попытку подключения клиента, а не случайный запрос.

icmptx ICMP-packetЗахардкоженная переменная

Hans

Это тулза, позволяющая пользователю с привилегиями root создавать виртуальный сетевой канал между двумя компьютерами, инкапсулирующий данные внутри ICMP-пакетов.

При рассмотрении трафика можно заметить использование hanc в начале каждого поля data в пакетах от клиента, а следующий байт отвечает за тип команды (в нашем случае это TYPE_CONNECTION_REQUEST = 0x02), задающейся в исходниках.

hans ICMP-packethans типы команд

ptunnel

Это приложение, которое позволяет туннелировать TCP-соединения с удаленным узлом, используя эхо-запросы и ответы ICMP, широко известные как ping.

В данном примере для однозначного определения клиента используется последовательность байт «d5 20 08 80», которая зашита в исходниках программы.

ptunnel ICMP-packetmagic bytes

ptunnel-ng

Это модификация ранее рассмотренного ptunnel, она переработана и обладает дополнительным функционалом. В её исходниках указаны следующие magic bytes: «de ad c0 de».

ptunnel-ng ICMP-packetmagic bytes

icmptunnel

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

Выводы

Итак, ICMP – это протокол, которым все еще пользуются злоумышленники, поэтому, как говорил классик: «Есть те, кого уже взломали, и те, кто ещё не знают, что их взломали», а значит стоит учитывать его в мониторинге и политиках. Как?

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

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

Любые вопросы по этой теме и не только кидайте в комментарии, постараюсь ответить на все!

Источник

Оцените статью
Adblock
detector