TCP, UDP, порты и сервисы: сетевой минимум, который нужен начинающему пентестеру

Почему порты — первая точка разведки​


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

Пентестеру нужно понимать три вещи:

  • Какой транспортный протокол использует сервис (TCP, UDP или оба).
  • В каком состоянии находится порт (открыт, закрыт, фильтруется).
  • Какой сервис и какая версия за портом стоят.

Без этого контекста результаты сканирования превращаются в набор чисел без смысла.

TCP: соединение с гарантией доставки​


TCP (Transmission Control Protocol) — протокол транспортного уровня, определённый в RFC 9293 (консолидированная замена RFC 793 и множества обновлений). Он обеспечивает надёжную, упорядоченную доставку байтового потока между двумя хостами.

Ключевые свойства TCP, которые важны при пентесте:

  • Ориентирован на соединение. Перед передачей данных устанавливается сессия через трёхэтапное рукопожатие (three-way handshake): SYN → SYN-ACK → ACK.
  • Надёжность. Потерянные сегменты обнаруживаются по sequence numbers и передаются повторно.
  • Контроль потока. Поле Window в заголовке TCP ограничивает объём данных, которые отправитель может послать до получения подтверждения.
  • Флаги управления. Заголовок TCP содержит флаги SYN, ACK, FIN, RST, PSH, URG, CWR, ECE. Комбинации флагов определяют тип сегмента и состояние соединения.

Структура заголовка TCP​


Заголовок TCP содержит минимум 20 байт (без опций):

ПолеРазмерНазначение
Source Port16 битПорт отправителя
Destination Port16 битПорт получателя
Sequence Number32 битПорядковый номер первого байта данных (или ISN при SYN)
Acknowledgment Number32 битСледующий ожидаемый байт (при установленном ACK)
Data Offset4 битДлина заголовка в 32-битных словах
Flags8 битУправляющие биты: CWR, ECE, URG, ACK, PSH, RST, SYN, FIN
Window16 битРазмер окна получателя
Checksum16 битКонтрольная сумма заголовка и данных
Urgent Pointer16 битСмещение срочных данных
Options0–40 байтРасширения: MSS, Window Scale, SACK, Timestamps

Для пентестера наиболее важны флаги. Разные типы сканирования в nmap эксплуатируют именно комбинации флагов и поведение стека при получении нестандартных сегментов.

Состояния портов при TCP-сканировании​


Когда сканер отправляет SYN-пакет на целевой порт, возможны три ответа:

Ответ хостаСостояние портаЧто это значит
SYN-ACKopenСервис слушает и готов принять соединение
RSTclosedПорт не занят, но хост отвечает
Нет ответа или ICMP unreachablefilteredПакет отброшен файрволом или не дошёл

Это основа SYN-сканирования (-sS в nmap). Существуют и другие техники: FIN-сканирование, Xmas-сканирование, NULL-сканирование — все они опираются на то, как стек обрабатывает сегменты с неожиданными комбинациями флагов на закрытом порту (по RFC 9293, на сегмент без SYN, RST или ACK, пришедший на закрытый порт, должен быть отправлен RST).

UDP: датаграмма без гарантий​


UDP (User Datagram Protocol) описан в RFC 768. Это минималистичный протокол: заголовок занимает всего 8 байт, нет рукопожатия, нет контроля доставки, нет повторной передачи.

ПолеРазмерНазначение
Source Port16 битПорт отправителя (опционален, может быть 0)
Destination Port16 битПорт получателя
Length16 битДлина датаграммы включая заголовок (минимум 8)
Checksum16 битКонтрольная сумма (может быть 0 — отключена)

UDP используется там, где задержка важнее надёжности: DNS, NTP, SNMP, DHCP, TFTP, VoIP, игровые протоколы.

Особенности UDP-сканирования​


UDP-сканирование принципиально сложнее TCP:

  • Если порт закрыт, хост обычно отвечает ICMP Destination Unreachable (тип 3, код 3).
  • Если порт открыт, сервис может ответить данными или промолчать.
  • Если ответа нет, сканер не может однозначно сказать, открыт порт или пакет потерян.

Поэтому nmap помечает UDP-порты как open|filtered, когда ответа нет. Для уточнения используются повторные запросы и знание протокола конкретного сервиса.

UDP-сканирование медленное: многие ОС ограничивают скорость генерации ICMP-сообщений об ошибках (например, Linux по умолчанию не более одного ICMP destination unreachable в секунду). Это делает полное сканирование всех 65536 UDP-портов крайне долгим.

Диапазоны портов и их категории​


Порты делятся на три диапазона по классификации IANA:

ДиапазонНазначение
0–1023Well-known (системные, требуют привилегий для привязки на Unix)
1024–49151Registered (зарегистрированные приложения)
49152–65535Dynamic/Ephemeral (временные порты клиентских соединений)

Для пентестера практическое значение имеет то, что сервисы на портах 0–1023 обычно запускаются от root (или через capabilities), а значит, уязвимость в таком сервисе потенциально даёт привилегированный доступ.

Сервисы, которые чаще всего встречаются в инфраструктуре​


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

TCP-сервисы​


