Приветствую, коллеги! Сегодня мы погрузимся в одну из фундаментальных тем кибербезопасности, без которой немыслима ни одна серьезная пентест-сессия, ни качественный аудит безопасности сети. Речь пойдет о сканировании портов. Для кого-то это может показаться базой, но, как показывает практика, даже опытные специалисты иногда упускают нюансы или забывают о многогранности этого процесса. Эта статья – попытка не просто объяснить, что такое сканирование портов, но и глубоко разобрать, зачем сканировать порты, какие методики существуют, какими инструментами пользоваться, и как интерпретировать полученные результаты. Мы не будем лить воду, только суть, технические детали и практические примеры. Готовы освежить знания и, возможно, открыть для себя что-то новое? Тогда поехали!

Оглавление

Что такое сетевой порт? Фундаментальное понимание

Прежде чем мы углубимся в само сканирование портов, давайте освежим в памяти, что же такое сетевой порт. Представьте себе большой офисный центр (это ваш компьютер или сервер с его IP-адресом). В этом центре множество дверей, каждая из которых ведет в определенный офис, где предоставляется конкретная услуга. Сетевой порт – это и есть такая «дверь».

Технически, порт – это 16-битное число (от 0 до 65535), которое используется транспортными протоколами (в основном TCP и UDP) для идентификации конкретного процесса или типа сетевого сервиса, к которому должно быть доставлено входящее или исходящее сообщение. Когда данные приходят на IP-адрес, операционная система смотрит на номер порта, чтобы понять, какому приложению или службе эти данные предназначены.

Выделенные серверы и VPS/VDS в Нидерландах

Оффшорные, доступные, стабильные. Оплата в крипто.

Подробнее

  • Порты 0-1023: Известные (Well-known ports). Зарезервированы для стандартных сервисов (HTTP – порт 80, HTTPS – 443, FTP – 20/21, SSH – 22, SMTP – 25 и т.д.). Обычно для их использования требуются привилегии суперпользователя.
  • Порты 1024-49151: Зарегистрированные (Registered ports). Могут быть зарегистрированы разработчиками ПО для своих приложений.
  • Порты 49152-65535: Динамические или частные (Dynamic/Private ports). Используются клиентскими приложениями для установления кратковременных соединений или для частных сервисов.

Понимание этой концепции критично, так как сканирование портов это, по сути, проверка «дверей» на доступность и определение того, какая «служба» за ними находится.

Сканирование портов это: Детальное определение и аналогии

Итак, сканирование портов это процесс отправки специально сформированных пакетов на определенные порты целевого хоста (или диапазона хостов) с целью определения, какие порты открыты, закрыты или фильтруются межсетевым экраном. Это один из первых и важнейших шагов на этапе разведки (reconnaissance) при проведении тестирования на проникновение или аудита безопасности.

Если продолжить нашу аналогию с офисным центром, то сканирование портов – это как если бы вы прошлись по всем этажам и подергали за ручки всех дверей, чтобы понять, какие из них открыты, какие заперты, а к каким вас просто не пускает охрана (межсетевой экран). Более того, заглянув в открытую дверь, вы можете попытаться определить, что за «офис» (сервис) там находится – бухгалтерия (возможно, база данных), отдел продаж (веб-сервер) или серверная (SSH-доступ).

Таким образом, сканирование портов это не просто проверка «открыто/закрыто», а сбор информации о:

  • Активных хостах в сети.
  • Открытых портах на этих хостах.
  • Службах (сервисах), работающих на этих портах.
  • Версиях этих служб (что крайне важно для поиска известных уязвимостей).
  • Операционной системе целевого хоста (часто можно определить по особенностям ответа сетевого стека).

Понимание того, что такое сканирование портов, позволяет специалисту по кибербезопасности сформировать карту поверхности атаки (attack surface) и выявить потенциальные точки входа в систему.

Зачем сканировать порты? Ключевые цели и задачи

Вопрос «зачем сканировать порты?» имеет множество ответов в зависимости от того, кто и с какой целью проводит сканирование. Для специалиста по кибербезопасности это неотъемлемая часть работы. Рассмотрим основные причины.

Аудит безопасности и оценка уязвимостей

