Tcp туннель что это
Туннелирование (компьютерные сети)
Суть туннелирования состоит в том, чтобы «упаковать» передаваемую порцию данных, вместе со служебными полями, в новый «конверт» для обеспечения конфиденциальности и целостности всей передаваемой порции, включая служебные поля. Туннелирование может применяться на сетевом и на прикладном уровнях. Комбинация туннелирования и шифрования позволяет реализовать закрытые виртуальные частные сети. Туннелирование обычно применяется для согласования транспортных протоколов либо для создания защищённого соединения между узлами сети.
Содержание
Типы протоколов
В процессе инкапсуляции (туннелирования) принимают участие следующие типы протоколов:
Протокол транзитной сети является несущим, а протокол объединяемых сетей — транспортируемым. Пакеты транспортируемого протокола помещаются в поле данных пакетов несущего протокола с помощью протокола инкапсуляции. Пакеты-«пассажиры» не обрабатываются при транспортировке их по транзитной сети никаким образом. Инкапсуляцию выполняет пограничное устройство (маршрутизатор или шлюз), которое находится на границе между исходной и транзитной сетями. Извлечение пакетов транспортируемого протокола из несущих пакетов выполняет второе пограничное устройство, расположенное на границе между транзитной сетью и сетью назначения. Пограничные устройства указывают в несущих пакетах свои адреса, а не адреса узлов в сети назначения.
Согласование транспортных протоколов
Туннель может быть использован, когда две сети с одной транспортной технологией необходимо соединить через сеть, использующую другую транспортную технологию. При этом пограничные маршрутизаторы, которые подключают объединяемые сети к транзитной, упаковывают пакеты транспортного протокола объединяемых сетей в пакеты транспортного протокола транзитной сети. Второй пограничный маршрутизатор выполняет обратную операцию.
Обычно туннелирование приводит к более простым и быстрым решениям по сравнению с трансляцией, так как решает более частную задачу, не обеспечивая взаимодействия с узлами транзитной сети.
Основные компоненты туннеля
Основными компонентами туннеля являются:
Инициатор туннеля встраивает (инкапсулирует) пакеты в новый пакет, содержащий наряду с исходными данными новый заголовок с информацией об отправителе и получателе. Несмотря на то, что все передаваемые по туннелю пакеты являются пакетами IP, инкапсулируемые пакеты могут принадлежать к протоколу любого типа, включая пакеты немаршрутизируемых протоколов. Маршрут между инициатором и терминатором туннеля определяет обычная маршрутизируемая сеть IP, которая может быть и сетью, отличной от Internet. Терминатор туннеля выполняет процесс, который является обратным инкапсуляции — он удаляет новые заголовки и направляет каждый исходный пакет в локальный стек протоколов или адресату в локальной сети. Инкапсуляция сама по себе никак не влияет на защищенность пакетов сообщений, передаваемых по туннелю VPN. Но инкапсуляция даёт возможность полной криптографической защиты инкапсулируемых пакетов. Конфиденциальность инкапсулируемых пакетов обеспечивается путем их криптографического закрытия, т. е. зашифровывания, а целостность и подлинность — путем формирования цифровой подписи. Так как существует множество методов криптозащиты данных, необходимо чтобы инициатор и терминатор туннеля использовали одни и те же методы и могли согласовывать друг с другом эту информацию. Более того, для возможности расшифровывания данных и проверки цифровой подписи при приеме инициатор и терминатор туннеля должны поддерживать функции безопасного обмена ключами. Чтобы туннели VPN создавались только между уполномоченными пользователями, конечные стороны взаимодействия требуется аутентифицировать.
Тоннелирование
Cодержание
Функциональность
В процессе туннелирования данные будут разбиваться на более мелкие фрагменты, известные как пакеты, которые будут перемещаться по «туннелю» для транспортировки к конечному пункту назначения. Когда эти пакеты проходят через туннель, они шифруются и инкапсулируются. Частные сетевые данные и сопутствующий им информационный протокол также инкапсулируются в передающие устройства сети общего пользования для отправки. В принимающей стороне будет происходить процесс декапсуляции и дешифровки. Кроме того, туннель рассматривается в качестве логического пути или соединения, которое будет инкапсулировать пакеты, проходящие через транзитную внутреннюю сеть. Этот протокол туннелирования будет шифровать исходный кадр, чтобы содержимое не было интерпретировано за пределами маршрута. Для того чтобы процесс действительно работал, данные будут отправляться, как только туннель будет уже установлен, и клиенты или сервер будут использовать один и тот же туннель для передачи и получения данных через внутреннюю сеть. Передача данных будет зависеть от протоколов туннелирования, которые используются для передачи.
Тоннелеукладчики
VPN туннели могут быть созданы на следующих уровнях открытого системного взаимодействия или эталонной модели OSI:
VPN протоколы, которые работают на этом уровне, являются точкой, указывающей на протокол туннелирования и протокол туннелирования второго уровня.
IPSec может работать как VPN протокол на сетевом уровне эталонной модели OSI. [3]
Протоколы
Протоколы проходки тоннелей
Ниже приведены различные протоколы, разрешающие прокладку тоннелей:
Протокол туннелирования точка-точка (PPTP)
Это обеспечивает безопасность данных, даже если они передаются по сетям общего пользования. Авторизованные пользователи могут получить доступ к частной сети, которая называется виртуальной частной сетью или VPN, предоставляемой провайдером интернет-услуг или провайдером интернет-услуг. Это частная сеть в виртуальном смысле, потому что она создана в туннельной среде. Данный протокол позволяет корпорациям расширять собственную корпоративную сеть по частному каналу через общедоступный интернет.
Протокол проходки тоннелей второго уровня (L2TP)
Этот протокол включает в себя комбинацию использования PPTP и переадресации второго уровня. Это используется для поддержки виртуальных частных сетей (VPN) в рамках предоставления услуг по протоколам Интернет-услуг или провайдерам интернет-услуг. Оно не обеспечивает шифрование и конфиденциальность только само по себе. Но для обеспечения конфиденциальности он использует протокол шифрования, проходящий в туннеле. Он использует сетевые соединения с пакетной коммутацией, что позволяет размещать конечные точки на разных машинах. Это означает, что соединение может быть прервано на концентраторе локальной цепи и исключает, помимо прочих преимуществ, возможные расходы на междугороднее соединение. Таким образом, с другой точки зрения, с точки зрения проведения операции никакой разницы нет. [4]
Таким образом, туннелирование действительно полезно и полезно в корпоративной среде, а также предоставляет функции безопасности, такие как опции шифрования. [2:1] В двух словах, туннели рассматриваются как механизм, используемый для отправки неподдерживаемых протоколов по различным и разнообразным сетям. Туннелирование данных, VPN или других, увеличит размер пакета, что приведет к меньшему количеству передаваемых данных на пакет. Эти данные туннелирования через SSH обычно представляют собой VPN для каждого приложения, но в последней версии открытой SSH будет реализована полномасштабная бесперебойная VPN.
Ниже перечислены два типа проходки тоннелей:
Добровольное туннелирование
В этом типе туннелирования клиент начнет процесс инициализации соединения с VPN сервером. Существует требование для того, чтобы процесс работал, и это требование представляет собой существующее соединение между сервером и клиентом. Это соединение, которое VPN клиент будет использовать для создания туннельного соединения с VPN сервером. Для добровольного туннелирования компьютер пользователя будет рассматриваться в качестве конечной точки туннеля и будет выступать в качестве клиента туннеля. Клиент здесь или пользователь выдаст запрос конфигурации и создаст добровольный туннель. Им потребуется коммутируемое соединение или подключение к локальной сети (LAN). В этом типе туннелирования требуется, чтобы компьютер клиента имел соответствующее программное обеспечение и чтобы протоколы были предварительно установлены, чтобы соединение стало возможным.
Обязательное прокладка тоннелей
В этом типе туннелирования будет создано соединение между двумя VPN серверами и двумя устройствами VPN доступа или VPN маршрутизаторами. При этом сервер удаленного доступа будет настраивать и настраивать VPN с помощью устройства, которое называется сервером коммутируемого доступа. Это будет действовать как клиент туннеля. При использовании принудительного туннеля компьютер пользователя не считается конечной точкой туннеля.
Туннель (компьютерная сеть)
Доступ в Интернет через коммутируемую сеть является примером туннеля, который соединяет сети (частную сеть и Интернет) через соседнюю сеть, при этом соседняя сеть (коммутируемая сеть) не должна быть совместима с этими сетями. Кроме того, туннелирование используется в компьютерной сети для передачи данных из одной сетевой службы, встроенной в протокол другой сетевой службы. Протокол связи, используемый другой службой, используется как оболочка, которая помогает замаскировать фактическое содержимое. Таким образом, небезопасные сетевые протоколы, встроенные в безопасный и зашифрованный сетевой протокол, могут транспортироваться с защитой от касания и взлома (например, туннель SSH ). Туннели также могут использоваться для связывания абонентов в сети из их исходной сети с другой сетью (например, туннель VPN ). Туннели также подходят для обхода правил брандмауэра и других мер безопасности (например, HTTP- туннеля).
Оглавление
Туннелирование в коммутируемой сети общего пользования
Коммутируемая сеть общего пользования содержит инфраструктуру. Подключенное к нему устройство должно поддерживать эту инфраструктуру (говорить по ее протоколу). В противном случае устройство не сможет связаться с другой стороной.
Помимо коммутируемой сети общего пользования, которая изначально была разработана для телефонии, существуют и другие сети. Проще говоря, можно представить себе другую сеть, которая находится где-то, например, в Германии, и соединяет между собой несколько компьютеров. Компьютеры предоставляют услуги, к которым можно получить доступ через их сеть. Теперь провайдер мог прокладывать свои собственные линии прямо до дома своих клиентов, чтобы обеспечить там соединение для новой сети. Однако этот процесс был бы очень сложным и дорогостоящим, и в доме было бы большое количество распределительных коробок, которые хотели бы подключаться к нескольким сетям аналогичным образом.
Туннелирование в компьютерной сети
Соответствующие протоколы
Обойти брандмауэр с туннелем
пример
Теперь вы можете изменить программу FTP-клиента и серверную службу вашего собственного Интернет-сервера, чтобы они также обменивались данными через порт 80 и, таким образом, обходили правило фильтрации брандмауэра.
Брандмауэр, способный анализировать пакеты, также может проверять структуру данных и блокировать все пакеты, которые не соответствуют протоколу утвержденной службы. Теоретически уловка здесь уже не сработает. Однако на практике такой контроль нетривиален. В конце концов, каждый протокол должен передавать какие-то данные. Так что это возможно для. Б. встраивать данные службы FTP в протокол службы HTTP без нарушения стандарта протокола. Данные нужно только соответствующим образом преобразовать.
Туннель выполняет такое преобразование: он отправляет данные заблокированной службы, встроенные в данные выпущенной службы, через брандмауэр в свою целевую систему. Для этого на ПК и в целевой системе должно быть установлено программное обеспечение туннеля, которое преобразует данные, с одной стороны, и преобразует их обратно в исходный формат, с другой.
Иногда работодатели запрещают использование служб, отличных от HTTP, и обеспечивают это с помощью политики использования и брандмауэра. Если брандмауэр в корпоративных сетях обходится при таких условиях, следует отметить, что это может рассматриваться как преднамеренное нарушение условий использования, которое может быть прекращено без уведомления в качестве сотрудника.
Используйте принцип туннеля для зашифрованного соединения
Туннели в основном используются для установления защищенных от прикосновения соединений в незащищенных компьютерных сетях. Программное обеспечение туннеля гарантирует, что сетевые пакеты встроены в зашифрованный протокол, чтобы их можно было расшифровать и распаковать на другой стороне. Это означает, что зашифрованная передача данных также реализована для служб, которые обычно не имеют собственного шифрования. Целые сети также могут быть соединены друг с другом с защитой от касания.
Продвинутое туннелирование: атакуем внутренние узлы корпоративной сети
В этой статье будут рассмотрены сценарии атаки защищенных сегментов корпоративной сети с помощью pivoting-техник, metasploit framework и proxychains.
Многослойная сетевая архитектура создается для защиты важных корпоративных сервисов согласно концепции Defense-in-Depth, которая занимает важное место в сфере информационной безопасности. Другими словами, критичные для компании системы не могут располагаться в той же сети, что и все остальные. В данной статье я покажу на примерах, как атакующий может получить доступ к «скрытой» сети, не имея к ней прямого доступа на первых этапах тестирования на проникновение, используя методы pivoting’а или продвинутого туннелирования.
Маршрутизация
Процесс, во время которого устройства в различных сетях определяют, как им связываться друг с другом называется маршрутизацией. Маршрутизация обычно происходит на устройствах, называемых маршрутизаторами или роутерами. Они перенаправляют сетевые пакеты между узлами сети, используя таблицу маршрутизации, пока те не достигнут конечной точки назначения. Вообще говоря, маршрутизацию могут выполнять не только роутеры, но и обычные операционные системы, установленные на рабочих компьютерах.
Согласно примеру на схеме выше, для успешной маршрутизации между подсетями 192.168.1.0/24 и 192.168.10.0/24, роутер должен иметь соответствующую запись в своей таблице маршрутизации. Эта запись говорит о том, как сетевой пакет должен попадать из сети 192.168.1.0/24 в сеть 192.168.10.0/24 и наоборот.
Путь сетевого пакета можно представить так (начинается путь с узла, отправляющего пакет):
1. Может ли целевой IP-адрес находиться в моей подсети?
— Если да, то доставить пакет по адресу назначения.
— Если нет, то отправить пакет на шлюз.
2. Когда маршрутизатор получает пакет, он проверяет свою таблицу маршрутизации.
3. Есть ли у меня запись об узле или подсети, которой предназначен IP-пакет?
— Если да, то отправить пакет в сеть назначения.
— Если нет, то отправить пакет на следующий шлюз.
4. Тот же процесс повторяется на всех других роутерах.
5. В итоге пакет попадает на маршрутизатор, отвечающий за выход в Интернет из корпоративной сети, и пакет отправляется в Интернет.
Pivoting
Pivoting, это техника, с помощью которой организовывается доступ к тем сетям, к которым мы не имеем доступ при обычных обстоятельствах и полученный с использованием скомпрометированных компьютеров. Сетевая изоляция будет бесполезна в случае, если мы скомпрометируем узел сети, имеющий доступ во все изолированные подсети. Таким образом, атакующий может использовать возможности маршрутизации на скомпрометированной машине для доступа к внутренним корпоративным ресурсам. Каждый запрос, который будет сделан к внутренней сети, будет проходить через скомпрометированный хост, обычно называемый pivot. Другими словами мы получаем туннель во внутреннюю сеть для наших пакетов.
Как видно на схеме выше, устройство в центре имеет два сетевых интерфейса, чтобы получать доступ в обе сети, 192.168.1.0/24 и 192.168.10.0/24. При нормальной работе между этими двумя сетями маршрут пролегает только через маршрутизатор с сетевыми интерфейсами 192.168.1.1 и 192.168.10.1. Согласно архитектуре, авторизованный пользователь устройства в центре схемы должен иметь доступ к некоторым сервисам в DMZ.
Компрометация первого узла проброса (pivot) и проброс портов
Согласно сценарию атаки, мы получили шелл метерпретера на машине RD, которая находится в DMZ и, как выяснилось, имеет два сетевых интерфейса.
Как мы видим — роутер на схеме не имеет маршрута между нужными злоумышленнику сетями.
Далее, согласно сценарию, атакующий хочет получить доступ к подсети за интерфейсом 7.7.7.0/24. Для этого ему нужно задать правило маршрутизации для хоста RD, т.е. превратить скомпрометированный хост в pivot.
Это очень просто сделать средствами полезной нагрузки (payload) метерпретер. Следующая команда может быть использована для создания туннеля через существующую сессию метерпретера.
Согласно заданному правилу, пока сессия метерпретера с ID 2 запущена, другие модули Metasploit Framework имеют доступ к сети 7.7.7.0/24. Другими словами, после выполнения команд выше, IP адрес хоста JC будет определен, если мы воспользуемся таким модулем, как arp_scanner. JC – это хост, работающий во внутренней сети и имеющий IP-адрес 7.7.7.20.
Мы узнали IP-адреса доступных хостов в сети 7.7.7.0/24.
Пробрасываем nmap через туннель
Чтобы пробросить nmap, маршрут должен быть сконфигурирован в metasploit, а сама конфигурация должна быть доступна через socks4 прокси. Для этого используем модуль socks4a в metasploit:
Теперь, используя утилиту ProxyChains, любое TCP соединение может быть отправлено к цели назначения через TOR, SOCKS4, SOCKS5, HTTP/HTTPS прокси. Несколько прокси-серверов могут быть построены в цепочку. В дополнение к анонимности, при использовании такой схемы приложения могут получать доступ к обнаруженным внутренним сетям.
Прежде чем использовать ProxyChains, нужно произвести небольшую настройку в файле /etc/proxychains.conf. Для этого нужно отредактировать последнюю строку в файле.
Теперь можно выполнить сканирование утилитой nmap через созданный нами socks4 прокси-сервер:
На основании результатов сканирования, мы можем сказать, что нам доступны SSH и HTTP сервисы на хосте 7.7.7.20. Прежде чем двигаться дальше, мы рассмотрим еще одну технику, часто применяемую во время pivoting-а, технику проброса портов или port forwarding.
Проброс портов
Проброс портов – это один из базовых шагов во время туннелирования. Данная техника используется, когда сервис внутри обнаруженной сети недоступен напрямую. Это происходит потому что наша маршрутизация однонаправленная. Мы знаем, как получить доступ к внутреннему сервису, но сервис не имеет соответствующего маршрута к машине атакующего.
Поэтому мы перенаправим порт с машины атакующего на порт целевого сервиса через сессию метерпретера. Этот проброс порта будет работать, пока существует процесс метерпретера на скомпрометированной машине (на pivot-е).
Стоит заметить, что туннель, который был создан при помощи autoroute существует только к контексте фреймворка metasploit и доступен для других модулей. Но если мы хотим использовать туннель другими утилитами, выходящими за пределы фреймворка, нам нужны инструменты вроде proxychains и техники, такие как port forwarding.
Проброс порта может быть выполнен при помощи модуля portfwd, который является одним из post-модулей фреймворка Metasploit.
Когда мы будем отправлять запрос на подключение к нашему локальному порту 2323, вводя в браузере соответствующий URL, наш запрос будет перенаправлен на порт 80 узла 7.7.7.20 через Metasploit Framework. Ранее при помощи nmap и proxychains мы обнаружили, что во внутренней сети есть веб-сервис, работающий на TCP порте 80. Чтобы получить к нему доступ всеми доступными утилитами Kali Linux, мы должны пробросить наш локальный порт 2323 на удаленный порт 80, узла 7.7.7.20.
Теперь попробуем получить доступ к веб-сервису Eash File Sharing Web Server.
SSH-брутфорс через pivoting
Как вы помните, мы обнаружили так же SSH сервис на машине 7.7.7.20. Мы можем провести атаку на перебор учетных данных (брутфорс) через наш туннель. Для этого будем использовать вспомогательный модуль SSH_enumusers:
В результате выполнения команды мы обнаружили множество пользователей.
В дополнении к вспомогательным модулям Metasploit Framework, для атаки могут быть использованы такие инструменты как Hydra. Мы запустим брутфорс при помощи Hydra через ProxyChains. Весь траффик будет проходить через туннель, работающий на скомпрометированном узле RD.
Далее подключиться по SSH можно через прокси-сервер с логином admin и паролем 123456, полученными при помощи Hydra.
Получение доступа ко второму узлу pivot
Во время сканирования nmap сети 7.7.7.0/24 были обнаружены хосты, уязвимые к MS08-067 и BoF уязвимость в приложении Easy File Share. Доступ ко второму узлу pivot может быть получен с использованием одной из уязвимостей. Другой опцией будет являться продолжение прокладывания туннеля при помощи техники SSH Port Forwarding, но здесь мы будем использовать MS08-067 и BoF.
Уязвимость MS08-067 и Bind TCP
Metasploit Framework имеет модуль для эксплуатации уязвимости exploit/windows/smb/ms08_067_netapi.
Важно заметить, что мы используем пейлоад bind_tcp, т.к. у нас не определены маршруты в обе стороны и целевая система не сможет выполнить обратное подключение на машину атакующего, т.к. не имеет соответствующего маршрута. Таким образом, целевая машина будет просто ждать подключения на порт, который мы укажем в настройках пейлоада bind_tcp. Ниже на схеме указана последовательность шагов при использовании прямого и обратного подключений.
Выберем модуль для эксплуатации MS08-067, пейлоад bind_tcp и скомпрометируем вторую машину:
Уязвимость Easy File Share BoF
Также можно воспользоваться другой найденной уязвимостью в приложении Easy File Share. Компрометация машины может быть произведена следующим образом:
Ниже схематично представлена атака:
Так как мы получили доступ на машину 7.7.7.20, мы можем продолжить сбор информации. Как оказалось, машина JC так же имеет два сетевых интерфейса. Это означает, что мы нашли вторую сеть, к которой не имеем прямого доступа (8.8.8.0/24).
Двойной удар pivoting
Мы обнаружили сеть 8.8.8.0/24. У нас уже есть маршрут между 172.16.0.0/24 и 7.7.7.0/24 через скомпрометированную машину RD. В текущей конфигурации пакеты, приходящие из сети 172.16.0.20 на хост JC (вторая скомпрометированная машина) сперва идут на хост RD (первая скомпрометированная машина) и RD уже транслирует их на машину JC. Если атакующий (172.16.0.20) теперь хочет получить доступ к новой сети 8.8.8.0/24, должно быть определено новое правило маршрутизации. Чтобы использовать инструменты за пределами Metasploit Framework мы должны запустить новый socks4 прокси-сервер, чтобы соединить два pivot-узла, после чего задать новый прокси сервер в настройках proxychains.
Сетевые пакеты с адресом назначения 8.8.8.9, отправленные с машины атакующего (172.16.0.20) должны пройти через две скомпрометированные машины:
Всемогущий ProxyChains
Инструмент ProxyChains создает туннель через цепочку прокси-серверов и передает по нему пакет до адреса назначения. Последним шагом будет создание socks4 прокси-сервера, слушающего порт 1081 для сети 8.8.8.0/24.
Остается адаптировать настройки proxychains в файле /etc/proxychains.conf. Опция Dynamic Chain используется, чтобы пакеты шли строго по цепочке прокси-серверов, указанному в файле конфигурации proxychains, в порядке сверху вниз.
Теперь при помощи proxychains мы можем просканировать хост 8.8.8.9 через наш туннель:
Как видите, пакеты проходят через два прокси-сервера и, в конечном счете, достигают цели.
В результате сканирования можно обнаружить уязвимую версию vsftpd на хосте 8.8.8.9. Выполним следующие шаги, чтобы скомпрометировать цель:
Меры противодействия
Незащищенные хосты, имеющие два сетевых интерфейса, среди которых один доступен из DMZ, должны быть удалены из сетевой инфраструктуры. Хосты, находящиеся в DMZ должны быть доступны только из DMZ.
Заключение
Атакующий обнаружил две скрытые сети в результате следующих шагов:
Таким образом, атакующий, имея доступ лишь к одной сети, через серию атак, сумел скомпрометировать хост, находящийся далеко в глубине корпоративной сети за защищенным сетевым периметром.