Софт-Архив

Сканировать Открытые Порты img-1

Сканировать Открытые Порты

Рейтинг: 4.5/5.0 (1903 проголосовавших)

Описание

Что такое IP

Что такое IP-адрес я думаю, вы знаете, в этой статье я напишу о том, что такое порты, как и для чего их нужно сканировать. Текст имеет вводный характер и рассчитан, прежде всего, на новичков, но я надеюсь, что и продвинутый читатель найдет что-нибудь интересное для себя:)

Что такое порт

Сканирование

Программы для сканирования

Список портов

Что такое порт?

Если объяснить просто, то порты существуют, для того чтобы между компьютерами могли устанавливать собственные соединения разные прикладные процессы в любом количестве, например для того, чтобы компьютер мог быть одновременно http-сервером (web, 80 порт), pop-сервером (получение почты, 110 порт), smtp-сервером (отправка почты, 25 порт). А клиент, т.е. пользователь, мог одновременно просматривать web-страницы, работать с почтой. скачивать файлы по FTP. общаться по ICQ, т.е. каждая программа открывает свой порт и работает через него, не мешая другим программам.

Возможно, вы видели адреса типа http://domen.ru:8100, это означает, что соединение в web-сервером происходит на 8100-м порту.

А теперь посложнее:))

Взаимодействие программ, использующих протокол TCP (или UDP), строится согласно модели "клиент-сервер", (Например обозреватель Internet Explorer и Web-сервер). Данная модель подразумевает, что одна программа (сервер) всегда пассивно ожидает обращения к ней другой программы (клиента). Для установления связи между программой-клиента и сервера используются следующие данные:

    используемый транспортный протокол (TCP или UDP); IP-адрес сервера; номер порта сервера; IP-адрес клиента; номер порта клиента.

Когда клиент и сервер начинают использовать TCP, создается виртуальный канал. Данные по этому каналу могут одновременно передаваться в обоих направлениях. Один прикладной процесс пишет данные в TCP-порт, они проходят по сети, и другой приклад ной процесс читает их из своего TCP-порта. Для того, чтобы клиент мог обращаться к необходимому ему серверу, он должен знать номер порта, по которому сервер ожидает обращения к нему ("слушает сеть").

Программы-клиенты, являющиеся активной стороной во взаимодействии "клиент-сервер", могут использовать, как правило, произвольные номера портов, назначаемые динамически непосредственно перед обращением к серверу (как любые свободные на данном узле).

Любая прикладная программа (будь то клиент или сервер) может открывать для взаимодействия любое количество портов для использования любых транспортных протоколов.

Порт номер 513 для TCP не идентичен порту номер 513 для UDP.

Всего 65535 портов, любой из них может использоваться

Обычно используются порты от 0 до 1024. Данные номера иногда называют - «Хорошо известные номера портов» ("well-known port")

Номера портов (выше 1023) предоставляются клиентам от программного обеспечения хоста по мере необходимости. Internet Explorer, например, может использовать любой для соединение, при открытии следующего соединения будет использован следующий порт и т.д. Выделение портов предусматривает следующие шаги:

Пользователь запускает клиентскую программу.

Клиентской программе выделяется порт.

Рисунок для визуалов:)

Сканирование

Сканированием определяют открытые порты на удаленном компьютере, т.е. если вы увидите открытыми известные порты(80, 110, 25..), можно сделать вывод о предоставляемых компьютером сервисах. Так, например открытый 80 говорит о том что это Web-сервер.

При помощи сканирования можно с определенной точностью установить и OS удаленного хоста, так, например OS семейства Windows открывают порты 135, 139 (протокол NetBIOS). но не стоит "доверять" такому способу определения операционной системы, т.к. NetBIOS можно просто выключить, а так же возможно использование программ, скрывающих открытые порты.

Обычная программа-сканер, сканирующая методом connect(), последовательно открывает соединения с различными портами. В случае, когда соединение устанавливается, программа сбрасывает его, сообщая номер порта.

Пример результата сканирования с использованием Scanner'a из программы Internet maniac

Данный способ легко детектируется сканируемым хостом.

Однако возможно использовние других методов, не рассмотренных здесь, т.к. это не цель статьи да и инфы по этому вопросу в инете достаточно (для понимания более сложных методов сканирования надо знать хотя бы основы tcp/ip).

Так как сканирование портов обычно является одним из первых этапов исследования системы перед взломом, то оно может расцениваться администраторами как потенциальная угроза.

Программы для сканирования портов

Использующие обычный способ сканирования

NScan это портсканер использующий соединение методом connect() для определения открытых портов, отличие этой программы от других состоит в ее гибкости и скорости

- Определение диапазона сканирования: один хост, диапазон, по списку.

- Нужные порты могут быть определены следующим образом: определенные порты, диапазон, по списку.

- Настройка записи в log-файл(отчет)

- Настройка скорости от очень медленной до максимальной(зависит от пропускной способности сети и мощности компьютера)

IP-tools - набор сетевых утилит, среди которых есть и сканер портов, настроек, конечно, поменьше чем в NScan но программа вполне гибкая, если вы не занимаетесь сканированием портов каждый день то вполне подойдет:)

В этой программе тоже есть утилита для сканирования портов, если вам нужен посредственный портсканер, который впрочем, вполне справляется со своей обязанностью, то можете воспользоваться им. Настроек в этой проге практически не имеется:) хотя для набора утилит размером 99kb, это вполне нормально:)

Сетевой сканер RuNmap превосходно работает как с большими сетями, так и с отдельными хостами. Часто при сканировании вам необходимо быстро получить результат, в других случаях важным фактором является незаметность. Иногда бывает необходимо обойти средства защиты сети. Возможно, вы захотите просканировать различные сетевые протоколы (UDP, TCP, ICMP и т.д.). Раньше для этого вам потребовалось бы иметь очень много сетевых сканеров с разными интерфейсами и возможностями. Теперь у вас нет в этом необходимости, так как все известные методы сканирования интегрированы в одну программу - RuNmap. Сканер RuNmap поддерживает:

Классический метод сканирования протокола TCP функцией connect()

Сканирование протокола TCP флагом SYN ("полуоткрытое" сканирование)

Сканирование протокола TCP флагом FIN, а также Xmas и NULL-сканирование

Сканирование протокола TCP методом ftp proxy (атака "прорыв через ftp")

Комбинированное SYN/FIN сканирование с использованием IP фрагментации (обход пакетных фильтров)

