← Назад в базу знаний

Как антифрод-системы вычисляют прокси по TCP/IP fingerprint (MTU, TTL, Window Scale)

Как антифрод-системы вычисляют прокси по TCP/IP fingerprint (MTU, TTL, Window Scale)

TCP/IP fingerprint: почему антифрод видит ваш прокси

Банальная истина: купить прокси и считать себя анонимным — наивно. Антифрод-системы давно перестали проверять только IP. Они копают глубже. На уровень TCP/IP стека. Там, где параметры TCP-сессии выдают прокси с головой.

MTU, TTL, Window Scale, MSS — это не просто цифры из учебника. Это цифровой отпечаток вашего соединения. И он уникален для каждого типа прокси.

Как работает TCP/IP fingerprinting

Когда ваш клиент устанавливает TCP-соединение, он передаёт пакет SYN. В этом пакете куча параметров. Их комбинация — это и есть fingerprint.

Антифрод собирает эти параметры. Сравнивает с базой известных конфигураций. Если параметры совпадают с характерными для прокси — флаг.

Простейший пример: домашний Windows 10 с роутером выдаёт TTL=128, MTU=1500, Window Scale=8. А прокси-сервер на Linux может показать TTL=64, MTU=1500, Window Scale=7. Разница в TTL сразу заметна.

MTU — размер имеет значение

MTU (Maximum Transmission Unit) — максимальный размер пакета. Для большинства Ethernet-сетей это 1500 байт. Но не для всех.

Прокси часто работают через туннели. GRE, IPsec, OpenVPN — каждый добавляет свой заголовок. Итоговый MTU может быть 1400, 1450 или даже 1300.

Антифрод смотрит: если у клиента MTU 1400, а у прямых пользователей из этого региона — 1500, значит, трафик идёт через туннель. Вероятность прокси — 90%.

Пример из жизни: один сервис потокового видео блокировал всех с MTU < 1460. Оказалось, так вычищали 80% прокси. Просто и эффективно.

TTL — время жить, время умирать

TTL (Time To Live) — количество хопов, которые пакет может пройти. Разные ОС выставляют разные значения по умолчанию:

- Windows: TTL=128

- Linux: TTL=64

- macOS: TTL=64

- Cisco: TTL=255

Прокси-сервер меняет TTL. Но не всегда корректно. Классический косяк: прокси на Linux с TTL=64. Клиент за ним — Windows с TTL=128. Антифрод видит TTL=63 (64 минус один хоп до прокси). И понимает: это не Windows.

Более хитрый случай: некоторые прокси пытаются подделать TTL. Выставляют 128 вместо 64. Но при этом забывают про остальные параметры. Получается Frankenstein — TTL как у Windows, а Window Scale как у Linux. Антифрод это видит.

Window Scale — масштабирование не для всех

Window Scale — параметр TCP, определяющий размер окна приёма. Он задаётся в SYN-пакете. И сильно зависит от версии ядра ОС и настроек сети.

Примеры типичных значений:

- Windows 10: Window Scale=8 (множитель 256)

- Linux 5.x: Window Scale=7 (множитель 128)

- FreeBSD: Window Scale=6 (множитель 64)

Прокси часто используют кастомные сборки Linux. Window Scale там может быть 5, 6, 7 или вообще отсутствовать. Антифрод собирает статистику: какие Window Scale характерны для реальных пользователей. Всё, что выбивается — подозрительно.

Был случай: один прокси-провайдер выставлял Window Scale=3. Уникальное значение. Антифрод просто добавил его в чёрный список. За 2 дня заблокировали 10 тысяч клиентов.

MSS — максимальный сегмент без фрагментации

MSS (Maximum Segment Size) — максимальный размер данных в TCP-сегменте. Рассчитывается как MTU минус заголовки TCP и IP.

Обычно MSS=1460 (1500 - 20 - 20). Но для туннелей MSS меньше. Типичные значения:

- OpenVPN: MSS=1350-1400

- WireGuard: MSS=1420

- Shadowsocks: MSS=1400-1450

Антифрод проверяет: если MSS нестандартный, значит, трафик идёт через туннель. Прокси-фактор растёт.

TCP timestamps — метки времени как отпечатки

TCP timestamps — опция для измерения RTT. Но она же выдаёт прокси. Почему?

Прокси-сервер может иметь своё системное время. Отличающееся от времени клиента. Антифрод видит разницу в timestamps между SYN и SYN-ACK. Если она необъяснима с точки зрения сетевой задержки — это подозрительно.

Ещё хуже: некоторые прокси отключают timestamps. Антифрод видит: у 99% пользователей timestamps включены, а у этого — нет. Флаг.

SACK — выборочное подтверждение

SACK (Selective Acknowledgment) — опция для эффективной передачи при потерях пакетов. Включается не на всех устройствах.

