Перейти до вмісту
Глоссарий 4 хв читання 33 переглядів

Відбиток JA3

Дослідіть відбитки JA3: як вони працюють для ідентифікації конфігурацій TLS-клієнтів та виявлення проксі-з'єднань. Ключовий аспект сучасної безпеки.

Безопасность
Відбиток JA3

Відбиток JA3 – це MD5-хеш, отриманий з певних полів у повідомленні TLS Client Hello, який використовується для унікальної ідентифікації клієнтської програми або бібліотеки, що ініціює TLS-з'єднання, таким чином слугуючи надійним методом для зняття відбитків TLS-клієнтів та виявлення проксі.

Розуміння зняття відбитків TLS-клієнтів

Коли клієнт ініціює TLS-рукостискання, він надсилає повідомлення Client Hello, що містить різні параметри, необхідні для встановлення безпечного з'єднання. Ці параметри включають версію TLS, список підтримуваних наборів шифрів, розширення, еліптичні криві та формати еліптичних кривих. Конкретна комбінація та порядок цих параметрів часто є унікальними для певної клієнтської програми, операційної системи та бібліотеки TLS. Цей відмінний підпис дозволяє ідентифікувати клієнта, навіть якщо інша ідентифікаційна інформація (наприклад, рядки user-agent) змінена або відсутня.

Що таке відбиток JA3?

Розроблений Salesforce, JA3 – це метод для створення стандартизованого відбитка повідомлення Client Hello. Він зосереджується на п'яти ключових полях з Client Hello:

  1. Версія TLS: Найвища версія TLS, яку підтримує клієнт.
  2. Набори шифрів: Список підтримуваних клієнтом наборів шифрів, розділених комами, відсортований за перевагою.
  3. Розширення TLS: Список розширень TLS, які включає клієнт, розділених комами, відсортований за типом.
  4. Еліптичні криві: Список підтримуваних еліптичних кривих, розділених комами.
  5. Формати еліптичних кривих: Список підтримуваних форматів еліптичних кривих, розділених комами.

Ці п'ять значень об'єднуються в один рядок, використовуючи "," як роздільник для списків і "-" як роздільник між п'ятьма основними полями. Цей об'єднаний рядок потім хешується за допомогою MD5 для отримання остаточного 32-символьного відбитка JA3. Використання MD5 призначене для стислості та послідовності, а не для криптографічної безпеки.

Приклад розрахунку JA3

Розглянемо гіпотетичний Client Hello з наступними параметрами:

  • Версія TLS: 0x0303 (TLS 1.2)
  • Шифри: 0xc02c,0xc02b,0xc030,0xc02f,0x009c,0x0095
  • Розширення: 0x0000,0x000b,0x000a,0x0012,0x0023,0x0017,0x0010,0x0035,0xff01,0x000d,0x0005
  • Еліптичні криві: 0x001d,0x0023,0x0024
  • Формати еліптичних кривих: 0x0000,0x0001,0x0002

Об'єднаний рядок буде:
769,49164-49163-49168-49167-156-149,0-11-10-18-35-23-16-53-65281-13-5,29-35-36,0-1-2

MD5-хеш цього рядка буде відбитком JA3, наприклад, e66a3d11b302c086d0b604e769494441.

JA3 у виявленні проксі

Проксі, особливо прямі проксі та ті, що виконують перехоплення TLS, часто модифікують або розривають та повторно ініціюють TLS-з'єднання. Цей процес неминуче змінює повідомлення Client Hello, що призводить до відбитка JA3, який відрізняється від відбитка оригінального клієнта.

