Введение
В области сетевой безопасности и системного администрирования знание того, что порт открыт — это лишь половина дела. По умолчанию сканеры портов угадывают запущенную службу на основе стандартных номеров портов (например, предполагая, что порт 80 — это всегда веб-сервер HTTP). Однако администраторы могут запускать любую службу на любом порту.
Именно поэтому важны обнаружение баннеров и версий. Номера портов — это лишь подсказки, а не доказательства. В реальных средах часто используются нестандартные порты, обратные прокси-серверы, контейнерные фронтенды или вводящие в заблуждение названия служб.
Чтобы точно определить, что именно работает на целевой системе, необходимо опросить открытые порты. В этой лабораторной работе вы изучите возможности Nmap по обнаружению версий. Вы научитесь получать баннеры служб и точно определять названия программного обеспечения и номера версий, что является критически важным шагом при оценке уязвимостей.
Включение обнаружения версий
На этом этапе вы изучите основы обнаружения версий в Nmap. По умолчанию Nmap лишь сообщает, открыт ли порт и какая служба обычно работает на этом порту, основываясь на статической таблице соответствий. Чтобы узнать, какое именно программное обеспечение ожидает соединений, необходимо активно опросить службу.
Вы можете включить обнаружение версий, добавив флаг -sV к вашей команде Nmap. Это даст Nmap указание отправить серию специфических запросов (зондов) на открытые порты и проанализировать ответы для определения службы и её версии.
Другими словами, Nmap перестает делать выводы только на основе номера порта и начинает напрямую анализировать поведение приложения.
Выполните следующую команду в терминале, чтобы просканировать вашу локальную машину и определить версии запущенных служб:
nmap -sV -p 80,8080 localhost
Вы увидите вывод, похожий на этот:
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0 (Ubuntu)
8080/tcp open http SimpleHTTPServer 0.6 (Python 3.10.12)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.51 seconds
Обратите внимание на столбец VERSION в выводе. Вместо того чтобы просто предполагать, что порт 80 — это HTTP, Nmap активно взаимодействовал с портом и обнаружил, что на нем работает Nginx версии 1.18.0. Он также успешно идентифицировал HTTP-сервер Python, работающий на порту 8080.
Настройка интенсивности обнаружения
На этом этапе вы узнаете, как управлять агрессивностью обнаружения версий Nmap. Nmap использует шкалу от 0 до 9, чтобы определить, сколько запросов отправлять к целевой службе.
Интенсивность по умолчанию равна 7. Более высокая интенсивность означает, что Nmap будет отправлять больше запросов, что повышает шансы на правильную идентификацию службы, но требует больше времени. Более низкая интенсивность работает быстрее, но может не распознать редкие службы. Вы можете настроить этот параметр с помощью флага --version-intensity, за которым следует число от 0 до 9.
Это еще один компромисс между скоростью и точностью. Чем более неопределенной или необычной кажется цель, тем ценнее становится более глубокое зондирование.
Давайте попробуем выполнить высокоагрессивное сканирование, установив интенсивность на 9. Это заставит Nmap использовать каждый запрос из своей базы данных для проверки открытых портов. Выполните следующую команду:
nmap -sV -p 80,8080 --version-intensity 9 localhost
Вывод будет выглядеть так же, как на предыдущем шаге, но «за кулисами» Nmap провел гораздо более тщательный опрос:
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000012s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0 (Ubuntu)
8080/tcp open http SimpleHTTPServer 0.6 (Python 3.10.12)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Вы также можете использовать флаг --version-light как сокращение для интенсивности 2 или --version-all как сокращение для интенсивности 9. Эти сокращения упрощают быструю настройку поведения сканирования без необходимости запоминать точные числа.
Идентификация точной версии ПО
На этом этапе вы сосредоточитесь на идентификации точной версии программного обеспечения конкретной службы и сохранении результатов для документации. При проведении оценки безопасности ведение учета точных версий ПО имеет решающее значение для поиска известных уязвимостей.
Вместо сканирования всех портов вы можете выбрать конкретный порт с помощью флага -p и сохранить вывод в файл с помощью флага -oN. Это очень полезно, когда вы хотите изолировать конкретную службу и поделиться результатами с вашей командой.
Выполните следующую команду, чтобы просканировать только порт 80, определить его версию и сохранить вывод в файл с именем version_scan.txt в текущей директории:
nmap -sV -p 80 localhost -oN version_scan.txt
После завершения сканирования вы можете просмотреть содержимое сохраненного файла с помощью команды cat:
cat version_scan.txt
Ваш вывод должен отображать точную версию сервера Nginx, работающего на порту 80:
## Nmap 7.80 scan initiated ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000015s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
## Nmap done at ...
Задокументировав точную версию, например nginx 1.18.0, вы теперь можете искать информацию в базах данных уязвимостей, чтобы узнать, есть ли у этой конкретной версии известные недостатки безопасности.
Резюме
В этой лабораторной работе вы изучили мощные возможности Nmap по обнаружению версий. Вы узнали, как использовать флаг -sV, чтобы выйти за рамки простого сканирования портов и активно опрашивать службы для обнаружения их точных названий и версий ПО. Вы также научились настраивать интенсивность сканирования с помощью --version-intensity для баланса между скоростью и точностью, а также как сканировать конкретные порты и сохранять результаты для анализа уязвимостей. Эти навыки необходимы для точного картирования сети и проведения аудита безопасности.