ПортСервисЧто искать
21FTPАнонимный доступ, устаревшие версии, cleartext-аутентификация
22SSHВерсии с известными CVE, слабые алгоритмы, перебор ключей
23TelnetCleartext-протокол, перехват учётных данных
25SMTPOpen relay, перечисление пользователей (VRFY/EXPN)
53DNS (TCP)Zone transfer (AXFR), рекурсивные запросы
80HTTPВеб-уязвимости, устаревшие заголовки, directory listing
110POP3Cleartext-аутентификация
135MSRPC (Windows)Перечисление интерфейсов, DCOM
139NetBIOSSMB over NetBIOS, перечисление шар
143IMAPCleartext-аутентификация
443HTTPSТе же веб-уязвимости + проблемы TLS-конфигурации
445SMBEternalBlue-класс уязвимости, null-сессии, перечисление
993IMAPSПроверка сертификата, версии
1433MSSQLСлабые учётные данные, xp_cmdshell
3306MySQLАнонимный доступ, слабые пароли, известные CVE
3389RDPBlueKeep-класс уязвимости, NLA отключён
5432PostgreSQLСлабые учётные данные, доверительная аутентификация
8080HTTP-altПрокси, админ-панели, забытые сервисы
8443HTTPS-altТо же, что 443

UDP-сервисы​


ПортСервисЧто искать
53DNSРекурсия, zone transfer, усиление
67/68DHCPRogue DHCP, информация о сети
69TFTPАнонимный доступ к файлам
123NTPУсиление (monlist), версия с CVE
161SNMPPublic community string, перечисление информации
500IKE/IPsecАгрессивный режим, перечисление политик
1900SSDPUPnP, усиление
5353mDNSПеречисление сервисов в локальной сети

Как интерпретировать результаты сканирования​


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

  1. Обнаружение открытых портов. Быстрое сканирование топ-1000 TCP-портов и ключевых UDP-портов.
  2. Определение сервисов и версий. Версионное сканирование (-sV в nmap) позволяет сопоставить порт с конкретным ПО и версией.
  3. Определение ОС. По особенностям стека (-O в nmap) можно предположить операционную систему.
  4. Приоритизация. Порты с известными CVE, cleartext-протоколы, устаревшие версии — в первую очередь.
  5. Углублённый анализ. Для каждого приоритетного сервиса — специализированные скрипты, ручная проверка, эксплуатация в лаборатории.

Типичные ошибки начинающих​


  • Сканировать все 65536 портов по UDP без необходимости. Это занимает часы и часто даёт ложные open|filtered. Лучше начать с топ-100 UDP-портов.
  • Игнорировать фильтруемые порты. filtered не значит «безопасно». За файрволом может стоять уязвимый сервис. Стоит попробовать другие техники или сканирование через IPv6.
  • Доверять баннеру без проверки. Сервис может представляться чужим именем. Версионное сканирование по поведению надёжнее, чем по баннеру.
  • Не учитывать контекст сети. Один и тот же открытый порт 445 на контроллере домена и на рабочей станции разработчика — разные риски.

Практический пример: сканирование в лаборатории​


Все команды ниже предполагают работу в собственной изолированной лаборатории или в рамках согласованного scope. Сканирование чужих систем без разрешения незаконно.

Быстрое обнаружение хостов в подсети:

Bash:
nmap -sn 192.168.56.0/24

Сканирование топ-1000 TCP-портов с определением версий:

Bash:
nmap -sV -sC 192.168.56.10

Флаг -sC запускает набор скриптов по умолчанию (безопасные категории). Флаг -sV включает определение версий сервисов.

UDP-сканирование топ-100 портов:

Bash:
nmap -sU --top-ports 100 192.168.56.10

Если нужно проверить конкретный порт с детальным выводом:

Bash:
nmap -sV -p 445 --script smb-os-discovery,smb-protocols 192.168.56.10

Результат сканирования — это входные данные, а не вывод. Каждый открытый порт нужно сопоставить с версией сервиса, известными уязвимостями и контекстом целевой системы.

Что делать после обнаружения сервисов​


После сканирования пентестер переходит к целевому анализу:

  • Веб-сервисы (80, 443, 8080, 8443): ручное исследование приложения, проверка заголовков, directory brute-force, тестирование на OWASP Top 10. Для практики подходит Web Security Academy от PortSwigger — бесплатные интерактивные лаборатории по веб-безопасности.
  • SMB (139, 445): перечисление шар, проверка null-сессий, анализ версий протокола.
  • SSH (22): проверка версий, перебор только при наличии согласования, анализ конфигурации.
  • SNMP (161/UDP): попытка чтения с community string public, извлечение информации о системе.
  • DNS (53): zone transfer, перечисление записей, проверка рекурсии.

Для отработки навыков в безопасной среде используйте специально уязвимые приложения и виртуальные машины Домашняя лаборатория для пентеста: как безопасно учиться на Kali Linux и специально уязвимых приложениях.

Чек-лист: что запомнить​


  • TCP — соединение, надёжность, флаги. Состояние порта определяется по ответу на SYN.
  • UDP — датаграмма, без гарантий. Отсутствие ответа не означает, что порт закрыт.
  • Well-known порты (0–1023) обычно привилегированы — уязвимость там критичнее.
  • Версионное сканирование важнее баннера.
  • filtered ≠ безопасно.
  • UDP-сканирование медленное и менее точное — начинайте с топ-портов.
  • Любой результат сканирования — повод для углублённого анализа конкретного сервиса, а не конечный вывод.

Источники​


 
Назад
Верх Низ