JA3S-JA4S-scanner
Описание JA3S-JA4S-scanner
JA3S-JA4S-scanner — это утилита для активного сканирования серверов и получения их JA3S и JA4S хешей, используемых для TLS fingerprinting (идентификация по TLS свойствам).
В дополнении к JA3S и JA4S хешам утилита выводит полные строки, используемые для хеширования (соответственно JA3S_FULL и JA4S_R). Эти данные могут использоваться для наглядного изучения, что именно поменялось в ответе сервера.
Для сканирования вы можете указать IP или имя хоста (домен).
Утилита может сканировать единичные хосты, подсети IP адресов, а также цели из указанного файла (IP или хосты).
По умолчанию сканирование выполняется на 443 порту, но вы можете изменить его опцией.
По умолчанию утилита выводит результаты сканирования на экран, но вы можете также сохранить результаты сканирования в файл.
При сканировании подсетей, используется многопоточность — количество потоков вы можете выбрать исходя из ресурсов вашего компьютера.
JA3S-JA4S-scanner может извлекать хеши JA3S и JA4S из имеющихся файлов захвата.
Зависимости:
- Требуются: TShark (консольный вариант Wireshark), curl, awk, sed (последние 3 по умолчанию должны присутствовать во все дистрибутивах Linux)
- Требуется: плагин JA4+ Wireshark (https://github.com/FoxIO-LLC/ja4/tree/main/wireshark/binaries/linux). Этот плагин используется для получения JA4S и JA4S_R. Без этого плагина утилита способна выводить только хеш JA3S и полную строку JA3S_FULL.
- Требуется только для сканирования подсетей: Interlace (https://github.com/codingo/Interlace)
- Требуется только если вы хотите выполнять запросы на сервера не только утилитой cURL, но и притворяясь веб-браузерами (например, Google Chrome): curl-impersonate (https://github.com/lwthiker/curl-impersonate). Утилита curl-impersonate имитирует TLS отпечатки реального веб-браузера.
Домашняя страница: https://kali.tools/?p=7333
Автор: Alexey Miloserdov
Лицензия: GPLv3
Справка по JA3S-JA4S-scanner
Использование:
sudo bash ja3s-ja4s-scanner.sh [OPTIONS]
Необходимо указать одну из следующих опций: -i или -f или -s.
Опции:
-h | --help Показать справку и выйти -i ХОСТ | --ip ХОСТ Цель для сканирования – может быть IP адресом или именем хоста. -p ПОРТ | --port ПОРТ Порт для сканирования. По умолчанию: 443 -f ФАЙЛ | --file ФАЙЛ Путь до файла с целями, которые могут быть IP адресами или именами хостов (в формате ХОСТ:ПОРТ) -o ФАЙЛ | --output ФАЙЛ Сохранить результаты сканирования в указанный файл -s ПОДСЕТЬ | --subnet ПОДСЕТЬ Подсеть IP адресов -t СЕКУНДЫ | --timeout СЕКУНДЫ Таймаут в секундах -q | --quiet Тихий режим — используется только для -s. -m ПОТОКИ | --threads ПОТОКИ Количество потоков — используется только для -s. По умолчанию: 50 -b | --black Чёрно-белый вывод (включён по умолчанию при выводе в файл) -e FILE | --extract FILE Извлечь хеши JA3S и JA4S из указанного файла. Требует опцию -i с указанием целевого сервера. -u | --useragent Притвориться веб-браузером. Доступны: curl, chrome, ff, safari, edge, android. Если установлен curl-impersonate, то по умолчанию используется: 'chrome', в противном случае 'curl'
Руководство по JA3S-JA4S-scanner
Страница man отсутствует.
Одна (любая) из опций -i или -f или -s является обязательной. Каждая опция является взаимоисключающей для других.
Хост может быть указан как доменное имя или как IP адрес. IPv6 адреса также поддерживаются при одиночном сканировании и при сканировании целей из файла.
Если на целевом сервере на указанном порту не прослушиваются входящие соединения, либо если имя хоста указано неправильно (его невозможно разрешить в IP адрес), то будет выведено сообщение об ошибке:
Failed to connect to the target server
В других проблемных случаях (например, недействительный TLS сертификат) программа всё равно пытается выполнить подключение и получить JA3S/JA4S хеши.
По умолчанию сканируется порт 443. Если вы хотите указать другой порт, то сделайте это с помощью опции -p.
С помощью опции -f можно указать путь до целей в файле. Каждая цель должна быть на новой строке. Для каждой цели можно указать свой порт для сканирования в формате ХОСТ:ПОРТ. Если порт является стандартным, то его указывать необязательно. Обратите внимание, что для этого режима НЕ требуется Interlace (которая требуется для режима -s), но при этом сканирование происходит не быстро.
По умолчанию результаты сканирования выводятся на экран. Если вы хотите сохранить результаты в файл, то укажите путь до файла с помощью опции -o. Безопасно использовать при нескольких последовательных сканированиях, поскольку файл всегда дописывается с сохранением прежнего содержимого.
Опция -t устанавливает таймаут — время, в течении которого скрипт ожидает получение JA3S и JA4S хешей. Таймауты по умолчанию уже установлены в скрипте, при желании вы можете поменять их с помощью опции -t.
Опция -b включает чёрно-белый вывод (включён по умолчанию при выводе в файл). В этом случае не используются цвета для выделения хешей.
Если у вас уже имеется файл с захваченным сетевым трафиком, то вы можете извлечь из него JA3S и JA4S хеши. Для этого укажите путь до файла после опции -e. Поддерживаются все многочисленные форматы файлов захвата, с которыми умеет работать Wireshark. Также требуется указать опцию -i с целевым сервером. Обратите внимание, что опция -e извлекает все доступные хеши в файле захвата для указанной цели. Хеши могут различаться, например, JA3S/JA4S хеш первого соединения и хеш повторных соединений зачастую различаются как для серверов, так и для клиентов.
С помощью опции -s можно указать подсеть IP адресов для сканирования — поддерживаются те же нотации, что и в Interlace (все популярные способы записи диапазонов IP адресов). В этом случае запускается многопоточное сканирование.
Опции, которые действуют только при многопоточном сканировании (при указании подсети с опцией -s):
- опция -q включает тихий режим. Подавляет большую часть вывода, в том числе не выводятся результаты сканирования. Чтобы получить результаты, сохраните их в файл с помощью опции -o.
- опция -m ПОТОКИ устанавливает количество потоков. Указывает сколько одновременных сканирований запустить при сканировании подсетей. По умолчанию: 50. Вы можете увеличить или уменьшить это количество в зависимости от ресурсов (оперативная память и производительность центрального процессора) вашего компьютера.
Примеры запуска JA3S-JA4S-scanner
Сканировать единичный IP адрес (-i 185.117.153.79):
sudo bash ja3s-ja4s-scanner.sh -i 185.117.153.79
Сканировать указанный хост (-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 2604:a880:800:c1::2ae:d001):
sudo bash ja3s-ja4s-scanner.sh -i 2604:a880:800:c1::2ae:d001
Сканировать указанный IPv6 адрес (-i 2001:4860:4860::8888) (поддерживается сокращённая нотация):
sudo bash ja3s-ja4s-scanner.sh -i 2001:4860:4860::8888
Сканировать единичный хост (-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
Установка JA3S-JA4S-scanner
Установка в Kali Linux
1. Установка консольной версии Wireshark — обязательно.
sudo apt install tshark
2. Установка плагина JA4+ Wireshark — обязательно, иначе не будут вычисляться хеши JA4S.
Бинарные версии файла плагина размещены по адресу https://github.com/FoxIO-LLC/ja4/tree/main/wireshark/binaries/linux
Примечание: исходный код и инструкция по сборки там также имеется — для желающих скомпилировать файл плагина из исходного кода.
Там вы можете выбрать подходящий под вашу версию Wireshark плагин.
После его скачивания переместите файл в папку с плагинами Wireshark. В настоящее время это /usr/lib/x86_64-linux-gnu/wireshark/plugins/4.4/epan.
Для версий Wireshark 4.4.* вы можете использовать следующие команды для скачивания и копирования файла в нужную папку:
wget https://github.com/FoxIO-LLC/ja4/raw/refs/heads/main/wireshark/binaries/linux/4.4.0/ja4.so sudo cp ja4.so /usr/lib/x86_64-linux-gnu/wireshark/plugins/4.4/epan
3. Установка Interlace — опционально, только если вы планируете использовать пакетный режим и сканировать подсети IP адресов.
git clone https://github.com/codingo/Interlace cd Interlace/ sudo python3 setup.py install
4. Установка curl-impersonate — опционально, только если вы хотите сканировать серверы притворяясь различными веб-браузерами.
sudo apt install libnss3 nss-plugin-pem ca-certificates wget -O curl-impersonate.tar.gz https://github.com/lwthiker/curl-impersonate/releases/download/v0.6.1/curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz mkdir curl-impersonate tar xvzf curl-impersonate.tar.gz -C curl-impersonate sudo mv curl-impersonate/* /usr/local/bin/ rm -rf curl-impersonate.tar.gz curl-impersonate curl_chrome116 -h
5. Теперь, после скачивания и установки всех зависимостей, скачайте скрипт JA3S-JA4S-scanner:
wget https://kali.tools/files/scripts/ja3s-ja4s-scanner.sh
Установка в BlackArch
1. Установка консольной версии Wireshark — обязательно.
sudo pacman -S wireshark-cli
2. Установка плагина JA4+ Wireshark — обязательно, иначе не будут вычисляться хеши JA4S.
Бинарные версии файла плагина размещены по адресу https://github.com/FoxIO-LLC/ja4/tree/main/wireshark/binaries/linux
Примечание: исходный код и инструкция по сборки там также имеется — для желающих скомпилировать файл плагина из исходного кода.
Там вы можете выбрать подходящий под вашу версию Wireshark плагин.
После его скачивания переместите файл в папку с плагинами Wireshark. В настоящее время это /usr/lib/wireshark/plugins/4.4/epan.
Для версий Wireshark 4.4.* вы можете использовать следующие команды для скачивания и копирования файла в нужную папку:
wget https://github.com/FoxIO-LLC/ja4/raw/refs/heads/main/wireshark/binaries/linux/4.4.0/ja4.so sudo cp ja4.so /usr/lib/wireshark/plugins/4.4/epan
3. Установка Interlace — опционально, только если вы планируете использовать пакетный режим и сканировать подсети IP адресов.
sudo pacman -S interlace
4. Установка curl-impersonate — опционально, только если вы хотите сканировать серверы притворяясь различными веб-браузерами.
sudo pacman -S nss ca-certificates wget -O curl-impersonate.tar.gz https://github.com/lwthiker/curl-impersonate/releases/download/v0.6.1/curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz mkdir curl-impersonate tar xvzf curl-impersonate.tar.gz -C curl-impersonate sudo mv curl-impersonate/* /usr/local/bin/ rm -rf curl-impersonate.tar.gz curl-impersonate curl_chrome116 -h
5. Теперь, после скачивания и установки всех зависимостей, скачайте скрипт JA3S-JA4S-scanner:
wget https://kali.tools/files/scripts/ja3s-ja4s-scanner.sh
Скриншоты JA3S-JA4S-scanner
Инструкции по JA3S-JA4S-scanner
- TLS fingerprinting: методы идентификации клиентского и серверного программного обеспечения
- TLS fingerprinting клиентов: типы хешей, утилиты для показа TLS отпечатков клиентов
- Бесплатный онлайн сервис сканирования TLS отпечатков серверов (сканер JA3S и JA4S): https://suip.biz/ru/?act=server-tls-fingerprinting (в настоящее время сервер отключён от IPv6)
- И ещё один сканер JA3S и JA4S с поддержкой IPv6: https://w-e-b.site/?act=server-tls-fingerprinting
Comments are Closed