Кратко опишите основные функции masteropc tuneller

Обновлено: 03.07.2024

2 MasterOPC Tunneler. Руководство по настройке Стр. 2 ОГЛАВЛЕНИЕ MasterOPC Tunneler Введение Настройка Multi-Protocol MasterOPC на режим тоннеля Настройка серверной части тоннеля Чтение текущих данных настройка OPC DA Client Чтение архивных данных настройка OPC HDA Client Настройки OPC UA сервера Запуск в режим исполнения Настройка клиентской части тоннеля Добавление и настройка плагина OPC UA Client Добавление тегов Запуск в режим исполнения Проверка на OPC клиенте Настройка MasterSCADA как OPC UA клиента Чтение архивов Настройка MasterOPC Tunneler для работы через Интернет. 32

3 MasterOPC Tunneler. Руководство по настройке Стр. 3 1 Введение MasterOPC Tunneler предназначен для реализации сетевого обмена между OPC DA/HDA серверами и OPC DA клиентами, без специальной настройки DCOM. Суть решения в следующем на компьютере с ОРС сервером устанавливается первая часть туннеля - специализированный ОРС клиент, который опрашивает сервер и передает данные дальше по такому протоколу. На удаленном компьютере устанавливается программа, которая принимает данные по этому протоколу и выдает их через стандартный OPC DA интерфейс конечным OPC клиентам. Такая схема решает, как проблему настройки DCOM, так и проблему безопасности передачи данных. В MasterOPC Tunneler в качестве протокола связи между частями туннеля используется кроссплатформенная технология OPC UA, а сам туннель реализуется при помощи плагинов Multi-Protocol MasterOPC сервер. Для реализации туннеля необходимо использовать два MultiProtocol MasterOPC, на компьютер с целевыми OPC сервера устанавливается MultiProtocol MasterOPC с плагином OPC DA Client (или OPC DA+HDA Client), на компьютер с целевым OPC клиентом (SCADA системой) устанавливается сервер с плагином OPC UA Client. OPC DA/HDA Client (SCADA система) OPC DA/HDA server Плагин OPC UA Client MasterOPC Multi-Protocol Server OPC UA Internet Intranet OPC UA OPC UA server Плагин OPC DA/HDA Client MasterOPC Multi-Protocol Server OPC DA/HDA Server OPC DA/HDA Server OPC DA/HDA Server

4 MasterOPC Tunneler. Руководство по настройке Стр. 4 Каждый из плагинов туннеля приобретается отдельно, что позволяет гибко подобрать конфигурацию под конкретную задачу например производить опрос одним OPC UA клиентом нескольких OPC UA серверов. Т.е. возможна любая архитектура построения тоннеля. OPC DA/HDA клиенты OPC DA/HDA клиенты OPC DA/HDA клиенты OPC UA Client OPC UA Client OPC UA Client OPC UA Server OPC UA Server OPC UA Server OPC UA Server OPC DA/HDA серверы OPC DA/HDA серверы OPC DA/HDA серверы OPC DA/HDA серверы 2 Настройка Multi-Protocol MasterOPC на режим тоннеля Рассмотрим пошагово настройку Multi-Protocol MasterOPC для реализации тоннеля. В качестве примера мы будем получать данные от Modbus Universal MasterOPC сервера, конечным OPC клиентом будет MasterSCADA. 2.1 Настройка серверной части тоннеля Серверная часть тоннеля это компьютер, на котором находится OPC DA или OPC HDA серверы. На данном компьютере необходимо установить Multi-Protocol MasterOPC сервер, с плагинами OPC DA Client (если требуется получение текущих данных) или OPC HDA Client (если требуется получать архивные данные) плагины будут производить опрос с OPC серверов. Допускается использовать и OPC DA Client и OPC HDA Client одновременно. После настройки получения данных из OPC серверов в Multi-Protocol MasterOPC нужно включить режим OPC UA сервера Чтение текущих данных настройка OPC DA Client Для получения текущих данных предназначен плагин OPC DA Client. Рассмотрим его настройку.

5 MasterOPC Tunneler. Руководство по настройке Стр. 5 Создаем новую конфигурацию сервера, и через контекстное меню элемента Server добавляем протокол. В появившемся окне выбираем плагин OPCDACLIENT и нажимаем Да. В дерево добавился OPC DA клиент.