Сканирование протокола UDP с использованием ICMP-сообщений "port unreachable"

ICMP-сканирование

Сканирование протокола TCP методом Ping-опроса

Прямое (не через portmapper) RPC-сканирование

Определение ОС сканируемого хоста

Reverse-ident сканирование

RuNmap также поддерживает массу полезных и важных опций, таких, как динамическое вычисление времени задержки, автоматическую настройку времени ожидания пакета и повторной передачи запроса, параллельное сканирование портов, определение неактивных хостов и т.д. RuNmap также позволяет весьма гибко задать адреса и порты сканируемых хостов, осуществить сканирование с использованием ложных хостов (созданных RuNmap) для маскировки процесса, определить характер изменения TCP ISN-последовательности, вывести результаты сканирования на экран и записать их как в машинном, так и в удобном для пользователя виде.

Использование сканера RuNmap:

Если вы используете операционную систему Windows, то сначала скопируйте в папку Windows драйвера, поставляемые вместе с программой.

Другие статьи, обзоры программ, новости

Что такое сканирование портов? Методы сканирования портов

Что такое сканирование портов?

Что такое сканирование портов? Какие существую методы сканирования. Какие угрозы несет?

В сегодняшней статье я постараюсь рассказать о том что такое сканирование открытых портов, расскажу о методах используемых в сканировании портов и том как от этого всего защитится.

Что такое сканирование портов?

Сканирование — это набор процедур, позволяющих идентифицировать узлы, порты и сервисы целевой системы. Сканирование сети позволяет злоумышленнику собрать профиль атакуемой машины.

Согласно руководству по этичному хаккингу (Ethical Hacking and Countermeasures EC-Council) различаются следующие типы сканирования:

  • сетевое сканирование — определение находящихся в сети узлов;
  • сканирование портов — выявление открытых портов и функционирующих сервисов;
  • сканирование безопасности системы — выявление известных уязвимостей системы.

На первый взгляд в сканировании никакого вреда нет, тем не менее с таким подходом трудно согласиться, ведь сканирование предваряет атаку, позволяя злоумышленнику выяснить, какие сервисы работают в целевой системе, а значит, подготовить и провести целенаправленную атаку против выявленных сервисов и их уязвимостей. Следовательно, бороться с разведкой злоумышленников необходимо.

При этом будет нелишним отметить, что само по себе сканирование не всегда злонамеренное действие, все зависит от его целей. Службы информационной безопасности или сотрудники ИТ вполне могут прибегнуть к сканированию для выяснения уязвимостей инфраструктуры или видимости сервисов из внешней сети.

В сущности, нередко все как раз и начинается с сетевого сканирования, именно оно позволяет выявить слабые узлы их IP-адреса, открытые порты, определить операционную систему, а значит, становятся понятны теоретически возможные уязвимости, что уже не так мало для организатора атаки.

Методы сканирования портов

Выявляем структуру сети. Самый простой способ сканирования — ICMP scanning. Принцип работы основан на протоколе ICMP, и такой тип сканирования позволяет выяснить «живые» узлы в сети и построить схему сети с перечнем ее узлов. Суть метода заключается в отправке ICMP-запросов узлам сети, если компьютер или иное устройство, работающее со стеком протоколов TCP/IP, активно, то будет отправлен ответ. Это так называемый ping sweep или ICMP sweep. Существует огромное количество средств, позволяющих выполнить подобное сканирование.

Сканирование портов. Следующий этап разведки — выявление открытых портов. По сути своей, это дает возможность определить, какие сервисы работают на удаленном узле, список которых мы уже получили в результате предыдущего сканирования. Кроме того, из анализа полученных пакетов можно также выявить операционную систему и ряд других важных параметров (наличие фильтра пакетов, например).

Здесь мы говорим о TCP-сканировании. Его принцип основан на особенностях работы TCP. В сущности, очень похожий механизм взаимодействия принят в авиации при переговорах пилотов с диспетчером, включающий запрос, ответ с указанием, подтверждение полученной инструкции. Такой способ взаимодействия если и не исключает полностью вероятность непонимания, то по крайней мере существенно снижает такую вероятность.

Это могло бы выглядеть так:

  • Пилот: Шереметьево-Руление, Аэрофлот 502, разрешите предварительный.
  • Диспетчер: Аэрофлот 502, 25 правая1 по РД2 10, магистральной, РД5 предварительный разрешаю.
  • Пилот: Аэрофлот 502, 25 правая, по РД 10, магистральной, РД5 предварительный разрешили.

Что тут происходит? Пилот обратился к диспетчеру с запросом о разрешении руления и его маршруте. Диспетчер разрешил руление и определил маршрут следования.

Пилот подтвердил маршрут следования и разрешение диспетчера. Все, можно двигаться — маршрут получен.

Очень похожее происходит и в TCP-взаимодействии. Здесь используется схема three-way-handshake или «трехэтапного» согласования, встречается также термин «трехэтапное квитирование», которое позволяет синхронизировать передающий и получающий узлы и установить сессию, что, в сущности, идентично примеру с радиопереговорами.

Установка TCP-сессии

Используя этот легальный алгоритм, злоумышленник может выяснить, какие порты открыты на сервере, то есть понять, какие сервисы используются в системе, какая операционная система. Для этого существует несколько эффективных методик.

Full Connect Scan

Некоторые методики сканирования портов. Самый эффективный и несложный способ сканирования — Full Connect Scan (Full Open Scan). Его принципы как раз показаны на рисунке 3. Происходит попытка выполнить трехэтапное согласование (three-way-handshake) с интересующими исследователя узлами. Если искомый порт открыт, то мы получаем от него сообщение SYN+ACK, после этого посылаем узлу RST (сброс сессии), если закрыт, то нам приходит RST от проверяемого узла. Надо отметить, что такой способ сканирования легко идентифицируется, стало быть, противостоять ему несложно.

Stealth Scan

Другой способ сканирования сети называется Stealth Scan (Half-open Scan). В этом случае атакующий старается обойти защиту брандмауэра и замаскироваться под обычный сетевой трафик с тем, чтобы избежать фиксации события сканирования в логах системы. Здесь речь не идет о согласовании, исследователь просто отправляет SYN-пакет на интересующий порт требуемого сервера. Если в ответ приходит SYN+ACK, то порт открыт, если RST, то порт закрыт.