Як проксі впливають на відбитки JA3

  • Прямі проксі (HTTPS): Коли клієнт підключається до HTTPS-проксі, проксі встановлює нове TLS-з'єднання з цільовим сервером. Повідомлення Client Hello, яке спостерігається цільовим сервером, походить від програмного забезпечення проксі, а не від кінцевого клієнта. Отже, відбиток JA3 відображає TLS-стек проксі (наприклад, Squid, Nginx, HAProxy або власне програмне забезпечення проксі), а не фактичний браузер або програму, що використовується кінцевим користувачем. Ця розбіжність є сильним показником використання проксі.

  • Проксі для перехоплення TLS (MITM): Ці проксі явно розривають TLS-з'єднання від клієнта та встановлюють нове, окреме TLS-з'єднання з цільовим сервером. Це поширено в корпоративних середовищах для перевірки або зловмисниками. Повідомлення Client Hello, надіслане цільовому сервером, генерується проксі-сервером перехоплення, що призводить до відбитка JA3, характерного для програмного забезпечення перехоплення.

  • SOCKS-проксі: SOCKS-проксі можуть працювати на нижчому рівні, тунелюючи необроблені TCP-з'єднання. Якщо SOCKS-проксі просто пересилає TCP-потік без зміни TLS-рукостискання, оригінальне Client Hello від клієнта може пройти без змін, і відбиток JA3 залишиться тим самим. Однак багато реалізацій SOCKS або специфічні конфігурації все ще можуть розривати та повторно ініціювати TLS або змінювати інформацію заголовків, що призводить до зміни JA3.

Ідентифікація проксі за допомогою JA3

Аналізуючи вхідні повідомлення Client Hello, сервер може:

  1. Виявляти розбіжності: Порівняти відбиток JA3 з іншими індикаторами клієнта, такими як заголовок User-Agent. User-Agent, що стверджує, що це Chrome на Windows, але представляє відбиток JA3, відомий як такий, що належить проксі-серверу або певній бібліотеці для скрапінгу, вказує на використання проксі або спуфінг.
  2. Категоризувати трафік: Ідентифікувати трафік, що походить від відомих проксі-сервісів, центрів обробки даних або ботнетів, які використовують послідовні TLS-стеки.
  3. Блокувати/обмежувати: Впроваджувати політики для блокування або обмеження з'єднань від певних відбитків JA3, пов'язаних з небажаним трафіком (наприклад, скрапери, боти або скомпрометовані системи).

JA3 проти JA3S

У той час як JA3 знімає відбиток Client Hello клієнта, JA3S (JA3 Server) знімає відбиток повідомлення Server Hello сервера. JA3S зосереджується на версії TLS, наборі шифрів та розширеннях з Server Hello. Хоча це корисно для ідентифікації реалізацій TLS на стороні сервера, це менш безпосередньо застосовно для виявлення клієнтських проксі.

Обмеження та методи ухилення

Хоча зняття відбитків JA3 є потужним, воно не є безпомилковим:

  • Підробка (Spoofing): Складні клієнти, боти або проксі-сервіси можуть бути налаштовані на навмисне імітування конкретних відбитків JA3, ефективно підробляючи легітимний браузер. Це вимагає контролю над параметрами Client Hello бібліотеки TLS.
  • Оновлення бібліотек TLS: Оновлення бібліотек TLS (наприклад, OpenSSL, NSS, BoringSSL) або операційних систем можуть змінити параметри Client Hello, змінюючи відбиток JA3 для в іншому випадку ідентичного клієнта. Це вимагає постійного моніторингу та оновлення баз даних підписів JA3.
  • Різноманітність бібліотек: Різні клієнтські HTTP-бібліотеки (наприклад, requests Python, net/http Go, https Node.js) та їхні базові реалізації TLS (наприклад, OpenSSL, GnuTLS, BoringSSL, crypto/tls Go) природно створюватимуть різні відбитки JA3.

Типові варіації відбитків JA3

| Client Type | Typical JA3 Characteristics JA3 is a powerful tool for identifying and detecting various types of client traffic, particularly within the context of proxy services and bot detection. Knowing how to interpret and mitigate JA3 fingerprints is crucial for both proxy providers and consumers.

Оновлено: 04.03.2026
Назад до категорії

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.