7 MasterOPC Tunneler. Руководство по настройке Стр. 7 В окне Выбор DA сервера, после нажатия кнопки Поиск, происходит поиск всех установленных на компьютере OPC DA серверов. Выберите нужный в списке и нажмите Готово. В поле настройки пропишется название OPC сервера. Также можно задать настройки OPC клиента: Тип опроса значения Периодический опрос изменений или Синхронное чтение (полный опрос). Мертвая зона (%) это максимальное отклонение сигнала от установленного значения, при котором сигнал считается не изменяющимся, и поэтому его опрос OPC клиентом не производится.

8 MasterOPC Tunneler. Руководство по настройке Стр. 8 Восстановление записанных значений после сбоя определяет нужно ли производить запись последних переданных значений в OPC сервер после сбоя. Устанавливать локальную метку времени если настройка включена, то приходящие значения получают текущее время, а не время, полученное от OPC-сервера. Теперь в устройство необходимо добавить теги то есть выбрать теги OPC DA сервера, которые необходимо опрашивать. Добавление тегов также производится через контекстное меню. Для автоматического выбора тегов сервера, воспользуйтесь кнопкой Теги протокола из сервера. В появившемся окне необходимо нажать на кнопку Соединить для подключения к OPC серверу. После этого в окне появится список всех тегов данного ОРС. Отметьте галочками нужные вам теги и группы и нажмите кнопку Готово.

9 MasterOPC Tunneler. Руководство по настройке Стр. 9 Примечание. Если нужно выделить сразу несколько тегов в ветке дерева, то отметьте галочкой верхний тег, а затем щелкните по нему правой кнопкой мыши все теги ниже будут отмечены. Теги будут добавлены в дерево. В свойствах тега можно увидеть его полный путь, комментарий (наследуется от тега ОРС сервера), тип данных и тип доступа. Также можно включить обработку тега включить масштабирование (функция Пересчет) Чтение архивных данных настройка OPC HDA Client Чтение архивов из контроллеров производится с помощью OPC HDA серверов. Для получения данных из них для передачи по туннелю используется плагин OPC HDA Client. Настраивается аналогично, как и OPC DA Client. Сначала производится добавление плагина через контекстное меню сервера.

10 MasterOPC Tunneler. Руководство по настройке Стр. 10 В узел добавляется устройство оно уже содержит 2 сервисных тега для диагностики связи с OPC HDA сервером. Теперь вызываем окно подключения к OPC HDA серверу. Появится окно со всеми доступными OPC HDA серверами выберем нужный и нажмем Готово.

11 MasterOPC Tunneler. Руководство по настройке Стр. 11 Теперь приступим к добавлению тегов. Аналогично, как и с OPC DA Client вызываем контекстное меню устройства и выбираем пункт Добавить Теги протокола (импорт). Появится окно, в котором выберем доступные OPC HDA теги подключенного сервера, выберем нужные отметив их галочками и нажмем Готово.

12 MasterOPC Tunneler. Руководство по настройке Стр. 12 Теги добавятся в устройство, при этом они сразу имеют режим HDA доступ. Также может потребоваться настройка глубины запроса данных на эту величину при старте OPC HDA Client начинает запрашивать данные из сервера. Настройка находится на уровне устройства и по умолчанию равна 1 дню. На этом настройка OPC HDA Client завершена Настройки OPC UA сервера Независимо от того будете ли вы получать текущие данные от OPC DA серверов, или архивные от OPC HDA серверов, или одновременно получать и текущие и архивные, дальнейшая настройка одинакова во всех случаях нужно активизировать режим OPC UA сервера. Для этого выделите корневой элемент сервера и в разделе OPC UA сервера включите настройку Подключение.

15 MasterOPC Tunneler. Руководство по настройке Стр Настройка клиентской части тоннеля Клинской часть тоннеля называется компьютер, на котором находится конечный OPC DA клиент (например, SCADA система). С клиентской машины можно производить опрос нескольких OPC UA серверов. Если в качестве клиента используется MasterSCADA версии 3.7 и новее, то клиентскую часть настраивать не нужно MasterSCADA имеет встроенный OPC UA клиент и может обращаться к UA серверам напрямую. Инструкция по настройке MasterSCADA приводится ниже в отдельном разделе. На данной машине нужно установить Multi-Protocol MasterOPC сервер с плагином OPC UA Client Добавление и настройка плагина OPC UA Client. Создайте новую конфигурацию, и также как в серверной части, произведите добавление плагина но теперь плагина OPCUACLIENT. Через контекстное меню плагина добавьте устройство.

