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

Как антифрод-системы вычисляют прокси по TCP fingerprint

Как антифрод-системы вычисляют прокси по TCP fingerprint

TCP fingerprint — что это вообще

TCP fingerprint — это цифровой отпечаток стека TCP/IP. Каждая ОС, каждое ядро, каждая библиотека оставляют уникальные следы в том, как формируют TCP-пакеты. Антифрод-системы снимают эти отпечатки и сравнивают с эталонами. Если fingerprint не совпадает с ожидаемым — это повод присмотреться.

Прокси-серверы, особенно публичные, часто используют нестандартные стеки. Или стандартные, но с дефолтными настройками. Это легко вычислить.

Как выглядит fingerprint на практике

Разберём на примере. Открываешь TCP-соединение. Сервер видит SYN-пакет. В нём куча полей:

- TTL (Time To Live) — сколько хопов может пройти пакет.

- Window Size — размер окна приёма.

- MSS (Maximum Segment Size) — максимальный размер сегмента.

- Опции TCP: SACK, Timestamp, WS (window scaling), и порядок их следования.

Комбинация этих параметров — и есть fingerprint. Разные ОС дают разные комбинации.

Таблица популярных fingerprint'ов:

ОСTTLWindow SizeMSSОпции (порядок)
Windows 10128655351460MSS, SACK, TS, WS
Linux (ядро 5.x)64292001460MSS, SACK, TS, WS, NOP
macOS64655351460MSS, SACK, TS, WS, NOP, NOP
FreeBSD64655351460MSS, SACK, TS, WS, NOP

Видишь разницу? Linux добавляет NOP (No Operation) в конец. Windows — нет. Это и есть fingerprint.

Антифрод и p0f

Самый известный инструмент для пассивного fingerprint'инга — p0f. Он не влезает в соединение, просто слушает трафик. Анализирует SYN-пакеты и SYN+ACK. Выдаёт вероятность: «это Windows 10 с вероятностью 85%».

Антифрод-системы используют похожие методы. Только не для определения ОС, а для выявления несоответствий. Например:

- Трафик идёт с IP, который заявлен как мобильный оператор. Но fingerprint показывает Linux-сервер. Странно? Очень.

- Все клиенты с одного IP имеют одинаковый fingerprint. Хотя должны быть разные — Windows, macOS, Android.

Это прямой признак прокси или NAT.

Как прокси-серверы выдают себя

Прокси — это софт. Он работает поверх ОС. И использует её TCP-стек. Если на прокси стоит Linux с ядром 5.x, все клиенты через него будут иметь fingerprint Linux.

Даже если клиент реально сидит с Windows. Прокси пересобирает TCP-соединение. Fingerprint становится отпечатком прокси, а не клиента.

Бывают исключения. Некоторые прокси (например, socks5 с UDP) могут пробрасывать оригинальный стек. Но HTTP/HTTPS прокси — почти всегда пересобирают.

Реальные кейсы

**Кейс 1.** Банк. Клиент заходит с IP, принадлежащего мобильному оператору. Fingerprint — Linux. Банк знает, что мобильные операторы раздают NAT с Windows или iOS. Linux — аномалия. Блокировка.

**Кейс 2.** Торговая площадка. С одного IP заходят 50 аккаунтов. Все имеют одинаковый fingerprint. Площадка видит: 50 уникальных браузеров, но один TCP-стек. Это прокси. Аккаунты банятся.

**Кейс 3.** Соцсеть. Пользователь жалуется на блокировку. Проверяем — fingerprint соответствует прокси. Пользователь утверждает, что сидит с дома. Но его TTL=64, а у домашних роутеров обычно TTL=128. Враньё.

Как fingerprint вычисляют на практике

Антифрод-системы не просто смотрят на TTL. Они строят хеш из набора полей. Например:

```

hash = f(TTL, WindowSize, MSS, OptionsOrder, Timestamp, SACK)

```

Этот хеш — подпись. Если подпись повторяется у многих клиентов с разных IP — это кластер. Кластер = прокси.

Есть продвинутые методы. Анализируют не только SYN, но и весь поток. Смотрят на поведение: как меняется window size, как обрабатываются ретрансмиссии, какие ACK приходят.

Пример с curl

Хочешь проверить fingerprint своего сервера? Используй `nmap`:

```bash

nmap -sS -O --osscan-guess example.com

```

Или `p0f`:

```bash

p0f -i eth0 -p

```

Но это для общего понимания. Антифрод-системы работают на уровне ядра или DPI. Они видят каждый пакет.

Что делает lexic.ml

Наш сервис — IPv6 прокси. Мы не используем публичные стеки. Каждый прокси имеет уникальный fingerprint. Да, это сложнее. Но антифрод-системы не могут просто захешировать и забанить.

Мы подменяем TTL, window size, порядок опций. Используем рандомизацию. Но это не панацея. Если антифрод-система анализирует поведение — рандомизация не спасёт.

Как обходят fingerprint

Есть несколько методов:

**1. Подмена TTL.** Ставишь TTL=128, как у Windows. Но антифрод смотрит не только TTL.

**2. Использование raw sockets.** Программно формируешь пакеты с нужными параметрами. Сложно, но работает.

**3. Прокси на базе Windows.** Если прокси крутится на Windows, fingerprint будет Windows. Но антифрод видит, что все клиенты — Windows. Это подозрительно.

**4. Туннели с пробросом стека.** Например, WireGuard. Он не пересобирает TCP, а пробрасывает IP-пакеты. Fingerprint остаётся оригинальным.

Но у каждого метода есть грабли. Raw sockets требуют прав root. Туннели — сложной настройки. Антифрод-системы тоже не стоят на месте.

Что антифрод делает с fingerprint

Собирает статистику. Если fingerprint аномальный — помечает IP как подозрительный. Дальше — капча, замедление, блокировка.

Некоторые системы используют машинное обучение. Обучают модель на нормальном трафике. Потом ищут выбросы. Fingerprint — один из признаков.

Но это не единственный метод. Антифрод смотрит на:

- Время жизни сессии.

- Количество параллельных соединений.

- User-Agent и его соответствие fingerprint.

- Геолокацию и задержки.

Fingerprint — лишь часть пазла.

Как защититься от fingerprint

Честно? Полностью — никак. Если ты используешь прокси, антифрод рано или поздно это заметит. Вопрос времени и сложности.

Можно:

- Использовать выделенные прокси с уникальными fingerprint.

- Менять fingerprint динамически.

- Использовать туннели, а не прокси.

Но всё это костыли. Антифрод-системы адаптируются.

Итог

TCP fingerprint — мощный инструмент. Он позволяет вычислить прокси без анализа содержимого трафика. Просто по структуре пакетов.

Прокси-серверы выдают себя одинаковыми отпечатками. Антифрод это видит. И блокирует.

Если хочешь снизить риск — используй решения с рандомизацией fingerprint. Но помни: это не панацея. Антифрод эволюционирует.

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