Сканирование портов (port scanning) — способ обнаружения уязвимых узлов в сети путем обращения к разным портам хоста (подключенного к сети устройства) или к одному и тому же порту на разных хостах. Может применяться злоумышленниками на подготовительном этапе атаки для сбора информации о целевом хосте, а также специалистами по безопасности в качестве инструмента для поиска уязвимых мест IT-инфраструктуры.
Виды сканирования портов
Различают несколько разновидностей сканирования портов:
- Горизонтальное сканирование, или сканирование сети — когда запросы поступают на один и тот же порт на разных хостах. С помощью горизонтального сканирования злоумышленники могут готовиться к массовой атаке.
- Вертикальное сканирование — когда запросы поступают на разные порты на одном и том же хосте. С помощью вертикального сканирования злоумышленники, как правило, ищут уязвимости у заранее выбранной цели.
Способы сканирования портов
Существуют различные способы проверить, какие порты открыты и доступны извне. Наиболее распространенные из них:
- SYN-сканирование. Злоумышленник отправляет на интересующий порт запрос на синхронизацию по протоколу TCP (SYN). Если порт открыт, в ответ приходит пакет SYN-ACK (подтверждение синхронизации). После этого сканер обрывает соединение, не завершив его установку. Если порт закрыт, приходит сообщение о разрыве соединения. Если порт находится за брандмауэром, запрос остается без ответа. Это самый распространенный способ сканирования, поскольку он не предполагает полноценной установки соединения и не фиксируется большинством простых средств отслеживания событий. С другой стороны, SYN-сканирование требует наличия у сканера прав суперпользователя на устройстве, с которого отправляются запросы и которое может не принадлежать злоумышленнику.
- TCP-сканирование. Это самый простой метод сканирования, не требующий особых прав. Он использует сетевые функции ОС для установки полноценного TCP-соединения. Однако этот вид сканирования легко обнаружить и заблокировать.
- UDP-сканирование. Позволяет узнать состояние портов, используемых UDP-службами. В отличие от TCP, протокол UDP не предусматривает установки соединения. Поэтому если порт открыт и отправленные данные успешно доставлены, сканер не получит ответа. А вот с закрытого порта придет ICMP-сообщение об ошибке. Этот метод может давать неверное представление о доступных сетевых службах: если порт защищен файрволом или в системе заблокированы ICMP-сообщения, сканер не получит ответа и будет считать порт открытым.
- FIN-сканирование. Используется для определения открытых портов, скрытых за брандмауэром. Работает схожим образом с SYN-сканированием, но предполагает отправку пакетов FIN (запрос на завершение соединения). В отличие от запросов SYN, многие брандмауэры не блокируют такие пакеты. Закрытый порт, как правило, отвечает на них пакетом RST (разрыв соединения). Открытый — не отвечает. Правда, в некоторых операционных системах все порты реагируют на FIN-запрос одинаково, поэтому метод не очень точный.
- ACK-сканирование. Используется для сбора информации о брандмауэрах, их правилах и фильтруемых ими портах. Пакеты, помеченные ACK (подтверждение), используются в уже установленных соединениях, поэтому простые правила фильтрации трафика их пропускают. Если пакет не прошел, значит, порт защищен брандмауэром с более продвинутым набором правил.
Цели сканирования портов
Сканирование портов позволяет узнать:
- состояние портов (открыты, закрыты или защищены брандмауэром);
- перечень запущенных на портах служб;
- тип устройства, семейство ОС.
Злоумышленники используют эту информацию для подготовки атаки. В частности, для проникновения они могут воспользоваться уязвимостями в доступных извне сетевых службах, операционной системе устройства и так далее.
Специалисты по безопасности используют эту информацию для совершенствования защиты ресурсов организации. Так, по результатам сканирования можно поместить уязвимые службы за брандмауэр и закрыть ненужные порты.
Защита от сканирования портов
Обнаружить попытку сканирования портов могут аппаратные и программные брандмауэры. При выявлении подобной активности брандмауэр может, например, на время открыть все порты, чтобы запутать злоумышленников.
Специалистам по безопасности стоит самостоятельно проводить сканирование портов, так как это позволит закрыть неиспользуемые порты и защитить хост или сеть от аналогичных действий злоумышленников. Это тоже метод защиты от несанкционированного сканирования портов.