realfp.com

Что такое сканирование портов?

В компьютерных сетях «порт» — это абстрактное понятие, обозначающее точку сетевого доступа к определённому процессу или службе, работающей на компьютере. У каждого порта есть уникальный номер в диапазоне от 0 до 65535; этот номер позволяет компьютеру понять, какому приложению следует передать полученные данные.



Компьютер можно представить как большое здание, а порты — как номера дверей отдельных комнат в этом здании. К распространённым «номерам дверей» относятся: веб-служба HTTP обычно использует порт 80, защищённый веб-доступ HTTPS — порт 443, а почтовая служба SMTP — порт 25. Когда пакет данных поступает на компьютер, система по номеру порта точно «доставляет» его соответствующей службе или приложению.



Что такое сканирование портов?

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



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



Как сайты реализуют сканирование портов в браузере?

Вам может показаться странным: как обычная веб-страница может сканировать порты на вашем компьютере? В основе этого лежат некоторые особенности работы браузера.



Метод сканирования на основе времени



Самые ранние техники сканирования портов через браузер опирались на «атаку по времени». Когда веб-страница отправляет запрос на определённый порт через XMLHttpRequest или fetch:



Если порт закрыт, браузер сразу получает ответ «соединение отклонено», и запрос быстро завершается с ошибкой



Если порт открыт, браузер ожидает ответа сервера, и этот процесс занимает больше времени



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



Метод сканирования на основе iframe



Позже исследователи обнаружили более надёжную технику, в основном нацеленную на браузер Chrome. Когда Chrome пытается подключиться к закрытому порту, браузер меняет адрес страницы на chrome-error://chromewebdata/. Используя эту особенность:



Сайт создаёт скрытый iframe и загружает целевой адрес (например, http://127.0.0.1:8080)



Если порт закрыт, событие onload у iframe срабатывает дважды (поскольку URL изменился)



Если порт открыт, событие onload срабатывает только один раз



Подсчитав количество срабатываний события onload, сайт может точно определить, открыт ли порт.



Метод сканирования на основе WebSocket



Некоторые инструменты также используют соединения WebSocket для проверки состояния портов: успешное подключение означает, что порт открыт, а неудачное — что порт закрыт.



Зачем сайтам сканировать ваши порты?

1. Борьба с мошенничеством и обнаружение ботов



Многие крупные сайты (включая некоторые государственные сервисы и платформы электронной коммерции) используют сканирование портов, чтобы определить, является ли пользователь реальным человеком. Например, некоторые антибот-системы пытаются подключиться к 127.0.0.1:8888 — это стандартный прокси-порт таких инструментов для тестирования безопасности, как Burp Suite. Если этот порт открыт, система может заподозрить, что посетитель является исследователем безопасности или автоматизированным скриптом, и запустить дополнительную проверку.



2. Отслеживание по цифровому отпечатку пользователя



Исследования показывают, что результаты сканирования портов на основе браузера обладают достаточной уникальностью, чтобы использоваться как средство отслеживания пользователей. Проверяя локально открытые порты, сайт может сделать вывод, какое программное обеспечение запущено у пользователя: например, открытые порты 80 или 443 могут означать, что пользователь запускает веб-сервер, а открытый порт 25 — что работает почтовый сервер. Наборы программ, установленных у разных пользователей, сильно различаются, и это формирует уникальный «программный отпечаток».



Ещё больше беспокоит то, что исследования показывают: даже сканирование в течение всего одной секунды создаёт портовый отпечаток с высокой степенью уникальности. Когда результаты сканирования портов используются вместе с другими технологиями отпечатков (например, Canvas fingerprinting, WebGL fingerprinting и т. д.), возможности отслеживания дополнительно усиливаются.



3. Обнаружение устройств во внутренней сети



Большинство браузеров по умолчанию позволяют сайтам из публичного интернета отправлять запросы на частные IP-адреса (например, 127.0.0.1 или 192.168.x.x). Это означает, что вредоносный сайт может сканировать не только локальные порты вашего компьютера, но и порты устройств во внутренней сети — домашнего роутера, смарт-телевизора, сетевых камер и т. п. — в поисках уязвимых устройств для атаки.



Как защититься от сканирования портов в браузере?

1. Использовать расширения браузера



uBlock Origin: в настройках, в разделе «Конфиденциальность», включите параметр «Блокировать внешние вторжения во внутреннюю сеть», и защита начнёт действовать



NoScript: предоставляет возможность блокировать доступ к локальной сети



Некоторые специализированные защитные плагины также могут блокировать сканирование локальных портов сайтами



2. Использовать браузеры со встроенной защитой



В некоторых браузерах уже встроены функции защиты от сканирования портов. Например, отдельные браузеры активно блокируют известные вредоносные скрипты сканирования и ограничивают доступ сайтов из публичного интернета к локальным ресурсам. Такие браузеры, как Chrome, также постепенно внедряют спецификацию «Private Network Access», которая требует, чтобы сайты получали разрешение пользователя перед обращением к локальным ресурсам.



3. Использовать антидетект-браузер



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



Итоги

Сканирование портов — это технология, которая может использоваться как для легитимного аудита безопасности, так и злоупотребляться для нарушения конфиденциальности. Понимание принципов её работы и потенциальных рисков — первый шаг к защите собственной сетевой безопасности. Как гласит старая поговорка из сферы безопасности: «Только зная, какие ваши “двери” открыты, можно понять, какую из них нужно закрыть».