JA4+
Описание JA4+
JA4+ – это набор стандартов сетевых отпечатков пальцев, а также утилит и плагинов для их вычисления.
JA4+ – это набор методов сетевых отпечатков пальцев, которые просты в использовании и которыми легко делиться. Эти методы легки для восприятия как человеком, так и машиной, что способствует более эффективному поиску и анализу угроз. Варианты использования этих отпечатков пальцев включают сканирование на наличие субъектов угроз, обнаружение вредоносных программ, предотвращение перехвата сеанса, автоматизацию соответствия, отслеживание местоположения, обнаружение DDoS, группировку субъектов угроз, обнаружение обратного шелл-трафика и многое другое.
Этот репозиторий включает код для вычисления JA4+ на Python, Rust, Zeek и C в качестве плагина Wireshark.
Данная страница посвящена скрипту на Python (ja4.py), который извлекает JA4, JA4S, JA4H, JA4L, JA4LS, JA4X, JA4SSH, JA4T, JA4TS отпечатки из файлов PCAP. Для работы ja4.py требуется TShark.
Домашняя страница:
Автор: John Althouse
Лицензия: BSD 3-Clause, FoxIO License 1.1
Справка по JA4+
ja4.py
Использование:
ja4.py [-h] [-key KEY] [-v] [-J] [--ja4] [--ja4s] [--ja4l] [--ja4h] [--ja4x] [--ja4ssh] [-r] [-o] [-f [OUTPUT]] [-s [STREAM]] pcap
Опции:
Позиционные аргументы: pcap Файл pcap для обработки Опции: -h, --help показать справку и выйти -key КЛЮЧ Файл ключей для использовании в расшифровке -v, --verbose Подробный режим -J, --json Вывод JSON --ja4, --ja4 Выводить только отпечатки JA4 --ja4s, --ja4s Выводить только отпечатки JA4S --ja4l, --ja4l Выводить только отпечатки JA4L-C/S --ja4h, --ja4h Выводить только отпечатки JA4H --ja4x, --ja4x Выводить только отпечатки JA4X --ja4ssh, --ja4ssh Выводить только отпечатки JA4SSH -r, --raw_fingerprint Выводить полный строки отпечатков до хеширования -o, --original_rendering Вывести хеш JA4_O (отличается отсутствием сортировки шифров) -f ФАЙЛ, --output ФАЙЛ Отправить вывод в ФАЙЛ -s НОМЕР, --stream НОМЕР Исследовать только отдельный поток с указанным НОМЕРОМ
Руководство по JA4+
Страница man отсутствует.
Подробности о JA4+
JA4+ – это набор простых, но мощных сетевых отпечатков для нескольких протоколов, которые могут быть прочитаны как человеком, так и машиной, что облегчает улучшенный поиск угроз и анализ безопасности.
Все отпечатки JA4+ имеют формат a_b_c, разграничивающий различные разделы, составляющие отпечаток. Это позволяет выполнять поиск и обнаружение, используя только ab, ac или c части отпечатка. Если кто-то хочет просто выполнить анализ входящих файлов cookie в своё приложение, он будет рассматривать только JA4H_c. Этот новый формат в котором разные части отпечатка имеют различный смысл и могут быть проанализированы по отдельности в зависимости от поставленных целей. Это обеспечивает более глубокий и содержательный анализ, при этом концепция в целом остаётся простой, удобной в использовании и допускающей расширяемость.
Текущие методы и подробности реализации:
Полное имя | Краткое имя | Описание |
---|---|---|
JA4 | JA4 | TLS отпечатки клиента |
JA4Server | JA4S | TLS отпечатки сервера / Отпечатки сеанса |
JA4HTTP | JA4H | HTTP отпечатки клиента |
JA4Latency | JA4L | Измерение задержки между клиентом и сервером / Расстояние |
JA4LatencyServer | JA4LS | Измерение задержки между сервером и клиентом / Расстояние |
JA4X509 | JA4X | Отпечатки сертификата TLS X509 |
JA4SSH | JA4SSH | Отпечатки SSH-трафика |
JA4TCP | JA4T | TCP отпечатки клиента |
JA4TCPServer | JA4TS | TCP отпечатки ответа сервера |
Больше технических подробностей о вычислении хешей также смотрите по следующим ссылкам:
- https://github.com/FoxIO-LLC/ja4/blob/main/technical_details/README.md
- https://github.com/FoxIO-LLC/ja4/blob/main/technical_details/JA4.md
- https://github.com/FoxIO-LLC/ja4/blob/main/technical_details/JA4H.md
Примеры запуска 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'}
Вывести только JA4 хеши, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/ssl_443.pcapng):
python ja4.py --ja4 /mnt/disk_d/Share/Captures/ssl_443.pcapng
Пример вывода:
{'stream': 0, 'src': '127.0.0.1', 'dst': '127.0.0.1', 'srcport': '38502', 'dstport': '443', 'timestamp': '2024-10-07T11:40:18.480878482Z', 'client_ttl': '64', 'server_ttl': '64', 'domain': 'hackware.local', 'JA4': 't13d2912h2_723694b0fccc_288f874c93d6'}
Вывести все типы хешей 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'"
Вывести все типы хешей TLS отпечатков, обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/just-test.pcapng), только для пакетов, в которых целевым доменом является suip.biz ( | grep "'domain': 'suip.biz'"):
python ja4.py /mnt/disk_d/Share/Captures/just-test.pcapng | grep "'domain': 'suip.biz'"
Вывести только хеши JA4S обнаруженные в файле захвата трафика (/mnt/disk_d/Share/Captures/just-test.pcapng), только для пакетов, в которых пунктом назначения является указанный IPv6 ( | grep "'dst': '2604:a880:800:c1::2ae:d001'"):
python ja4.py --ja4s /mnt/disk_d/Share/Captures/just-test.pcapng | grep "'dst': '2604:a880:800:c1::2ae:d001'"
Вывести только отпечатки сертификата TLS X509 (JA4X) (--ja4x):
python ja4.py --ja4x /mnt/disk_d/Share/Captures/just-test.pcapng
Установка JA4+
Установка в Kali Linux
sudo apt install tshark git clone https://github.com/FoxIO-LLC/ja4 cd ja4/python/ python ja4.py -h
Установка в BlackArch
sudo pacman -S wireshark-cli git clone https://github.com/FoxIO-LLC/ja4 cd ja4/python/ python ja4.py -h
Установка в Windows
1. Установите Python используя установщик Windows: https://www.python.org/downloads/windows/
Если вам нужны подсказки, то смотрите инструкцию: Как установить Python и PIP на Windows. Настройка Python в качестве модуля веб-сервера
2. Установите Wireshark для Windows: https://www.wireshark.org/download.html
В результате у вас будут установлены Wireshark с графическим интерфейсом и Wireshark с консольным интерфейсом (файл tshark.exe), которая нам и нужна.
3. Найдите путь до файла tshark.exe, например:
C:\Program Files\Wireshark\thsark.exe
4. Добавьте путь до tshark в вашу переменную окружения "PATH" в Windows. Это важно для корректной работы pyshark. Обратите внимание, что в переменную окружения "PATH" добавлять нужно добавлять папку, в которой находится файл thsark.exe (а не сам файл).
Для добавления в переменную окружения "PATH":
4.1) Нажмите кнопку Пуск, начните набирать «Изменение системных переменных среды» и откройте соответствующее окно настроек.
4.2) Там нажмите «Переменные среды».
4.3) В окне «Системные переменные» найдите и кликните на Path, потом нажмите «Изменить».
4.4) Далее «Создать»
4.5) И впишите туда ваше путь до файла thsark.exe, например «C:\Program Files\Wireshark\».
4.6) Поднимите запись в самый вверх.
4.7) Закройте все окна с сохранением сделанных изменений.
5. Скачайте и распакуйте файлы JA4+: https://github.com/FoxIO-LLC/ja4/archive/refs/heads/main.zip -OutFile main.zip
Откройте терминал и перейдите в нём в папку ja4-main\python:
Set-Location .\ja4-main\python\
Запустите скрипт:
python3 ja4.py -h
Вы можете выполнить эти действия (скачать и распаковать архив с программой, а также перейти в папку со скриптами Python) не выходя за пределы Терминала:
Invoke-WebRequest https://github.com/FoxIO-LLC/ja4/archive/refs/heads/main.zip -OutFile main.zip Expand-Archive main.zip Set-Location .\main\ja4-main\python\ python3 ja4.py -h
Скриншоты JA4+
Инструкции по JA4+
- TLS fingerprinting: методы идентификации клиентского и серверного программного обеспечения
- TLS fingerprinting клиентов: типы хешей, утилиты для показа TLS отпечатков клиентов
- TLS fingerprinting серверов (хеш JA4S)
- Бесплатный онлайн сервис сканирования TLS отпечатков серверов (сканер JA3S и JA4S): https://suip.biz/ru/?act=server-tls-fingerprinting (в настоящее время сервер отключён от IPv6)
- И ещё один сканер JA3S и JA4S с поддержкой IPv6: https://w-e-b.site/?act=server-tls-fingerprinting
- Бесплатный онлайн сервис сканирования TLS отпечатков клиентских приложений (сканер JA3 и JA4): https://suip.biz/ru/?act=client-tls-fingerprinting
- Онлайн сканер JA3 и JA4 (зеркало): https://w-e-b.site/?act=client-tls-fingerprinting
У этого онлайн сервиса имеется вариант для консольных утилит, его адрес https://suip.biz/?act=ja4, пример использования:
curl -A 'Chrome' 'https://suip.biz/?act=ja4'
Comments are Closed