Сучасні антифрод-системи використовують різноманітні методи для ідентифікації користувачів. Однією з ключових технологій стала робота з мережевими відбитками, які дають змогу розпізнавати пристрої та їхні характеристики на рівні мережевого з'єднання. Цей підхід включає такі інструменти, як p0f, JA3, JA4, JARM, і аналіз параметрів TLS/SSL з'єднань. #### Історія створення та призначення мережевих відбитків ###### p0f Інструмент p0f був створений для пасивного аналізу мережевого трафіку і визначення операційних систем, конфігурацій і характеристик пристроїв без активної взаємодії. Його використання почалося в галузі діагностики мереж, але пізніше він став застосовуватися в антифрод-системах. ###### JA3 і JA4 Ці методи з'явилися з метою аналізу TLS/SSL з'єднань. JA3 генерує хеш із параметрів клієнтського Hello повідомлення TLS, а JA4 - із серверного Hello. Це дає змогу створювати унікальні відбитки для клієнтів і серверів, виявляючи пристрої та програми. ###### Мережеві відбитки як інструмент в антифрод-системах Мережеві відбитки використовуються для: - Ідентифікації пристроїв через аналіз їхньої поведінки в мережі. - Виявлення підозрілого або незвичайного мережевого трафіку. - Розпізнавання ботів і антидетект-браузерів, що використовують маскування. - Виявлення шкідливих серверів через методи активного і пасивного аналізу. ###### Ключові параметри мережевого з'єднання для створення відбитків **TCP/IP заголовки** - Розмір вікна (Window Size). - Послідовність прапорів. - TTL (Time to Live). **TLS/SSL параметри** - Підтримувані шифри (Cipher Suites). - Розширення (Extensions) та їхній порядок. - Версія протоколу. ###### Параметри мережевого відбитка **1. Параметри TLS (Transport Layer Security)**. **Версії TLS:** - Версія запису: TLS 1.0 (769). - Версія рукостискання: TLS 1.2 (771). - Узгоджена версія: TLS 1.3 (772). **Набори шифрів (Cipher Suites):** Клієнт підтримує безліч наборів шифрів, включно з: - TLS_AES_128_GCM_SHA256 (4865). - TLS_AES_256_GCM_SHA384 (4866). - TLS_CHACHA20_POLY1305_SHA256 (4867). - Різні шифри на основі ECDHE і RSA. **2. Методи зняття відбитків** ** - Відбиток JA3:** ◦ Хеш: dcc69aae7a9e90b98e2f45cefce8d0ab. ◦ Формат: версія TLS, набори шифрів, розширення, еліптичні криві, формати еліптичних кривих. ◦ Використовується для ідентифікації TLS-клієнтів на основі характеристик їхнього вітального повідомлення. ** - Відбиток JA3N:** ◦ Хеш: dee19b855b658c6aa0f575eda2525e19. ◦ Схожий на JA3, але нормалізований для видалення значень GREASE. ** - Відбиток JA4:** ◦ Значення: t13d1516h2_8daaf6152771_02713d6af862. ◦ Включає версію TLS та інші параметри з'єднання. #### Приклади аналізу відбитків p0f, JA3, JA4 ###### Аналіз p0f Приклад використання p0f для визначення ОС: Розглянемо відбиток p0f комп'ютера з Windows, під'єднаного дротом до роутера з інтернетом від провайдера. Відкриємо сторінку p0ftest.tanatos.org - mod: «syn» cli: «188.226.xxx.xxx/26860» srv: «167.172.59.39/443» subj: «cli» os: «Windows NT kernel» dist: «15» params: «generic» raw_sig: «4:113+15:0:1460:mss*44,8:mss,nop,ws,nop,nop,sok:df,id+:0» - mod: «mtu» cli: «188.226.xxx.xxx/26860» srv: «167.172.59.39/443» subj: «cli» link: «Ethernet або модем» raw_mtu: «1500» У результаті тесту ми бачимо характерні для операційної системи Windows: порядок TCP опцій (mss,nop,ws,nop,nop,sok), множник (mss*44,8) і розмір TCP Window Size (113+15), на підставі цих даних сайт робить висновок, що ми використовуємо os: «Windows NT kernel». Розмір Значення mss 1460 (Максимальний розмір даних TCP без заголовків) і mtu 1500 (Максимальний розмір пакета)? є пов'язаними параметрами, що визначають розміри пакетів у мережі, і вказують на використання «Ethernet or modem». Повторимо тест на мобільному пристрої, підключеному через Wi-Fi до роутера - mod: «syn» cli: «188.226.xxx.xxx/60496» srv: «167.172.59.39/443» subj: «cli» os: «Linux 2.2.x-3.x» dist: «15» params: «generic» raw_sig: «4:49+15:0:1460:65535,10:mss,sok,ts,nop,ws:df,id+:0» - mod: «mtu» cli: «188.226.xxx.xxx/60496» srv: «167.172.59.39/443» subj: «cli» link: «Ethernet або модем» raw_mtu: «1500» - mod: «uptime» cli: «188.226.xxx.xxx/60496» srv: «167.172.59.39/443» subj: «cli» uptime: «25 днів 14 годин 22 хв (за модулем 49 днів)» raw_freq: «1000.03 Hz» У цьому тесті пристрій було визначено як os: «Linux 2.2.x-3.x» за низкою ознак: порядок TCP опцій (mss,sok,ts,nop,ws), значенням TCP Window Size (49+15). Також у відбитку з'явилася інформація про час перебування пристрою в мережі uptime: «25 days 14 hrs 22 min (modulo 49 days)» Перевіримо відбиток P0f на мобільному пристрої android c 4G - mod: «syn» cli: «176.15.252.192/41378 srv: «167.172.59.39/443» subj: «cli» os: «Linux 2.2.x-3.x» dist: «14» params: «generic» raw_sig: «4:50+14:0:1408:65535,10:mss,sok,ts,nop,ws:df,id+:0» - mod: «mtu» cli: «176.15.252.192/41378» srv: «167.172.59.39/443» subj: «cli» link: «???» raw_mtu: «1448» - mod: «uptime» cli: «176.15.252.192/41378» srv: «167.172.59.39/443» subj: «cli» uptime: «32 days 13 hours 29 min (modulo 49 days)» raw_freq: «989.80 Hz» Відмінною особливістю в цьому прикладі є розміри пакетів mss 1408 і mtu 1448. Виконаємо тест в антидетект браузері з мобільним відбитком, з використанням проксі, придбаного в одному з сервісів  У цьому прикладі ми отримуємо відбиток p0f, що відповідає десктоп-пристрою, а намагаємося представитися мобільним пристроєм. Такі невідповідності будуть розцінені антифрод-системами як підозрілі. Так само в цьому прикладі значення розмірів mss 1360 і mtu 1400 відповідають розмірам пакетів OpenVPN і відрізняються від більшості значень мобільних операторів зв'язку. Повторимо тест в антидетект-браузері з іншим проксі  Результати тесту з представленим проксі повністю відповідають результатам тестів на реальному мобільному пристрої. ###### UDP (User Datagram Protocol) в антифрод-системах. UDP (User Datagram Protocol) - це транспортний протокол, що працює поверх IP (Internet Protocol). Він призначений для швидкого і спрощеного передавання даних без встановлення з'єднання і без гарантії доставки. Наразі антифрод-системи часто встановлюють з'єднання з клієнтом за UDP, такий метод допомагає визначити реальну ip-адресу клієнта та виявити використання проксі, які або не обробляють udp-пакети і пропускають їх безпосередньо до адресата, розкриваючи реальну ip-адресу, або блокують udp-пакети, що вказує на використання маскування справжньої ip-адреси. Проведемо тест підтримки UDP, відкриємо на комп'ютері сторінку networktest.twilio.com  Повторимо тест на мобільному пристрої з 4G  Обидва справжні пристрої успішно проходять перевірки з'єднання за UDP. Виконаємо тест в антидетект-браузері з використання першого проксі  Цей проксі блокує з'єднання по UDP. Перевіримо другий наш проксі в антидетект-браузері  Цей вид проксі встановлює і підтримує з'єднання UDP і успішно проходить перевірки. ###### JA3 відбиток JA3 відбиток формується зі значень: TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats Приклад: 769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0 Детальна інформація про те, як формуються і працюють JA3/JA3S відбитки, можете прочитати в цій статті engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967. Розглянемо, як виглядає JA3 відбиток на прикладах браузерів Chrome і Firefox. Відкриємо на комп'ютері в браузері Firefox сторінку tls.peet.ws/api/all  771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-27-65037-41,4588-29-23-24-25-256-257,0 Оновивши сторінку, ми отримали наступний відбиток JA3  771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,23-45-18-13-43-35-11-10-5-0-65281-65037-16-27-51-17513-41,4588-29-23-24,0 Порівнявши відбитки, отримані з одного пристрою в браузері Firefox, ми бачимо невелику різницю в значеннях Extensions. Відкриємо тестову сторінку в браузері Chrome на нашому комп'ютері й отримаємо результат відбитка JA3 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,51-11-13-35-0-5-18-65037-16-43-45-10-65281-17513-27-23-41,4588-29-23-24,0 Оновимо сторінку в браузері Chrome і подивимося на відбиток JA3 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,35-51-10-27-13-18-65281-65037-45-16-5-23-43-0-11-17513-41,4588-29-23-24,0 Можемо помітити, що з метою захисту від отримання відбитка JA3, браузер Chrome змінює порядок значень Extensions. Повторимо тест на мобільному пристрої в браузері Firefox  JA3: 771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-34-51-43-13-45-28-27-65037,29-23-24-25-256-257,0 Оновимо сторінку в мобільному браузері Firefox JA3: 771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-27-65037-41,29-23-24-25-256-257,0 У мобільному браузері Firefox, так само як і на десктоп під час оновлення сторінки значення Extensions змінилися. Виконаємо тест у мобільному браузері Chrome  JA3: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-65281-13-5-17513-51-27-45-43-11-65037-23-16-35-18-10,4588-29-23-24,0 Оновимо сторінку JA3: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,10-13-23-43-18-35-0-65281-51-11-45-27-16-5-65037-17513-41,4588-29-23-24,0 Мобільний браузер Chrome так само, як і в десктоп версії змінює порядок значень Extensions. Об'єднаємо отримані результати в таблицю і відсортуємо значення за порядком  У таблиці ми можемо спостерігати характерні для різних браузерів і систем відмінності значень у розділах Ciphers, Extensions і EllipticCurves відбитка JA3. За цими значеннями антифрод-системи можуть розрізняти відомі використовувані операційні системи та браузери. Важливо зауважити, що набори значень у різних версіях одного браузера можуть незначно відрізнятися. Не менш важливим є відбиток JA3S, він формується зі значень Version, Accepted Cipher і List of Extensions повідомлення TLS Server Hello. Розглянемо на прикладах десктоп версій браузерів Firefox і Chrome. Firefox JA3S:  Chrome JA3S:  За результатами тесту можемо зробити висновок, що значення List of Extensions у відбитку JA3S при відповіді сервера відрізняються для різних клієнтів. ###### JA4 відбитки Відбиток JA4 є вдосконаленою версією JA3 відбитка, враховує більше параметрів і є більш стабільним. Приклад відбитка JA4: t13d1517h2_8daaf6152771_b0da82dd1658 Де: **t** 13d1517h2_8daaf6152771_b0da82dd1658 - Протокол (t - TCP, q - QUIQ) t **13** d1517h2_8daaf6152771_b0da82dd1658 - Версія TLS (12 - 1.2, 13 - 1.3) t13 **d** 1517h2_8daaf6152771_b0da82dd1658 - вказує на перехід за i - ip-адресою або d - доменом t13d **15** 17h2_8daaf6152771_b0da82dd1658 - кількість Chipher Suites t13d15 **17** h2_8daaf6152771_b0da82dd1658 - кількість Extensions t13d1517 **h2** _8daaf6152771_b0da82dd1658 - протокол h2 - HTTP/2 t13d1517 h2_ **8daaf6152771** _b0da82dd1658 - хеш для відсортованих Chipher Suites t13d1517h2_8daaf6152771_ **b0da82dd1658** - хеш від списку відсортованих Extensions і алгоритмів Так представляється відбиток JA4  JA4: t13d1517h2_8daaf6152771_b0da82dd1658 І його необроблена версія JA4_r: t13d1517h2_002f,0035,009c,009d,1301,1302,1303,c013,c014,c02b,c02c,c02f,c030,cca8,cca9_0005,000a,000b, 000d,0012,0017,001b,0023,0029,002b,002d,0033,4469,fe0d,ff01_0403,0804,0401,0503,0805,0501,0806,0601 Детальну інформацію щодо формування JA4 відбитка можна знайти на цій сторінці blog.foxio.io/ja4+-network-fingerprinting #### Методи підміни мережевих відбитків Зловмисники можуть намагатися приховувати реальні параметри мережевого з'єднання через: - Зміну TCP/IP параметрів. - Генерацію підроблених JA3/JA4 відбитків. - Використання проксі-серверів або VPN. Антифрод-системи реагують на такі спроби за допомогою аналізу аномалій, порівняння відбитків і перевірки послідовності дій клієнта. #### Висновок Мережеві відбитки, такі як p0f, JA3, JA4, стали важливими інструментами в арсеналі антифрод-систем. Вони дають змогу не тільки ідентифікувати пристрої, а й виявляти спроби маскування. Поєднання мережевих і апаратних відбитків, а також поглиблений аналіз протоколів HTTP/2 і стека TCP/IP забезпечують більш точний захист від шахрайства і загроз. _Bannykh M.V._