TLS fingerprinting серверов: типы хешей, утилиты для показа TLS отпечатков серверов
Оглавление
1. TLS fingerprinting: методы идентификации клиентского и серверного программного обеспечения
2. TLS fingerprinting клиентов: типы хешей, утилиты для показа TLS отпечатков клиентов
3. TLS fingerprinting серверов: типы хешей, утилиты для показа TLS отпечатков серверов
3.1 TLS Отпечатки серверов нестабильны и зависят от запроса клиента
3.3 Типы хешей для TLS fingerprinting серверов
3.4 Инструменты для снятия TLS отпечатков серверов
3.4.6 Онлайн сервис для показа JA3S и JA4S отпечатков
3.4.7 Онлайн сервис для сканирования JARM отпечатков
3.5 TLS fingerprinting протокола QUIC для серверов
3.6 Базы данных хешей JA3, JA3N и JA4
4. Как изменить и подделать TLS отпечатки. Как обойти фильтрацию на основе TLS fingerprinting
3.1 TLS Отпечатки серверов нестабильны и зависят от запроса клиента
В предыдущей части мы уже отмечали такие особенности TLS отпечатков клиентов как изменяться в новых версиях программ.
Конечно же, TLS отпечатки серверов также не остаются навсегда неизменными. Но у (некоторых) TLS хешей серверов имеется ещё одна особенность: данные, которые отправляет сервер в TLS Server Hello, зависят от того, что прислал клиент. То есть один и тот же сервер по-разному отвечает разным клиентам. На практике это означает, что для одного сервера вы можете получить разные JA3S и JA4S отпечатки, если будете делать запрос на этот сервер, например, с помощью веб-браузера и утилиты cURL, или с помощью разных веб-браузеров.
Тем не менее, на одинаковые запросы веб-сервер будет отвечать одинаково.
Итак, при работе с JA3S и JA4S хешами может быть важно, какой именно клиент делал запрос во время TLS fingerprinting.
И, опять же, нужно помнить, что клиент сам может изменить отправляемые в TLS Client Hello данные, что, в свою очередь, изменит TLS Server Hello и в конечном счёте это приведёт к изменению хешей JA3S и JA4S.
Итак, JA3S и JA4S можно сопоставлять в том случае, если они сделаны во время запросов от одинаковых клиентов с одинаковыми версиями.
3.2 JA3S и JA4S хеши отлично подходят для идентификации инфраструктуры управления и контроля (command and control, C2) в паре с TLS отпечатками клиентов
TLS отпечатки разрабатывались с целью выявления трафика, который генерирует вредоносное программное обеспечение. В случае коммуникации внутри инфраструктуры управления и контроля (command and control, C2) клиенты имеют одинаковый Client Hello на который серверы отвечают всегда одинаковым Server Hello. Это обеспечивает стабильный результат для JA3S и JA4S хешей.
Также было отмечено, что JA4S в сочетании с JA4 значительно повышает точность обнаружения. То есть JA4 (цифровой отпечаток клиента) сам по себе не всегда способен однозначно идентифицировать вредоносного клиента — как было отмечено в предыдущей части, любые скрипты на Python, использующие одинаковые версии библиотек, будут иметь одинаковые цифровые отпечатки. При этом серверные отпечатки, а именно хеши JA3S и JA4S тоже не всегда дают однозначный ответ о том, является ли сервер частью ботнета или легитимным ПО. Но сочетание TLS отпечатков клиента и сервера дают крайне высокие результаты точности — в этом случае можно мгновенно выявить вредоносные клиенты, серверы, а также следить за их перемещением, если, например, инфраструктура C2 меняет IP и домены.
3.3 Типы хешей для TLS fingerprinting серверов
3.3.1 JA3S
После создания JA3 авторы начали экспериментировать с использованием того же метода для снятия отпечатков со стороны серверного TLS-рукопожатия, сообщения TLS Server Hello. Метод JA3S заключается в сборе десятичных значений байтов для следующих полей в пакете Server Hello: Version, Accepted Cipher и List of Extensions (Версия, Принятый шифр и Список расширений). Затем он объединяет эти значения вместе по порядку, используя «,» для разделения каждого поля и «-» для разделения каждого значения в каждом поле.
Порядок полей следующий:
TLSVersion,Cipher,Extensions
Пример:
771,4866,43-51
Если TLS расширения в Server Hello отсутствуют, то эти поля остаются пустыми. Например:
771,4866,
На этом скриншоте показано, какие именно части TLS Server Hello используются для вычисления JA3S.
Затем для полученной строки вычисляется MD5 хеш:
echo -n '771,4866,43-51' | md5sum
Это JA3S отпечаток:
15af977ce25de452b96affa2addb1036
Источник: https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/
3.3.2 JA4S
В предыдущей части мы уже рассматривали отпечаток JA4, который входит в группу JA4+. Отпечаток JA4S также относится к JA4+ и также характеризуется тем, что имеет три части, разделённых символом нижнее подчёркивание. Но для JA4S в первых двух частях закодирована собранная информация, и только последняя часть является усечённым хешем. Пример JA4S:
t130200_1302_a56c5b993250
Рассмотрим структуру первой части хеша (JA4S_a): Первый символ («t») означает протокол TCP; также может быть символ «q» означающий протокол QUIC. Следующие два символа означают версию TLS: 1.2 = «12», 1.3 = «13». Затем идёт двухзначное число — количество расширений. Затем ещё одно двухзначное число — выбранный Application-Layer Protocol Negotiation (ALPN). Если расширение ALPN отсутствует, то указывается «00».
Вторая часть хеша (JA4S_b) является выбранным Набором Шифров.
Третья часть хеша (JA4S_c) является усечённым хешем SHA256: полученным в результате хеширования строки Расширений в том порядке, как они появляются.
Пример сырой строки JA4S_R, для которой вычислен предыдущий хеш:
t130200_1302_002b,0033
Источник: https://blog.foxio.io/ja4%2B-network-fingerprinting
3.3.3 JARM
JARM – это инструмент идентификации серверов Transport Layer Security (TLS), особенностью которого является активное сканирование. Хеш (TLS отпечаток), который получает эта утилита, также называется JARM.
JARM работает так: эта утилита генерируют и активно отправляет 10 пакетов TLS Client Hello с различными конфигурациями на целевой TLS-сервер и захватывая определённые атрибуты ответов TLS Server Hello. На пакеты с различными настройками TLS Client Hello сервер может отвечать разнообразными ответами. Затем агрегированные ответы TLS-сервера хэшируются определенным образом для создания отпечатка JARM.
JARM создала та же команда, что и в 2017 году разработала JA3/S — пассивный метод клиент-серверного отпечатка TLS, который теперь можно найти в большинстве инструментов сетевой безопасности. Но если JA3/S пассивен, то есть он делает отпечатки клиентов и серверов во время прослушивания сетевого трафика, то JARM — это активный сканер отпечатков серверов.
10 пакетов TLS Client Hello в JARM были специально созданы для извлечения уникальных ответов на серверах TLS. JARM отправляет различные версии TLS, шифры и расширения в разном порядке для сбора уникальных ответов. Поддерживает ли сервер TLS 1.3? Будет ли он согласовывать TLS 1.3 с шифрами 1.2? Если мы упорядочим шифры от самого слабого к самому сильному, какой шифр он выберет? Это типы необычных вопросов, которые JARM по сути просит сервер извлечь самые уникальные ответы. Затем 10 ответов хэшируются для получения отпечатка JARM.
Хэш отпечатка JARM — это гибридный хеш, он использует комбинацию обратимого и необратимого алгоритма хеширования для создания 62-символьного отпечатка. Первые 30 символов состоят из шифра и версии TLS, выбранных сервером для каждого из 10 отправленных клиентских приветствий. «000» означает, что сервер отказался согласовывать это клиентское приветствие. Остальные 32 символа — это усечённый хеш SHA256 кумулятивных расширений, отправленных сервером (при этом игнорируются данные сертификата x509). При сравнении отпечатков JARM, если первые 30 символов одинаковы, а последние 32 отличаются, это будет означать, что серверы имеют очень похожие конфигурации, принимающие одинаковые версии и шифры, хотя и не совсем идентичные, учитывая, что расширения разные.
Примеры хешей JARM:
29d29d00029d29d00042d42d0000002059a3b916699461c5923779b77cf06b 29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c
Группа серверов приложений, использующих одну и ту же конфигурацию TLS, должна иметь одинаковый отпечаток JARM.
На практике у JARM обнаружилась неприятная особенность: хеш JARM для одного и того же сервера может различаться в зависимости от того, указать IP адрес данного сервера или доменное имя, которое имеет этот же IP адрес. Точнее говоря, совпадает первая половина хеша, но вторая половина различна. Возможно, в этом есть какой-то смысл, но мне его не удалось уловить.
3.4 Инструменты для снятия TLS отпечатков серверов
3.4.1 Wireshark
В настоящее время в Wireshark реализован показ JA3S хешей. Для вывода хеша JA3S и полной строки, которая использовалась для получения JA3S, вы можете использовать следующие фильтры:
tls.handshake.ja3s tls.handshake.ja3s_full
Вы также можете сделать так, чтобы Wireshark смогла показывать JA4S хеши — для этого требуется установка плагина — подробности, как это сделать, описаны здесь.
После этого вам станут доступны дополнительные фильтры Wireshark, в том числе для показа отпечатка JA4S и его полной строки:
ja4.ja4s ja4.ja4s_r
3.4.2 TShark
TShark (в некоторых дистрибутивах Linux пакет называется wireshark-cli) это консольный интерфейс Wireshark. С помощью TShark вы можете делать всё то же самое, что и с Wireshark, а если речь идёт об автоматизации, то равных TShark нет. Для получения JA4S хешей требуется установить плагин JA4+ Wireshark.
Следующая команда будет захватывать трафик и выводить хеши JA3S:
sudo tshark -Y "tls.handshake.ja3s" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s
Среди выводимых полей будут следующий:
- IP или IPv6 адрес клиента
- IP или IPv6 адрес сервера
- Хеш JA3S
Если вы не подключены к сети IPv6, то вы можете удалить следующие опции из команды:
-e ipv6.src -e ipv6.dst
Одна команда может выводить одновременно хеши JA3S и JA4S:
sudo tshark -Y "tls.handshake.ja3s" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e ja4.ja4s
Следующая команда анализирует файл с захваченным сетевым трафиком (путь до файла указывается после опции -r):
tshark -Y "tls.handshake.ja3s" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e ja4.ja4s -r /mnt/disk_d/Share/Captures/ssl_443.pcapng
Если вы хотите получить хеши JA3S и JA4S для определённого сервера, то нужно совмещать команду с одним или несколькими следующими фильтрами IP или IPv6 адреса сервера, на который отправлен запрос:
ip.src ipv6.src
Обратите внимание, что фильтры ip.src и ipv6.src означают IP адрес источника, с которого отправлен пакет. В данном случае в качестве источника пакета нужно использовать именно IP сервера и именно с фильтром «src», поскольку нас интересуют только ответные пакеты от сервера (только они содержат TLS Server Hello), но не интересуют пакеты, отправленные от клиента (поскольку в них содержится только TLS Client Hello).
Например, следующая команда покажет JA3S и JA4S отпечатки для сервера с IPv6 2604:a880:800:c1::2ae:d001:
sudo tshark -Y "tls.handshake.ja3s and ipv6.src == 2604:a880:800:c1::2ae:d001" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e ja4.ja4s
Для выводимой информации вы можете указать заголовки и выбрать другой разделитель для полей данных (по умолчанию это символ табуляции). Если выбрать в качестве разделителя запятую, то такие данные можно сохранить в файл .csv и открыть программой, поддерживающей этот формат (например, LibreOffice Calc или MS Excel).
sudo tshark -E separator=',' -E header=y -Y "tls.handshake.ja3s and ipv6.src == 2604:a880:800:c1::2ae:d001" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e ja4.ja4s > ja4s.csv
Если вы хотите увидеть полные строки, из которых вычислены JA3 и JA4 хеши, то добавьте в вашу команду следующие опции:
-e tls.handshake.ja3s_full -e ja4.ja4s_r
Например:
sudo tshark -Y "tls.handshake.ja3s and ipv6.src == 2604:a880:800:c1::2ae:d001" -T fields -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e tls.handshake.ja3s_full -e ja4.ja4s -e ja4.ja4s_r
Если вы предпочитаете формат JSON, то вместо -T fields укажите -T json, например:
sudo tshark -Y "tls.handshake.ja3s and ipv6.src == 2604:a880:800:c1::2ae:d001" -T json -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e tls.handshake.ja3s_full -e ja4.ja4s -e ja4.ja4s_r
Аналогично вывод в формате JSON можно получить при анализе файлов захвата:
tshark -Y "tls.handshake.ja3s" -T json -e ip.src -e ipv6.src -e ip.dst -e ipv6.dst -e tls.handshake.ja3s -e ja4.ja4s -r /mnt/disk_d/Share/Captures/ssl_443.pcapng
3.4.3 JA4+
Репозиторий JA4+ содержит различные файлы, среди которых имеется скрипт на Python, который извлекает JA4, JA4S, JA4H, JA4L, JA4LS, JA4X, JA4SSH, JA4T, JA4TS отпечатки из файлов PCAP.
О том, как установить этот скрипт из JA4+ смотрите здесь: https://kali.tools/?p=7356 (раздел «Установка JA4+»).
Рассмотрим несколько примеров использования ja4.py из репозитория JA4+.
Вывести все типы хешей TLS отпечатков, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/ssl_443.pcapng):
python ja4.py /mnt/disk_d/Share/Captures/ssl_443.pcapng
Пример вывода:
{'stream': 0, 'src': '127.0.0.1', 'dst': '127.0.0.1', 'srcport': '38502', 'dstport': '443', 'client_ttl': '64', 'server_ttl': '64', 'domain': 'hackware.local', 'JA4': 't13d2912h2_723694b0fccc_288f874c93d6', 'JA4S': 't130200_1302_a56c5b993250'}
Вывести все типы хешей TLS отпечатков, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/ssl_443.pcapng), в формате JSON (--json):
python ja4.py --json /mnt/disk_d/Share/Captures/ssl_443.pcapng
Пример вывода:
{ "stream": 0, "src": "127.0.0.1", "dst": "127.0.0.1", "srcport": "38502", "dstport": "443", "client_ttl": "64", "server_ttl": "64", "domain": "hackware.local", "JA4": "t13d2912h2_723694b0fccc_288f874c93d6", "JA4S": "t130200_1302_a56c5b993250" }
Вывести все типы хешей TLS отпечатков, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/ssl_443.pcapng), а также вывести сырые строки, используемые для вычисления хешей (-r), результат показать на экране в формате JSON (--json):
python ja4.py -r --json /mnt/disk_d/Share/Captures/ssl_443.pcapng
Пример вывода:
{ "stream": 0, "src": "127.0.0.1", "dst": "127.0.0.1", "srcport": "38502", "dstport": "443", "client_ttl": "64", "server_ttl": "64", "domain": "hackware.local", "JA4": "t13d2912h2_723694b0fccc_288f874c93d6", "JA4_r": "t13d2912h2_002f,0033,0035,0039,009c,009d,009e,009f,1301,1302,1303,1304,c009,c00a,c013,c014,c02b,c02c,c02f,c030,c09c,c09d,c09e,c09f,c0ac,c0ad,cca8,cca9,ccaa_0005,000a,000b,000d,0016,0017,001c,002b,0033,ff01_0401,0809,0804,0403,0807,0501,080a,0805,0503,0808,0601,080b,0806,0603,0201,0203", "JA4S": "t130200_1302_a56c5b993250", "JA4S_r": "t130200_1302_002b,0033" }
Вывести все типы хешей TLS отпечатков, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/just-test.pcapng), только для пакетов, в которых источником трафика является указанный IPv6 ( | grep "'src': '2001:fb1:138:db4b:886:db58:ee8b:a7bc'"):
python ja4.py /mnt/disk_d/Share/Captures/just-test.pcapng | grep "'src': '2001:fb1:138:db4b:886:db58:ee8b:a7bc'"
Пример вывода:
3.4.4 JA3S-JA4S-scanner
JA3S-JA4S-scanner — это утилита для активного сканирования серверов и получения их JA3S и JA4S хешей, используемых для TLS fingerprinting (идентификация по TLS свойствам).
JA3S-JA4S-scanner может делать запросы к указанному серверу используя клиенты с различными TLS отпечатками; кроме активного сканирования, эта утилита может извлекать JA3S и JA4S хеши из файла захвата.
У программы JA3S-JA4S-scanner имеются обязательные зависимости — все подробности об их установке смотрите на официальной страницы утилиты здесь: (раздел «Установка JA3S-JA4S-scanner»).
Как минимум, вам обязательно нужно установить консольную версию Wireshark, а также плагин JA4+ Wireshark. Также рекомендуется установить curl-impersonate, чтобы иметь возможность делать запросы на сервера клиентами с различными TLS отпечатками.
У JA3S-JA4S-scanner довольно много опций, также имеется многопоточный режим сканирования диапазонов IP адресов — подробности смотрите в справке программы или в карточке JA3S-JA4S-scanner.
Рассмотрим примеры использования JA3S-JA4S-scanner.
Сканировать единичный IP адрес (-i 185.117.153.79):
sudo bash ja3s-ja4s-scanner.sh -i 185.117.153.79
Пример вывода:
================================================= Results for 185.117.153.79:443 JA3S: f4febc55ea12b31ae17cfb7e614afda8 JA3S_FULL: 771,4865,43-51 JA4S: t130200_1301_a56c5b993250 JA4S_R: t130200_1301_002b,0033 =================================================
Сканировать указанный хост (-i w-e-b.site):
sudo bash ja3s-ja4s-scanner.sh -i w-e-b.site
Сканировать указанный хост (-i hackware.local) на нестандартном порту (-p 50433):
sudo bash ja3s-ja4s-scanner.sh -i hackware.local -p 50443
Сканировать указанный IPv6 адрес (-i 2001:4860:4860::8888):
sudo bash ja3s-ja4s-scanner.sh -i 2001:4860:4860::8888
Вывод:
================================================= Results for 2001:4860:4860::8888:443 JA3S: eb1d94daa7e0344597e756a1fb6e7054 JA3S_FULL: 771,4865,51-43 JA4S: t130200_1301_234ea6891581 JA4S_R: t130200_1301_0033,002b =================================================
Сканировать единичный хост (-i suip.biz) и сохранить результаты в файл (-o results.txt):
sudo bash ja3s-ja4s-scanner.sh -i suip.biz -o results.txt
Сканировать единичный хост (-i suip.biz) притворяясь веб-браузером Google Chrome (-u chrome):
sudo bash ja3s-ja4s-scanner.sh -i suip.biz -u chrome
Сканировать единичный хост (-i suip.biz) используя в качестве клиентского приложения cURL (-u curl) (обратите внимание, что значение хешей для разных клиентов может различаться):
sudo bash ja3s-ja4s-scanner.sh -i suip.biz -u curl
Сканировать подсеть IP адресов (-s 185.117.153.0/24) в 50 одновременных потоков (-m 50), без вывода результатов на экран (-q) и сохранить результаты в файл (-o results.txt):
sudo bash ja3s-ja4s-scanner.sh -s 185.117.153.0/24 -m 50 -q -o results.txt
Сканировать все цели, указанные в файле (-f targets.txt):
sudo bash ja3s-ja4s-scanner.sh -f targets.txt
Показать все хеши JA3S и JA4S для указанного сервера (-i 185.117.153.79), при этом использовать файл suip.biz.pcapng (-e suip.biz.pcapng) в качестве источника данных:
sudo bash ja3s-ja4s-scanner.sh -i 185.117.153.79 -e suip.biz.pcapng
3.4.5 JARM
JARM – это инструмент идентификации серверов Transport Layer Security (TLS), особенностью которого является активное сканирование.
Про хеш JARM уже было сказано выше. Необходимо дополнительно отметить, что хеши JARM нельзя извлечь из файлов захвата — по той причине, что JARM использует 10 специально сконструированных запросов и поэтому утилите JARM требуется онлайн сканирование.
К плюсам JARM относится то, что данный хеш не зависит от запроса клиента — то есть один сервер (или сервера с идентичными настройками) должны выдавать одинаковые TLS отпечатки.
Просканировать хост w-e-b.site на стандартном порту и вывести результаты на экран:
python jarm.py w-e-b.site
Пример вывода:
Domain: w-e-b.site Resolved IP: 157.245.118.66 JARM: 29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c
Просканировать IP 185.117.153.79 на стандартном порту и вывести результаты на экран:
python jarm.py 185.117.153.79
Пример вывода:
Domain: 185.117.153.79 Resolved IP: 185.117.153.79 JARM: 29d2ad00029d29d00042d43d000000ad9bf51cc3f5a1e29eecb81d0c7b06eb
Просканировать хост hackware.local на порту 50443 и вывести результаты на экран:
python jarm.py hackware.local -p 50443
Просканировать хост suip.biz и кроме финального хеша вывести собранные данные, используемые для получения хеша:
python jarm.py suip.biz -v
Пример вывода:
Domain: suip.biz Resolved IP: 185.117.153.79 JARM: 29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c Scan 1: c02f|0303||ff01-0000-0001-000b-0023-0017, Scan 2: c030|0303||ff01-0000-0001-000b-0023-0017, Scan 3: |||, Scan 4: c02f|0303||ff01-0000-0001-000b-0023-0017, Scan 5: c02f|0303||ff01-0000-0001-000b-0023-0017, Scan 6: |||, Scan 7: 1302|0303||002b-0033, Scan 8: 1303|0303||002b-0033, Scan 9: |||, Scan 10: |||
Просканировать все цели из файла targets.txt и вывести результаты на экран:
python jarm.py -i targets.txt
Пример содержимого файла targets.txt:
hackware.ru kali.tools suip.biz suip.biz,443 157.245.118.66 157.245.118.66,443 w-e-b.site t.me google.com youtube.com hackware.local,50443
Просканировать все цели из файла targets.txt и сохранить результаты в файл в формате CSV (-o results.csv):
python jarm.py -i targets.txt -o results.csv
Пример содержимого файла results.csv:
cat results.csv hackware.ru,185.26.122.82,29d29d00029d29d00042d42d0000002059a3b916699461c5923779b77cf06b kali.tools,185.26.122.59,29d29d00029d29d00042d42d0000002059a3b916699461c5923779b77cf06b suip.biz,185.117.153.79,29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c suip.biz,185.117.153.79,29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c 157.245.118.66,157.245.118.66,29d2ad00029d29d00042d43d000000ad9bf51cc3f5a1e29eecb81d0c7b06eb 157.245.118.66,157.245.118.66,29d2ad00029d29d00042d43d000000ad9bf51cc3f5a1e29eecb81d0c7b06eb w-e-b.site,157.245.118.66,29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c t.me,149.154.167.99,29d29d15d29d29d00042d42d0000005fd00fabd213a5ac89229012f70afd5c google.com,142.251.223.78,27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d youtube.com,172.217.26.78,27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d hackware.local,127.0.0.1,07d19d1ad21d21d07c42d43d000000112e88add4281e6a02c1102a6e18e86a
Просканировать все цели из файла targets.txt и сохранить результаты в файл (-o results.json) в формате JSON (-j):
python jarm.py -i targets.txt -o results.json -j
3.4.6 Онлайн сервис для показа JA3S и JA4S отпечатков
Бесплатный онлайн сервис сканирования TLS отпечатков серверов (сканер JA3S и JA4S): https://suip.biz/ru/?act=server-tls-fingerprinting
Зеркало: https://w-e-b.site/?act=server-tls-fingerprinting
Данный сервис покажет JA3S и JA4S отпечатки просканированного сервера.
Вам достаточно указать IP или IPv6 адрес, либо домен и очень быстро вам будут показаны TLS отпечатки этого сервера. Если вы хотите выполнить сканирование на нестандартном порту, то вы также можете указать порт с HTTPS, для которого вы хотите выполнить TLS Fingerprinting.
Примечание: если вам нужно просканировать IPv6 адрес, то используйте зеркало на w-e-b.site, поскольку в настоящее время suip.biz отключён от IPv6 сети (по независящим от меня причинам — мне это тоже очень не нравится, задумываюсь о переезде).
3.4.7 Онлайн сервис для сканирования JARM отпечатков
Бесплатный онлайн сканер JARM хеша для TLS fingerprinting: https://suip.biz/ru/?act=jarm
Зеркало: https://w-e-b.site/?act=jarm
Данный онлайн сервис покажет отпечатки JARM для серверов — вы можете указать IP адрес или доменное имя.
Если служба HTTPS запущена на нестандартном порту, то вы всё равно можете выполнить TLS Fingerprinting — для этого дополнительно укажите порт, который нужно просканировать для получения JARM отпечатка.
3.5 TLS fingerprinting протокола QUIC для серверов
QUIC (сокр. от англ. Quick UDP Internet Connections; произносится quick) — интернет-протокол, разработанный Google в конце 2012 года.
QUIC позволяет мультиплексировать несколько потоков данных между двумя компьютерами, работая поверх протокола UDP, и содержит возможности шифрования, эквивалентные TLS и SSL. Имеет более низкую задержку соединения и передачи, чем TCP. Хорошо переносит потерю части пакетов путём выравнивания границ криптографических блоков по границам пакетов. В протокол заложена возможность прямой (упреждающей) коррекции ошибок на уровне пакетов, но на практике она отключена.
Смотрите также:
TLS fingerprinting серверов - хеш JA3S для протокола QUIC:
tls.handshake.ja3s && quic
TLS fingerprinting серверов - хеш JA4S для протокола QUIC:
ja4.ja4s && quic
Хеши JA3S и JA4S протокола TLS без QUIC
tls.handshake.ja3s && ! quic ja4.ja4s && ! quic
3.6 Базы данных хешей JA3, JA3N и JA4
Серверное ПО | Сайт | JA3S | JA3S_FULL | JA4S | JA4S_R | JARM |
---|---|---|---|---|---|---|
Cloudflare | 9ebc57def2efb523f25c77af13aa6d48 | 771,49195,0-23-65281-11-35-16-5 | t1207h2_c02b_d0d4e4171d74 | t1207h2_c02b_0017,ff01,000b,0023,0005 | 27d40d40d00040d1dc27d40d27d40d5fb4c89fe3813d172ffb53f84a68f750 | |
Hitch - scalable TLS proxy and:
|
suip.biz w-e-b.site |
f4febc55ea12b31ae17cfb7e614afda8 | 771,4865,43-51 | t130200_1301_a56c5b993250 | t130200_1301_002b,0033 |
29d2ad00029d29d00042d43d00000051af7d8070a18e002eaaedf620fa118c 29d2ad00029d29d00042d43d000000ad9bf51cc3f5a1e29eecb81d0c7b06eb |
Apache/2.4.62 (Debian) | f4febc55ea12b31ae17cfb7e614afda8 | 771,4865,43-51 | t130200_1301_a56c5b993250 | t130200_1301_002b,0033 |
07d19d1ad21d21d07c42d43d000000112e88add4281e6a02c1102a6e18e86a 07d19d1ad21d21d07c42d43d0000008b344ab0cd56e121a8185dc3054afa3b |
|
google.com / 172.217.26.78 | eb1d94daa7e0344597e756a1fb6e7054 | 771,4865,51-43 | t130200_1301_234ea6891581 | t130200_1301_0033,002b | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d | |
youtube.com / 142.251.10.136 | eb1d94daa7e0344597e756a1fb6e7054 | 771,4865,51-43 | t130200_1301_234ea6891581 | t130200_1301_0033,002b | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d | |
Постепенно заполняю таблицу — если у вас есть интересные идеи по добавлению ПО и сайтов, то пишите их в комментариях.
Связанные статьи:
- TLS fingerprinting: методы идентификации клиентского и серверного программного обеспечения (82.9%)
- TLS fingerprinting клиентов: типы хешей, утилиты для показа TLS отпечатков клиентов (76.5%)
- Поиск и брут-форс служб на нестандартных портах (51.5%)
- Исследование периметра партнёрки по установке Adware (КЕЙС) (51.4%)
- Трассировка сетевого маршрута (51%)
- Как ускорить сканирование большого количества сайтов. Ч. 1: Interlace для многопоточного сканирования веб-приложений (RANDOM - 0.5%)