Это, пожалуй, основная причина для «белых шляп». Сканирование портов позволяет:

  • Идентифицировать открытые порты: Каждый открытый порт – это потенциальная точка входа для злоумышленника. Необходимо убедиться, что открыты только те порты, которые действительно нужны для работы сервисов.
  • Обнаружить неавторизованные сервисы: Иногда сотрудники могут устанавливать ПО, открывающее порты без ведома IT-отдела (например, торрент-клиенты, игровые серверы).
  • Определить версии работающих служб: Зная версию ПО (например, веб-сервера Apache 2.4.53 или SSH-сервера OpenSSH 8.2p1), можно проверить наличие известных уязвимостей (CVE) для этих версий. Это первый шаг к патч-менеджменту и снижению рисков.
  • Проверить соответствие политикам безопасности: Например, политика может требовать, чтобы доступ по SSH был разрешен только из определенных сетей, или чтобы на всех веб-серверах использовался HTTPS.

Обнаружение хостов и сетевых сервисов (Network Discovery & Service Identification)

Перед тем как атаковать или защищать, нужно знать, что именно находится в сети. Сканирование портов помогает:

  • Составить карту сети: Определить, какие IP-адреса активны и какие службы на них запущены.
  • Идентифицировать тип устройств: По набору открытых портов и версиям служб часто можно предположить, является ли хост веб-сервером, базой данных, контроллером домена, принтером или рабочей станцией.

Тестирование конфигурации межсетевых экранов

Межсетевые экраны (firewalls) – первая линия обороны. Зачем сканировать порты в этом контексте? Чтобы убедиться, что файрвол настроен корректно и блокирует нежелательный трафик, а также пропускает легитимный. Сканирование с разных точек (изнутри сети, снаружи) позволяет проверить правила фильтрации.

Диагностика и устранение неисправностей в сети

Иногда сетевые службы перестают работать или становятся недоступными. Сканирование портов может помочь системным администраторам быстро определить:

  • Работает ли служба на ожидаемом порту.
  • Не блокируется ли доступ к порту файрволом (локальным или сетевым).
  • Не конфликтует ли несколько служб, пытаясь использовать один и тот же порт.

Для злоумышленников (black hats) ответ на вопрос «зачем сканировать порты?» также очевиден: это первый шаг к поиску уязвимых точек входа для эксплуатации. Поэтому для нас, специалистов по защите, понимание их мотивов и методов также крайне важно.

Как работает сканирование портов? Механизмы на пальцах

Чтобы понять различные типы сканирования, важно разобраться в основах работы протокола TCP, в частности, в механизме установления соединения.

Трехэтапное рукопожатие TCP (Three-Way Handshake)

Когда клиент хочет установить TCP-соединение с сервером (например, ваш браузер с веб-сервером на порту 80), происходит следующий обмен пакетами:

  1. SYN (Synchronize): Клиент отправляет на сервер TCP-пакет с установленным флагом SYN и случайным начальным номером последовательности (Initial Sequence Number, ISN). Это запрос на установление соединения.
  2. SYN-ACK (Synchronize-Acknowledge): Если порт на сервере открыт и служба готова принимать соединения, сервер отвечает пакетом с установленными флагами SYN и ACK. Сервер также выбирает свой ISN и подтверждает ISN клиента (увеличив его на 1).
  3. ACK (Acknowledge): Клиент отправляет серверу пакет с флагом ACK, подтверждая ISN сервера (увеличив его на 1). Соединение установлено, и начинается обмен данными.

Если порт закрыт, сервер обычно отвечает пакетом с флагом RST (Reset), сигнализируя об отказе в соединении. Если порт фильтруется файрволом, клиент может вообще не получить ответа, либо получить сообщение ICMP «Destination Unreachable».

Состояния портов: Открыт, Закрыт, Фильтруется, Не фильтруется

При сканировании портов, в зависимости от ответа (или его отсутствия) от целевого хоста, порт может быть классифицирован следующим образом (на примере Nmap):

  • Open (Открыт): Приложение активно принимает TCP-соединения, UDP-датаграммы или SCTP-ассоциации на этом порту. Это то, что обычно ищут. Открытые порты часто являются целью атак, поэтому важно убедиться, что они защищены.
  • Closed (Закрыт): Порт доступен (он отвечает на запросы сканера), но на нем нет работающего приложения. Это означает, что хост получил и обработал пакет, но никакая служба не прослушивает этот порт. Закрытые порты могут быть полезны для определения, что хост активен, а также для определения ОС (OS fingerprinting).
  • Filtered (Фильтруется): Сканер не может определить, открыт порт или закрыт, потому что пакеты блокируются каким-либо фильтрующим устройством (например, файрволом, маршрутизатором с ACL, или хостовым ПО). Сканер не получает ответа, либо получает ICMP-сообщение об ошибке (например, type 3 code 1, 2, 3, 9, 10, или 13). Такие порты могут замедлять сканирование, так как сканеру приходится ждать таймаута.
  • Unfiltered (Не фильтруется): Это состояние означает, что порт доступен, но сканер не может определить, открыт он или закрыт. Только ACK-сканирование классифицирует порты таким образом. Сканирование таких портов другими методами (например, SYN scan, FIN scan) может помочь определить их истинное состояние.
  • Open|Filtered: Сканер не может однозначно определить, открыт порт или фильтруется. Это происходит для типов сканирования, при которых открытые порты не отвечают (например, UDP, IP Protocol, FIN, Null, Xmas сканы). Отсутствие ответа может означать, что порт открыт или что пакет был отброшен файрволом.
  • Closed|Filtered: Сканер не может определить, закрыт порт или фильтруется. Это состояние используется только для IP ID Idle сканирования.

