Новые инструменты для обнаружения HTTPS-перехвата

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


По мере роста использования HTTPS растёт желание посторонних лиц внедриться в защищённый трафик. Исследование 2017 года The Security Impact of HTTPS Interception показало, что это становится всё более распространённой практикой. Анализ трафика на серверах обновления Firefox показал, что в отдельных странах процент внедрения посторонних агентов в HTTPS достигает 15%.

Со времени исследования ситуация вряд ли улучшилась. Сейчас даже последняя модель беспроводных наушников Sennheiser требует установить в системе корневой сертификат (с небезопасными параметрами).

Чаще всего защиту компрометирует антивирус или корпоративный middlebox (см. список ниже), но бывает и хуже. В любом случае, лучше знать наверняка, когда ваш канал HTTPS на самом деле не защищён из конца в конец. Даже когда сторонняя система перехватывает трафик из лучших побуждений, она зачастую не поддерживает современные шифры или не валидирует сертификаты, таким образом снижая общую защиту соединения. А ведь перехватывать SSL-трафик могут не только в благих целях, но и в злонамеренных: например, для цензуры на государственном уровне.

Программы мониторинга HTTPS работают как прозрачные прокси, которые обрывают сессию TLS, инспектируют контент, а затем устанавливают новую сессию с сервером назначения. Они используют не такие версии TLS-библиотек, как у популярных браузеров, что позволяет обнаружить их на стороне сервера по несоответствию между HTTP User-Agent и TLS Client Hello реального браузера и прокси.

Для начала приведём некоторые практические выводы из исследования 2017 года, в котором участвовали Mozilla, Google, GlobalSign, а также академические исследователи из Мичиганского университета, Иллинойсского университета в Урбане-Шампейне и Калифорнийского университета в Беркли.

Практический вред от HTTPS-перехвата заключается в деградации шифрования и дополнительных уязвимостях «прозрачного прокси». Авторы исследования оценили по этим параметрам ряд популярных middlebox'ов. Как видим, в 2017 году почти половина из них не поддерживала современные наборы шифров, а у пяти зарегистрированы серьёзные уязвимости. Только 1 из 12 оказался способен полностью зеркалировать все пользовательские наборы шифров.



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



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

На пути между клиентом и сервером могут работать и другие «прозрачные прокси». Чтобы лучше детектировать этих агентов, компания Cloudflare недавно выпустила два новых инструмента:

  1. MITMEngine, свободная библиотека для определения HTTPS-перехвата.
  2. MALCOLM, приборная панель для отображения метрик о HTTPS-перехвате в сети Cloudflare.

Главный интерес представляет библиотека MITMEngine. Разработчики пишут, что взяли за образец популярный инструмент Caddy Server MITM Detection. Он поддерживает набор популярных браузеров и распознаёт HTTPS-перехват по специфическим отпечаткам сообщений TLS Client Hello и User Agent, как описано выше.

Разработчики постарались обеспечить расширяемость, упростив будущее добавление в детектор новых версий браузеров, а также улучшили производительность и расширили функциональность детектора, по сравнению с Caddy Server MITM Detection. Он анализирует следующие параметры TLS Client Hello, сравнивая реальные данные с отпечатками известных браузеров:

  • версия TLS;
  • наборы шифров;
  • расширения и их значения;
  • поддерживаемые группы эллиптических кривых;
  • форматы точек эллиптической кривой.

Фактически, MITMEngine выполняет частичный фингерпринтинг пользователя без его деанонимизации, но с надёжным определением, что соединение устанавливает реальный браузер, а не посредник.

Пример работы


Предположим, MITMEngine видит следующий User Agent от пользователя:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/47.0.2526.111 Safari/537.36


Этот User Agent соответствует Chrome 47 под Windows 7. Он сопровождается сообщением TLS Client Hello, которое указывает на следующие наборы шифров, в hex:

0000 c0 2b c0 2f 00 9e c0 0a c0 14 00 39 c0 09 c0 13 .+./.... ...9....
0010 00 33 00 9c 00 35 00 2f 00 0a .3...5./ ..


Это сообщение соответствует таким наборам шифров:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)


Дефолтные наборы шифров для Chrome 47 следующие:

0000 c0 2b c0 2f 00 9e cc 14 cc 13 c0 0a c0 14 00 39 .+./.... .......9
0010 c0 09 c0 13 00 33 00 9c 00 35 00 2f 00 0a .....3.. .5./..


Если посмотреть внимательно, то можно заметить: в реальном трафике список шифров чуть короче, чем должно быть в реальном браузере. Хотя остальные расположены в том же порядке, но не хватает двух наборов:

TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcc14)
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcc13)


Можно предположить, что трафик от браузера пользователя проходит через прозрачный прокси, который не поддерживает шифры ChaCha. Это снижает защиту пользователя, поскольку в списке следующие за ChaCha наборы шифров AES-CBC уязвимы для атак типа padding oracle.

В некоторых случаях MITMEngine позволяет даже определить, какая конкретно программа вызывает деградацию HTTPS-соединения (в примере выше это антивирус Sophos). Сервер может предупредить пользователя об этой угрозе.



Источник: https://habr.com/ru/company/globalsign/blog/444496/#habracut

Интересные статьи

Интересные статьи

Современный подход к эксплуатации решает множество насущных проблем бизнеса. Контейнеры и оркестраторы позволяют легко масштабировать проекты любой сложности, упрощают релизы новых версий, де...
Упаковка чипов (chip packaging) играет критически важную, хоть и не всем заметную роль в производстве электроники. Будучи физическим интерфейсом между процессором и материнской платой, упаков...
О технологии websocket часто рассказывают страшилки, например что она не поддерживается веб-браузерами, или что провайдеры/админы глушат трафик websocket — поэтому ее нельзя использовать в прилож...
Публикую на Хабр оригинал статьи, перевод которой размещен в корпоративном блоге. Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу ме...
Основанная в 1998 году компания «Битрикс» заявила о себе в 2001 году, запустив первый в России интернет-магазин программного обеспечения Softkey.ru.