Статья

Резидентные прокси: почему ваш чёрный список IP перестал работать

Массовая услуга, превратившая трафик атакующих в обычный домашний, — откуда берутся адреса, почему блокировать их ловушка и что оценивать вместо них.

Что изменилось и когда

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

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

В итоге трафик атакующего приходит из того же адресного пространства, что и трафик ваших клиентов. Не похожего на него — того же самого, часто того же провайдера, иногда того же города.

У любого контроля, построенного на вопросе «подозрителен ли адрес сам по себе», теперь есть проблема ложных пропусков, которую не чинят улучшением списка.

Откуда берутся адреса

Это важно, потому что определяет, что с ними можно безопасно делать.

Часть — с согласия. Пользователь ставит бесплатный VPN, расширение для браузера или мобильную игру, где где-то в условиях сказано, что простаивающий канал перепродаётся. Он согласился — в том смысле, в каком это слово употребляют юристы.

Часть — с согласием на бумаге. SDK, зашитый в приложение, которое пользователь и правда хотел, с раскрытием, написанным так, чтобы формально быть, а практически не читаться.

Часть — без всякого согласия. Взломанные роутеры, IoT-устройства и телефоны, записанные в прокси-сеть зловредом, чей владелец понятия не имеет, что его канал перепродают.

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

Почему покупка списка прокси не спасает

Очевидный ответ — купить фид известных адресов резидентных прокси и блокировать их. Он не работает по четырём причинам, которые складываются.

Пулы ротируются быстрее, чем обновляются списки. Адрес находится в пуле на время сессии, а потом нет. К моменту, когда фид его перечислит, адрес может снова быть просто домашним интернетом семьи.

Списки протухают в ту сторону, которая бьёт. Ложное срабатывание на переиспользованном адресе блокирует настоящего клиента, и вы об этом не узнаете: люди, которые не смогли оформить заказ, не заводят баг-репорты, они уходят.

Покрытие — доля. Оценки размеров пулов идут на десятки миллионов адресов. Ни один фид не содержит их все, а те, что содержит, — это те, которые было дёшево найти.

И вы всё ещё отвечаете не на тот вопрос. «Есть ли адрес в прокси-пуле» — это не «автоматизирована ли эта сессия», а нужно вам именно второе. Журналист на приватном VPN и скрапер на резидентном прокси могут делить адрес; одного из них надо пропустить.

Что переживает эту перемену

Всё, что описывает сессию, а не адрес.

Транспортные отпечатки. Прокси передаёт байты, а не переписывает TLS-рукопожатие. Какой клиент установил соединение, тот и объявляет свой упорядоченный набор шифронаборов, расширений и кривых — хеш JA3 или JA3N. Скрапящая библиотека за резидентным адресом всё равно выглядит как скрапящая библиотека, и подделать здесь настоящий браузер — значит воспроизвести целый криптостек, а не поправить заголовок.

Поведение. Сессия, которая заполняет форму без ритма набора, двигает фокус так, как не двигает рука, или отправляет данные быстрее, чем человек успел бы прочитать страницу, автоматизирована независимо от того, чей домашний интернет она одолжила.

Частота по аккаунтам, а не по адресам. Признаком credential stuffing никогда не было «много попыток с одного адреса» — это перестало быть правдой, как только ротация подешевела. Признак — «по одной попытке к каждому из четырёхсот аккаунтов», а он виден, только если что-то оценивает действующее лицо, а не считает запросы на адрес.

Непротиворечивость. Клиент, называющий себя Safari на iOS и предъявляющий TLS-отпечаток, которого не даёт ни одна сборка iOS, сам себе противоречит, и прокси тут не помощник.

Репутация, которую стоит держать

Репутация адреса не стала бесполезной после этой перемены — её просто нужно правильно взвешивать.

Взвешивайте по степени разделяемости адреса. Адрес, который резолвится в домашнего провайдера или мобильного оператора, скорее всего разделяемый, и одна плохая сессия должна двигать его репутацию куда слабее, чем такая же сессия с выделенного хостинга. Ошибка здесь — это как раз способ заблокировать компанию из-за одного человека в её сети, запустившего скрапер.

Дайте ей затухать. Репутация на ротируемом пуле должна стареть быстро, иначе вы наказываете следующего владельца адреса за прошлого арендатора.

Для первого контакта предпочитайте межсайтовый сигнал. Когда адрес появляется у вас впервые, истории по нему нет. Если прошлой ночью он гонял список паролей по чужому входу, это стоит знать — и это единственное, что помогает на самом первом запросе.

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

Где здесь Karma

Karma оценивает сессию — поведенческие сигналы и отпечатки TLS/HTTP2 — и держит репутацию адреса как взвешенный вход, а не как ответ. Адреса, похожие на разделяемые, и считаются разделяемыми, а репутация затухает.

Подключаемый общий пул закрывает случай первого контакта: адрес, который вёл себя как бот на сайте другого аккаунта, известен до того, как дойдёт до вашего, — ровно в тот момент, когда посайтовому чёрному списку сказать нечего.

Бесплатный тариф Detect гоняет всё это с выключенной блокировкой, так что вы увидите, какая доля трафика приходит из резидентного пространства и что вердикты о ней говорят, ещё до того, как что-либо менять.

FAQ

Что такое резидентный прокси?
Сервис, который передаёт трафик через адреса обычных домашних или мобильных подключений, а не через дата-центр. Адреса берутся у пользователей, поставивших бесплатный VPN или приложение со встроенным SDK, и у устройств, записанных в сеть зловредом без ведома владельца. Продаются по цене за гигабайт с ротацией на каждом запросе.
Можно ли блокировать резидентные прокси?
Заблокировать адреса можно, и обычно это ошибка. За таким адресом, как правило, стоит живой человек, который вас не атакует, а мобильный CGNAT способен посадить за один адрес десятки тысяч абонентов. Фиды адресов к тому же неполны и протухают, так что вы получаете ложные срабатывания на переиспользованных адресах и всё равно пропускаете большую часть пула.
Как обнаружить бота на резидентном IP?
Оценивая сессию, а не адрес. Прокси передаёт байты, не переписывая TLS-рукопожатие, поэтому отпечаток JA3/JA3N по-прежнему выдаёт библиотеку или сборку браузера, установившую соединение. Поведенческие сигналы — ритм заполнения формы, движение фокуса, скорость отправки — прокси тоже не меняет, а одно действующее лицо, бьющее по множеству разных аккаунтов, видно, даже когда каждый запрос идёт с нового адреса.
Почему мой чёрный список IP перестал работать?
Потому что враждебный трафик перестал приходить из адресного пространства, которое можно было безопасно блокировать. Пулы резидентных прокси перенесли его к тем же провайдерам, которыми пользуются ваши клиенты, и список, построенный на «этот диапазон принадлежит хостеру», больше их не разделяет. Лечится не лучшим списком, а оценкой того, что делает сессия, где адрес — лишь взвешенный вход.