Основные типы сканирования портов: Арсенал специалиста

Существует множество техник сканирования портов, каждая со своими особенностями, преимуществами и недостатками. Выбор конкретного типа сканирования зависит от целей, условий сети, уровня «скрытности» и конфигурации целевой системы.

TCP Connect Scan (Full Open Scan)

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

  • Преимущества: Простота реализации, не требует специальных привилегий для запуска (поскольку использует стандартные системные вызовы). Надежен.
  • Недостатки: Легко обнаруживается и логируется целевой системой, так как устанавливается полное соединение. Медленнее, чем SYN-сканирование.
  • Nmap опция: -sT

SYN Scan (Half-Open Scan, Stealth Scan)

Это наиболее популярный тип сканирования. Сканер отправляет SYN-пакет, как при попытке инициировать обычное TCP-соединение.

  • Если порт открыт, сервер отвечает SYN/ACK-пакетом. Сканер, получив SYN/ACK, понимает, что порт открыт, и немедленно отправляет RST-пакет, чтобы разорвать соединение до его полного установления. Это называется «полуоткрытым» соединением.
  • Если порт закрыт, сервер отвечает RST-пакетом.
  • Если ответа нет или приходит ICMP «destination unreachable», порт считается фильтруемым.

Преимущества: Более «скрытный», чем TCP Connect Scan, так как полное соединение не устанавливается, и некоторые старые системы/IDS могут его не залогировать (хотя современные IDS его отлично видят). Быстрее, так как не тратится время на полное рукопожатие и его закрытие. Позволяет различать состояния open, closed и filtered.

Недостатки: Требует привилегий root/администратора для создания «сырых» (raw) сокетов и отправки кастомных SYN-пакетов. Может быть ненадежен против некоторых файрволов, которые отслеживают состояние соединений (stateful firewalls), но обычно работает хорошо.

Nmap опция: -sS (используется по умолчанию, если Nmap запускается с привилегиями root)

FIN Scan

Этот тип сканирования (а также Xmas и Null) использует лазейку в RFC 793 (TCP). Согласно RFC, если на закрытый порт приходит пакет без установленных флагов SYN, RST или ACK, то порт должен ответить RST-пакетом. Если порт открыт, он должен проигнорировать такой пакет. FIN-сканирование отправляет TCP-пакет только с установленным флагом FIN.

  • Ответ RST => порт закрыт.
  • Нет ответа => порт открыт или фильтруется (open|filtered).
  • ICMP unreachable => порт фильтруется.

Преимущества: Еще более скрытный, так как некоторые IDS и системы логирования могут не обращать внимания на такие «нестандартные» пакеты. Может обходить некоторые stateless файрволы.

Недостатки: Не работает на системах Microsoft Windows (они отвечают RST на любой некорректный пакет, независимо от состояния порта). Не все UNIX-подобные системы строго следуют RFC. Требует root-привилегий.

Nmap опция: -sF

Xmas Scan

Аналогичен FIN-сканированию, но отправляет пакет с установленными флагами FIN, PSH и URG (как новогодняя елка, «lit up like a Christmas tree»). Логика ответа такая же, как у FIN-сканирования.

  • Ответ RST => порт закрыт.
  • Нет ответа => порт открыт или фильтруется (open|filtered).
  • ICMP unreachable => порт фильтруется.

Преимущества и недостатки: Аналогичны FIN-сканированию.

Nmap опция: -sX

Null Scan

Отправляет TCP-пакет без установленных флагов. Логика ответа такая же, как у FIN и Xmas сканирований.

  • Ответ RST => порт закрыт.
  • Нет ответа => порт открыт или фильтруется (open|filtered).
  • ICMP unreachable => порт фильтруется.

Преимущества и недостатки: Аналогичны FIN-сканированию.

