Недавно на сайте habr.com появился пост о сканировании портов в личном кабинете на сайте Ростелекома. Похожее сообщение о сканировании портов на сайте Сбербанка есть и на сайте pikabu.ru. Пользователи в обоих случаях указывают, что сканирование портов осуществлялось скриптами антифрод системы. Мы решили подробнее написать об использовании данной технологии сканирования портов для определения мошенников.
Многие современные антифрод системы стараются определить наличие инструментов удаленного доступа на устройстве пользователя (в том числе троянов) и использование прокси и других инструментов для скрытия реального IP адреса. Для решения этих задач в большинстве случаев используется сканирование открытых на устройстве сетевых портов (как локально, так и удаленно) и измерение времени пинга от сервера антифрод системы до внешнего IP адреса пользователя. В этой статье мы расскажем подробнее об этих методах и объясним, почему мы отказались от их использования в наших продуктах.
Локальное сканирование портов
Антифрод система использует JavaScript, который начинает делать локальные запросы к некоторым портам на устройстве пользователя (например, с помощью WebSocket или XMLHttpRequest). При обнаружении открытого порта с ним соотносится типичное программное обеспечение, которое используется этот порт. Например, 5900 порт для VNC, 5938 для TeamViewer, 3389 для RDP, 80 и 8080 для HTTP и так далее. В большинстве случаев это будет признак наличия на устройстве средств удаленного управления, либо троянов, использующих определенные порты.
Почему это плохая практика?
- Наличие открытого порта не говорит об использовании устройства злоумышленником. На многих компьютерах с ОС Windows открыт порт 3389, которые обеспечивает удаленный доступ к рабочему столу. Но это далеко не значит, что такой доступ используется в мошеннических целях и что в данный момент к порту кто-то подключен.
- Для определения того, что порт открыт, используется оценка разницы ответов открытого порта и закрытого. Например, если порт закрыт, то подключение к нему завершится по таймауту в 1000 миллисекунд, а если он открыт, то ответ будет получен через 100 миллисекунд. Стоит отметить, что подобные задержки могут изменяться в зависимости от состояния сети, нагруженности компьютера и особенностей ПО, на обнаружение которого нацелена проверка. Поэтому здесь может быть большое количество как ложноположительных (по задержке порт выглядит открытым), так и ложноотрицательных (соединение завершилось по таймауту) результатов.
- На определнном порту может работать не то ПО, которое подразумевает антифрод система, а какое-то другое с совершенно иным функционалом.
Удаленное сканирование портов
Этот механизм похож на локальное сканирование портов, но запросы идут от удаленного сервера к IP адресу пользователя. Кроме того, что перечислено в части о локальном сканировании, также стоит учитывать следующее.
- Удаленное сканирование портов часто вызывает срабатывание защит антивирусов и фаерволлов с уведомлением пользователя об атаке. Представьте, что каждый раз, когда пользователь заходит на ваш сайт, ему сообщается, что компьютер атакован. В дальнейшем пользователь может избегать посещения вашего сайта.
- В дополнение к локальным задержкам появляются сетевые задержки в глобальной сети, что делает результаты проверки еще менее точными.
Пинг внешнего IP пользователя
Этот метод используется для определения проксирующих узлов в соединении пользователя. Измеряется время прохождения запроса от компьютера пользователя до сервера антифрод системы и сравнивается со временем пинга от сервера до IP адреса, который использует посетитель сайта. Если запрос от пользователя идет значительно дольше, чем от сервера до IP адреса, значит пользователь отправляет запросы через прокси. Существует и другой, менее популярный способ проверки, когда пользователь отправляет запрос на локальный IP адрес 127.0.0.1 и на IP адрес, от которого отправляются запросы к сайту. Если используется прокси, то время отклика от этого IP адреса будет значительно больше, чем от локального. В дополнение к пунктам из частей выше следует отметить еще некоторые нюансы.
- У некоторых провайдеров весь трафик пользователей идет через прокси провайдера, поэтому в данном случае антифрод система уведомит клиента об опасности, при том что никакой реальной угрозы нет. Многие компании используют корпоративный VPN на рабочих местах своих сотрудников. В этом случае также пользователь будет отмечен как подозрительный.
- Возможность пинга может быть заблокирована со стороны внешнего IP адреса пользователя. В этом случае проверка не даст никаких результатов.
- Трафик в глобальной сети Интернет часто идет не по самому очевидному маршруту и запрос от сервера из Москвы к серверу в Санкт-Петербурге может идти через узел-посредник на другом континенте. Поэтому данные о скорости пинга могут быть сильно искажены и дать ложные выводы в результате этой проверки.
Заключение
Мы показали, что сканирование портов и использование обратного пинга для определения удаленного доступа и прокси — это не самые лучшие решения для антифрод системы. Следует использовать более надежные, стабильные и не дающие о себе знать пользователю методы. Каждая компания находит их самостоятельно, поэтому перечислять такие методы мы не будем. Именно в нашей антифрод системе WEB ANTIFRAUD определение удаленного доступа и прокси реализовано максимально точно и с минимальным количеством ложных срабатываний. Рекомендуем воспользоваться нашим продуктом для защиты аккаунтов ваших клиентов.