Такой способ сканирования более изощренный, однако современные системы предотвращения вторжений должны уметь ему противостоять.

Не менее известные методы сканирования — Xmas Scan и Null Scan, однако мы не будем их рассматривать ввиду того, что защита от них реализована в рамках современных операционных систем Microsoft, поэтому они не будут представлять для нас большого интереса. Особенность этих типов сканирования — стелс режим работы, то есть без установки сессии. Впрочем, посмотреть детали можно в курсе Ethical Hacking или в книге «Network Security Test Lab». Эти типы сканирования эффективны только для операционных систем, где TCP-стек работает на основе RFC 793. Все современные операционные системы от Windows Vista и старше не подвержены этому риску.

Пожалуй, наиболее интересным способом сканирования является Idle Scan. Основная идея заключается в том, что злоумышленник может просканировать жертву, не показывая ей своего IP-адреса, то есть с точки зрения сканируемого узла злоумышленник с ней как бы и не общается. Используется «подставной» узел, который и может быть определен системами противодействия вторжениям в качестве источника атаки. Это весьма разумная методика, так называемый спуфинг, когда адрес отправителя подменяется на адрес другого устройства. Надо сказать, что «подставным» узлом или «зомби» может стать компьютер, который обладает определенными уязвимостями. Операционные системы, как правило, должны быть обновлены, однако это не всегда так, и атакующий всегда может найти «помощников», кроме того, в качестве «зомби» может быть использован сетевой принтер или другое сетевое устройство, которое работает с базовой функциональностью стека TCP/IP.

Это сканирование использует поле Identification в IP-заголовке (IPID). Значение IPID увеличивается на единицу в каждом следующем пакете, который отправляет узел. В сущности, это и есть уязвимость, поскольку появляется возможность предсказать, какое количество пакетов было передано между двумя пакетами, которые были получены. Современные операционные системы используют случайное значение для поля IPID, однако, как уже было упомянуто выше, всегда можно найти решение. Для современных Unix и Windows систем от Windows Vista и старше эта проблема уже потеряла свою актуальность.

Рассмотрим рисунок 4 и 5. На первом шаге (1) атакующий обращается к подставному устройству со стандартным SYN-пакетом. Устройство отвечает пакетом SYN ACK (2) или SYN RST, что более вероятно, однако из заголовка пакета атакующему становится виден IPID. Его-то и надо запомнить (3). Далее атакующий обращается к интересующему его серверу (4), при этом подменяет свой IP-адрес на адрес подставного узла, то есть маскируется, используя спуфинг (подмену адресов). В ответ на этот запрос сервер, если порт открыт, посылает SYN/ACK на подставной адрес (5). Мы ведь выполнили подмену. Не зная, что делать с этим пакетом, подставной компьютер в ответ пошлет RST (сброс сессии), при этом увеличит значение своего IPID. В нашем случае он станет равным 30132 (6). Если порт закрыт, то сервер пошлет сброс сессии (RST) — смотрите рисунок 5 (5).

Idle-сканирование (порт на сервере открыт)

IPID подставного узла остался неизменным, в нашем случае 30131, поскольку «зомби» никому больше ничего не отправлял. Теперь останется еще раз обратиться к «зомби», как мы это уже делали выше, выявить его IPID, сравнить его с имеющимся у нас значением. Если IPID увеличился на 2, то порт открыт.

Еще один важный момент, который хотелось бы отметить, — операционные системы имеют свою специфику при работе со стеком TCP/IP. Используя эти особенности при анализе пакетов, полученных при сканировании, вполне возможно выяснить, с какой ОС мы имеем дело, на этих принципах построены методики сканирования Banner Grabbing. Задача — выявить информацию о вычислительной системе и ее уязвимостях, что позволит атакующему использовать эти знания для своих последующих деструктивных действий. Любой современный сканер предоставит атакующему эту информацию.

Операционные системы, как правило, должны быть обновлены, однако это не всегда так, и атакующий может найти «помощников», кроме того, в качестве «зомби» может быть использован сетевой принтер или другое сетевое устройство, которое работает с базовой функциональностью стека TCP/IP

Нетрудно заметить, что все рассмотренные способы сканирования базируются на штатном поведении узлов, а значит, любой компьютер или иное сетевое устройство является потенциально уязвимым.

Злоумышленник обладает возможностью сбора и анализа полученной информации о структуре сети, сервисах, уязвимостях систем. Тем самым предоставляется потенциальная возможность подготовить целевую атаку против определенных узлов и сервисов.

Сканировать открытые порты

NMAP — сканируем удаленные компьютеры на предмет открытых портов

Установим nmap:

sudo apt-get install nmap

Использование:

nmap -A -T5 yandex.ru

Starting Nmap 5.21 ( http://nmap.org ) at 2011-07-06 16:20 MSD

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

* С помощью nmap часто можно узнать версию системы и многое другое.

Использование nmap:

nmap [Метод(ы) сканирования] [Опции] <Хост или сеть #1,[#N]>

Узнать возможные опции и ключи можно набрав:

Опции выбора метода сканирования:

-sT (scan TCP) - использовать метод TCP connect(). Наиболее общий метод сканирования TCP-портов. Функция connect(), присутствующая в любой ОС, позволяет создать соединение с любым портом удаленной машины. Если указанный в качестве аргумента порт открыт и прослушивается сканируемой машиной, то результат выполнения connect() будет успешным (т.е. соединение будет установлено), в противном случае указанный порт является закрытым, либо доступ к нему заблокирован средствами защиты.

Для того, чтобы использовать данный метод, пользователь может не иметь никаких привилегий на сканирующем хосте. Этот метод сканирования легко обнаруживается целевым (т.е. сканируемым) хостом, поскольку его log-файл будет содержать запротоколированные многочисленные попытки соединения и ошибки выполнения данной операции. Службы, обрабатывающие подключения, немедленно заблокируют доступ адресу, вызвавшему эти ошибки.

-sS (scan SYN) - использовать метод TCP SYN. Этот метод часто называют "полуоткрытым" сканированием, поскольку при этом полное TCP-соединение с портом сканируемой машины не устанавливается. Nmap посылает SYN-пакет, как бы намереваясь открыть настоящее соединение, и ожидает ответ. Наличие флагов SYN|ACK в ответе указывает на то, что порт удаленной машины открыт и прослушивается. Флаг RST в ответе означает обратное. Если Nmap принял пакет SYN|ACK, то в ответ немедленно отправляет RST-пакет для сброса еще не установленного соединения (реально эту операцию выполняет сама ОС). Очень немного сайтов способны обнаружить такое сканирование. Пользователь должен иметь статус root для формирования поддельного SYN-пакета.

Для ускорения процесса опроса портов при сканировании больших сетей совместно с опцией -sS вы можете использовать ярлык, позволяющий опросить какой-либо порт на всех активных объектах сканируемой вами сети намного быстрее, чем при использовании одной опции -p. Это можно сделать с помощью ярлыка -PS <порт>. Например, если будет обнаружена новая уязвимость в sendmail, вам может потребоваться за короткое время обнаружить, на каких машинах sendmail установлен. Команда запуска Nmap будет выглядеть следующим образом (пример):

nmap -n -sS -p25 -PS25 24.0.0.0/8

-sF,-sX,-sN (scan FIN, scan Xmas, scan NULL) - "невидимое" FIN, Xmas Tree и NULL-сканирование. Эти методы используются в случае, если SYN-сканирование по каким-либо причинам оказалось неработоспособным. Так, некоторые файрволлы и пакетные фильтры "ожидают" поддельные SYN-пакеты на защищенные ими порты, и программы типа Synlogger или Courtney способны отследить SYN-сканирование.

Идея заключается в следующем. В FIN-сканировании в качестве запроса используется FIN-пакет. В Xmas Tree используется пакет с набором флагов FIN|URG|PSH, а NULL-сканирование использует пакет без флагов. Согласно рекомендации RFC 973 п. 64, ОС сканируемого хоста должна ответить на такой пакет, прибывший на закрытый порт, пакетом RST, в то время как открытый порт должен игнорировать эти пакеты.

Разработчики Microsoft Windows, как обычно, решили полностью игнорировать все общепринятые стандарты и пойти своим путем. Поэтому любая ОС семейства Windows не посылает в ответ RST-пакет, и данные методы не будут работать с этими ОС. Однако во всем есть свои плюсы, и в Nmap этот признак является основным для различения операционных систем, обладающих таким свойством.

Если в результате FIN-сканирования вы получили список открытых портов, то это не Windows. Если же все эти методы выдали результат, что все порты закрыты, а SYN-сканирование обнаружило открытые порты, то вы скорей всего имеете дело с ОС Windows. К сожалению, Windows не единственная ОС, обладающая этим недостатком. К таким ОС относятся также Cisco, BSDI, IRIX, HP/UX и MVS. Все эти ОС не отправляют RST-пакеты.

-sP (scan Ping) - ping-"сканирование". Иногда вам необходимо лишь узнать адреса активных хостов в сканируемой сети. Nmap может сделать это, послав ICMP-сообщение "запрос эха" на каждый IP-адрес, указанный вами. Хост, отправивший ответ на эхо, является активным.

Некоторые сайты (например microsoft.com) блокируют эхо-пакеты. По этой причине Nmap также посылает TCP ACK-пакет на 80-й порт сканируемого хоста (по умолчанию). Если в ответ вы получили RST-пакет, хост активен. Третий метод использует SYN-пакет и ожидает в ответ RST либо SYN|ACK. Для пользователей, не обладающих статусом root, используется метод connect().

Для root-пользователей Nmap по умолчанию использует параллельно оба метода - ICMP и ACK. Вы можете изменить это, используя опцию '-P', описанную ниже. Заметим, что ping-сканирование по умолчанию выполняется в любом случае и только активные хосты подвергаются сканированию. Используйте эту опцию только в случае, если вы хотите выполнить только ping-опрос, не производя сканирования портов.

-sV (scan Version) - включение режима определения версий служб, за которыми закреплены сканируемые порты. После окончания сканирования будет получен список открытых TCP и/или UDP-портов. Без этой опции в списке напротив каждого порта будет указана служба, которая обычно использует данный порт (эта информация берется из базы данных "общеизвестных" портов, файл nmap-services). При включенной опции будет запущена подсистема определения версий служб, которая проведет последовательное тестирование этих портов с целью определения типов и версий служб, за которыми закреплены обнаруженные порты. Файл, названный nmap-service-probes используется для определения оптимальтых тестов, с помощью которых можно получить максимально точную информацию в данных условиях. Nmap пытается определить протокол службы (ftp, ssh, telnet, http), имя приложения (ISC Bind, Apache httpd, Solaris telnetd), номер версии и дополнительную информацию (версия протокола SSH). Если Nmap откомпилирован с поддержкой OpenSSL, он осуществит подключение к SSL-серверу и попытается определить, какая служба работает "за" шифрованием. Если обнаружена служба RPC, Nmap предпримет атаку на RPC по методу "грубой силы" для определения номера программы RPC и номера версии. Заметьте, что опция -A также включает этот режим. Для получения более подробной информации смотрите статью http://www.cherepovets-city.ru/insecure/runmap/runmap-versionscan.htm .Опция --version_trace указывает Nmap на необходимость получения полной информации о передаваемых и принимаемых в процессе тестирования данных.

-sU (scan UDP) - сканировать UDP-порты. Этот метод используется для определения, какие UDP-порты (RFC 768) на сканируемом хосте являются открытыми. На каждый порт сканируемой машины отправляется UDP-пакет без данных. Если в ответ было получено ICMP-сообщение "порт недоступен", это означает, что порт закрыт. В противном случае предполагается, что сканируемый порт открыт.

Некоторые считают сканирование UDP-портов бесполезным занятием. Мы в этом случае напоминаем о известной "дыре" в демоне rpcbind ОС Solaris. Он может быть обнаружен на любом из недокументированных UDP-портов с номером, больше 32770. Если вы обнаружите его, то будет уже не важно, блокируется ли 111-й порт файрволлом или нет.

К сожалению, сканирование UDP-портов проходит очень медленно, поскольку практически все ОС следуют рекомендации RFC 1812 (раздел 4.3.2.8) по ограничению скорости генерирования ICMP-сообщений "порт недоступен". Например, ядро Linux (каталог net/ipv4/icmp.h) ограничивает генерирование таких сообщений до 80 за 4 секунды с простоем 0,25 секунды, если это ограничение было превышено. У ОС Solaris еще более жесткое ограничение (2 сообщения в секунду), и поэтому сканирование Solaris проходит еще более медленно.

Nmap определяет параметры этого ограничения, и соответственно уменьшает количество генерируемых запросов, предотвращая тем самым затопление сети ненужными пакетами, которые игнорируются целевой машиной. Как обычно, Microsoft снова все проигнорировала, и не использует в своих ОС никаких ограничений. Поэтому вы очень быстро можете просканировать все 65535 UDP-портов хоста, работающего под управлением ОС Windows.

-sO (scan Open protocol) - сканирование протоколов IP. Данный метод используется для определения IP-протоколов, поддерживаемых сканируемым хостом. Метод заключается в передаче хосту IP-пакетов без какого-либо заголовка для каждого протокола сканируемого хоста. Если получено сообщение "Протокол недоступен", то данный протокол хостом не используется. В противном случае Nmap предполагает, что протокол поддерживается хостом.

Некоторые ОС (AIX, HP-UX, Digital UNIX) и файрволлы могут блокировать передачу сообщений "Протокол недоступен". По этой причине все сканируемые протоколы будут "открыты" (т.е. поддерживаются).

Поскольку описанная техника схожа с методом сканирования UDP-портов, ограничение скорости генерации ICMP-сообщений также будет иметь место. Однако поле "тип протокола" IP-заголовка состоит всего лишь из 8 бит, поэтому 256 протоколов будут отсканированы за приемлемое время.

-sI <zombie_хост[:порт]> (scan Idle) - позволяет произсести абсолютно невидимое сканирование портов. Атакующий может просканировать цель, не посылая при этом пакетов от своего IP-адреса. Вместо этого используется метод IdleScan, позволяющий просканировать жертву через так называемый хост-"зомби". Кроме абсолютной невидимости, этот тип сканирования позволяет определить политику доверия между машинами на уровне протокола IP. Листинг результатов показывает открытые порты со стороны хоста-"зомби". Таким образом, можно просканировать цель с использованием нескольких "зомби", которым цель может "доверять", в обход файрволлов и пакетных фильтров. Такого рода информация может быть самой важной при выборе целей "первого удара". Мы подготовили статью с описанием этого метода, Вы можете ознакимиться с ней здесь. Вы можете указать конкретный порт для проверки изменения IPID на хосте-"зомби". В противном случае Nmap будет использовать номер порта по умолчанию для "tcp ping".

-sA (scan ACK) - использовать ACK-сканирование. Этот дополнительный метод используется для определения набора правил (ruleset) файрволла. В частности, он помогает определит, защищен ли сканируемый хост файрволлом или просто пакетным фильтром, блокирующим входящие SYN-пакеты.

В этом методе на сканируемый порт хоста отправляется ACK-пакет (со случайными значениями полей acknowledgement number и sequence number). Если в ответ пришел RST-пакет, порт классифицируется как "нефильтруемый". Если ответа не последовало (или пришло ICMP-сообщение о недоступности порта), порт классифицируется как "фильтруемый".

Заметим, что Nmap не выдает "нефильтруемые" порты в результатах, поэтому если вы не обнаружите ни одного открытого порта при использовании этого типа сканирования, это будет означать, что все порты просканированы и являются нефильтруемыми. Обращаем ваше внимание, что этот метод никогда не покажет состояние порта "открыт" в результатах сканирования.

-sW (scan Window) - использовать метод TCP Window. Этот метод похож на ACK-сканирование, за исключением того, что иногда с его помощью можно определять открытые порты точно так же, как и фильтруемые/нефильтруемые. Это можно сделать, проверив значение поля Initial Window TCP-пакета, возвращаемого хостом в ответ на посланный ему запрос, ввиду наличия определенных особенностей обработки данного поля у некоторых ОС.

Список уязвимых операционных систем включает в себя по крайней мере несколько версий AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX и VxWorks. Для более подробной информации смотрите архив nmap-hackers.

-sR (scan RPC) - использовать RPC-сканирование. Этот метод используется совместно с другими методами сканирования и позволяет определить программу, которая обслуживает RPC-порт, и номер ее версии. Для этого все открытые TCP/UDP-порты хоста затопляются NULL-командами оболочки SunRPC, после чего определяются RPC-порты и закрепленные за ними программы. Таким образом, вы легко получаете информацию, которую могли бы получить с помощью команды 'rpcinfo -p', даже если portmapper сканируемого хоста закрыт файрволлом или TCP-wrapper'ом.

-sL (scan List) - получить список сканируемых адресов. Эта опция позволяет вам получить список адресов хостов, которые БУДУТ просканированы Nmap, до начала процесса сканирования. По умолчанию определяются имена хостов, однако это можно запретить, используя опцию -n. Опция может использоваться в случае, когда вам необходимо определить имена большого количества хостов по их адресам и т.д.

-b <ftp_relay хост> (bounche scan) - использовать атаку "Прорыв через FTP". Интересной "возможностью" протокола FTP (RFC 959) является поддержка "доверенных" (proxy) ftp-соединений. Другими словами, с доверенного хоста source.com можно соединиться с ftp-сервером target.com и отправить файл, находящийся на нем, на любой адрес Internet! Заметим, что данная возможность известна с 1985 года (когда был написан этот RFC). Nmap использует эту "дыру" для сканирования портов с "доверенного" ftp-сервера.

Итак, вы можете подключиться к ftp-серверу "над" файрволлом и затем просканировать заблокированные им порты (например 139-й). Если ftp-сервер позволяет читать и записывать данные в какой-либо каталог (например /incoming), вы также можете отправить любые данные на эти порты. Аргумент, указываемый после '-b', представляет собой URL сервера ftp, используемого в качестве "доверенного". Формат URL следующий: имя_пользователя:пароль@сервер:порт. Адрес сервера нужно указать обязательно, остальное можно не указывать.

Опции настройки и выбора дополнительных возможностей

Эти опции не обязательные (т.е. возможна нормальная работа Nmap и без их указания), однако все они являются весьма полезными.

-P0 (Ping 0) - не производить ping-опрос хостов перед их непосредственным сканированием. Эта опция позволяет просканировать сети, блокирующие обработку ICMP-эха с помощью файрволлов. Примером такой сети является microsoft.com, и вы всегда должны использовать опцию '-P0'или'-PT80'(см. ниже), когда сканируете такую сеть.

-PT (Ping TCP) - использовать TCP "ping". Вместо посылки запроса ICMP-эха, Nmap отправляет TCP ACK-пакет на сканируемый хост и ожидаем ответ. Если хост активен, то в ответ должен придти RST-пакет. Для не-root пользователей используется функция connect(). Эта опция позволяет вам определить состояние сканируемого хоста, даже если обработка ICMP-эха запрещена файрволлом. Для указания номера порта сканируемого сервера, на который будет отправляться ACK-пакет, используется опция '-PT <номер_порта>'. По умолчанию используется 80-й порт, поскольку он практически никогда не фильтруется.

-PS (Ping SYN) - опция, также используемая для ping-опроса. При этом вместо ACK-пакета TCP "ping" используется SYN-пакет. Активные хосты посылают в ответ RST-пакеты (реже - SYN|ACK).

-PU [portlist] (Ping UDP) - использовать UDP Ping. Nmap отправляет UDP-пакеты на указанный хост и ожидает в ответ ICMP "port unreachable" (или ответы от открытых портов UDP) если хост активет. Поскольку большинство служб, использующих UDP, не отвечают на запросы, Вам лучше использовать порты, которые заведомо закрыты.

-PE (Ping ICMP) - эта опция использует в качестве ping-запроса нормальный ping-пакет (запрос ICMP-эха). Опция применяется для поиска активных хостов а также адресов сетей с возможностью широковещания. Такие сети пересылают прибывший ICMP-пакет всем своим объектам. Как правило, такие сети представляют собой "живую мишень" для хакера.

-PP - использует пакет ICMP "timestamp request (code 13)" для определения активных хостов.

-PM - схожа с опциями-PE и-PP за исключением того, что используется пакет "netmask request" (ICMP code 17).

-PB (Ping Both) - режим ping-опроса по умолчанию. Использует одновременно запросы типа ACK и ICMP.

-O (Operating system detection) - эта опция позволяет определить операционную систему сканируемого хоста с помощью метода отпечатков стека TCP/IP. Другими словами, Nmap активизирует мощный алгоритм, функционирующий на основе анализа свойств сетевого программного обеспечения установленной на нем ОС. В результате сканирования получается формализованный "отпечаток", состоящий из стандартных тестовых запросов и "ответов" хоста на них. Затем полученный отпечаток сравнивается с имеющейся базой стандартных ответов известных ОС, хранящейся в файле nmap-os-fingerprinting, и на основании этого принимается решение о типе и версии ОС сканируемого хоста.

Этот метод требует наличия хотя бы одного закрытого и одного открытого порта на целевом хосте. Если вы обнаружите машину, у которой это условие выполняется, но Nmap не смог определить версию ОС - вышлите нам адрес этой машины. Если же, по каким-либо причинам выслать адрес не представляется возможным, запустите Nmap с опцией '-d' и вышлите полученный отпечаток.

-A Эта опция включает режим additional advanced aggressive, и разрешает опции -O, -sV, -T4 и -v.

-6 - опция разрешает поддержку протокола IPv6. Все хосты должны поддерживать IPv6 при использовании этой опции, и могут быть указаны путем нормального имени DNS (запись AAAA) или литеральным IP-адресом, например 3ffe:501:4819:2000:210:f3ff:fe03:4d0. На данный момент, поддерживаются только методы TCP connect()-сканирование и TCP connect() Ping-сканирование. Если Вам необходимо UDP или другой тип сканирования, рекомендуем ссылку http://nmap6.sourceforge.net/.

-I (Ident scan) - использовать reverse-ident сканирование. Протокол Ident (RFC 1413) позволяет вскрыть имя пользователя (username) процесса, использующего TCP, даже если этот процесс не инициализировал соединение. Так, например, вы можете подключиться к порту http и затем использовать identd для поиска на сервере пользователя root. Это может быть сделано только при установлении "полного" TCP-соединения с портом сканируемой машины (т.е. необходимо использовать опцию '-sT'). Nmap опрашивает identd сканируемого хоста параллельно с каждым открытым портом. Естественно, этот метод не будет работать, если на целевом хосте не запущен identd.

-f (use fragmentation) - эта опция используется совместно с SYN, FIN, Xmas или NULL-сканировании и указывает на необходимость использования IP-фрагментации с малым размером фрагментов. Идея заключается в том, чтобы разбить TCP-заголовок пакета на несколько фрагментов (обычно два) на стороне источника. Сканируемый хост "собирает" эти IP-фрагменты в один TCP-пакет.

Это значительно усложняет фильтрацию пакетов, работу систем обнаружения и других подобных средств защиты, и позволяет Nmap скрыть свои действия. Будьте осторожны, используя эту опцию! Некоторые программы "зависают" при попытке собрать такие маленькие фрагменты. Так, например, весьма неплохой "сниффер" завис сразу же при получении первого 36-байтного фрагмента. А следом за ним пришел 24-байтный фрагмент.

-v (verbose output) - использовать режим "подробного отчета". Эту опцию рекомендуется использовать в любых случаях, поскольку при этом Nmap подробно сообщает о ходе выполнения текущей операции. Для получения лучшего эффекта можно указать ее дважды. Ну а если вы укажете еще опцию '-d', то от скроллинга экрана у вас может закружиться голова.

-h (show help) - печатает справку по использованию Nmap с указанием опций и краткого их описания, не запуская саму программу.

-oN <имя_файла> (output Normal) - записывает результаты сканирования в указанный файл в удобной для пользователя форме.

-oX <имя_файла> (output XML) - записывает результаты сканирования в файл, указанный в качестве аргумента, в формате XML.Это позволяет программам легче интерпретировать вывод Nmap'а. Вы можете использовать аргумент '-' (без кавычек) для вывода на stdout. Нормальный вывод в этом случае будет подавлен. Document Type Definition (DTD) расшифровывающий структуру результатов Nmap в формате XML доступен здесь: http://www.insecure.org/nmap/nmap.dtd.

-oG <имя_файла> (output Grepable) - записывает результаты сканирования в файл, указанный в качестве аргумента, в формате,удобном для команд типа grep. Это простой формат, при котором все данные записываются в одну строку. Формат пришел на смену опции -oM (см. ранние версии) и использовался для взаимодействия с другими программами. Сейчас мы рекомендуем использовать XML. Также возможно использование аргумента '-'.

-oA <базовое_имя_файла> (output All) - записывает результаты во всех основных форматах (нормальном, grep и XML). Вам необходимо указать базу имени, и выходные файлы будут называться base.nmap, base.gnmap и base.xml.

-oS <имя_файла> (output Scipt kiddie) - Эту возможность мы предусмотрели для любителей языка s|<ipT kiDdi3: thIs l0gz th3 r3suLtS of YouR ScanZ iN a s|<ipT kiDd|3 f0rM iNto THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument ґ-ґ (wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!!

--resume <имя_файла> - если вы прервали сканирование сети нажатием комбинации <Ctrl C>, то вы можете продолжить его, используя эту опцию, если результаты сканирования записывались в лог-файл с помощью опций '-oG' или '-oN'. В этом случае запустите Nmap с указанием этой опции и имени файла, в который производилась запись предыдущего сеанса. При этом никаких других опций указывать не нужно, поскольку при возобновлении сканирования будут использоваться опции, указанные в предыдущем сеансе. Nmap продолжит сканирование с адреса, следующего за последним "завершенным".

--append_output Дописывать, а не удалять лог-файл.

-iL <имя_файла> (input List) - считывает описание целевых хостов из текстового файла. Файл должен содержать список имен хостов или IP-адресов, разделенных пробелами, знаками табуляции или комбинацией <CR><LF> (каждый хост - с новой строки). Если вы хотите использовать StdIn в качестве источника информации о хостах, укажите вместо имени файла символ '-'. Более подробная информация о форматах выражений приведены в разделе "Способы задания целевого хоста".

-iR (input Random) - если вы укажете эту опцию, Nmap будет сканировать случайно выбранные им хосты, адреса которых получены с помощью генератора случайных величин. Этот процесс будет длиться, пока вы его не остановите. Функция может пригодиться для статистического исследования Internet.

-p <диапазон(ы)_портов> (ports) - эта опция указывает Nmap, какие порты необходимо просканировать. Например, '-p23' означает сканирование 23 порта на целевой машины. Если указано выражение типа '-p 20-30,139,60000-', Nmap будет сканировать порты с номерами с 20 по 30 включительно, 139 и от 60000 и выше (до 65535). По умолчанию Nmap сканирует все порты в диапазоне 1-1024, поскольку все они перечислены в файле services.

-F (Fast scan) - быстрое сканирование. Указывает Nmap на необходимость сканирования портов только тех служб, которые перечислены в файле services. Сканирование проходит гораздо быстрее, чем если бы Nmap сканировал все 65535 портов.

-D <ложный_хост1,[ложный_хост2],[,ME]. > (use Decoy hosts). - В этом режиме Nmap "создает" ложные хосты, адреса которых задаются произвольно и указываются в качестве аргументов. При этом на стороне сканируемого хоста создается видимость, что производится одновременное сканирование с различных хостов (обладающих разными IP-адресами), что очень затрудняет обнаружение вашего реального IP-адреса.

Адреса разделяются запятой. Вы также можете указать свой IP-адрес (аргумент 'ME') в качестве одного из хостов. Однако если вы поместили аргумент 'ME' на шестой позиции и выше, некоторые скан-детекторы (например Solar Designer's Excellent Scanlogd) покажут ваш IP-адрес как наиболее предполагаемый. Если вы явно не указали аргумент 'ME', Nmap поместит вас на случайную позицию. Также вы можете указать имена хостов вместо их IP-адресов. Заметим, что хосты, указанные вами в качестве ложных, должны реально существовать и функционировать, в противном случае вы можете "затопить" сканируемый хост SYN-пакетами. Это также может способствовать обнаружению вашего хоста, потому что если ложные хосты не функционируют, то единственным работающим хостом окажется ваш.

Стоит заметить, что некоторые скан-детекторы блокируют доступ хосту, осуществившему попытку сканирования. Поэтому ложный хост может потерять соединение со сканируемым хостом. Эта ситуация может возникнуть даже в том случае, если вы указали в качестве ложного хоста адрес шлюза или 'localhost'. Поэтому аккуратно используйте эту опцию.

Ложные хосты могут использоваться с любым методом сканирования, а также при определении операционной системы. Если вы указали много ложных хостов, это замедлит процесс сканирования и сделает его менее точным. Некоторые провайдеры могут отфильтровывать ваши пакеты (но еще больше их не отфильтруют), и в этом случае использование ложных хостов не даст вам ожидаемого результата.

-S <IP-адрес> (set Source) - Если Nmap не смог автоматически определить IP-адрес вашего хоста (о чем вы получили соответствующее сообщение), вам необходимо самостоятельно указать IP-адрес, используя его в качестве аргумента данной опции (т.е. адрес интерфейса, который вы хотите использовать). Другое применение данной опции - для создания видимости сканирования целевого хоста кем-то другим. В этом случае вы не сможете получить результат, однако на стороне сканируемого хоста создается видимость сканирования с указанного вами адреса. Для этого совместно с '-S'необходимо использовать опцию '-e'.

-e <интерфейс> (interface) - указывает Nmap, какой интерфейс будет использоваться для приема/передачи пакетов. Имя интерфейса указывается в качестве аргумента опции. Nmap обычно сам определяет интерфейс, однако выдаст вам соответствующее сообщение, если по каким-либо причинам он не смог этого сделать.

-g <номер_порта> - указывает номер порта на вашем компьютере, который будет использоваться Nmap для осуществления сканирования. Многие файрволлы и пакетные фильтры позволяют проходить пакетам DNS (порт 53) и FTP-DATA (порт 20) к защищаемому ими хосту и установить соединение. Этот момент является большой "дырой" в безопасности файрволлов, поэтому атакующему ничего не стоит отправлять нужные ему пакеты через 53-й или 20-й порт.

Для сканирования UDP-портов Nmap пробует сначала 53-й порт, а затем 20-й. Для TCP-портов - наоборот. Заметим, что это влияет на поле "порт источника" в запросе и поэтому не всегда работает. Например, вы не сможете определить характер изменения ISN, всвязи с чем Nmap самостоятельно сменит номер порта для этой цели, даже если вы используете опцию '-g'.

--data_length <число> - Обычно Nmap посылает пакет, содержащий только загловок. Таким образом, TCP-пакет имеет длину 40 байт, а ICMP "echo requests" - 28. Эта опция добавляет к большинству пакетов (кроме пакетов для определения ОС) указанное число нулевых байт. Добавляет конспирации.

-n Никогда не преобразовывать адреса обнаруженных хостов в DNS-адрес. Увеличивает скорость сканирования.

-R Всегда преобразовывать адреса обнаруженных хостов в DNS-адрес.

-r Не переставлять номера сканируемых портов случайным образом.

-ttl <значение> Записывает в поле TTL отправляемых пакетов IPv4 заданное значение.

--randomize_hosts - указывает Nmap на необходимость случайной перестановки каждой группы из 2048 хостов перед непосредственным их сканированием. Эта опция делает сканирование менее заметным для различных систем сетевого мониторинга, особенно если вы используете ее совместно с опцией настройки времени, устанавливающей более медленное сканирование.

-M <максимум_сокетов> (Max sockets) - устанавливает максимальное количество сокетов, используемых параллельно в методе TCP connect() сканирования. Установка меньшего значения немного замедляет процесс сканирования, но предотвращает "завал" сканируемого хоста. Для последней цели лучше всего использовать опцию '-sS', так как SYN-сканирование гораздо легче "переносится" операционными системами.

--packet_trace Показывать все принимаемые и передаваемые пакеты в формате TCPDump.

--datadir [каталог] При запуске Nmap считывает данные из файлов nmap-services, nmap-protocols, nmap-rpc, и nmap-os-fingerprints. Их местоположение Nmap берет из переменной --nmapdir. Затем проверяется переменная окружения NMAPDIR, после чего

/nmap, а затем путь наподобие /usr/share/nmap. А потом Nmap ищет их в текущем каталоге. Этой опцией можно явно задать положение этих файлов.

Опции настройки временных параметров

Обычно Nmap автоматически настраивает временные параметры в соответствии с характеристиками сканируемой сети. Настройки осуществляются, во-первых, для проведения максимально быстрого сканирования, и во-вторых, для уменьшения вероятности появления ошибок. Если вас не устраивает автоматическая настройка временных параметров, вы можете настроить их самостоятельно, используя эти опции.

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (Timing options) - эта опция устанавливает временной режим сканирования. Требуемый режим указывается в качестве аргумента. Режим Paranoid используется в случае, когда очень велика вероятность использования скан-детекторов. В этом режиме сканирование проходит очень медленно. Параллельне сканирование не используется. Вместо этого Nmap проводит сканирование последовательно, с интервалом по меньшей мере 5 минут между посылкой пакетов.

Режим Sneaky похож на режим Paranoid. Разница заключается в том, что интервал между посылкой двух пакетов составляет 15 секунд.

Режим Polite используется в случае, когда необходимо минимизировать нагрузку на сеть и уменьшить вероятность "завала" сканируемого хоста. В этом режиме тесты проходят последовательно с интервалом минимум 0,4 секунды.

Режим Normal используется Nmap по умолчанию. В этом режиме сканирование производится с максимально возможной скоростью, и по возможности без перегрузки сети и возникновения ошибок.

В режиме Aggressive устанавливается ограничение на сканирование одного хоста, равное 5 минутам, и, кроме того, время ожидания ответа на запрос не превышает 1,25 секунды.

Режим Insane применяется только при сканировании очень быстрых сетей. Время сканирования одного хоста составляет 75 секунд, а ожидание ответа на запрос - 0,3 секунды.

Каждому режиму присвоен соответствующий номер, и вы можете указать его вместо полного названия режима. Так, опция '-T0' означает режим Paranoid, а '-T5' - Insane. Нумерация соответствует порядку, в котором они были перечислены выше. Заметим, что опция '-T' осуществляет настройку Nmap на высоком уровне, и не должна использоваться с опциями, приведенными ниже (они обеспечивают низкоуровневую настройку).

--host_timeout <миллисекунд> - устанавливает время, отводимое Nmap на полное сканирование одного хоста, прежде чем он перейдет к очередному IP-адресу. По умолчанию этот параметр отсутствует, т.е. Nmap не переходит к очередному адресу до окончания сканирования текущего.

--max_rtt_timeout <миллисекунд> (maximal round-trip time timeout) - устанавливает верхнюю границу временного интервала, в течение которого Nmap ожидает ответ на посланный запрос, прежде чем повторить запрос либо послать новый. По умолчанию это значение установлено равным 5000 миллисекунд.

--min_rtt_timeout <миллисекунд> - Если сканируемый хост немедленно отвечает на посланный запрос, Nmap сразу же передает следующий, сэкономив тем самым очень много времени. Это ускоряет сканирование, но может привести к потере пакетов с ответами, пришедшими несколько позже, чем обычно. Эта опция устанавливает нижнюю границу времени ожидания ответа, т.е. Nmap в любом случае будет ждать в течении указанного вами времени не зависимо от того, пришел ответ или нет.

--initial_rtt_timeout <миллисекунд> - устанавливает время, отводимое на начальный тест. Эта опция используется в основном для сканирования хостов, защищенных файрволлом, совместно с опцией '-P0'. Обычно Nmap автоматически выбирает оптимальное значение этого параметра. Значение по умолчанию составляет 6000 миллисекунд.

--max_parallelism <количество> - устанавливает максимальное количество параллельных процессов сканирования, используемых Nmap. Установка этого параметра равным 1 означает, что Nmap никогда не будет сканировать более одного порта в один момент времени.

--min_parallelism <количество> - устанавливает минимальное количество параллельных процессов сканирования, используемых Nmap. Увеличивает скорость прохождения пакетов через файрволлы.

--scan_delay <миллисекунд> - устанавливает минимальное время задержки между тестами. Эта опция может использоваться для снижения нагрузки на сеть и уменьшения вероятности обнаружения сканирования.

СПОСОБЫ ЗАДАНИЯ ЦЕЛЕВОГО ХОСТА

Все, что не является опцией или ее аргументом, Nmap воспринимает как адрес или имя целевого хоста (т.е. хоста, подвергаемого сканированию). Простейший способ задать сканируемый хост - указать его имя или адрес в командной строке после указания опций и аргументов. Если вы хотите просканировать подсеть IP-адресов, вам необходимо указать параметр '/<mask>' ("маска") после имени или IP-адреса сканируемого хоста. Маска может принимать следующие значения:

'/0' - сканировать весь Интернет;

'/16' - сканировать адреса класса B;

'/24' - сканировать адреса класса С;

'/32' - сканировать только указанный хост.

Nmap позволяет также гибко указать целевые IP-адреса, используя списки и диапазоны для каждого их элемента. Например, необходимо просканировать подсеть класса B с адресом 128.210.*.*. Задать эту сеть можно любым из следующих способов:

128.210.0-255.0-255

128.210.1-50,51-255.1,2,3,4,5-255