Nmap опция: -sN

UDP Scan

Сканирование UDP-портов сложнее и медленнее TCP-сканирования, так как UDP – протокол без установления соединения. Нет аналога SYN/ACK. Обычно на UDP-порт отправляется пустая UDP-датаграмма (или специфичная для протокола, если известно).

  • Если получен ответ (любой UDP-пакет) => порт открыт.
  • Если получен ICMP-ответ «port unreachable» (type 3, code 3) => порт закрыт.
  • Если получен другой ICMP-ответ (type 3, codes 1, 2, 9, 10, or 13) => порт фильтруется.
  • Если ответа нет после нескольких попыток => порт считается открытым|фильтруемым (open|filtered). Это самая частая ситуация, так как многие хосты придерживаются RFC и не отвечают на UDP-пакеты, пришедшие на открытый порт, либо файрвол блокирует ответ.

Преимущества: Позволяет обнаружить UDP-сервисы (DNS, SNMP, DHCP, VPN (IPsec/IKE) и др.), которые могут быть уязвимы.

Недостатки: Очень медленный из-за необходимости ждать таймаутов. Часто дает результат open|filtered, что требует дальнейшего исследования. Может вызывать срабатывание систем ограничения скорости отправки ICMP-сообщений на некоторых хостах.

Nmap опция: -sU

ACK Scan

Этот тип сканирования отправляет TCP-пакеты только с установленным флагом ACK. Он не используется для определения открытых портов (так как открытые и закрытые порты отвечают одинаково — RST-пакетом). Его основная цель – определить правила файрвола, то есть выяснить, является ли файрвол stateful или stateless, и какие порты фильтруются.

  • Если получен RST-ответ => порт не фильтруется (unfiltered), то есть пакет достиг хоста.
  • Если ответа нет или получен ICMP «destination unreachable» => порт фильтруется (filtered).

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

Недостатки: Не определяет, открыт порт или закрыт.

Nmap опция: -sA

Window Scan

Очень похож на ACK-сканирование, но может иногда определять открытые порты на некоторых системах благодаря аномалии в реализации TCP-стека, которая заключается в размере TCP-окна в ответном RST-пакете. Если размер окна в RST-ответе положителен, порт считается открытым, если нулевой – закрытым.

Преимущества: Может иногда обнаруживать открытые порты там, где ACK-сканирование этого не делает.

Недостатки: Ненадежен, так как не все системы ведут себя предсказуемо. Часто порты помечаются как closed, даже если они открыты. Устаревший метод.

Nmap опция: -sW

RPC Scan

Используется в сочетании с другими типами сканирования (например, TCP Connect Scan) для обнаружения RPC (Remote Procedure Call) сервисов и определения их программ и версий. Nmap отправляет RPC NULL команду на все обнаруженные открытые TCP/UDP порты, которые могут принадлежать RPC portmapper.

Nmap опция: -sR (обычно используется вместе с -sV)

Version Detection (Определение версий служб)

После того как открытые порты обнаружены, критически важно определить, какие именно приложения и их версии прослушивают эти порты. Nmap для этого использует базу данных сигнатур (nmap-service-probes), отправляя различные запросы на открытый порт и анализируя ответы.

Nmap опция: -sV

OS Detection (Определение операционной системы)

Nmap может попытаться определить операционную систему целевого хоста, основываясь на особенностях его TCP/IP стека (например, начальные значения TTL, размер окна TCP, ответы на специфические «зондирующие» пакеты). Используется база данных сигнатур ОС (nmap-os-db).

Nmap опция: -O

Idle Scan (Zombie Scan) — Высший пилотаж

Это очень продвинутый и по-настоящему «скрытный» метод сканирования, который позволяет сканировать цель, не отправляя ей напрямую ни одного пакета со своего IP-адреса. Вместо этого используется «зомби-хост» (idle host) – машина в сети, которая неактивна (не генерирует много трафика) и имеет предсказуемую последовательность IP ID в заголовках IP-пакетов.