16 MasterOPC Tunneler. Руководство по настройке Стр. 16 Устройство имеет специальную группу Diagnosis для вывода состояния подключения к UA серверу, а также группу ReservedChannels используемую для диагностики при использовании резервных каналов. Основными настройками устройства OPC UA клиента являются две: Период опроса период с которым OPC UA клиент будет получать данные от OPC UA серверов. Подключение OPC UA сервера при щелчке в поле данной настройки, можно вызвать специальное окно где и задаются настройки подключения. Откроем данное окно.

17 MasterOPC Tunneler. Руководство по настройке Стр. 17 Удаленный OPC UA сервер можно подключить двумя способами. Первый способ прописать в поле Адрес поиска IP адрес удаленной машины (или имя компьютера) и порт подключения. Пример строки подключения: opc.tcp:// :48010 Второй способ режим автоматического поиска. В этом случае нужно включить галочку Включить поиск OPC UA серверов. Для работы данного режима необходимо на обоих компьютерах установить службу Local Discovery Server, а также настроить ее (установить сертификаты). Данный способ нужно использовать если на компьютере установлено много OPC UA серверов. Воспользуемся полем Подключение сервера. Наш удаленный компьютер имеет IP адрес Порт мы установили Пропишем эти параметры в поле и нажмем Поиск. При этом, если сервер был найдет, может появится окно с запросом замены имени сервера в точке подключения. Суть этого запроса в том, что сервер возвращает в точке подключения не IP адрес, а имя компьютера. Поэтому если отказаться от замены, то подключение будет вестись по имени компьютера, а не по IP адресу. При работе в

19 MasterOPC Tunneler. Руководство по настройке Стр. 19 Если сервер требует авторизации, то переключатель раздел Аутенификационные установки переключается на режим Имя пользователя и Пароль. Введем в них логин и пароль, которые мы задали у сервера.

21 MasterOPC Tunneler. Руководство по настройке Стр Добавление тегов Теперь приступим к добавлению тегов. Добавление тегов также производится через контекстное меню устройства. Для автоматического добавления тегов из сервера выберите пункт меню Теги протокола из сервера. Открылось специальное окно Импорт OPC UA тегов. Из-за того, что OPC UA серверы могут иметь сложную архитектуру и с большой вложенностью окно импорта OPC UA тегов сложнее чем в случае с OPC DA.

22 MasterOPC Tunneler. Руководство по настройке Стр. 22 В верхней части окна находится строка подключения к серверу после нажатия на кнопку Соединить, произойдет подключение к OPC UA серверу, после чего в дерево будут загружены теги. При этом теги имеющие архивы, в столбец HDA доступ будут иметь подпись HistoryYes.

23 MasterOPC Tunneler. Руководство по настройке Стр. 23 Отметьте нужные вам теги галочками, а нажмите кнопку Готово. Теги добавятся в дерево. Если OPC UA сервер имеет архивы, и вы планируете их считывать, то у устройства должна быть включена настройка Получать архивные данные (по умолчанию включена). При включении настройки у всех тегов привязанных к считыванию архивных тегов, автоматически включается режим HDA доступа.

24 MasterOPC Tunneler. Руководство по настройке Стр Запуск в режим исполнения Сохраним конфигурацию и запустим ее в режим исполнения через круглую кнопку панели меню. Сервер запустится в режим исполнения. Если данные поступают с хорошим признаком качества значит соединение установлено. На этом настройка клиентской части завершена Проверка на OPC клиенте Проверим работу туннеля совместно с OPC DA клиентом например SCADA системой MasterSCADA. Создадим новый проект в MasterSCADA. Добавим в систему Компьютер, а в Компьютер через контекстное меню OPC сервер InSAT Multi-Protocol MasterOPC Server DA.

25 MasterOPC Tunneler. Руководство по настройке Стр. 25 Примечание. Если данный OPC сервер отсутствует в списке, вызовите контекстное меню у компьютера Поиск OPC DA серверов. Отметьте галочкой данный OPC сервер и нажмите Готово сервер появится в списке контекстного меню. Добавьте теги при помощи команды Вставить Все переменные и группы. Сохраните проект и запустите в режим исполнения. У тегов должны появится значения, поступающие от OPC DA сервера, установленного на удаленном компьютере. Если данные поступают, значит настройка туннеля произведена правильно.

