Как антифрод-системы вычисляют прокси по TCP/IP fingerprint (MTU, TTL, Window Scale)
Содержание
- TCP/IP fingerprint: почему антифрод видит ваш прокси
- Как работает TCP/IP fingerprinting
- MTU — размер имеет значение
- TTL — время жить, время умирать
- Window Scale — масштабирование не для всех
- MSS — максимальный сегмент без фрагментации
- TCP timestamps — метки времени как отпечатки
- SACK — выборочное подтверждение
- Комбинация параметров — ключевой момент
- Как прокси пытаются обмануть fingerprinting
- Практический пример: как проверить свой прокси
- Антифрод-системы: что используют крупные сервисы
- Как защититься от TCP fingerprinting
- Реальный кейс: как lexic.ml решает проблему
- Выводы
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. Иначе антифрод вас найдёт. Всегда.