Механизм (упрощенно):

  1. Атакующий находит подходящий «зомби-хост».
  2. Атакующий отправляет зондирующий пакет (например, SYN/ACK) на зомби-хост и запоминает его текущий IP ID.
  3. Атакующий отправляет SYN-пакет на целевой порт жертвы, но с подмененным IP-адресом источника на IP-адрес зомби-хоста.
  4. Если порт на жертве открыт, жертва отправит SYN/ACK-пакет на зомби-хост (поскольку IP-адрес источника был подменен). Зомби-хост, получив неожиданный SYN/ACK, ответит RST-пакетом, инкрементировав свой IP ID.
  5. Если порт на жертве закрыт, жертва отправит RST-пакет на зомби-хост. Зомби-хост ничего не ответит на RST, и его IP ID не изменится.
  6. Атакующий снова зондирует IP ID зомби-хоста.
    • Если IP ID увеличился на 2 (один раз от зонда атакующего, один раз от ответа жертвы на SYN/ACK, который зомби «отбил» RST’ом), то порт на жертве открыт.
    • Если IP ID увеличился на 1 (только от зонда атакующего), то порт на жертве закрыт.

Преимущества: Максимальная скрытность, так как реальный IP-адрес атакующего не светится в логах жертвы.

Недостатки: Сложно найти подходящий зомби-хост. Не всегда надежен из-за сетевых условий или активности зомби. Требует root-привилегий. Медленнее других методов.

Nmap опция: -sI

Инструменты для сканирования портов: Обзор и практическое применение

Существует множество инструментов для сканирования портов, от простых утилит командной строки до мощных комбайнов с графическим интерфейсом. Рассмотрим наиболее популярные и эффективные.

Nmap (Network Mapper) – Король сканеров

Nmap, созданный Гордоном Лайоном (Fyodor), – это, без преувеличения, стандарт де-факто в мире сканирования портов и сетевой разведки. Это свободный и открытый инструмент, невероятно мощный и гибкий. Он поддерживает все описанные выше типы сканирования и множество других функций, включая определение ОС, версий служб, выполнение скриптов NSE (Nmap Scripting Engine) для автоматизации задач и поиска уязвимостей.

Скачать Nmap: https://nmap.org/download.html

Установка Nmap

Linux (Debian/Ubuntu):

sudo apt update
sudo apt install nmap

Linux (Fedora/CentOS/RHEL):

sudo dnf install nmap # или yum для старых версий

Windows: Скачайте установщик (.exe) с официального сайта и следуйте инструкциям. Nmap для Windows поставляется с Npcap для захвата и отправки сырых пакетов.

macOS:

brew install nmap # Если у вас установлен Homebrew

Или скачайте .dmg с официального сайта.

Базовые команды Nmap

Сканирование одного хоста (по умолчанию SYN scan, если есть root, иначе TCP Connect):

nmap scanme.nmap.org

Сканирование нескольких хостов:

nmap 192.168.1.1 192.168.1.5 scanme.nmap.org

Сканирование диапазона IP-адресов:

nmap 192.168.1.1-254

Сканирование всей подсети (CIDR нотация):

nmap 192.168.1.0/24

Сканирование из файла со списком хостов:

nmap -iL list_of_hosts.txt

Сканирование конкретных портов:

nmap -p 80,443,22 192.168.1.1

Сканирование диапазона портов:

nmap -p 1-1000 192.168.1.1

Сканирование всех 65535 портов (может быть долго):

nmap -p- 192.168.1.1

Сканирование наиболее популярных портов (Nmap выбирает их из своего списка):

nmap --top-ports 100 192.168.1.1

Быстрое сканирование (меньше портов, чем по умолчанию):

nmap -F 192.168.1.1

Продвинутые техники сканирования с Nmap

Выбор типа сканирования:

sudo nmap -sS 192.168.1.1  # SYN scan (по умолчанию с root)
nmap -sT 192.168.1.1  # TCP Connect scan
sudo nmap -sU 192.168.1.1  # UDP scan
sudo nmap -sF 192.168.1.1  # FIN scan
sudo nmap -sA 192.168.1.1  # ACK scan

Определение версий служб и ОС:

sudo nmap -sV -O 192.168.1.1

Агрессивное сканирование (включает -O, -sV, --traceroute и запуск скриптов из категории default):

sudo nmap -A 192.168.1.1

Управление скоростью сканирования (-T0 — параноидальный, очень медленный; -T5 — безумный, очень быстрый):

sudo nmap -T4 192.168.1.1 # Агрессивный, но не безумный

Запуск скриптов NSE:

sudo nmap --script default 192.168.1.1 # Скрипты по умолчанию
sudo nmap --script vuln 192.168.1.1   # Скрипты для поиска уязвимостей
sudo nmap --script "http-*" 192.168.1.1 # Все HTTP скрипты

Вывод результатов в различные форматы:

sudo nmap -oN normal_output.txt 192.168.1.1    # Нормальный формат
sudo nmap -oX xml_output.xml 192.168.1.1      # XML формат
sudo nmap -oG grepable_output.gnmap 192.168.1.1 # Grepable формат
sudo nmap -oA all_formats_basename 192.168.1.1 # Все три формата