26 MasterOPC Tunneler. Руководство по настройке Стр Настройка MasterSCADA как OPC UA клиента Если в качестве SCADA системы используется MasterSCADA версии 3.7 или новее, то она имеет встроенный OPC UA клиент, и может обращаться к серверной части туннеля (OPC UA серверу) напрямую. В этом случае OPC UA клиент Multi-Protocol MasterOPC не требуется. Для подключения к OPC UA сервера к MasterSCADA, нужно добавить его в компьютер через контекстное меню. Настройка подключения к определенному серверу и добавление тегов производится на закладке Настройки. Сначала настраивается подключение к UA серверу. Для этого нажмите кнопку Настройки появится специальное окно. Строка подключения прописывается на вкладке Настройки

28 MasterOPC Tunneler. Руководство по настройке Стр. 28 Каждый тег можно выделить и посмотреть его атрибуты, развернув специальную секцию окна Атрибуты узла.

29 MasterOPC Tunneler. Руководство по настройке Стр. 29 В окне атрибутов можно увидеть текущее значение, комментарий, путь переменной, поддержка архивов и т.д. Отметьте галочками нужные вами теги, а затем снова нажмите кнопку Применить переменные будут добавлены в дерево системы. После этого можно запускать MasterSCADA в режим исполнения Чтение архивов Помимо текущих значений MasterSCADA может читать из OPC UA архивы. Как и в случае с OPC HDA, OPC UA сервер накапливает считанные из прибора архивные данные (данные могут получены как от OPC HDA сервера, так и накоплены в буфере при опросе текущих значений), а затем отдает их клиенту. Наличие архивов определяет атрибут тега Historizing.

31 MasterOPC Tunneler. Руководство по настройке Стр. 31 Закройте окно, нажмите кнопку Применить. Выделите архивный тег и перейдите на вкладку Архив как и в случае с OPC HDA тегами, автоматически включается периодическая архивация с шагом в 0. Не нужно изменять данные настройки. Запустите режим исполнения и перейдите на вкладку Данные выхода на этой вкладке вы можете увидеть весь считанный и получаемый архив.

32 MasterOPC Tunneler. Руководство по настройке Стр. 32 В остальном работа с подобными тегами ведется, как и обычными архивируемыми тегами вы можете использовать их в трендах, отчетах, расчетах и т.д. 2.4 Настройка MasterOPC Tunneler для работы через Интернет Иногда возникает задача передавать данные от OPC серверов, расположенных не в локальной сети, а в сети Интернет. Для передачи данных через Интернет можно использовать два способа с использованием публичного статического IP и с использованием VPN. В случае использования VPN настройка плагинов Multi-Protocol ничем не отличается от настройки при работе в локальной сети, так как VPN представляет собой виртуальную локальную сеть. В случае использования статического IP адреса потребуется сделать ряд дополнительных настроек в Windows и сетевом оборудования. Во-первых, нужно обеспечить проброс портов с публичного IP адреса и порта, запрос должен перенаправляться на компьютер с OPC UA сервером в локальной сети. Для решения данной задачи вам нужно обратится к системному администратору. Во-вторых, из-за особенностей реализации OPC UA, нужно в ОРС сервере согласится на подмену имени компьютера на IP адрес. Опишем данный пункт подробнее. Например, есть компьютер, находящийся в локальной сети за публичным статическим IP адресом. Этот IP адрес и порт нужно ввести в поле подключения сервера.

