Выбрать главу

Когда сканируете и TCP и UDP порты, вы можете задать определенный протокол указав перед номерами портов T: или U:. Определитель будет действовать до того момента, пока вы не зададите другой. Например, при задании аргумента -p U:53,111,137,T:21-25,80,139,8080 будут просканированы UDP порты 53,111, и 137, а также все перечисленные TCP порты. Имейте в виду, что для сканирования и UDP и TCP портов, вы должны указать опцию -sU и, по крайне мере, один из типов сканирования TCP (таких как -sS, -sF или -sT). Если определитель протокола не указан, то перечисленные порты будут добавлены ко всем протоколам.

Порты также могут быть заданы именами, которые указаны в nmap-services. Вы даже можете использовать символы ? и * с именами. Например, чтобы просканировать FTP и все порты, чьи имена начинаются с «http», используйте -p ftp,http*. Будьте осторожны при вводе этой команды и лучше заключите аргумент -p в кавычки.

Диапазоны портов могут быть заключены в квадратные скобки, чтобы определить порты внутри этого диапазона, которые упомянуты в nmap-services. Например, с помощью следующей команды будут просканированы все порты из nmap-services равные или меньшие 1024: -p [-1024]. Будьте осторожны при вводе этой команды и лучше заключите аргумент -p в кавычки.

-F (Быстрое (ограниченные порты) сканирование)

Указывает, что вы хотите произвести сканирование только портов, указанных в nmap-services, который поставляется вместе с Nmap (или в файле протоколов для -sO). Это намного быстрее, чем сканировать все 65535 портов целевой машины. Т.к. этот список содержит много TCP портов (больше 1200), разница в скорости в отличии от TCP сканирования по умолчанию (около 1650 портов) несущественна. Разница может быть огромна, если вы определите свой небольшой nmap-services файл используя--servicedb или --datadir опции.

-r (Не использовать случайный порядок портов)

По умолчанию, Nmap использует произвольный порядок сканирования портов (исключение составляют лишь наиболее часто употребляемые порты, которые расположены в начале списка сканирования по причинам эффективности). Обычно эта случайность нужна, но вы можете задать опцию -r, чтобы использовать прямой порядок сканирования.

--port-ratio <десятичное число между 0 и 1>

Сканирует все порты из nmap-services, чей рейтинг больше числа, указанного как аргумент (только для нового формата nmap-services).

--top-ports <целое число от 1 и выше>

Сканирует N портов с наибольшими рейтингами, расположенными в nmap-services файле (только для нового формата nmap-services).

Обнаружение служб и их версий

При сканировании удаленной машины 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.