Отключение DNS-резолвинга (может ускорить сканирование больших сетей):

sudo nmap -n 192.168.1.0/24

Отключение пинг-сканирования (полезно, если хосты блокируют ICMP):

sudo nmap -Pn 192.168.1.1 # Считать хост активным и сканировать порты

Это лишь малая часть возможностей Nmap. Настоятельно рекомендую изучить официальную документацию (man nmap или Nmap Reference Guide).

Masscan – Для сверхбыстрого сканирования больших сетей

Masscan – это асинхронный сканер портов, разработанный Робертом Грэмом. Его главное преимущество – невероятная скорость. Он может просканировать весь интернет на одном порту за несколько минут (при наличии соответствующего канала и ресурсов). Masscan достигает такой скорости, отправляя пакеты асинхронно и используя собственный TCP/IP стек, а не системный.

Скачать Masscan: https://github.com/robertdavidgraham/masscan

Установка Masscan

Linux (Debian/Ubuntu):

sudo apt install gcc git libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install

macOS (с Homebrew):

brew install masscan

Примеры использования Masscan

Сканирование порта 80 в подсети 192.168.1.0/24 со скоростью 1000 пакетов в секунду:

sudo masscan 192.168.1.0/24 -p80 --rate 1000

Сканирование нескольких портов:

sudo masscan 192.168.1.0/24 -p22,80,443 --rate 1000

Сканирование диапазона портов и вывод в файл:

sudo masscan 10.0.0.0/8 -p1-1000 --rate 100000 -oL output.txt

Важно: Masscan – очень «шумный» инструмент. Используйте его с осторожностью и только на тех сетях, где у вас есть разрешение. Из-за высокой скорости он может вызвать проблемы на некоторых сетях или устройствах, а также легко обнаруживается IDS/IPS.

Netcat (nc) – Швейцарский нож для сетевых задач

Netcat (или nc) – это универсальная утилита командной строки для чтения и записи данных через сетевые соединения с использованием TCP или UDP. Хотя это не специализированный сканер портов, его можно использовать для быстрой проверки отдельных портов.

Проверка TCP-порта (если соединение установлено, порт открыт):

nc -v -z -w 1 scanme.nmap.org 80 # -v (verbose), -z (zero-I/O mode, scan), -w (timeout)

Проверка UDP-порта (сложнее, так как UDP не дает подтверждения):

nc -v -u -z -w 1 scanme.nmap.org 53 # -u (UDP mode)

Netcat полезен для ручных проверок и скриптов, но для масштабного сканирования портов лучше использовать Nmap или Masscan.

Онлайн-сканеры портов

Существует множество веб-сайтов, предлагающих услуги онлайн-сканирования портов. Они могут быть полезны для быстрой проверки доступности ваших собственных внешних IP-адресов из интернета. Примеры: Pentest-Tools, HackerTarget, DNSChecker и др.

Преимущества: Не требуют установки ПО, доступны из любого браузера.

Недостатки: Ограниченный функционал по сравнению с Nmap, нельзя сканировать внутренние сети, результаты могут быть не такими точными, всегда есть вопрос доверия к стороннему сервису.

Интерпретация результатов сканирования: Что дальше?

Получение списка открытых портов – это только начало. Важно правильно интерпретировать результаты и понимать, что с ними делать.

  • Анализ открытых портов: Каждый открытый порт должен быть оправдан. Если вы видите открытый порт, который не должен быть открыт согласно политикам безопасности или функциональным требованиям, это потенциальная проблема. Например, открытый Telnet (порт 23) или FTP (порт 21) на внешнем сервере – это почти всегда плохо.
  • Идентификация служб и версий (-sV в Nmap): Знание точной версии службы (например, Apache 2.4.53, OpenSSH 7.9p1, Microsoft IIS 10.0) позволяет искать известные уязвимости (CVE) для этих версий. Используйте базы данных уязвимостей (например, CVE Mitre, Exploit-DB, Vulners).
  • Определение ОС (-O в Nmap): Знание ОС помогает понять, какие эксплойты могут быть применимы, какие стандартные конфигурации и уязвимости могут присутствовать.
  • Сопоставление с известной конфигурацией: Сравните результаты сканирования с ожидаемой конфигурацией сети. Любые расхождения требуют расследования.
  • Дальнейшее исследование: Для каждого интересного открытого порта можно провести более глубокое исследование:
  • Веб-сервисы (HTTP/HTTPS): Попробуйте подключиться браузером, используйте инструменты для анализа веб-приложений (Nikto, OWASP ZAP, Burp Suite).
  • SSH/FTP/Telnet: Попробуйте стандартные или слабые учетные данные (если это разрешено в рамках пентеста).
  • Базы данных (MySQL, PostgreSQL, MSSQL): Попробуйте подключиться клиентом БД, проверьте на анонимный доступ или слабые пароли.
  • Запуск скриптов NSE (Nmap Scripting Engine): Для многих служб существуют скрипты NSE, которые могут автоматически проверить наличие известных уязвимостей, собрать дополнительную информацию (например, smb-enum-shares.nse для SMB, http-title.nse для получения заголовка веб-страницы).
  • Отчетность: Результаты сканирования должны быть задокументированы, особенно если это часть аудита или пентеста. В отчете должны быть указаны обнаруженные открытые порты, службы, версии, потенциальные уязвимости и рекомендации по их устранению.

