• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

Статья Как определить порты и порядок сканирования с nmap

The Codeby

The Codeby

ООО Кодебай
30.12.2015
3 235
4 654
Оглавление книги Книга по Nmap на русском
Предыдущая часть Основы и приемы сканирования портов с nmap
Следующая часть Книга по Nmap - Скриптовый движок Nmap

Как определить порты и порядок сканирования  с nmap

В данной главе рассмотрим:
  • Определение портов и порядка сканирования
  • Обнаружение служб и их версий
  • Определение ОС
Определение портов и порядка сканирования

В дополнении ко всем методам сканирования описанными ранее, Nmap предлагает опции для определения портов для сканирования, а также порядка сканирования: произвольного или последовательного. По умолчанию, Nmap сканирует все порты до 1024 включительно, а также все порты с большими номерами упомянутыми в файле nmap-services для протокола, по которому идет сканирование.
Код:
-p <диапазон портов> (Сканирование только определенных портов)
С помощью этой опции вы можете определить, какие порты вы хотите просканировать и переопределить установки по умолчанию. Указание отдельных номеров портов допустимо, как и задание диапазонов портов разделенных дефисом (напр. 1-1023). Начальные и/или кончные значения диапазонов могут быть опущены, что заставит Nmap использовать 1 и 65535 соответственно. Поэтому вы можете задать опцию -p-, чтобы просканировать все порты от 1 до 65535. Сканирование нулевого порта допустимо, если вы укажене его явно . Для сканирования по IP протоколу (-sO), эта опция определяет номера протоколов, которые вы хотите просканировать для диапазона (0-255).

Когда сканируете и 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 помимо других команд активирует также и обнаружение версии. Бумажная документация по работе, использованию и настройке опции обнаружения версии доступна на .

Когда 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 нужна очень редко.

Определение ОС

Одна из наиболее известных функциональных возможностей Nmap это удаленное определение ОС на основе анализа работы стека TCP/IP. Nmap посылает серию TCP и UDP пакетов на удаленный хост и изучает практически каждый бит в ответах. После проведения дюжины тестов таких как TCP ISN выборки, поддержки опций TCP, IP ID выборки, и анализа продолжительности процедуры инициализации, Nmap сравнивает результаты со своей nmap-os-db базой данных, состоящей из более чем тысячи известных наборов типичных результатов для различных ОС и, при нахождении соответствий, выводит информацию об ОС. Каждый набор содержит свободное текстовое описание ОС и классификацию, в которой указаны название производителя (напр. Sun), название ОС (напр. Solaris), поколение ОС (напр. 10), и тип устройства (). OS, and a classification which provides the vendor name (e.g. Sun), underlying OS (e.g. Solaris), OS generation (e.g. 10), and device type (для общих целей, роутер, коммутатор (switch), игровая консоль и т.д.).

Если Nmap не может определить ОС, но для этого есть хорошие предпосылки (наприме, по крайней мере, найдены один открытый и один закрытый порты), то Nmap предоставит URL, по которому, если вы точно знаете, какая ОС используется, вы сможете предоставить набор ее характеристик. Тем самым вы внесете свой вклад в дополнение базы данных известных ОС Nmap, и она будет более полезна для всех остальных.

Опция определения ОС также активирует проведение некоторых других тестов, которые позволяют воспользоваться собираемой в процессе работы информацией. Один из них Классификация Предсказуемости Последовательности TCP (TCP Sequence Predictability Classification). Это позволяет приблизительно определить, насколько сложно установить ложное TCP соединение с удаленным хостом. Это может быть полезно для взлома и эксплуатации программ, базирующихся на доверительных отношениях (rlogin, фильтры брандмауэров и т.д.) или для сокрытия источника атаки. Этот тип спуфинга (spoofing) теперь редко используется, но многие машины все еще уязвимы к такого рода атакам. Число, характеризующее сложность, базируется на статистической выборке и может колебаться. Обычно лучше испльзовать классификацию с испльзованием английских фраз типа “worthy challenge(достойное испытание)” или “trivial joke(шуточное дело)”. Эта информация будет выведена только при включенном вербальном режиме (-v). Когда вербальный режим активирован вместе с опцией -O, то выводится также информация о генарции IP ID последовательности. Большинство машин находятся в классе “incremental(возрастающий)”, что означает, что они увеличивают поле ID в IP заголовке для каждого посланого пакета. Это делает их уязвимыми к спуфинг(spoofing) атакам и атакам с целью сбора расширенной информации.

Также во время определения ОС делается попытка узнать время работы целевой машины. С помощью временных меток (timestamp) TCP ( ) Nmap пробует угадать, когда машина была перезагружена в последний раз. Информация может быть не точна, т.к. счетчик временной метки не был обнулен или был переполнен, или каким-то образом скрыт. Информация выводится только в вербальном режиме.

Бумажная документация по работе, использованию и настройки опции определения ОС находится на .

Функция определения ОС включается и управляется с помощью следующих опций:
Код:
-O (Включить определение ОС)
Включает фукнцию определения ОС, работа которой описана выше. Вы также можете использовать опцию -A, которая помимо других функций включает определение ОС.
Код:
–osscan-limit (Использовать функцию определения ОС только для "перспективных" хостов)
Функция определения ОС намного более эффективна, если обнаружены, по крайней мере, один открытый и один закрытый TCP порты. Задайте эту опцию, и Nmap не будет даже пытаться определить ОС хостов, не удовлетворяющих этому критерию. Это поможет сэкономить массу времени, особенно при -PN сканирование многих хостов. Эта опция будет действовать только при включении функции ОС путем задания опций -O или -A.
Код:
–osscan-guess; –fuzzy (Угадать результаты определения ОС)
Когда Nmap не в состоянии определеить точное совпадение, она иногда предоставляет наиболее близкие к результатам сканирования совпадения. Чтобы Nmap сделала это по умолчанию, совпадения должны быть очень близки. Любая их этих (равных) опций побуждает Nmap к более агрессивному анализу результатов. Nmap по-прежнему будет сообщать, когда будет найдено не идеальное совпадение, а также отображать стпень соответствия (в процентах) для каждого набора характеристик.
Код:
–max-os-tries (Устанавливает максимальное количество попыток определения ОС)
Когда Nmap пытается определить ОС на целевом хосте и не может найти идеального соответствия результатов, то она обычно повторяет попытку. По умолчанию, Nmap совершает пять попыток при условии, что существуют благоприятные условия для определения ОС, и дважды – в противном случае. Задание более низкого значения –max-os-tries (напр. 1) увеличивает скорость работы Nmap, однако вы пропускаете некоторые записи, с помощью которых, возможно, можно было бы определить ОС. Большое значение может быть задано для разрешения большего количества попыток при благоприятных условиях. Это делается редко, за исключением тех случаев, когда необходимо сгенерировать более детальный набор характеристик ОС для занесения в базу данных Nmap.

Читать далее Книга по Nmap - Скриптовый движок Nmap
 
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб