Обнаружение служб и их версий
При сканировании удаленной машины Nmap может выдать, что порты
25/tcp
, 80/tcp
, и
53/udp
открыты. Используя свою базу данных
nmap-services
,
состоящюю из около 2200 известных служб,
Nmap сообщит, что эти порты вероятно соответстуют почтовому серверу (SMTP), веб серверу (HTTP),
и серверу доменных имен (DNS) соответственно. Эта информация обычно верна, т.к. подавляющее большинство служб,
использующих 25 TCP порт, фактически, почтовые сервера. Тем не менее, вам не следует полностью полагаться на эту
информацию! Люди могут и запускают службы с использованием нестандартных портов.
Даже если Nmap права, и на какой-либо гипотетической машине упомянутой выше запушены SMTP, HTTP и DNS сервера, это не так уж и много информации. Когда производится сканирование с целью обнаружения уязвимостей (или же просто определение структуры сети) компьютеров ваших компаний или клиентов, вам хочется знать, какие точно почтовые и DNS сервера и какие версии используются. Знание точной версии очень помогает в определении, к каким эксплоитам сервер наиболее уязвим. Эту информацию вы можете получить с помощью задания опции определения версии.
После того как какие-либо TCP и/или UDP были обнаружены, Nmap начинает "опрашивать" эти порты, чтобы
определить, какие же приложения (службы) их действительно используют. База данных
nmap-service-probes
содержит запросы для обращения к различным службам и соответствующие выражения для распознавания и анализа ответов.
Nmap пытается определить протоколо службы (напр. FTP, SSH, Telnet, HTTP), имя приложения (e.g. ISC
BIND, Apache httpd, Solaris telnetd), номер версии, имя хоста, тип устройства (напр. принтер, роутер),
семейство ОС (напр. Windows, Linux) и иногда различные детали типа возможно ли соединится с X сервером,
версию протокола SSH, или имя пользователя KaZaA. Конечно же, большинство служб не предоставляют такую информацию.
Если Nmap была скомпилирована с поддержкой OpenSSL, Она соединится с сервером SSL, чтобы попытаться определить
запущенные службы, работающие за зашифрованным слоем.
Когда обнаружены службы RPC, удет автоматически задействована опция Nmap
(-sR
)
для определения программы RPC и ее версии. После сканирования портов UDP некоторые из них характеризуются как
открыт|фильтруется
, если сканирование не может определить открыт порт или
фильтруется. С заданной опцией определения версии Nmap попытается получить ответ от таких портов (точно так же как
она поступает с открытыми портами), и, в случае успеха, поменяет состояние этого порта на открыт
открытые|фильтруемые
TCP порты обрабатываются так же. Имейте в виду, что
опция Nmap -A
помимо других команд активирует также и обнаружение версии.
Бумажная документация по работе, использованию и настройке опции обнаружения версии доступна на
https://nmap.org/book/vscan.html
.
Когда Nmap получает ответы от службы, но не может сопоставить их с какой-либо записью в своей базе данных, она выводит на экран специальную информацию и URL, по которому вы можете опубликовать эту информацию, если вы точно уверены, что за служба запущена на исследуемом вами порте. Пожалуйста, потратьте пару минут на публикацию этой информации, т.к. ваша находка поможет остальным. Благодаря таким публикациям, Nmap содержит в своей базе данных около 3000 записей для более чем 350 протоколов, таких как SMTP, FTP, HTTP и т.д.
Функция определения версии включается и управляется с помощью следующих опций:
-
-sV
(Определение версии) Включает функцию определения версии, работа которой описана выше. Вы также можете использовать опцию
-A
, которая помимо других функций включает определение версии.-
--allports
(Не исключать порты из проверки определения версии) По умолчанию, функция определения версии пропускает TCP порт 9100, потому что некоторые принтеры просто распечатывают все, что приходить на этот порт, что ведет к дюжинам страниц HTTP GET запросов, бинарных запросов SSL сессий т.д. Это может быть изменено путем модифицирования или удаления директивы
Exclude
вnmap-service-probes
, или вы можете задать опцию--allports
, сканированить все порты не обращая внимания на всякиеExclude
директивы.-
--version-intensity
(Устанавливает интенсивность работы функции)<интенсивность>
Когда производится сканирование с заданной опцией определения версии (
-sV
), Nmap посылает серию запросов, каждому из которых присваивается значение в диапазоне от 1 до 9. Запросы с низкими значениями эффективны для большинства типичных служб, в то время как запросы с более высокими значениями редко применяются на практике. Уровень интенсивности определяет, какие запросы должны использоваться во время сканирования. Чем выше значение запроса, тем больше вероятность корректного определения службы. Тем не менее, сканирование с высокой интенсивностью займет много времени. Уровень интенсивности должна быть задана числом от 0 до 9. По умолчанию уровень интенсивности равен 7. Когда запрос привязан к целевому порту посредством директивыnmap-service-probes
ports
, этот запрос будет производиться вне зависимости от уровня интенсивности. Это гарантирует, что DNS запросы всегда будут производится с использование порта 53, SSL запросы - 443 и т.д.-
--version-light
(Включить облегченный режим) Это не что иное как псевдоним для
--version-intensity 2
. Этот режим существенно уменьшает время сканирования, но вероятность определения служб сокращается.-
--version-all
(Использовать каждый единичный запрос) Псевдоним для
--version-intensity 9
, гарантирующий что каждый единичный запрос будет направлен на каждый порт.-
--version-trace
(Отслеживание процесса сканирования) Указывает Nmap выводить подробную отладочную информацию о процессе сканирования. Это часть той информации, которую вы можете получить с помощью опции
--packet-trace
.-
-sR
(RPC сканирование) Этот метод работает в связке с различными методами сканирования портов Nmap. При включении этой опции на все обнаруженные открытые TCP/UDP порты посылатеся множество NULL команд программы SunRPC в попытке определить, являются ли эти порты RPC портами, и если так, то какими программами (а также их версии) они используются. Таким образом, вы можете получить ту же информацию как и в случае использования команды rpcinfo -p, даже если целевой сервер портмаппинга (portmapper) находится за брандмауэром (или защищен TCP фильтром). На сегодняшний момент ловушки со сканированием RPC не работают Эта опция автоматически активируется как часть сканирования с функцией определения версии (
-sV
). Т.к. это включено в функцию определения версии и более детально проработано, то опция-sR
нужна очень редко.