33 MasterOPC Tunneler. Руководство по настройке Стр. 33 Будет произведен поиск OPC UA сервера по указанному адресу. Если OPC доступен, то сервер вернет клиенту точки подключения. Однако сервер вернет точки, которые будут содержать не IP адрес, а имя компьютера (например, opc.tcp//pc:55000). Поэтому после выполнения поиска и выбора точки, будет произведена подмена IP адреса на это имя компьютера. После запуска в режим исполнения OPC сервер будет пытаться связаться по имени компьютера, и, естественно, не сможет его обнаружить связи не будет. Чтобы этого избежать сервер выводит специальное диалоговое окно, в котором сообщает, что введенное пользователем имя сервера (IP адрес) не соответствует возвращаемому и спрашивает, заменить ли полученное от сервера имя компьютера на введенное пользователем в строке точки подключения.

34 MasterOPC Tunneler. Руководство по настройке Стр. 34 При работе по локальной сети можно нажать Нет, но при работе через статический IP нужно нажать Да тогда в точке подключения вместо имени компьютера будет подставлен наш IP адрес.

35 MasterOPC Tunneler. Руководство по настройке Стр. 35 После этого соединение UA клиента и UA сервера будет установлено дальнейшие действия (добавление и настройка тегов) аналогичны, как и при работе по локальной сети.

OPC tunneller

Есть такой танец с бубном при настраивании связи между OPC сервером и клиентом под названием "настройка DCOM".
Почитав инструкции и оценив мою ситуацию (ОРС сервер и клиент находятся в разных группах), решил попробовать "тунель".
Наткнулся в WWW на матрикон и АВВ. Какие есть еще варианты?
Конечно можно напрячь айтишников и сделать одну группу, но больно интересно стало попробовать такой способ связи, да и безопасность будет повыше

OPC tunneller

Бывают универсальные ModbusTCP > OPC DA серверы (например Lectus). Они могут выступать как клиенты OPC. Возможно заработает связка [OPC клиент ModbusTCP сервер] -сеть- [ModbusTCP клиент OPC сервер]

Технология OPC была разработана для унификации механизмов взаимодействия программного обеспечения систем управления с аппаратурой этих систем. В рамках этой технологии ОРС-серверы собирают данные от контроллеров и предоставляют их ОРС-клиентам (например, SCADA-системам). Любой ОРС-клиент может обмениваться данными с любым ОРС-сервером вне зависимости от специфики устройства, для которого разрабатывался конкретный ОРС-сервер.



Компания ИнСАТ предлагает ОРС-серверы ( DA , HDA , UA ) собственной разработки для следующих протоколов и устройств:

  • · Modbus ASCII/RTU/TCP
  • · SNMP
  • · IEC 61850
  • · IEC 60870-5-104
  • · Энергомера (СЕ 301, 303)
  • · Меркурий (230, 233, 234 и 236)
  • · СЭТ, ПСЧ, СЭБ производства НЗИФ
  • · УСПД УМ-31
  • · MasterOPC Tuneller

Кроме указанных протоколов компания ИнСАТ предоставляет средства разработки собственных ОРС-серверов на языках C ++ и SCRIPT .

Отличительные особенности ОРС-серверов компании ИнСАТ:

  • · Механизм плагинов – все протоколы в одном сервере
  • · Конвертирование любого из поддержанных протоколов в OPC UA
  • · Редактор скриптов на языке Lua (выполнение до, после и вместо сеанса связи)
  • · Архив на базе SQLite ( HDA доступ к архивам текущих значений)
  • · Симулятор значений для отладки
  • · Поддержка работы через модем
  • · Покадровый обмен данными
  • · Журнал событий
  • · Создание иерархий из подустройств и групп
  • · Импорт и экспорт карт тегов
  • · Масштабирование значений
  • · Перестановка байтов
  • · Извлечение битов

Для ознакомления с MasterOPC предоставляются бесплатные версии на 32 точки ввода/вывода или на 1 счётчик/устройство.

Для скачивания бесплатных версии системы, а также методических материалов и видеоуроков необходимо перейти на сайт производителя .

В первой части статьи мы дали краткое описание механизма encrypted SNI (eSNI). Показали каким образом на его основе можно уклоняться от детектирования современными DPI-системами (на примере билайновского DPI и запрещенного РКН рутрекера), а также исследовали новый вариант домен-фронтинга на основе данного механизма.

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

Try Harder…

Один из реализованных на Go инструментов – наша разработка для пивотинга внутрь сети – тунеллер rsockstun, которая, кстати говоря, нынче детектируется средствами от компании Microsoft и Symantec, как очень вредоносное ПО, направленное на нарушение мировой стабильности…


На наше везение (ура-ура. ), эта технология включена по умолчанию во все тарифные планы CloudFlare и прекрасно работает в сочетании с eSNI. Вот как раз ее то мы и будем использовать для того, чтобы научить наш туннелер использовать домен-фронтинг и скрываться от современных DPI.

Немного о WebSockets

Прежде всего, мы вкратце и простыми словами расскажем о веб-сокетах, чтобы все имели представление о том, с чем мы будем работать.


В голанге для работы с веб-сокетами есть несколько библиотек. Наиболее популярные из них это Gorilla WebSocket и стандартная WebSocket. Мы воспользуемся последней, т.к. она проще, меньше и работает, как говорят, немного пошустрее.

В коде клиента rsockstun нам необходимо заменить вызовы net.dial или tls.dial на соответствующие вызовы WebSocket:



Мы хотим сделать клиентскую часть нашего туннелера универсальной и способной работать как через прямое ssl-соединение, так и через протокол WebSockset. Для этого мы создадим отдельную функцию func connectForWsSocks(address string, proxy string) error по аналогии с connectForSocks() и будем ее использовать для работы с веб-сокетами в случае, если адрес сервера, заданный при запуске клиента, будет начинаться с ws: или wss: (в случае с Secure WebSocket).


А всю логику обработки подключения (авторизация клиента по паролю, установка и завершение yamux-сессии) мы поместим в обработчик подключения WebSocket:


Компилируем проект, запускаем серверную часть:


И затем клиентскую часть:


И проверяем работу на локальном хосте:



Переходим к домен-фронтингу

С веб-сокетами мы вроде бы как разобрались. Теперь давайте перейдем непосредственно к eSNI и домен-фронтингу. Как уже говорилось ранее, для работы с DoH и eSNI нам необходимо взять специальную ветку голанга от компании CloudFlare. Нам нужна ветка с поддержкой eSNI (pwu/esni).

Клонируем ее к себе локально или качаем и разжимаем соответствующий zip:


Затем нам необходимо скопировать каталог GOROOT, заменить соответствующие файлы из склонированной ветки и установить его как основной. Чтобы избавить разработчика от этой головной боли ребята из CloudFlare приготовили специальный скрипт – _dev/go.sh. Просто запускаем его. Скрипт вместе с makefile все сделают сами. Для интереса — можете заглянуть внутрь makefile за подробностями.

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


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




Дополнительно нам придется внести изменения в файл tls/handshake_client.go, чтобы использовать наше поле FakeServerName при формировании TLS хендшейка:


На этом всё! Можно компилировать проект и проверять работу. Но прежде чем запускать проверку, необходимо настроить аккаунт CloudFlare. Ну как сказать настроить – просто создать аккаунт на клаудфларе и привязать свой домен к нему. Все фишки, связанные с DoH, WebSocket и ESNI, включены в CloudFlare по умолчанию. После того как DNS записи обновятся – можно проверить работу домена выполнив запрос eSNI ключей:



Если вы видите нечто похожее для вашего домена – значит все у вас работает и можно переходить к тестированию.

Запускаем Ubuntu VPS, например, на DigitalOcean. P.S. В нашем случае только что выданный провайдером IP-адрес VPS оказался в блек-листах РКН. Так что не удивляйтесь, если с вами случится что-то похожее. Пришлось воспользоваться VPN чтобы попасть на свою VPS.

Копируем на VPS уже скомпилированный rsockstun (в этом, кстати, еще одна прелесть голанга – можно скомпилировать проект у себя и запустить на любом линуксе, соблюдая только разрядность системы) и запускаем серверную часть:


А затем клиентскую часть:


Как мы видим, клиент успешно подключился к серверу через фронтенд-сервер CloudFlare с использованием веб-сокета. Для проверки что туннель работает именно как туннель можно сделать curl-запрос через локальный socks5, открытый на сервере:


Теперь посмотрим, что же DPI видит в канале связи:






Или 32-битный вариант:


Всё! И больше никаких заморочек не надо. Это реально работает!


Флаги компилятора –w и –s нужны для того, чтобы убрать лишний мусор из исполняемого файла, сделав его меньше на пару мегабайт. Дополнительно его потом можно упаковать с помощью UPX, чтобы еще уменьшить размер.

Вместо заключения

В статье мы, на примере написанного на голанге туннелера, наглядно показали применение новой технологии домен-фронтинга, реализованной на довольно интересной особенности протокола TLS 1.3. Аналогичным образом можно адаптировать существующий инструментарий написанный на голанге для работы через сервера CloudFlare, например Merlin — известный C2, или заставить CobaltStrike Beacon использовать eSNI домен-фронтинг при работе с Teamserver через External C2 Channel, реализованный на голанге, или же на стандартном C++ с использованием пропатченной версии OpenSSL, о которой мы рассказывали в прошлой части статьи. В общем, фантазии нет предела.

Обновленный код туннелера, а так же скомпилированные исполняемые exe-файлы размещены в отдельной ветке проекта на github. Обо всех возможных проблемах туннелера лучше писать issue на странице проекта на GitHub.

Читайте также: