Решение проблем c ПО, осуществляющим перехват зашифрованного (TLS) трафика для мониторинга или фильтрации

На этой странице перечислено ПО, которое вызывает проблемы при настройке АРМ для доступа на ГОСТ-сайты.

В основном, проблема со всем указанным ПО заключается в одном и том же. Функции проверки зашифрованного трафика (TLS) приложений и браузеров, путём механизма HTTPS-MiTM.

Что такое HTTPS-MiTM.

HTTPS-MiTM это механизм вклинивания в зашифрованный канал между приложением-клиентом и удалённым сервером. Механизм произошёл от метода одноимённой хакерской атаки. Однако, со временем, метод получил и вполне легальные применения.

Цели бывают разные. Глубокая фильтрация трафика, мониторинг (что делают сотрудники с рабочим инторнетом), проверка на вирусы… И выполняется это в основном с помощью специализированного ПО. Антивирус, например, вполне является таким ПО.

Суть проблемы всегда одна. Вместо того, чтобы с вашего компьютера получать доступ напрямую до серверов Электронного бюджета, с использованием TCP-соединения на 4-ом уровне модели OSI, вы соединяетесь с посредником. И этот посредник мешает установить защищённое по ГОСТ соединение.

Решение проблемы в таком случае, только одно. Устранить посредника. Либо буквально (удалив ПО), либо заставить его передавать/проксировать (TCP-proxy) трафик на 4-ом уровне модели OSI “как есть”, не пытаясь внести свои корректировки или лезть куда его не просят.

Теория

Между условными Анной и Борисом, обменивающихся зашифрованными сообщениями друг с другом, появляется “человек посередине”. Назовём его, скажем, Вовой. Который имеет доступ к промежуточному звену цепи, которая используется для обмена сообщениями. И имеет возможность манипулирования проходящими через узел сообщениями.

Так же, этот самый Вова имеет возможность притвориться для Анны, что она получает сообщения от Бориса. А для Бориса, притвориться, что он получает сообщения от Анны.

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

Иллюстрация алгоритма DH

Вова не может читать сообщения, т.к. с его точки зрения, они не имеют смысла. Мусор, зашифрованный мусор. Но для Анны и Бориса это вполне понятные сообщения, т.к. у них ключ есть. А попытки подобрать ключ — займут неопределённое количество времени…

Но Вова слишком хитрожопый, чтобы так просто сдаться! Решает поступить по другому. Он притворяется для Анны, что она согласует ключ с Борисом. Борису же притворяется, что он согласует ключи с Анной. Вклиниваясь посередине. Каждый раз, когда приходит сообщение от Анны, Вова его расшифровывает и зашифровывает заново, только уже ключом, предназначенным для Бориса. И наоборот. И тем самым, имеет возможность читать, что происходит в переписке, незаметно и прозрачно для парочки.

Иллюстрация MiTM

Конечно, для проверки подлинности отправителя существуют свои методы. Но это упрощённый пример. Очень сильно упрощённый. Если очень сильно хотите знать, почему она не сработала, перейдите к следующему заголовку.

А теперь представим, что Анна изобретает новый алгоритм шифрования, который до этого никто ранее не использовал (или нашла алгоритм, который популярности не взыскал). И обменивается им с Борисом ЛИЧНО. Вот изобрела/нашла Анна необычный алгоритм, назвала Кузнечик и передала Борису программы для работы с ним. И при следующем сеансе обмена сообщений, Анна явно указывает, что хочет согласовать ключ для Кузнечика и только для Кузнечика. И Борис знает, что Анна точно будет писать ему сообщения только с помощью Кузнечика. Они так договорились.

Вова получает запрос на согласование зашифрованного соединения (хэндшейк) и думает… Что это за вундервафля такая, какой нахрен Кузнечик? Она с ума сошла? Притворюсь я пожалуй, чайником, и попробую согласовать соединение с Борисом обычным методом. Но Борис возвращает ответ, что хочет видеть только Кузнечик. Который Вова не знает. Шифровать им не умеет и расшифровывать тоже. Что делать? Окно времени, в которое надо успеть отправить ответ, истекает! Паника!

В итоге, согласование обмена проваливается сначала с Борисом, а потом и с Анной, т.к. Анну тоже не устроил присланный ответ, что Кузнечик не поддерживается. “Это что за фигня творится?” — кричит Вова от бессилия исправить ситуацию… Вова жидко опростоволосился и неявным образом — выдаёт себя. Обменяться сообщениями парочке не получилось, но и тайна сообщений осталась тайной. И как только Анна и Борис схватят этого засранца за причинное место и лишат его возможности страдать вауеризмом, Анна и Борис снова смогут приступить к использованию Кузнечика для безопасного обмена чем-бы то ни было…

Конец.

Виды Вовчиков перехватчиков

  • Локальный. Когда программа, осуществляющая MiTM находится непосредственно на компьютере (Антивирус, Континент TLS-клиент, AdGuard для Windows). Перехваченный трафик не покидает компьютер.
  • Сетевой. Локальная сеть предприятия настроена таким образом, что весь трафик на 443-ем порту отправляется на сервер, где находится программа, осуществляющая MiTM (Некоторые DLP-системы так работают). Или в настройках Свойств обозревателя явно задан прокси-сервер, и прокси-сервер уже занимается HTTPS-MiTM (например, squid можно настроить таким образом, для эффективного кэширования и фильтрации неугодных сайтов).

Определить локальный или сетевой уровень, можно методом исключения. Подключить компьютер к альтернативному источнику интернета. Если проблема исчезает — проблема в сети. Если остаётся, локально.

Явные признаки MiTM

  • “Неожиданные” сбросы (ERR_CONNECTION_RESET) или завершения (ERR_CONNECTION_CLOSED) соединений, при попытке осуществить подключение на сайт, который поддерживает только ГОСТ и не заявляет поддержку “обычного” шифрования. Это все ресурсы *.cert.roskazna.ru, *.esia.roskazna.ru и *.login.roskazna.ru, например.

  • Проблемы с согласованием шифров для TLS-соединения (ERR_SSL_VERSION_OR_CIPHER_MISMATCH), когда признаков того, что проблема с криптопровайдером, нет.

  • При входе на сайт, который поддерживает не только ГОСТ, но и “обычное” шифрование (gost.cryptopro.ru), принудительно выбирается последнее, не смотря на то, что первое у в браузера в приоритете. И у сервера тоже. Кто-то выбирает “общепризнанное” шифрование “за вас”.

  • “Открытый замочек” в Яндекс.Браузере при переходе на практически любые обычные сайты. Яндекс.Браузер научили определять MiTM. Это значит, что “сертификат сервера” подписан корневым сертификатом, который не находится в списке типичных корневых центров сертификации… За функцию, моё почтение. Chromium GOST так не умеет.

    Открытый замочек

  • При входе на обычный сайт, использующий “обычное” шифрование, серверный сертификат подписан непонятным корневым УЦ… И цепочка сертификации не имеет промежуточного сертификата УЦ, что противоречит общим практикам работы удостоверяющих центров. Обычно, корневые центры сертификации выпускают сертификаты только удостоверяющим центрам и никогда напрямую потребителям. Затем уже удостоверяющие центры выпускают сертификаты простым смертным. Т.е. в цепочке должно быть 3 сертификата, не 2. Если 2, то это подозрительно, как минимум.

    Нормальный путь сертификации:

    Нормальный путь сертификации

    Не нормальный:

    Плохой путь сертификации

Чтобы MiTM работал прозрачным для пользователя образом, надо как-то усыпить бдительность браузера, по поводу идентификации и верификации конечного сервера, т.к. посредник будет использовать свои сертификаты. Для этого, в хранилище корневых центров сертификации обязан быть установлен корневой сертификат, которым будут подписываться “подменные” со стороны условного “Вовы” сертификаты проверки подлинности сервера. Чтобы “Вова” превратился из вауериста в товарища Майора, такого же вауериста, но “в законе”.

Благодаря тому, что корневой сертификат, выпущенный Вовой, установлен в хранилище Корневых Центров Сертификации, браузер не будет задавать вопросов по поводу идентификации сервера подменными сертификатами. Ведь с его точки зрения, она выполнена. Всё что подписано сертификатами Корневых Центров, установленных в соответствующее хранилище — является доверенным.

Только вот Майор Вова так и не научился Кузнечику и не может выпустить подменный сертификат по ГОСТу, но это уже “ваши проблемы”. Он будет срывать попытки согласовать Кузнечик и всё тут.

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

И как раз по этому корневому сертификату можно отследить программу и прописать в ней соответствующие исключения…

Список программ и исключений*

* Если конкретные примеры и исключения известны, конечно.

Указанные исключения несут исключительно рекомендательный характер. Если они для вас не сработают и программа продолжит делать то что делала, вам нужно обратиться в техническую поддержку по этой программе. Мы не несём ответственность за Ваши СЗИ и прочие средства противодействия утечкам.

Общие положения

Нужно добавить в исключения проверки зашифрованного трафика следующие домены

eb.cert.roskazna.ru
sobi.login.roskazna.ru
sobi.esia.roskazna.ru
sobi.cert.roskazna.ru
fzs.roskazna.ru
lk-fzs.roskazna.ru
signservice.roskazna.gov.ru

Если программа это поддерживает, можно так же добавить следующие wildcard-записи, чтобы убрать проверку для всех государственных доменов.

*.roskazna.ru
*.gov.ru

Для того, чтобы заработали тестовые страницы от КриптоПро, возможно понадобится добавить следующие записи.

www.cryptopro.ru
gost.cryptopro.ru
cryptopro.ru

Wildcard-домен для КриптоПро

*.cryptopro.ru

Kaspersky (Касперский)

Технически, существует 2 способа сделать исключение в Kaspersky.

  1. Добавить домены ГИИС ЭБ в доверенные, чтобы Касперский перестал вклиниваться в трафик на этих доменах.
  2. Более радикальный. Добавить Яндекс.Браузер или Chromium GOST в доверенные программы и запретить проверять весь зашифрованный трафик браузера.

Рекомендуется попробовать сначала 1-ый, добавить домены в доверенные, прежде чем переходить ко 2-ому варианту.

К сожалению, не для всех вариантов зафиксированы на скриншоты оба случая. Но общий принцип аналогичен Kaspersky Endpoint Security, для которого есть возможность показать оба примера, т.к. используется у автора на работе.

Kaspersky Free

Примеры какие есть, т.к. я снимал их во время выполнения обращений, с разрешения владельцев.

Исключения для доменных имён
  1. Откройте окно Kaspersky Free из Меню Пуск или используя значок в области уведомлений. Перейдите в Настройки.

    Скриншот с аннотацией, Где искать настройки

  2. Откройте Настройки безопасности.

    Скриншот с аннотацией, выделен блок Настройки безопасности

  3. Откройте Настройки сети.

    Скриншот с аннотацией, выделен блок Настройки сети

  4. Найдите опцию Доверенные адреса и откройте её.

    Скриншот с аннотацией, выделен пункт Доверенные адреса

  5. В окне Настройки защищённых соединений нажмите Добавить.

    Скриншот с аннотацией, выделена кнопка Добавить

  6. Добавьте все перечисленные в Общих положениях домены. Kaspersky Free поддерживает добавление wildcard-доменов со звёздочкой, так что можете добавить и их. На скриншоте отражены только wildcard-домены, т.к. поторопились когда делали скриншот. Обязательно нажмите Сохранить.

    Скриншот с аннотацией, типа заполненный список доменов, но не совсем так, как подразумевал автор

  7. Нажмите Сохранить в главном окне ещё раз.

    Скриншот с аннотацией, выделена кнопка Сохранить

  8. Подтвердите сохранение настроек.

    Скриншот окна на безопасном рабочем столе, с просьбой подтвердить действия

Kaspersky Standard

Примеры какие есть, т.к. я их снимал во время выполнения обращений, с разрешения владельцев.

Исключения для доменных имён
  1. Откройте окно Kaspersky Standard из Меню Пуск или используя значок в области уведомлений. Перейдите в Настройки.

    Скриншот с аннотацией, Главное окно, подсвечена кнопка для перехода в Настройки

  2. Откройте Настройки безопасности.

    Скриншот с аннотацией, выделен блок Настройки безопасности

  3. Откройте Настройки сети.

    Скриншот с аннотацией, выделен блок Настройки сети

  4. Найдите опцию Настроить доверенные адреса и откройте её.

    Скриншот с аннотацией, выделен пункт Настроить доверенные адреса

  5. В окне Настройки защищённых соединений нажмите Добавить

    Скриншот с аннотацией, выделена кнопка Добавить

  6. Введите домен, который требуется добавить и нажмите Добавить.

    Скриншот с аннотацией, выделено текстовое поле и кнопка Добавить

  7. Повторите шаги 5-6 пока не будут добавлены все перечисленные в Общих положениях домены. Kaspersky Standard (актуальная версия) поддерживает добавление wildcard-доменов со звёздочкой, так что, можете добавить и их. Обязательно нажмите Сохранить.

    Скриншот с аннотацией, выделена кнопка Сохранить

  8. Нажмите Сохранить в главном окне ещё раз.

    Скриншот с аннотацией, выделена кнопка Сохранить на главном окне

  9. Подтвердите сохранение настроек.

    Скриншот с аннотацией, всплывающее окно на безопасном рабочем столе, выделена кнопка Подтвердить

Kaspersky Endpoint Security

Исключения для доменных имён
  1. Откройте главное окно Kaspersky Endpoint Security, используя либо меню Пуск в ОС Windows, либо значок в Области уведомлений. Откройте Настройки.

    Скриншот с аннотацией, подсвечена кнопка Настройки на главном окне

  2. Найдите блок Настройки сети.

    Скриншот с аннотацией, выделен блок Настройки сети

  3. Откройте пункт Доверенные адреса.

    Скриншот с аннотацией, выделен пункт Доверенные адреса

  4. Нажмите кнопку Добавить.

    Скриншот с аннотацией, выделена кнопка Добавить

  5. Введите доменное имя, которое требуется добавить в текстовое поле и нажмите кнопку Добавить внизу.

    Скриншот с аннотацией, выделено текстовое поле и кнопка Добавить

  6. Введённое в текстовое поле доменное имя появится в списке.

    Скриншот с аннотацией, выделен добавленный пункт

  7. Повторите шаги 4-6 пока не будет добавлен весь список из Общих положений. Нажмите Сохранить.

    Скриншот с аннотацией, список заполнен, выделена кнопка Сохранить

  8. Нажмите Сохранить ещё раз в Главном окне.

    Скриншот с аннотацией, выделена кнопка Сохранить на Главном окне

  9. Подтвердите сохранение во всплывающем окне на безопасном рабочем столе.

Исключения для приложения

⚠️ Внимание!

Используя этот способ, вы полностью выключаете проверку защищённых соединений в антивирусе для браузера. Что может снизить уровень защиты, если браузер используется не только для работы с ГИИС ЭБ, но и для обычного сёрфинга в интернете.

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

  1. Откройте главное окно Kaspersky Endpoint Security, используя либо меню Пуск в ОС Windows, либо значок в Области уведомлений. Откройте Настройки.

    Скриншот с аннотацией, подсвечена кнопка Настройки на главном окне

  2. Найдите блок Настройки сети.

    Скриншот с аннотацией, выделен блок Настройки сети

  3. Откройте пункт Доверенные программы.

    Скриншот с аннотацией, выделен пункт Доверенные программы

  4. Нажмите Добавить в окне Доверенные приложения

    Скриншот с аннотацией, выделена кнопка Добавить в окне Доверенные приложения

  5. Во всплывающем окне выберите исполняемый файл программы в дереве или введите путь до неё в текстовом поле внизу. Нажмите Выбрать.

    Скриншот с аннотацией, диалог выбора исполняемого файла

  6. В исключениях выберите Не проверять зашифрованный трафик. Нажмите ОК.

    Скриншот с аннотацией, выделена галочка Не проверять зашифрованный трафик

  7. Программа отобразится в списке Доверенных приложений. Если потребуется, можете повторить шаги 4-6 и добавить ещё один браузер. Нажмите ОК.

    Скриншот с аннотацией, выделена кнопка ОК в окне Доверенные приложения

  8. Нажмите Сохранить в Главном окне.

    Скриншот с аннотацией, выделена кнопка Сохранить в главном окне

  9. Во всплывающем окне на безопасном рабочем столе, подтвердите внесение изменений.

Dr. Web

  1. Найдите в области уведомлений значок Dr. Web, нажмите на него и перейдите в Центр безопасности

    Скриншот с аннотацией, значок в области уведомлений и пункт Центр безопасности

  2. Перейдите в Исключения из главного окна

    Скриншот с аннотацией, выделен блок Исключения на главном окне

  3. Разблокируйте внесение изменений с помощью замочка в левом нижнем углу. Подтвердите полномочия.

    Скриншот с аннотацией, выделен замочек

  4. Перейдите в Приложения

    Скриншот с аннотацией, выделен блок Приложения

  5. Нажмите на кнопку с изображением +

    Скриншот с аннотацией, выделена кнопка +

  6. Параллельно выясните путь до исполняемого файла программы. Например, открыв свойства ярлыка браузера с рабочего стола. Перейдите на вкладку Ярлык и скопируйте поле Объект.

    Скриншот с аннотацией, выделено поле Объект на вкладке Ярлык в Свойствах ярлыка на Яндекс.Браузер

  7. В окне Dr. Web вставьте путь до программы в текстовое поле или выберите путь с помощью кнопки Обзор. Поставьте галочку Исключить из проверки компонентами SpIDer Gate и SpIDer Mail. Нажмите ОК.

    Скриншот с аннотацией, выделено текстовое поле с путем до исполняемого файла, галочка Исключить из проверки и кнопка ОК

PRO32

Аналогично Касперскому, имеет 2 способа добавить исключения.

  1. Добавить домены (хосты) в доверенные для исключения из проверки.
  2. Исключение из проверки всего приложения.

В зафиксированном случае из обращения, 1-ый не помог или капризничал. Потому был использован так же и 2-ой. Из-за чего зафиксированы оба случая.

Исключения для доменных имён

  1. Откройте Главное окно программы, используя меню Пуск или значок в области уведомлений. Перейдите в Общие настройки.

    Скриншот с аннотацией, выделен пункт Общие настройки

  2. Найдите в блоке Смешанный пункт Включить глубокий сетевой монитор и ссылку Расширенные настройки рядом с ним. Перейдите в Расширенные настройки.

    Скриншот с аннотацией, выделен пункт Расширенные настройки

  3. Откроется модальное окно на вкладке Хосты. Введите в текстовое поле домен, который необходимо добавить и нажмите кнопку Добавить.

    Скриншот с аннотацией, выделено текстовое поле на вкладке Хосты и кнопка Добавить

  4. Добавленный домен отобразится в списке Имена хостов.

    Скриншот с аннотацией, выделен добавленный домен

  5. Повторите шаги 3-4 пока не будет добавлен весь список из Общих положений. К сожалению, PRO32 не поддерживает добавление wildcard-доменов. Потому придётся добавлять каждый нужный для ГОСТ домен отдельно. Нажмите Закрыть, выйдите из антивируса и перезагрузите компьютер (крайне желательно).

    Скриншот с аннотацией, список закончен, выделена кнопка Закрыть

Исключения для приложений

⚠️ Внимание!

В PRO32 не предусмотрено дополнительных настроек при добавлении приложений, потому функционал антивируса для указанных приложений будет выключен полностью, в любом случае. Имейте это ввиду.

Это как-бэ то что нам как раз и нужно, чтобы он не лез, куда его не просят. Но это может снизить уровень безопасности. Вы же не для того покупали антивирус, чтобы его отключать? Пусть и не полностью, а только для браузера и его сетевых соединений (не активности в целом).

Рекомендуется в таком случае использовать Яндекс.Браузер и добавить только его, т.к. у него есть собственные механизмы безопасности под названием Protect и он поддерживает ГОСТ.

Либо добавить Chromium GOST и использовать его только для работы с ГОСТ-сайтами.

  1. Откройте Главное окно программы, используя меню Пуск или значок в области уведомлений. Перейдите в Общие настройки.

    Скриншот с аннотацией, выделен пункт Общие настройки

  2. Найдите в блоке Смешанный пункт Включить глубокий сетевой монитор и ссылку Расширенные настройки рядом с ним. Перейдите в Расширенные настройки.

    Скриншот с аннотацией, выделен пункт Расширенные настройки

  3. В модальном окне перейдите на вкладку Приложения.

    Скриншот с аннотацией, выделена вкладка Приложения

  4. Нажмите кнопку Добавить

    Скриншот с аннотацией, выделена кнопка Добавить

  5. Выберите исполняемый файл приложения, которое требуется добавить, используя диалог для выбора файлов.

    Скриншот с аннотацией, пример выбора исполняемого файла приложения

  6. После успешного добавления, путь до программы отобразится в списке Имена приложений

    Скриншот с аннотацией, выделено, что приложение добавлено. Выделена кнопка Закрыть

Staffcop Enterprise

Признаком присутствия влияния программы, является корневой сертификат сертификат с CN = NeonLightInc

  • Скриншот с демонстрацией, что у серверного сертификата общее имя УЦ = NeonLightInc

По поводу добавления исключений, обратитесь к официальной документации:

Или в техподдержку продукта.