Современные антифрод-системы используют разнообразные методы для идентификации пользователей. Одной из ключевых технологий стала работа с сетевыми отпечатками, которые позволяют распознавать устройства и их характеристики на уровне сетевого соединения. Этот подход включает такие инструменты, как 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 or modem" 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 or modem" raw_mtu: "1500" - mod: "uptime" cli: "188.226.xxx.xxx/60496" srv: "167.172.59.39/443" subj: "cli" uptime: "25 days 14 hrs 22 min (modulo 49 days)" 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 hrs 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._