Это КРАЙНЕ ВАЖНЫЙ АСПЕКТ! Сканирование портов чужих сетей без явного письменного разрешения владельца является незаконным во многих юрисдикциях и может рассматриваться как попытка несанкционированного доступа или нарушение компьютерной безопасности. Это может повлечь за собой юридические последствия, от штрафов до уголовной ответственности.

Всегда:

  • Получайте письменное разрешение: Прежде чем сканировать любую систему или сеть, которая вам не принадлежит, убедитесь, что у вас есть четкое, недвусмысленное письменное разрешение от владельца. В этом разрешении должны быть указаны scope (область сканирования), время проведения работ и контактные лица.
  • Соблюдайте правила «белого шляпника»: Ваша цель – помочь улучшить безопасность, а не навредить.
  • Не выходите за рамки scope: Если вам разрешили сканировать только определенные IP-адреса или порты, не выходите за эти рамки.
  • Будьте осторожны: Некоторые типы сканирования (особенно агрессивные или на нестабильные системы) могут вызвать сбои в работе сервисов. Если вы не уверены, проконсультируйтесь с владельцем системы.

Даже если ваша цель – просто «посмотреть», что открыто, без злого умысла, это все равно может быть интерпретировано как враждебное действие. Для тренировки используйте специально созданные для этого ресурсы, такие как scanme.nmap.org, zero.webappsecurity.com, или разворачивайте собственные виртуальные лаборатории (например, с помощью Metasploitable, DVWA).

Защита от нежелательного сканирования портов

Полностью предотвратить сканирование портов практически невозможно, так как это фундаментальная часть работы сети. Однако можно значительно усложнить жизнь атакующим и своевременно обнаруживать подозрительную активность.

Межсетевые экраны (Firewalls) и Системы обнаружения/предотвращения вторжений (IDS/IPS)

  • Межсетевые экраны: Настройте файрволы (сетевые и хостовые) так, чтобы блокировать все входящие соединения на порты, которые не должны быть доступны извне. Используйте принцип наименьших привилегий: разрешайте только то, что необходимо. Stateful файрволы более эффективны, так как отслеживают состояние соединений.
  • IDS/IPS: Системы обнаружения (IDS) и предотвращения (IPS) вторжений могут идентифицировать различные типы сканирования портов по характерным сигнатурам и аномалиям в трафике. IPS может автоматически блокировать IP-адреса, с которых идет сканирование. Примеры: Snort, Suricata, OSSEC.

Port Knocking

Это метод скрытия портов, при котором порт на файрволе открывается только после того, как на определенную последовательность закрытых портов придут «стуки» (попытки соединения). Например, чтобы открыть SSH-порт 22, нужно сначала «постучать» на порты 1001, затем 2002, затем 3003. Только после правильной последовательности файрвол временно откроет порт 22 для IP-адреса «стучавшего».

Преимущества: Эффективно скрывает порты от обычного сканирования.

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

Honeypots (Приманки)

Honeypot – это система-приманка, которая имитирует уязвимый хост или сервис. Любая активность на honeypot считается подозрительной по определению. Они помогают обнаруживать сканирование и атаки на ранних стадиях, а также собирать информацию о методах и инструментах атакующих. Примеры: Dionaea, Cowrie, Honeyd.

Анализ логов и мониторинг

Регулярный анализ логов файрволов, серверов и IDS/IPS помогает выявлять попытки сканирования. Используйте SIEM-системы (Security Information and Event Management) для централизованного сбора и анализа логов, а также для настройки оповещений о подозрительной активности.

Продвинутые техники и методы обхода обнаружения

