Что такое TLS fingerprinting
Для эффективной защиты информации стоит понимать, что происходит с трафиком внутри сети. Однако это не самая простая задача, так она еще усложняется повсеместным использованием протокола Transport Layer Security (TLS), который препятствует традиционным методам мониторинга сетевой безопасности. Но тут на помощь приходит TLS fingerprinting — метод, который поможет «понять» трафик не лишая вас никаких преимуществ протокола TLS. Для каждого клиента «фингерпринт» остается статичным от сессии к сессии.
Для чего нужен TLS fingerprinting?
Для начала стоит пояснить, что такое TLS. Это широко распространенный протокол, который обеспечивает конфиденциальность и безопасность данных для связи через Интернет. Основная задача TLS — зашифровать связь между веб-приложением и сервером. Протокол может также использоваться и для шифрования других типов сообщений, например, таких как электронная почта, обмен сообщениями и Voice over IP (VoIP).
Поскольку «фингерпринт» для обычных клиентов всегда остается одинаковым, метод помогает эффективно обнаруживать широкий спектр нежелательного трафика, не обращая при этом внимания на подключения с уже знакомыми отпечатками.
Как это работает?
Технология основана на шаблонах, которые объявляются в сообщении «HelloClient», отправляемом клиентом в качестве самого первого сообщения в процессе подтверждения TLS. Это сообщение не зашифровано, что позволяет просматривать его некоторым инструментам. Каждый SSL/TLS клиент использует определенную версию конкретной библиотеки SSL/TLS. Некоторыми из них являются OpenSSL, GnuTLS, Windows, Java SSE, NSS, wolfSSL и т.д.
В сообщении «HelloClient» содержится три основных раздела, которые помогут идентифицировать браузер клиента:
- Набор шифров (Ciphersuite): Набор шифров представляет собой комбинацию «Обмен ключами+Шифрование». Список шифров и настроек обычно меняются в зависимости версии библиотеки. Некоторые клиенты специально предпочитают определенные наборы шифров. Например, Chrome предпочитает использовать ChaCha20-Poly1305. Большинство других приложений, в частности вредоносных, часто используют стандартные наборы шифров предоставляемые библиотекой.
- Расширения (Extensions): Какие расширения TLS поддерживаются и в каком порядке они отображаются в сообщении. Это зависит от типа и версии библиотеки SSL. Некоторые продвинутые клиенты, такие как Chrome, используют расширения динамически, например, для проверки поддержки SPDY.
- Эллиптические кривые (Elliptical curves): IANA зарегистрировала около 25 типов эллиптических кривых. Это число и настройки также будут варьироваться в зависимости от клиента.
Если взять все три вместе, существует высокая вероятность сведения к минимуму любых конфликтов и идентифицирования конкретного клиента в конкретной операционной системе.
Отпечаток TLS для киберзащиты
Наиболее очевидным использованием TLS fingerprints является пассивное обнаружение. Оно позволяет обнаруживать широкий спектр потенциально нежелательного трафика, не требуя доступа ни к одной из конечных точек. Возможность обнаружения вредоносных программ или программного обеспечения, таких как SuperFish и PrivDog, запущенных на настольных компьютерах, без специального поиска может быть очень полезной. С помощью этого метода также можно обнаружить другое потенциально нежелательное программное обеспечение. Например, программа обновления Java и соединения TLS, выполняемые приложениями, написанными на Java, имеют определенный отпечаток.
Обнаружение программного обеспечения, которое может не быть вредоносным, но находится вне контекста, возможно тоже стоит рассмотреть, к счастью его легко обнаружить. Например, многие интерфейсы должны быть доступны только определенному клиенту или набору клиентов. Если веб-сервер ожидает взаимодействия с человеком через браузер, обнаружение отпечатка пальца wget может иметь важное значение; с другой стороны, сервер Exchange может быть доступен только Outlook, поэтому подключение из скрипта Python будет иметь важное значение.
Вывод
С постоянно растущим разнообразием подключений мы будем продолжать полагаться на протокол TLS для обеспечения безопасности и конфиденциальности с помощью криптографических средств. Используя TLS fingerprints, мы можем быстро и пассивно определить, какой клиент используется, и применять стратегии как с точки зрения атакующего, так и с точки зрения защитника. Эти стратегии позволяют нам более эффективно защищаться.