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

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

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

Как антифрод вычисляет прокси по TCP/IP стеку

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

TCP timestamps — главный индикатор

Каждый TCP-пакет несёт временные метки. Опция `TCP Timestamp` (RFC 1323) должна быть монотонной. Прокси часто сбрасывают счётчик при переподключении. Или, наоборот, таймстампы не меняются годами — явный признак прокси.

Реальная картина: если сервер видит timestamp = 0 или скачки более 1000 секунд — это подозрительно. Нормальный клиент увеличивает значение равномерно. Прокси-агрегаторы ленятся эмулировать это поведение.

Опции TCP — зоопарк значений

Каждая ОС отправляет свой набор TCP-опций. Windows, Linux, macOS — у всех разный порядок и значения. Антифрод собирает сигнатуру:

- MSS (Maximum Segment Size)

- Window Scale

- SACK Permitted

- WS Opt

Прокси часто подменяют эти значения. Или используют дефолтные настройки ядра сервера. Если у 1000 клиентов одинаковый набор опций — это прокси-пул.

TTL — время жизни пакета

TTL (Time To Live) — классическая ловушка. Начальное значение ОС Windows — 128, Linux — 64, macOS — 64. Если TTL прилетает 64, а ОС клиента Windows — это прокси.

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

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

MTU (Maximum Transmission Unit) — ещё один параметр. Нормальное значение для Ethernet — 1500. Для VPN и туннелей — меньше. Прокси с PPPoE или GRE-туннелями режут MTU до 1400-1480.

Антифрод измеряет MTU через ICMP-пакеты или анализируя фрагментацию. Если клиент передаёт пакеты меньше 1500 без видимой причины — это прокси.

Пример из жизни: сервис доставки еды заметил, что 90% заказов с MTU 1472 приходят с одних и тех же IP. Оказалось — пул прокси.

Window Size — окно в систему

Размер TCP-окна (Window Size) зависит от буфера приёма ОС. Windows использует auto-tuning, Linux — фиксированные значения. Прокси часто наследуют настройки сервера.

Сравнение типичных значений:

| ОС | Начальный Window Size |

|---|---|

| Windows 10 | 65535-65536 |

| Linux (ядро 5.x) | 29200-65535 |

| macOS | 65535 |

| Прокси-сервер (Debian) | 29200 |

Если у клиента с Windows Window Size = 29200 — это прокси.

TCP timestamp randomization — костыль

Некоторые прокси пытаются рандомизировать таймстампы. Но делают это криво. Счётчик может обнуляться, прыгать назад или использовать одно и то же значение для всех соединений.

Антифрод отслеживает корреляцию между timestamp и реальным временем. Если за 10 минут timestamp изменился на 1000, а прошло 600 секунд — несоответствие.

IP ID — идентификатор пакета

IP ID (Identification field) — ещё один параметр. Linux использует случайные значения, Windows — инкремент. Прокси часто копируют поведение сервера.

Если все запросы от клиента идут с IP ID, увеличивающимся на 1 — это не Windows. И не Linux. Это прокси с дефолтными настройками.

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

MSS (Maximum Segment Size) вычисляется из MTU. Обычно MSS = MTU - 40 (заголовки IP и TCP). Для Ethernet это 1460. Для VPN — меньше.

Прокси часто не меняют MSS при туннелировании. Если клиент шлёт MSS 1460, но MTU 1400 — пакеты будут фрагментироваться. Антифрод это видит.

Window Scale — масштабирование окна

Window Scale — множитель для Window Size. Windows использует 8 (коэффициент 256), Linux — 7 (128). Прокси могут использовать любые значения, но часто остаются с настройками ОС сервера.

Если Window Scale = 7, а ОС клиента Windows — это прокси.

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

SACK (Selective Acknowledgment) — опция, которая говорит о поддержке выборочных подтверждений. Windows включает её всегда. Linux — зависит от версии ядра. Прокси могут не поддерживать SACK.

PAWS — защита от скручивания таймстампов

PAWS (Protection Against Wrapped Sequences) — механизм, использующий TCP timestamps. Антифрод проверяет, как клиент обрабатывает старые пакеты. Прокси часто игнорируют PAWS.

Реальные кейсы антифрода

Кейс 1: Банк заметил, что клиенты из одного региона используют одинаковые TCP-опции. Оказалось — прокси-пул провайдера. Заблокировали 5000 IP.

Кейс 2: Игровой сервер видел TTL 64 у всех игроков. Но 30% имели Windows. Прокси-сервис не менял TTL. Баним по IP.

Кейс 3: Интернет-магазин анализировал MTU. Клиенты с MTU 1472 чаще всего были прокси. Оказалось, что прокси-сервер использует PPPoE с MTU 1492, но из-за заголовков GRE реальный MTU 1472.

Как проверить свой стек

Используй `curl` с опцией `--tcp-nodelay` и смотри заголовки. Или пиши скрипт на Python:

```python

import socket

import struct

def get_tcp_options(host, port):

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.settimeout(5)

s.connect((host, port))

Получаем TCP info

import fcntl

import os

Linux specific

TCP_INFO = 11

info = fcntl.ioctl(s, TCP_INFO, struct.pack('I', 0))

print(info)

s.close()

```

Но проще — сервисы типа `whatismyip.com` с детальным анализом.

Как прокси обманывают антифрод

Продвинутые прокси эмулируют TCP-стек. Например, `proxychains` с `--tcp-stack` параметрами. Или `socks5` с подменой TTL. Но это сложно.

Есть решения на уровне ядра — `netfilter` модули, которые подменяют TCP-опции. Но они дорогие и нестабильные.

Что делать, если ты прокси

Если используешь прокси для работы — убедись, что провайдер эмулирует TCP-стек. Спроси про поддержку TCP timestamp randomization и подмену TTL.

На `lexic.ml` есть IPv6 прокси с полной эмуляцией стека. Проверено на антифрод-системах.

Итог

Антифрод смотрит на TCP/IP стек как на отпечаток пальца. TTL, MTU, Window Size, TCP timestamps — всё это сигналы. Прокси без эмуляции стека — дырявое ведро.

Помни: даже идеально настроенный прокси может выдать себя через комбинацию параметров. Антифрод-системы умнеют каждый день.

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