Admin
Администратор
Почему ваш «Windows» прокси палится как Linux: Глубокий разбор TCP Window Size, о котором молчат.
Сегодня мы затронем тему, о которой многие догадывались, но мало кто понимал механику до конца. Вы покупаете дорогие прокси, используете топовые антидетекты, видите заветные галочки на чекерах, но антифрод-системы все равно отправляют вас в бан?
Давайте поговорим о TCP Window Size и о том, почему большинство современных средств подмены отпечатка (p0f) — это «Bugatti с мотором от Prius».
Что такое TCP Window Size?
Если супер кратко: Window Size — это отражение буфера обмена данными.
Когда вы устанавливаете соединение с сайтом, первым делом летит SYN-пакет. В нем ваша система сообщает серверу: «Эй, я могу принять вот столько данных за раз». Обычно это значение (суммарный буфер) составляет 64240 байт (или около того).
Это легко проверить на https://browserleaks.com/tcp. Заходите, смотрите поле Window Size. Скорее всего, вы увидите там 64240.
В этом же пакете передается параметр Windows Scale (множитель). И вот тут начинается самое интересное.
Проблема «Фасада»: Почему старые методы не работают
Существующие на рынке решения для подмены OS Fingerprint (отпечатка операционной системы) в большинстве своем базируются на древних костылях. Самый известный пример — OSfooler-ng.
Это утилита, написанная на Python 2 (да-да, на языке мамонтов), которую не обновляли уже лет 6. Что она делает? Она подменяет только первый SYN-пакет.
Представьте, что вы берете корпус от Bugatti Veyron и втыкаете в него мотор от старенького Toyota Prius.
- Выглядит как Bugatti? Да.
- Поедет? Ну, чисто теоретически — покатится.
- Будет ли она рычать и разгоняться как Bugatti? Точно нет.
Что происходит в глубине соединения?
После первого пакета начинается реальная передача данных. И здесь значение Window Size начинает динамически меняться в зависимости от операционной системы. У каждой ОС свои паттерны поведения и свои множители.
На дистанции (после обмена хотя бы сотней пакетов) картина выглядит так:
- Windows: Значение Window Size держится в районе 1024 (с учетом множителя).
- Linux (и Android): Значение проседает до 512.
- macOS: Держит планку в районе 2048.
Антифрод видит, что в первом пакете вы представились как Windows (синтетический отпечаток), но дальше ваше соединение ведет себя как типичный Linux (потому что прокси-сервер, скорее всего, поднят на Linux).
Грубо говоря: На входе вы показываете паспорт гражданина США, но говорите с рязанским акцентом.
Наш эксперимент
Мы написали специальный тестовый стенд, чтобы наглядно показать эту уязвимость.
Инструмент для проверки: https://zl0ywindowcheck.top/
Суть теста:
Мы не просто смотрим на заголовок, мы «прогоняем» через соединение 100 КБ мусорной информации. Этого достаточно, чтобы заставить TCP-стек показать свое истинное лицо.
Результаты проверок популярных сервисов (Doppelganger, Detect Expert, Киберёж):
Мы взяли прокси, где заявлена подмена p0f под Windows.
- Первый пакет: Все красиво. Множитель 8, отпечаток Windows, BrowserLeaks доволен.
- Глубокий анализ: Пропускаем трафик, смотрим график изменения Window Size.
- Итог: Поведение чистого Linux (значения около 512).
Как антифрод-системы это вычисляют?
Им не нужно делать ничего сложного. Достаточно заставить ваш браузер загрузить картинку весом в 10-50 КБ или выполнить простейший скрипт.
Вот пример кода, который может встроить любой сайт для детекта:
Код:
function sendRandomData() {
const size = 100 * 1024; // 100 KB (для теста хватит даже 10 KB)
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
// Генерируем мусорную строку
for (let i = 0; i < size; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
// Отправляем на сервер, сервер анализирует пакеты
fetch('/analyze-tcp', {
method: 'POST',
body: result
});
}
sendRandomData();
Как только этот объем данных улетает, сервер получает достаточно пакетов для анализа динамики Window Size. Если вы сидите на Linux-сервере (прокси), но маскируетесь под Windows — вас раскроют.
Как проверить самому?
Я не прошу верить мне на слово. Проверьте сами:
- Wireshark: Откройте анализатор пакетов на своем ПК (без VPN/прокси). Зайдите на любой сайт. Посмотрите, как меняется Window Size у вашей реальной ОС.
- Разные прокси: Возьмите прокси, которые не подменяют отпечаток (например, NSOCKS, где нет кнопки смены p0f). Если это Android-прокси, он будет вести себя как Linux/Android от начала и до конца. Это честно и не вызывает подозрений в «шизофрении» соединения.
Мы понимаем, что текущая ситуация на рынке прокси — это тупик. «Фасадные» подмены больше не работают против серьезных ребят.
Поэтому мы разрабатываем собственный софт на уровне ядра.
Мы написали свой сетевой стек, который позволяет контролировать соединение полностью, а не только первый пакет.
- Нужен Windows? Мы будем эмулировать поведение Windows (1024) на протяжении всей сессии.
- Нужен Mac? Будет 2048.
Ранее я уже упоминал эту тему вскользь в статье про https://telegra.ph/Cifrovoj-Dvojnik...-kak-antifrod-sistemy-ehto-vychislyayut-10-23 Цифровых Двойников , советую ознакомиться.
Всех обнял, приподнял. Всем хорошего вечера и чистого коннекта!