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

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

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

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

TCP fingerprint — это цифровой отпечаток сетевого стека. Каждая ОС, каждое ядро, каждый билд отправляет пакеты чуть иначе. Размер окна, TTL, опции TCP, порядок их следования — всё это складывается в уникальный паттерн.

Антифрод-системы давно научились читать эти отпечатки. И ты даже не представляешь, как много они могут сказать о твоём соединении.

Window size — главный триггер

Размер окна (TCP Window) — это количество байт, которое устройство готово принять без подтверждения. Звучит безобидно. Но именно window size чаще всего выдает прокси.

Почему? Потому что серверные ОС используют другие значения, чем десктопные. Linux по умолчанию ставит 29200 или 65535. Windows — 65535 или 8192. macOS — 65535.

А теперь представь: антифрод видит, что клиент шлёт window size 65535, но TTL указывает на Linux. Это уже подозрительно. А если ты используешь прокси, который форвардит пакеты без изменения стека — всё, ты попался.

TTL — время жить, но не для прокси

TTL (Time To Live) — количество хопов, которое пакет может пройти. Каждый маршрутизатор уменьшает его на единицу.

Дефолтные значения:

- Windows: 128

- Linux: 64

- macOS: 64

- Cisco: 255

Когда ты подключаешься через прокси, TTL меняется. Если у тебя Windows (128), а прокси на Linux (64), то после прокси TTL станет 63 или около того. Антифрод видит TTL=63 и понимает: это не прямое соединение.

Хитрые прокси пытаются подменять TTL. Но это работает только если знаешь оригинальное значение. А если не знаешь — можно только гадать.

Опции TCP — зоопарк вариаций

TCP-опции — это дополнительные поля в заголовке. Они нужны для разных фич: масштабирование окна, временные метки, SACK, selective ACK.

Каждая ОС использует свой набор опций и свой порядок. Linux, например, всегда ставит MSS, потом SACK, потом Timestamp. Windows — сначала Timestamp, потом SACK.

Антифрод собирает эти последовательности и сравнивает с базой. Если у тебя порядок опций как у Linux, а TTL как у Windows — красный флаг.

Вот пример, как выглядит TCP-отпечаток в реальности:

```

Linux 4.15

MSS: 1460

WScale: 7

Timestamp: yes

SACK: yes

Window size: 29200

TTL: 64

```

```

Windows 10

MSS: 1460

WScale: 8

Timestamp: yes

SACK: yes

Window size: 65535

TTL: 128

```

Разница очевидна. И это только верхушка айсберга.

Как антифрод собирает fingerprint

Антифрод-системы используют библиотеки вроде p0f или собственные разработки. Они пассивно слушают трафик и собирают статистику.

Процесс выглядит так:

1. Перехватывается SYN-пакет (первый пакет соединения)

2. Извлекаются все параметры: window size, TTL, опции, их порядок

3. Строится хеш-сумма набора параметров

4. Хеш сравнивается с базой известных отпечатков

Если отпечаток не соответствует ни одной известной ОС — значит, пакет модифицирован. Антифрод ставит метку "подозрительный".

Реальные кейсы обнаружения

Кейс 1. Ты сидишь в Москве, используешь прокси в Амстердаме. Антифрод видит: TTL=58 (прошёл 6 хопов), window size=65535, опции как у Windows. Но прокси на Linux подменяет window size на 29200. Всё, прокси вычислен.

Кейс 2. Ты используешь цепочку прокси. Первый прокси меняет TTL, второй — нет. Антифрод видит несоответствие между TTL и window size. Опять красный флаг.

Кейс 3. Ты используешь IPv6 прокси с lexic.ml. Там своя специфика: window size может быть любым, но TTL почти всегда 64. Если твой клиент — Windows, антифрод заметит разницу.

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

Полная защита — миф. Но можно усложнить жизнь антифроду.

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

Второй способ — использовать IP-транспорт, который не даёт антифроду собрать fingerprint. Например, WireGuard или OpenVPN в режиме TUN. Они инкапсулируют трафик, и антифрод видит только fingerprint VPN-сервера.

Третий способ — менять прокси каждые N запросов. Антифрод не успеет накопить статистику.

Технические детали: как это выглядит в коде

Вот как можно собрать TCP fingerprint с помощью Python:

```python

import socket

from scapy.all import *

def get_tcp_fingerprint(ip, port):

Отправляем SYN

syn = IP(dst=ip)/TCP(dport=port, flags='S')

ans = sr1(syn, timeout=2, verbose=0)

if ans and ans.haslayer(TCP):

tcp = ans.getlayer(TCP)

ip_layer = ans.getlayer(IP)

fingerprint = {

'window_size': tcp.window,

'ttl': ip_layer.ttl,

'options': tcp.options,

'flags': tcp.flags

}

return fingerprint

return None

Пример использования

fp = get_tcp_fingerprint('8.8.8.8', 80)

print(fp)

```

А вот как антифрод может проверить, не прокси ли это:

```bash

Проверка TTL

ping -c 1 example.com | grep ttl

Проверка window size через tcpdump

tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0' -c 10

```

Что делать, если тебя уже вычислили

Если антифрод определил, что ты через прокси — не паникуй. Есть несколько вариантов.

Первый — сменить прокси на другой, с другим fingerprint. Например, если использовал прокси на Linux, попробуй на FreeBSD.

Второй — использовать ротацию IP. Антифрод запоминает fingerprint для каждого IP. Если менять IP каждые 5 минут, он не успеет собрать статистику.

Третий — вообще отказаться от прокси и использовать VPN. VPN меняет весь стек, и антифрод видит только fingerprint VPN-сервера.

Таблица сравнения fingerprint разных систем

| Параметр | Windows 10 | Linux 5.4 | macOS 11 | FreeBSD 12 |

|----------|------------|-----------|----------|------------|

| MSS | 1460 | 1460 | 1460 | 1460 |

| WScale | 8 | 7 | 3 | 6 |

| Timestamp | да | да | да | нет |

| SACK | да | да | да | да |

| Window size | 65535 | 29200 | 65535 | 65535 |

| TTL | 128 | 64 | 64 | 64 |

Разница видна невооружённым глазом. Особенно TTL и window size.

Почему IPv6 не спасает

Многие думают, что IPv6 решит проблему fingerprint. Наивные. Антифрод адаптировался.

В IPv6 TTL работает так же. Window size — тоже. Опции TCP — те же. Единственное отличие — адресация. Но fingerprint остаётся fingerprint.

Прокси на lexic.ml работают с IPv6, но это не панацея. Антифрод всё равно может вычислить прокси по TCP-стеку.

Будущее TCP fingerprint

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

Нейросети могут определять прокси даже по косвенным признакам. Например, по времени между пакетами или по вариациям window size.

Но и прокси не стоят на месте. Появляются технологии, которые подменяют fingerprint под клиента. Это сложно, но возможно.

Итог

TCP fingerprint — мощный инструмент в руках антифрода. Window size, TTL, опции — всё это выдает прокси.

Но не всё так плохо. Есть способы защиты: смена прокси, ротация IP, использование VPN. Главное — понимать, как работает система, которую ты пытаешься обмануть.

И помни: идеальной защиты не существует. Всегда есть риск быть вычисленным. Вопрос только в том, насколько сильно антифрод хочет тебя поймать.

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