Атакующие (и пентестеры) постоянно ищут способы сделать сканирование портов менее заметным для IDS/IPS и файрволов. Вот некоторые из них (многие из них уже упоминались в контексте Nmap):

  • Медленное сканирование (Slow Scans): Использование опций Nmap -T0 (Paranoid) или -T1 (Sneaky), или ручная настройка временных параметров (--max-rtt-timeout, --scan-delay) чтобы растянуть сканирование на длительное время и избежать срабатывания пороговых значений IDS.
  • Фрагментация пакетов (Packet Fragmentation): Отправка зондирующих пакетов в виде нескольких мелких IP-фрагментов. Некоторые старые IDS/файрволы могут испытывать трудности с корректной сборкой и анализом таких пакетов. Nmap: -f (фрагментирует пакеты на 8 байт или меньше), --mtu (задает собственный MTU).
  • Использование поддельных IP-адресов (Decoys): Nmap позволяет указывать фиктивные IP-адреса источников (-D RND:10 или -D decoy1,decoy2,ME), чтобы запутать логи и скрыть реальный IP-адрес сканера среди множества ложных. ME указывает на реальный IP.
  • Указание исходного порта (Source Port Spoofing): Некоторые файрволы могут быть настроены доверять трафику с определенных исходных портов (например, 53 — DNS, 20 — FTP data). Nmap: --source-port или -g .
  • Idle Scan (-sI): Как уже обсуждалось, это самый скрытный метод, так как жертва не видит IP-адрес атакующего.
  • Обход на основе TTL (TTL Evasion): Отправка пакетов с таким TTL, чтобы они «умирали» сразу после прохождения определенного сетевого устройства (например, IDS), но до достижения цели. Или наоборот, чтобы достичь цели, но не IDS. Сложно реализуемо на практике.
  • Использование IPv6: Не все системы мониторинга и защиты одинаково хорошо настроены для IPv6, что может дать атакующему преимущество.
  • Шифрование и туннелирование: Использование VPN, Tor или SSH-туннелей для маскировки источника сканирования.

Важно понимать, что современные IDS/IPS и файрволы становятся все умнее, и многие из этих техник могут быть обнаружены. Однако знание этих методов необходимо как для атакующей, так и для защищающейся стороны.

Цитата по теме

If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.

Sun Tzu, The Art of War

Хотя Сунь Цзы говорил о войне, его слова прекрасно ложатся на кибербезопасность. Сканирование портов – это один из способов «познать врага» (или «познать себя», если вы сканируете свои системы).

Выводы

Итак, коллеги, мы с вами совершили довольно глубокое погружение в мир сканирования портов. Мы разобрались, что такое сканирование портов – это не просто пинг или проверка доступности хоста, а сложный процесс разведки, направленный на идентификацию активных служб и потенциальных точек входа в систему. Мы также подробно обсудили, зачем сканировать порты: от аудита безопасности и поиска уязвимостей до диагностики сетевых проблем и тестирования файрволов.

Мы узнали:

  • Основы сетевых портов и их классификацию.
  • Механизм трехэтапного рукопожатия TCP и как он используется (или обходится) при различных типах сканирования.
  • Множество типов сканирования: от базового TCP Connect Scan и популярного SYN Scan до более хитрых FIN, Xmas, Null, ACK и даже экзотического Idle Scan.
  • Ключевые инструменты, такие как Nmap (наш верный швейцарский нож), Masscan (для скоростных забегов) и Netcat (для быстрых проверок). Рассмотрели их установку и базовые команды.
  • Как интерпретировать результаты сканирования и что делать с полученной информацией.
  • Критическую важность легальных и этических аспектов сканирования.
  • Основные методы защиты от нежелательного сканирования и, наоборот, продвинутые техники для его проведения с целью обхода систем обнаружения.

Сканирование портов – это навык, который должен быть в арсенале каждого специалиста по кибербезопасности. Это отправная точка для многих других действий, будь то пентест, форензика или защита инфраструктуры. Надеюсь, эта статья помогла вам систематизировать знания, освежить забытые детали или даже узнать что-то новое. Помните, что теория без практики мертва, так что не забывайте оттачивать свои навыки (в разрешенных и безопасных средах, конечно!). Удачи в ваших сетевых исследованиях!

Попробуйте ScaniteX бесплатно!

Автоматизированная платформа для сканирования открытых портов и обнаружения активных сервисов в режиме онлайн.

Начните 24ч пробный период (промокод FREE10), чтобы протестировать все функции сканирования для безопасности вашего бизнеса.

Получить бесплатный триал