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

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

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

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

TCP/IP fingerprinting: что это вообще такое

Каждая операционная система отправляет TCP-пакеты по-своему. Разные значения TTL, window size, MSS, опции в SYN-пакете. Это как отпечатки пальцев. Собрал их — понял, кто стучится: Windows 11, Linux 6.x, macOS или какой-нибудь OpenBSD.

Антифрод смотрит на эти параметры и сравнивает с эталоном. Если у вас на сервере Linux, а TCP-стек клиента показывает Windows — странно. Если TTL 64, а window size не типичен для Linux — тоже подозрительно.

Вот базовые параметры, которые анализируются:

| Параметр | Что означает | Типичные значения |

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

| TTL | Время жизни пакета | 64 (Linux), 128 (Windows), 255 (BSD) |

| Window Size | Размер окна TCP | 65535, 29200, 8192 |

| MSS | Максимальный размер сегмента | 1460, 1440, 1380 |

| TCP Options | Набор опций в SYN | SACK, Timestamp, WScale |

| DF | Флаг Don't Fragment | 0 или 1 |

Проблема в том, что прокси-серверы часто форвардят пакеты без изменений. Клиент подключается к прокси, прокси — к серверу. Но TCP-рукопожатие между клиентом и сервером идёт напрямую. И если прокси не умеет подменять fingerprint, сервер видит реальную ОС клиента.

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

Есть несколько сценариев.

**Сценарий 1. Прямое подключение через прокси без маскировки.**

Клиент с Windows 11 (TTL 128, window 65535) подключается к серверу через SOCKS5-прокси на Linux. Прокси форвардит пакет как есть. Сервер видит TTL 128 и window 65535. Но IP прокси — это Linux-сервер, который обычно даёт TTL 64. Несостыковка. Антифрод ставит флаг: "потенциальный прокси".

**Сценарий 2. Прокси меняет TTL, но забывает про window size.**

Прокси подменяет TTL на 64, чтобы выглядеть как Linux. Но window size остаётся 65535 — типично для Windows. Или MSS меняется на 1460, а window scale не соответствует. Антифрод видит гибрид — явный признак подмены.

**Сценарий 3. Использование публичных прокси с известным fingerprint.**

Многие бесплатные прокси работают на одинаковых конфигурациях. Например, Squid на Ubuntu 20.04. Антифрод знает fingerprint этой связки: TTL 64, window 29200, MSS 1460, опции: SACK, Timestamp, WScale. Если видит такой fingerprint, а клиент при этом из другого региона — 99% прокси.

MTU как дополнительный маркер

MTU — Maximum Transmission Unit. Размер пакета, который может пройти через сеть. Типичное значение для Ethernet — 1500 байт. Но через VPN или туннель MTU может быть меньше: 1400, 1300, 1200.

Антифрод анализирует MTU по ICMP-пакетам или по фрагментации. Если клиент шлёт пакеты с MTU 1400, а его IP принадлежит дата-центру — почти наверняка это VPN или прокси.

Вот как это выглядит на практике:

```

Клиент (MTU 1400) -> Прокси (MTU 1500) -> Сервер

```

Сервер видит, что пакеты приходят с MTU 1400. Но IP прокси — это дата-центр, где стандартный MTU 1500. Разница в 100 байт — повод задуматься.

Особенно жёстко это работает с IPv6. Там MTU может быть 1280 или 1500. Если клиент шлёт пакеты с MTU 1280, а его IP — домашний или мобильный — нормально. Но если IP из дата-центра, а MTU 1280 — это туннель.

Реальные кейсы из практики

**Кейс 1. Прокси на VPS с Windows.**

Клиент купил дешёвый VPS на Windows Server и поставил на него прокси. Fingerprint: TTL 128, window 65535, MSS 1460, опции: SACK, Timestamp, WScale. Антифрод сразу вычислил — Windows Server в дата-центре не может быть домашним пользователем.

**Кейс 2. Цепочка из нескольких прокси.**

Клиент использовал цепочку: SOCKS5 -> HTTP-proxy -> VPN. Fingerprint менялся на каждом шаге. Но антифрод заметил, что TTL уменьшается на 1 на каждом хопе. И window size не соответствует ни одному известному профилю. Результат — блокировка.

**Кейс 3. Прокси с подменой fingerprint.**

Некоторые прокси-сервисы (например, lexic.ml) умеют подменять fingerprint под целевую ОС. Клиент с Windows подключается к прокси, прокси с Linux отправляет запросы с fingerprint Windows. Антифрод видит: TTL 128, window 65535, MSS 1460 — похоже на реального пользователя. Но если прокси забывает подменить MTU — всё рушится.

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

Есть несколько способов.

**1. Подмена fingerprint на уровне прокси.**

Прокси должен уметь эмулировать TCP-стек клиента. Это сложно, но возможно. Некоторые решения типа `p0f` или `nmap` позволяют подменять параметры.

**2. Использование IPv6.**

IPv6-прокси сложнее анализировать. Там меньше стандартных fingerprint'ов. К тому же, IPv6-адреса чаще меняются, и антифрод не успевает накопить статистику.

**3. MTU-маскировка.**

Прокси должен форвардить MTU клиента, а не использовать свой. Или подменять MTU на стандартное значение 1500.

**4. Динамическая смена fingerprint.**

Менять параметры TCP-стека случайным образом. Но это может вызвать проблемы с совместимостью.

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

Вот как можно посмотреть, что видит сервер при подключении через прокси.

**На клиенте (Linux):**

```bash

curl -s https://tcpip.guru/api/fingerprint

```

**Через прокси:**

```bash

curl -x http://proxy:8080 -s https://tcpip.guru/api/fingerprint

```

Сравните результаты. Если fingerprint отличается от типичного для вашей ОС — антифрод это тоже видит.

**На Python:**

```python

import socket

import struct

def get_fingerprint(host, port):

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

sock.settimeout(5)

sock.connect((host, port))

Получаем TTL

ttl = struct.unpack('B', sock.getsockopt(socket.IPPROTO_IP, socket.IP_TTL))[0]

Получаем MSS

mss = struct.unpack('H', sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_MAXSEG))[0]

sock.close()

return {'ttl': ttl, 'mss': mss}

print(get_fingerprint('example.com', 80))

```

Что в итоге

Антифрод-системы вычисляют прокси по TCP/IP fingerprint и MTU. Это работает, потому что большинство прокси не умеют маскироваться. TTL, window size, MSS, опции TCP — всё это выдаёт реальную ОС и тип подключения.

Защита — подмена fingerprint на уровне прокси, использование IPv6, правильная настройка MTU. Но даже это не даёт 100% гарантии. Антифрод постоянно совершенствуется, добавляет анализ поведения, временных задержек, HTTP-заголовков.

Хотите проверить, как выглядит ваш прокси со стороны? Возьмите любой публичный сервис для анализа TCP/IP и сравните fingerprint с эталоном. Если не совпадает — антифрод уже знает.

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