Vpn fingerprint что это
Vpn fingerprint что это
На сайтах проверки анонимности вы часто можете встретить разновидность такой проверки, как VPN Fingerprint. В этой статье мы ответим на следующие вопросы:
Что такое VPN Fingerprint?
На картинке ниже изображены вариации модуля проверки VPN Fingerprint на нескольких известных сайтах проверки анонимности. Полную версию этого модуля вы можете найти в разделе «Информация о системе».
Так все-таки, на основании чего и как происходит эта проверка?
Постараемся все объяснить как можно проще. Если спешите, можете перейти к проблемам в обнаружении или сразу к выводам 🙂
Итак, как это работает. Допустим, вы хотите зайти на какой-то сайт:
Есть очень важные моменты, о которых вы должны знать:
Насколько точная получается проверка?
Стоит отметить, что обнаружение пользователей, описанным выше способом, хорошо лишь в теории. В реальности зачастую все происходит далеко не столь гладко и вот основные проблемы:
Проблема № 1 – нет единой базы для всех сайтов.
Как уже указывалось ранее, нет единой базы для всех сайтов, которая бы предоставляла всем одинаковые результаты и при этом была бы авторитетной.
Чтобы наглядно продемонстрировать данную проблему:
Результат проверки на трех сайтах вы можете видеть на изображении ниже.
Как видим, в проверке участвовало всего лишь 3 сайта, а результаты уже у всех разные.
Вы спросите: «Почему же тогда ваш сайт определил во всех случаях, что используется VPN?»
Если учесть тот факт, что сайтов в мире более миллиарда, и нет единой базы, то вряд ли уважающий себя сайт, будет на сто процентов полагаться только на результат проверки VPN fingerprint.
Проблема № 2 – размер MTU задается провайдером.
Как уже писали, размер пакетов MTU задается вашим провайдером. В большинстве случаев используют стандартный размер MTU 1500.
Но, довольно часто провайдеры используют специфический размер MTU. В большинстве случаев это делают для того, чтобы согласовать работу сетевого оборудования. Например, оборудование Cisco считает размер MTU без учета заголовка, а оборудование Juniper вместе с заголовком L2 и размер MTU у них будет разный, поэтому необходимо согласовать размер MTU.
В качестве наглядного примера, приведем крупных российских провайдеров. Например, в некоторых регионах провайдер Yota использовал MTU 1358, а Мегафон MTU 1440. Оба эти MTU определяются, как подключенные к VPN. Хотя в реальноcти пользователь может и не использовать VPN. Действительно ли на стороне провайдеров есть туннели или это так оборудование настроено, знает лишь провайдер, но пользователей определяет будто они подключены к VPN.
Проблема 3 – MTU меняют сами пользователи.
Довольно часто такую рекомендацию, как сменить размер MTU вручную, можно встретить в Интернете. В некоторых случаях подобная рекомендация может помочь при решении следующих проблем:
Не спешите сразу менять MTU, к этому процессу нужно подходить с умом, поэтому хотим вас заранее предостеречь: если вы выставите неправильное значение, у вас может перестать работать интернет, либо ощутимо пострадает скорость работы.
Чтобы убедиться в несовершенстве проверки VPN Fingerprint, просто сменим размер MTU в своем роутере. Установим, например, значение MTU 1408. В роутере TP-LINK это делается так:
Получим следующий результат:
К VPN мы не подключены, однако сайты определяют, будто мы используем VPN. Как видите, полагаться только на VPN Fingerprint не имеет смысла.
Хотелось бы добавить, что основной задачей данной статьи было не показать, на каком сайте проверке анонимности слабее или сильнее тесты. Все сайты справляются с данной задачей на все сто процентов. А объяснить принцип и наглядно продемонстрировать несовершенство такого способа проверки в целом.
Стоит ли бояться того, что VPN Fingerprint меня обнаружил?
На основании вышеизложенного можно сделать вывод, что бояться этого точно не стоит.
Результат проверки получается весьма поверхностный и к тому же зависит от соблюдения множества условий. Выходит, что нельзя до конца определить используете ли вы VPN или может это у вас настройки провайдера такие, а возможно это просто криво настроен маршрутизатор/софт на ПК, или специально установлен такой размер MTU для удобства взаимодействия с определенными устройствам и т.д.
Поэтому, можете спать спокойно и серфить в интернете не взирая на подобные сообщения, вы в безопасности.
Главное помните, что после смены IP адреса, обязательно удостоверьтесь в следующем:
Определяем пользователей VPN (и их настройки!) и прокси со стороны сайта
We can save the day from dark, from bad
There’s no one we need
Многие из вас используют VPN или прокси в повседневной жизни. Кто-то использует его постоянно, получая доступ к заблокированным на государственном или корпоративном уровне ресурсам, многие используют его изредка, для обхода ограничений по географическому положению. Как вы можете знать, крупные интернет-игроки в сфере стриминга видео, музыки и продажи игр никогда не любили пользователей, которые легко обходят географические ограничения, разблокируя недоступный в их стране контент, или совершая покупки заметно дешевле. За примерами не нужно далеко ходить: Netflix изменил свое соглашение об использовании, добавив пункт о блокировке VPN, всего 2 месяца назад; Hulu тоже грешил блокировкой пользователей, а Steam вообще подозрительно смотрит на не-русскоязычных пользователей из России. В последнее время, компании пытаются блокировать уже не конкретных пользователей, а сами IP-адреса VPN-сервисов, создавая определенные неудобства уже самому VPN-сервису и его пользователям. Похоже, они не используют никаких спецсредств, а блокируют выборочно и вручную. Хоть я и не поддерживаю какие-либо блокировки вообще, меня заинтересовала техническая часть вопроса: можно ли как-то определить использование прокси-серверов и VPN со стороны сервера, не прикладывая особых усилий?
Можно, при определенных условиях. И достаточно точно.
MSS и MTU
MTU, или Maximum Transmission Unit — максимальное количество данных, которые могут быть переданы в одном пакете. MTU установлен у каждого сетевого адаптера, даже у тех маршрутизаторов, через которые трафик от вас до удаленного сервера идет транзитом. В подавляющем большинстве случаев, в интернете используют MTU 1500, однако бывают заметные исключения, которые, к слову, зачастую подчиняются некоторым правилам.
Когда ваш браузер или любое другое ПО, работающее с сетью, создает TCP-соединение к удаленному серверу, в заголовки пакета помещается значение Maximum Segment Size (MSS), которое сообщает серверу, какого максимального размера сегменты он может передавать в одном пакете. Это значение очень близко́ к MTU, оно сразу дает понять серверу о возможностях вашего интернет-соединения, исключая излишнюю фрагментацию и позволяя утилизировать ваш канал по полной.
Когда вы отправляете пакет, будучи подключенным к VPN по какому-то протоколу (PPTP, L2TP(±IPsec), IPsec IKE), он помещается (инкапсулируется) в еще один пакет, что вносит свои накладные расходы, и большие пакеты, которые были бы отправлены без фрагментации без VPN, теперь придется фрагментировать. Чтобы избежать такой фрагментации, ОС устанавливает на сетевом интерфейсе MTU меньше, чем MTU реального сетевого интерфейса, из-за чего ОС не пытается создавать большие пакеты, которые требовали бы фрагментации.
В случае с PPTP, L2TP(±IPsec), IPsec, как я понимаю, нет каких-то стандартов на MTU туннеля, все устанавливают такие значения, чтобы работало в большинстве случаев, и устанавливаются они на глаз. Как правило, это 1400, что позволяет использовать, скажем, PPTP на каналах с MTU до 1440 без фрагментации (например, когда для доступа в интернет требуется еще один туннель, как часто бывает у российских провайдеров). OpenVPN — пожалуй, самый популярный вариант VPN — напротив, пошел другим путем.
OpenVPN
В целях совместимости со старым или просто кривым софтом, OpenVPN по умолчанию не устанавливает меньшее значение MTU на VPN-интерфейсе, а изменяет значение MSS внутри инкапсулированного TCP-пакета. За это отвечает параметр mssfix, установленный по умолчанию в значение 1450. Он изменяет MSS таким образом, чтобы он полностью утилизировал канал с MTU 1450, т.е. высчитывает свои накладные расходы таким образом, чтобы они проходили через канал с MTU 1450 и более без фрагментации. Вследствие этого, у нас появляется возможность не просто определить пользователей OpenVPN со стандартным mssfix 1450, но и определить их протокол подключения (IPv4, IPv6), протокол транспортного уровня (TCP, UDP), параметры шифрования, сжатия и MAC, т.к. они вносят свои уникальные накладные расходы и отражаются в MSS.
Давайте посмотрим на типичные значения MSS:
Протокол | Размер блока | MAC | Сжатие | MSS |
---|---|---|---|---|
UDP | 64 | SHA1 | — | 1369 |
UDP | 64 | SHA1 | + | 1368 |
TCP | 64 | SHA1 | — | 1367 |
TCP | 64 | SHA1 | + | 1366 |
UDP | 128 | SHA1 | — | 1353 |
UDP | 128 | SHA1 | + | 1352 |
TCP | 128 | SHA1 | — | 1351 |
TCP | 128 | SHA1 | + | 1350 |
UDP | 128 | SHA256 | — | 1341 |
UDP | 128 | SHA256 | + | 1340 |
TCP | 128 | SHA256 | — | 1339 |
TCP | 128 | SHA256 | + | 1338 |
Если используется шифр с размером блока в 64 бита, это, вероятно, Blowfish, если 128 — вероятно, AES.
Для пущей проверки теории было протестировано 2 VPN-сервиса: VyprVPN и ibVPN. Оба сервиса подвержены определению настроек описанным методом.
Если вы не хотите, чтобы вас обнаруживали таким способом, вы можете либо отключить mssfix, установив его в 0 и на сервере, и на клиентах, получив таким образом MSS 1460 (в случае с IPv4), что соответствует MTU 1500 — типичному MTU для обычного проводного соединения, которое есть у подавляющего большинства пользователей. Однако, в этом случае вы получите излишнюю фрагментацию, что ведет к повышению задержек и уменьшению пропускной способности, поэтому может иметь смысл установить MTU в 1400, 1380 или похожее (должно быть кратно 2, а лучше 10), т.к. такие значения часто используются провайдерами, например, мобильного интернета.
Прокси
Способов определения прокси-сервера, если он не добавляет никаких заголовков (вроде X-Forwarded-For), не так-то много. Чем же технически отличается прокси от VPN? В случае с VPN, удаленный сервер получает от вас пакет, которая создала ваша ОС, в неизменном (зачастую) виде. Прокси же, напротив, получает только всю информацию об удаленном сервере (IP, порт, прочие параметры) и данные, создавая пакет на стороне самого прокси, и отправляет его. Разные ОС по-разному создают пакеты, различия можно встретить даже от версии к версии. Мы с большой точностью можем определить ОС создателя пакета, версия нас не слишком интересует.
Как мне кажется, прокси чаще всего запускают на Linux и BSD, а используют чаще под Windows. Пользователи часто не думают о смене User-Agent, который включает используемую ОС, в браузере, а это нам на руку.
Существует замечательный проект p0f, который отлично впишется под наши нужды. Пассивно прослушивая трафик, он может определить ОС, MTU и браузер, оповестить о несовпадении ОС создателя пакетов и ОС в User-Agent. К тому же, он имеет API. Немного модифицировав его, добавив экспорт MTU через API и обновив сигнатуры, мы можем с определенной точностью детектировать пользователей популярных VPN-протоколов, пользователей прокси и тех пользователей, которые подделывают User-Agent.
WITCH?
Немного подумав, я решил сделать небольшой веб-сервис для реализации своих идей, т.к., по какой-то причине, я не смог найти ничего похожего.
Из этого получился WITCH?, который с легкостью расскажет вам о настройках вашего OpenVPN-соединения (если вы не трогали mssfix, конечно же), попытается определить вашу ОС и сравнить ее с ОС в User-Agent, получит PTR-запись для вашего IP и сравнит ее с набором правил, определяя, используете ли вы интернет-канал, рассчитанный на домашних или серверных пользователей.
WITCH? также без проблем определяет пользователей Tor Browser, т.к. он использует одинаковый статичный User-Agent (с Windows) на всех ОС, а exit nodes запущены под Linux и FreeBSD.
Что такое Fingerprint, как его проверить и изменить
Как работает Фингерпринт
Build Fingerprint (создание отпечатка) производится двумя способами, скрытым и активным.
Скрытый запрос
Данный способ предусматривает скрытый запрос, выполненный к клиентской машине, который позволяет точно классифицировать следующие параметры:
Активный фингерпринт
Данный способ позволяет получить более точную информацию, причем сделать это с разрешения пользователя, хотя он сам может и не знать, что дал такое разрешение. На пользовательском устройстве устанавливается код, который запускается автоматически (например, JavaScript). Кроме доступа к данным указанным в случае скрытого запроса, он получает доступ к серийным номерам оборудования, которые являются уникальными, MAC-адресу, другой уникальной информации.
Как используют Fingerprint
Разрабатывалась технология как алгоритм, позволяющий собрать данные для идентификации с целью борьбы с мошенниками. Дело в том, что большинство сайтов собирает множество информации, о пользователях, которые посещают их без их уведомления на основе которых производится профилирование. Если в этот профиль попадают реальные данные такие как телефон, фамилия, имя, отчество или реальный адрес, то это дает возможность, полностью идентифицировать человека и добавить в соответствующую базу. Разные базы содержат разную информацию, хобби, увлечения, предпочтения, целевые товары и многое другое. Часто такие базы отпечатков объединяются для более точной идентификации. Такая информация потом перепродается маркетинговым компаниям, которые используют ее в своих целях. Особый риск несет то, что ею могут воспользоваться злоумышленники для незаконных действий. К большому сожалению большинство пользователей не может запретить сбор такой информации и обезопасить себя.
Как проверить Фингерпринт
На данный момент времени проверить какую информацию выдает фингерпринт о Вас и Вашем устройстве довольно просто. Можно воспользоваться такими онлайн сервисами как Fingerprint Central или Am I Unique, которые покажут какие именно отпечатки о веб-браузере и операционной системе могут получить те или иные веб-сайты.
Как подменить Fingerprint
Есть несколько простых способов подмены цифровых отпечатков системы и браузера. Можно воспользоваться расширением для браузера или специальными антидетект браузерами. Также активно сбору информации противостоят VPN-сервисы и приватные прокси-сервера.
Веб расширения
Антидетект браузеры
Специально созданные веб-браузеры для анонимного просмотра страниц и мультиаккаутинга. Они используют специальные алгоритмы защиты и подмены цифровых отпечатков, позволяющие скрыть настоящую информацию о пользователе, предоставляя каждый раз новую случайным способом. Среди популярных ANTBrowser, MultiLogin, Indigo Browser, Linken Sphere, Ghost Browser в сети можно найти и много других.
Используя этот вариант, при доступе к веб-сайтам их алгоритмы будут получать информацию о частной виртуальной сети, а не о конечном пользователе. Кроме того, все переданные данные надежно шифруются, защищая реальные отпечатки пользователя.
Прокси-сервера
Приватные прокси обладают очень высоким уровнем анонимности и защиты личных данных. Алгоритмы веб-сайтов не могут получить Ваш цифровой отпечаток так как сервер-посредник не передает такой информации о Вас целевой странице.
Видео: Что такое Fingerprints и как его проверить и изменить
С каждым годом алгоритмы для Build Fingerprint совершенствуются. Чем больше мер защиты, тем больше новых методов идентификации. Последнее время все больше проектов, которые специализируются на опознании пользователя по поведенческому профилю (социальная инженерия), какие сайты он посещает, как часто, какой информацией интересуется и так далее. Если анонимность и безопасность в сети для Вас не пустое место, то следует использовать один из вышеуказанных методов, но также следует помнить, что чрезмерные меры, также могут стать причиной того, что Вас идентифицируют. Поэтому следует взвешивать все подходы и способы и выбирать оптимальный и самый безопасный.
Фингерпринт (отпечаток браузера): что это такое и как его скрыть?
Что такое фигерпринт?
Фингерпринт (отпечаток браузера, Browser Fingerprint) — это уникальный идентификатор конфигураций веб-браузера и операционной системы, который формируется на основе собранных данных различными технологиями отслеживания. При этом не используются традиционные методы отслеживания, такие как IP адреса и уникальные файлы cookie.
Цифровой отпечаток браузера имеет вид 32-битного числа шестнадцатеричной системы типа b2cf59b36581399ebf54d4ab425ac4a7, которое получается в результате обработки всех принятых от браузера данных. Полученный отпечаток браузера позволяет отслеживать пользователей в сети Интернет с точностью до 94%.
Для чего используются отпечаки браузера?
Отпечатки браузера применяются для предотвращения мошенничества и «кражи личности». Пользователь сети Интернет сам того не подозревая предоставляет данные о себе, без какого-либо на то согласия. С повышением количества собранных данных формируется профиль человека, который способен содержать в себе пол, возраст, семейное положение, финансовое состояние, интересы, привычки и т.д.
Казалось бы, это информация носит лишь поверхностный характер, без привязки к конкретному человеку. Но это лишь до поры до времени, стоит лишь раз человеку где-нибудь указать реальные персональные данные, например ФИО, телефон, адрес, фингерпринт, зафиксированный цифровым устройством позволит компаниям полностью Вас идентифицировать и тем самым дополнить сформированный профиль.
Многие компании заинтересованы собирать, иметь и знать, как можно больше информации о своих пользователях. Анализируя наши действия и устройства в Интернете, веб-сайты могут использовать полученную информацию в коммерческих целях — создавать и показывать персонализированную рекламу.
Также, Browser Fingerprinting, находит свое применения для внутренней аналитики, таким образом, действия пользователя (просмотренные страницы, клики, движения мышкой и т. п.) позволяют разработчикам получать негласную обратную связь, видеть, на, что пользователь обращает внимание в первую очередь и корректировать свои онлайн-платформы для достижения максимального отклика
Виды отпечатков и методы отслеживания
Многие веб-сайты имеют встроенные инструменты для анализа браузеров и операционной системы своих посетителей. На основе собранных данных и создается уникальный цифровой отпечаток браузера. После проведения анализа все собранные данные, которые удалось получить вышеперечисленными методами, суммируются, и производится вычисление хеш-суммы, которая и является отпечатком браузера.
Чтобы защитить себя от отслеживания отпечатков в Интернете, рассмотрите возможность использования браузера, ориентированного на конфиденциальность, например AdsPower.
AdsPower — это антидетект браузер для управления мультиаккаунт. Он предоставляет пользователям отдельные браузерные среды с разными IP-адресами и часовыми поясами для каждого аккаунта, заменяя несколько устройств виртуальными профилями браузера. AdsPower маскирует вашу цифровую личность и запутывает скрипты веб-сайтов, чтобы они не могли собрать точную информацию для создания вашего отпечатка.
Как проверить уникальность своих отпечатков браузера?
В интернете существует довольно много исследований и онлайн-проектов, где акцентируют особое внимание на уникальности цифровых отпечатков устройств. При этом, для масштаба своих исследований, некоторые из компаний предоставляют возможность пройти тест в режиме онлайн, такие как Panopticlick, Canvas Fingerprinting, Whoer и Am I Unique?
Как отпечатков избежать?
VPN и прокси-серверы
Здесь коротко. VPN — самый простой метод обхода региональных запретов. Меняет ваш IP на доступный на сервисе. Не защищает от множества трекеров и не влияет на уже подхваченные куки. Прокси — бесплатная прокладка, которая не шифрует ваш трафик. Не скупитесь на хороший многоканальный ВПН — и включайте его даже переходя на выделенный сервер о котором мы поговорим дальше.
Сделать свой цифровой след менее уникальным помогут ручные изменения. Изменение часового пояса устройства; Установка другого языка операционной системы устройства; Установка другого языка браузера; Изменение разрешения экрана устройства; Изменение масштаба веб-страницы; Установка либо удаление плагинов браузера Отключение исполнения Flash, Javascript и WebGL Радикальные методы, но крайне неудобные для серфинга.
Главная причина популярности и эффективности такого метода заключается в том, что такой виртуальный компьютер является совершенно новыми и чистым для интернета, работает круглосуточно и не передает никакой информации о конечном пользователе и характеристиках его компьютера (говорят Facebook отслеживает даже MAC адрес).
Конфиденциальность могут предложить антидетект-браузеры. Такие браузеры, как AdsPower, Multilogin и Linken Sphere, гарантируют анонимность путем подмены данных и уникализации цифрового отпечатка пользователя, оставляя при этом минимум следов в сети. Например, в AdsPower можно удобно изменить вышеупомянутые отпечатки:
Начать работу с AdsPower просто. Зарегитрируйте с email и скачайте программу для вашего компьютера. После того выбирайте один из пакетов и настройте прокси для начала работы. Больше обучающие материалы можно посмотрить на сайте AdsPower.
Выводы
Современный интернет собирает огромную базу информации о каждом ее пользователе. Интернет общество активно создает и продвигает разнообразные инструменты для сохранения конфиденциальности онлайн, которые с одной стороны защищают от мошенников а с другой стороны помогают обходить правила для рекламодателей.
ВПН позволяет экономить на сервисах, которые разным ГЕО предлагают разные цены на свои продукты, мультипрофильные платформы позволяют организовывать и эффективно управлять большим количеством аккаунтов одновременно. Для этого, антидетект браузеры также являеются надежным инструментом, и эффективное его применение полностью оправдывают вложенные средства, помогая зарабатывать в разы больше.
Использование TLS fingerprinting для выявления угроз
В статье хотим рассказать про технологию TLS fingerprinting, про которую недостаточно материалов в русскоязычном сегменте. Попробуем это исправить. Статья частично переводит тематические материалы авторов описываемых методов (тут и тут), а также содержит описание практической реализации от Акрибии.
Не будем глубоко погружаться в детали работы SSL/TLS (далее будем говорить TLS), но кратко поясним детали.
Использование TLS само по себе благо, так как с его помощью шифруются данные. Но с обратной стороны создатели вредоносов используют его же, чтобы скрываться в шифрованном трафике (в данной статье как раз будет уклон в эту сторону) и затруднять их обнаружение и нейтрализацию.
Чтобы инициировать сеанс TLS, клиент отправляет «пакет» приветствия серверу после трёхстороннего установления связи TCP. Этот «пакет» и способ его создания зависят от пакетов и методов шифрования, используемых при создании клиентского приложения. Если сервер принимает соединение TLS, он ответит пакетом приветствия, тем самым продолжая согласование шифрования.
Поскольку согласование шифрования TLS передаётся в открытом виде, то можно отследить и идентифицировать клиентские приложения.
В этом и суть технологии TLS fingerprinting, если кратко. А теперь немного подробнее.
TLS fingerprinting
Суть технологии в захвате элементов пакета приветствия клиента, которые остаются статичными от сеанса к сеансу для каждого клиента. На их основе можно создать «отпечаток пальца» для распознавания конкретного клиента в последующих сеансах. Записываются следующие поля:
Кроме того, данные собираются из трех конкретных расширений (если они доступны):
алгоритм для шифрования данных;
хэш функция для проверки содержимого.
Использование такого набора данных позволяет с большой точностью идентифицировать используемый клиент (например, браузер).
Пакет приветствия клиента — это первый пакет в любом TLS-соединении. Это позволяет принимать решение о последующих мерах в начале сеанса до того, как потребуется подмена протокола или эмуляция.
Можно захватывать пакеты приветствия клиента TLS с высокой степенью точности по всем портам с абсолютно нулевым требованием для захвата обоих направлений потока. Это означает, что датчики в среде с асимметричной маршрутизацией или с ограничениями ресурсов, потенциально вызывающими отбрасывание пакетов, все равно могут собирать пакеты приветствия клиента, независимо от того, были ли они скрыты из-за работы на нестандартных портах.
Пакеты приветствия клиента возникают достаточно редко, поэтому дополнительная обработка хэшей не повлечет значительных затрат.
Наиболее очевидное использование TLS Fingerprinting – пассивное обнаружение. Технология позволяет обнаруживать широкий спектр потенциально нежелательного трафика, не требуя доступа к конечным точкам. Можно обнаруживать как конкретные вредоносы по их поведению и/или обращениям к командным центрам, так и обычный софт, используемый не по назначению или в обход действующих правил.
Например, к серверу Exchange могут обращаться только почтовые клиенты или браузер, если используется OWA, поэтому соединение из скрипта на Python будет подозрительным.
Итого: TLS Fingerprinting предназначен для быстрой идентификации известных TLS-соединений и отслеживания неизвестных TLS-соединений. Входные данные принимаются либо посредством прослушивания трафика, либо при чтении PCAP файлов.
Есть несколько готовых реализаций, наиболее поддерживаемых комьюнити:
пассивный метод с использованием хэшей JA3 и JA3S;
активный инструмент снятия отпечатков пальцев с сервера TLS – хэши JARM.
JA3 и JA3S
Метод JA3 используется для сбора десятичных значений байтов для следующих полей в пакете приветствия клиента: версия TLS, набор шифров, список расширений протоколов TLS, эллиптические кривые и форматы эллиптических кривых. Затем он объединяет эти значения вместе по порядку, используя символ «,» для разграничения каждого поля и «-» для разграничения каждого значения в каждом поле.
Порядок полей следующий:
Если в ClientHello нет расширений TLS, поля остаются пустыми:
Эти строки затем хэшируются MD5. Пример отпечатка JA3:
JA3S – это хэш идентификации сервера. Метод JA3S заключается в сборе десятичных значений байтов для следующих полей в пакете приветствия сервера: версия TLS, набор шифров и список расширений протоколов TLS. После сбора значений, происходит процесс объединения этих значений вместе по порядку, используя «,» для разграничения каждого поля и «-» для разграничения каждого значения в каждом поле.
Порядок полей, следующий:
Если в Server Hello нет расширений TLS, поля остаются пустыми.
Эти строки затем хэшируются MD5 для создания 32-символьного отпечатка пальца.
Это отпечаток JA3S:
JA3 и JA3S – это методы снятия отпечатков TLS. JA3 отслеживает способ, которым клиентское приложение обменивается данными через TLS, а JA3S отслеживает ответ сервера. Вместе они создают отпечаток криптографического согласования между клиентом и сервером.
Теперь перейдем к описанию активного метода JARM.
JARM работает, активно отправляя 10 пакетов приветствия клиента TLS на целевой сервер и фиксируя определенные атрибуты ответов приветствия сервера. Затем агрегированные ответы сервера TLS хэшируются определенным образом для получения отпечатка JARM. JARM отправляет разные версии, шифры и расширения TLS в разном порядке для сбора уникальных ответов. Хэш JARM представляет собой гибридный нечеткий хэш, он использует комбинацию обратимого и необратимого алгоритма хеширования для создания 62-символьного отпечатка.
Отпечатки JARM можно использовать:
убедиться, что все серверы в группе имеют одинаковую конфигурацию TLS;
сгруппировать разрозненные серверы в сети Интернет по конфигурации, указав, например, что сервер может принадлежать Google, Yandex или Apple;
определить приложения или инфраструктуру по умолчанию;
выявить командные центры и других вредоносные серверы в сети Интернет.
Первые 30 символов состоят из шифра и версии TLS, выбранных сервером для каждого из 10 отправленных приветствий клиента. «000» означает, что сервер отказался согласовывать приветствие с этим клиентом. Остальные 32 символа представляют собой усеченный хэш SHA256 совокупных расширений, отправленных сервером, без учета данных сертификата x509. При сравнении отпечатков JARM, если первые 30 символов совпадают, но последние 32 отличаются, это будет означать, что серверы имеют очень похожие конфигурации, принимают одинаковые версии и шифры, но используют различные расширения, что не позволяет их считать полностью идентичными.
Исторически так сложилось, что индустрия кибербезопасности была сосредоточена в основном на индикаторах компрометации (IOC) и индикаторах атаки (IOA). То есть когда вредоносное ПО/хост и т.п. будут кем-то обнаружены, исследователи или вендоры платформ TI вычленяют уникальные или не очень признаки выявленного вредоноса или атаки типа IP, домена, хэша файла и т.п. и публикуют их в «чёрных списках». Проблема в том, что к этому моменту вредоносное ПО уже распространено, и специалисты ИБ автоматически переходят в оборону.
Интернет-сканирование JARM в сочетании с другими метаданными и историческим анализом даёт возможность упреждающей идентификации IOC для новых вредоносов. Например, можно сканировать Интернет с помощью JARM, сопоставлять известные результаты JARM с историей домена, IP и репутацией вместе с данными сертификата для создания черного списка. Это позволяет перейти к возможности программного создания высокоточных списков блокировки до того, как первая вредоносная программа будет распространена.
Можно использовать JARM автоматически сканируя все хосты назначения, детектируемые в сети компании, для обогащения событий, и использовать сводную таблицу, чтобы не сканировать одни и те же хосты несколько раз. Затем можно запускать запросы заведомо плохих JARM или использовать список для корреляции.
Чтобы упростить процесс, можно использовать готовое решение. В настоящее время хэши JARM умеют считать продукты Palo Alto Networks и используют их API для обогащения целевого JARM.
Примеры реализации
Если нет возможности или желания использовать готовые решения от Palo Alto и пр., можно реализовать в своей инфраструктуре свое средство мониторинга трафика, например, на основе Zeek (ранее назывался Bro) – популярного open-source продукта, заточенного специально для этого.
Zeek собирает огромное количество информации из первоначального согласования TLS, т.к. оно обрабатывается в открытом виде. Таким образом, хотя мы не можем видеть всё, что связано с шифрованием TLS, мы всё же можем получить общее представление о том, что происходит.
Zeek умеет выполнять снятие отпечатков TLS с помощью хэша JA3\JA3S.
Если у нас уже есть Zeek, в него попадает трафик, то для полноценного мониторинга нам понадобится SIEM (можно обойтись и без SIEM, но тогда обрабатывать логи Zeek’а придется вручную). Допустим, SIEM у нас все же есть. Помимо инструментов обработки трафика и событий Zeek нам еще потребуются списки готовых хэшей, чтобы было с чем сравнивать.
В случае в JA3 – все просто. Есть готовый инструмент, к которому можно обращаться по API для проверки выявленного хэша JA3 и принятия решения – нормально это или не очень.
Хэши JA3S, соответствующие вредоносам, достать чуть сложнее. Есть, например, небольшая подборка тут, есть и еще, нужно только искать или считать самостоятельно.
С хешами JARM еще немного сложнее, если у вас нет Palo Alto, их нужно собирать по разрозненным отчетам аналитиков или считать самостоятельно и вести собственные белые и черные списки. Но на github тоже попадаются тематические подборки, например, эта. Мы ее задействуем в дальнейшем при проработке правил по JARM.
Далее приведем некоторые описания правил, которые мы реализуем у себя. Также есть неплохой доклад от Splunk с примерами алгоритмов и правил мониторинга по хэшам JA3/JA3S. Доступен здесь. Правила можно адаптировать под любую SIEM.
Выявление признака конкретного вредоноса по хэшам JA3\JA3S. Вот, например, готовые значения для Emotet и TrickBot:
Выявления нового хэша JA3, ранее не появляющегося в сети.
Список клиентского ПО в любой сети, как правило, достаточно статичен, и, если появится что-то новенькое – это однозначно повод разобраться. Правда, это может быть новая версия уже известного ПО, тогда ее нужно добавить в белый список.
Выявления хэшей JA3 не из белого списка.
Общее правило, которое позволит обратить внимание на любую активность, которая явно не помечена заранее как разрешенная. Сюда могут попасть, как новые ранее неизвестные клиентские устройства или приложения, так и вредоносы, попавшие к вам в сеть. В любом случае – трекать это стоит.
Выявления хэшей JA3\JA3S из чёрного списка.
Это правило нацелено на выявление хэшей заведомо вредоносного ПО.
Выявление обращений к C&C по хэшам JARM.
При выявлении обращения к TLS-серверу, неизвестному нам или ранее не появляющемуся в логах, необходимо посчитать его JARM хэш (можно вручную, можно скриптом или с использованием SOAR), при совпадении с хэшем, соответствующим известному C&C серверу, блокируем соединение, изолируем хост и расследуем инцидент.
Выявление JA3 хэшей, не характерных для системы.
При появлении на хостах с Windows JA3 хэшей, характерных для Linux или смартфонов (Android/IOS), стоит обратить внимание на такие хосты. Это может являться признаком работы вредоносов (ну или запущенного эмулятора/виртуалки в режиме NAT). Кейс особенно заслуживает внимание, если выявлен на рабочей станции обычного пользователя, далекого от мира IT.
Выявление JA3 хэшей, характерных для разных браузеров одного семейства.
Сейчас достаточно сложно на один хост поставить две разные версии Firefox или Chrome (виртуальные машины в режиме NAT не в счёт). Такое выявление может свидетельствовать о том, что злоумышленники пытались адаптироваться под установленный софт, но после обновления софта не успели или забыли обновить свой Fingerprint. Хост лучше изолировать и провести расследование.
Выявление JA3 хэшей, характерных для популярных сетевых библиотек языков программирования.
Ни для кого не секрет, что сейчас ВПО пишется не только на C/C++. Часто встречаются образцы, которые написаны на Python или Golang. Стандартные библиотеки, такие как requests (для python) или http (для Golang), имеют характерные отпечатки в рамках нескольких версий. В случае выявления такого хэша на рабочем месте разработчиков, вероятно, это нормально. Но, если хэши «всплывут» на рабочем компьютере рядового пользователя, то точно следует провести тщательную проверку, так как с большой вероятностью это будет свидетельством активности вредоноса. Также стоит поддерживать списки актуальных JA3 хэшей для популярных сетевых библиотек, чтобы минимизировать ложные срабатывания.
Важно: Список хэшей JARM (и JA3S тоже) необходимо регулярно пополнять новыми выявленными C&C серверами, полученную самостоятельно или от сторонних исследователей.
При использовании средств защиты сети, которые умеют вычислять хэши JARM самостоятельно и на лету, соединения с серверами из черных списков можно и нужно блокировать автоматически.
В завершении хотим подчеркнуть, что развитие и популяризация технологии TLS Fingerprinting, по нашему мнению, совсем не за горами, и способствует этому внедрение TLS 1.3.
В версиях стандарта TLS до 1.3 у клиента была возможность сообщать, к какому серверу он хочет обратиться — SNI (Server Name Indication). Чаще всего в HTTPS для этого использовалось поле HOST, чтобы на одном IP и порту могли работать несколько HTTPS-сайтов. Соответственно и так, без всяких fingerprint, было видно, кто куда идет. Понятно, что речь идёт про легитимные обращения, атакующие всегда могли подделать SNI.
В стандарте TLS 1.3 появилась возможность шифровать имя запрашиваемого сайта – Encrypted SNI (ESNI), и безопасники потеряли возможность видеть, куда идёт обращение.
Правда ESNI уже запретили в Китае, и были попытки блокировок в России. Однако ESNI стал часто встречаться, в том числе в инструментах злоумышленников, и без TLS fingerprinting становится сложно понимать, куда происходят обращения в сети.
Авторы статьи:
Михаил Кравченко, SOC-аналитик;
Александр Минин, руководитель направления Threat Intelligence @AAMinin;
Анна Шестакова, руководитель направления мониторинга ИБ.