После инвентаризации активных хостов следует этап сканирования открытых сервисов — сканирование портов. Это основной способ выяснить, какие приложения слушают на каких портах и, соответственно, какие из них потенциально уязвимы.
Типичные методы сканирования портов:
- TCP Connect Scan: полное установление TCP-соединения (надежно, но долго и полноценно логируется).
- SYN Scan (полуоткрытый): отправляется SYN; если приходит SYN/ACK — порт открыт; RST — закрыт. Менее «шумный».
- UDP Scan: отправляются UDP-датаграммы; если приходит ICMP Type 3 Code 3 (destination port unreachable) — порт закрыт; если нет ответа — состояние open|filtered.
- Service/version detection: попытка определить версию сервиса (-sV в nmap).
- OS detection: определение ОС по сетевому стеку (-O в nmap).
В локальной сети для быстрой инвентаризации часто используют специальный сканер портов в локальной сети — утилиты, оптимизированные под ARP/локальные ответы (пример: arp-scan, netdiscover, nmap с ARP-пингом). Сканирование портов на большом диапазоне требует аккуратной настройки таймингов и частоты, чтобы не перегрузить сеть и не вызвать срабатывание IDS/IPS.
Пример команд nmap:
# Стандартное TCP сканирование с определением версии сервиса
nmap -sS -sV -p1-65535 -T3 192.168.1.10
# UDP-скан (медленно и ресурсозатратно)
nmap -sU -pU:1-1024 -T2 192.168.1.0/24
При интерпретации результатов UDP-скана часто встречается сообщение destination port unreachable — это ровно тот сетевой ответ, который указывает, что UDP-порт закрыт. Если же в ответ никакого ICMP не приходит — порт может быть открыт или фильтруется (open|filtered).