Статистика:

- Windows 10: SACK включён по умолчанию

- Linux: SACK включён

- Старые роутеры: SACK выключен

- Некоторые VPN: SACK выключен

Антифрод проверяет: если у клиента SACK выключен, а у остальных пользователей из этого региона включён — странно.

Комбинация параметров — ключевой момент

Отдельные параметры — ничто. Их комбинация — всё. Антифрод строит профиль: {TTL, MTU, Window Scale, MSS, SACK, timestamps}. Сравнивает с базой.

Пример профиля реального пользователя:

- TTL=128

- MTU=1500

- Window Scale=8

- MSS=1460

- SACK=on

- timestamps=on

Пример профиля типичного прокси:

- TTL=64

- MTU=1400

- Window Scale=7

- MSS=1350

- SACK=off

- timestamps=off

Разница очевидна. Даже если IP чистый, профиль выдаёт.

Как прокси пытаются обмануть fingerprinting

Прокси-провайдеры не сидят сложа руки. Они пытаются подделать параметры. Основные методы:

1. **Подмена TTL**. Выставляют 128 вместо 64. Но забывают про Window Scale.

2. **Настройка MTU**. Пытаются подогнать под 1500. Но из-за туннеля это не всегда возможно.

3. **Эмуляция Windows**. Ставят Window Scale=8. Но SACK выключен — провал.

4. **Использование pcap**. Перехватывают реальные сессии и клонируют их параметры. Самый хитрый метод.

Но и антифрод не дремлет. Он анализирует не только начальные параметры, но и динамику сессии. Как меняется Window Scale в процессе передачи. Как ведёт себя RTT. Это уже сложнее подделать.

Практический пример: как проверить свой прокси

Хотите узнать, видит ли антифрод ваш прокси? Проверьте параметры TCP-сессии. Используйте `curl` с опцией `--trace-ascii`:

```bash

curl --trace-ascii trace.txt https://example.com

```

В файле trace.txt ищите строки с SYN-пакетом. Там будут все параметры. Сравните с эталоном для вашей ОС.

Или используйте `tcpdump` на клиенте:

```bash

tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'

```

Посмотрите на TTL, Window Scale, MSS. Если они не совпадают с типичными для вашей системы — ваш прокси выдаёт себя.

Антифрод-системы: что используют крупные сервисы

Крупные игроки внедрили TCP fingerprinting давно:

- **Cloudflare** — использует собственную систему для анализа TCP-параметров.

- **Google** — проверяет fingerprint при входе в аккаунт.

- **Facebook** — анализирует параметры сессии для борьбы с фейками.

- **Банки** — многие проверяют TTL и Window Scale при онлайн-платежах.

Пример: один банк блокировал все транзакции с TTL < 100. Аргументация: у реальных пользователей Windows с TTL=128, у прокси — Linux с TTL=64. Прошло 3 месяца, пока прокси-провайдеры не начали подделывать TTL.

Как защититься от TCP fingerprinting

Если вы используете прокси для легитимных целей (например, тестирование геоблокировок), вот несколько советов:

1. **Выбирайте прокси с эмуляцией параметров**. Некоторые провайдеры подгоняют TTL, Window Scale и MTU под реальные значения.

2. **Используйте WireGuard**. Он меньше меняет MTU, чем OpenVPN.

3. **Настраивайте параметры вручную**. В Linux можно изменить TTL через sysctl.

4. **Проверяйте свой профиль**. Регулярно смотрите, какие параметры видит сервер.

Но помните: антифрод постоянно совершенствуется. То, что работает сегодня, может не работать завтра.

Реальный кейс: как lexic.ml решает проблему

На практике, когда клиенты приходят с проблемой "антифрод блокирует мой прокси", мы смотрим на TCP fingerprint. Часто проблема в нестандартных параметрах. Например, MTU 1400 из-за туннеля.

Решение — настройка MTU на стороне клиента. Или использование прокси с эмуляцией параметров. В lexic.ml мы подгоняем TTL, Window Scale и MSS под типичные значения для региона. Это снижает вероятность блокировки.

Но гарантий нет. Антифрод — это гонка вооружений. Прокси-провайдеры улучшают эмуляцию, антифрод находит новые признаки.

Выводы

TCP/IP fingerprint — мощный инструмент антифрода. MTU, TTL, Window Scale, MSS, SACK, timestamps — каждый параметр что-то говорит о вашем соединении. Их комбинация — ваш цифровой отпечаток.

Прокси, которые не эмулируют эти параметры, видны за километр. Даже если IP чистый. Даже если используется HTTPS.

Хотите анонимности? Учитывайте TCP fingerprint. Иначе антифрод вас найдёт. Всегда.

✔️Купить прокси