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 отпечатки ответа сервера

Больше технических подробностей о вычислении хешей также смотрите по следующим ссылкам:

Примеры запуска 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+

У этого онлайн сервиса имеется вариант для консольных утилит, его адрес https://suip.biz/?act=ja4, пример использования:

curl -A 'Chrome' 'https://suip.biz/?act=ja4'

Близкие программы:

  • TShark (93.9%)
  • JA3-JA4-scanner (63.4%)
  • JARM (60.7%)
  • JA3S-JA4S-scanner (60.7%)
  • Bypass firewalls by abusing DNS history (54.2%)
  • dnmap (RANDOM - 50%)
  • Рекомендуется Вам:

    Comments are Closed