Nmap сканирование из файла. Справочное руководство Nmap (Man Page). Определение версии ОС на удаленном компьютере

Несколько примеров работы с замечательным сканером сети - NMAP

Сканировать сеть в поиске Активных Хостов:

$ nmap -sn 192.168.1.0/ 24

Сканирование списка хостов/сетей из Файла:

$ nmap -iL input.txt

Формат файла:

Записи могут быть представлены в любом из форматов, с которыми работает Nmap из командной строки (IP адреса, имена хостов, CIDR, IPv6, или октетные диапазоны). Записи должны разделятся одним или более пробелами, табуляциями или переходами на новую строку.

$ cat input.txt server.test.com 192.168.1.0/ 24 192.168.2.1,2 ,3 192.168.3.0-200

Сканировать Множество IP Адресов:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ nmap 192.168.1.1,2 ,3


5. Исключение IP/Хостов/Сетей из Сканирования

Исключить Цели из сканирования Nmap-ом:

$ nmap 192.168.1.0/ 24 --exclude 192.168.1.1 $ nmap 192.168.1.0/ 24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.0/ 24 --exclude 192.168.1.1,2 ,3

Исключить Список хостов, взятых из файла:

$ nmap 192.168.1.0/ 24 --excludefile exclude.txt

6. Сканирование Определенных Портов

Сканировать Один Порт:

$ nmap -p 80 192.168.1.1

Сканировать Несколько Портов:

$ nmap -p 80 ,443 192.168.1.1

Сканировать Диапазон Портов:

$ nmap -p 80 -1000 192.168.1.1

Сканировать Все Порты:

$ nmap -p "*" 192.168.1.1

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

$ nmap -Pn 192.168.1.1

7. Определение Поддерживаемых IP Протоколов

Определить какие IP Протоколы (TCP, UDP, ICMP, и т.д.) поддерживает сканируемый хост:

$ nmap -sO 192.168.1.1

8. Сканирование TCP/UDP Портов

Сканировать все TCP Порты:

$ nmap -sT 192.168.1.1

Сканировать определенные TCP Порты:

$ nmap -p T:80 192.168.1.1

Сканировать все UDP Порты:

$ nmap -sU 192.168.1.1

Сканировать определенные UDP Порты:

$ nmap -p U:53 192.168.1.1

Объединение сканирования разных портов:

$ nmap -p U:53 ,79 ,113 ,T:21 -25 ,80 ,443 ,8080 192.168.1.1

9. Быстрое Сканирование

Активировать Быстрый Режим сканирования:

$ nmap -F 192.168.1.1

Показывать Причину Состояния Порта

Показать Причину, по которой Nmap считает что порт находится в определенном состоянии:

$ nmap --reason 192.168.1.1

11. Показывать Только Открытые Порты

Показать Только Открытые Порты (либо возможно открытые) :

$ nmap --open 192.168.1.1

Показать только открытые 22-е порты:

Nmap -p22 --open 192.168.1.1

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

Включить Определение ОС:

$ nmap -O 192.168.1.1

* Определяет удаленную операционную систему с помощью отпечатка стека TCP/IP.
13. Определение Версии Сервисов

Включить Определение Версии Сервисов:

$ nmap -sV 192.168.1.1

* Определяет версии программ, запущенных на удаленном сервере.
14. Обнаружение Фаервола

Узнать, защищен ли компьютер какими-либо Пакетными Фильтрами или Фаерволом:

nmap -oX output.xml 192.168.1.1

Nmap -A 192.168.1.2

Эта команда позволит запускать все скрипты и много других вариантов, вот описание из меню справки: Enable OS detection, version detection, script scanning, and traceroute.
К примеру, по сервису Samba (445 порт), он покажет следующее:

Host script results:
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)

Аргументом опции --scanflags может быть числовое значение, например, 9 (PSH и FIN флаги), но использование символьных имен намного проще. Используйте любые комбинации URG , ACK , PSH , RST , SYN и FIN . Например, опцией --scanflags URGACKPSHRSTSYNFIN будут установлены все флаги, хотя это и не очень полезно для сканирования. Порядок задания флагов не имеет значения.

В добавлении к заданию желаемых флагов, вы также можете задать тип TCP сканирования (например, -sA или -sF). Это укажет Nmap на то, как необходимо интерпретировать ответы. Например, при SYN сканировании отсутствие ответа указывает на фильтруемый порт, тогда как при FIN сканировании - на открытый|фильтруемый. Nmap будет осуществлять заданный тип сканирования, но используя указанные вами TCP флаги вместо стандартных. Если вы не указываете тип сканирования, то по умолчанию будет использоваться SYN.

-sI <зомби_хост> [: <порт> ] ("ленивое" idle сканирование)

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

Вы можете добавить номер порта после двоеточия к зомби хосту, если хотите использовать конкретный порт. По умолчанию будет использоваться порт 80.

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

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

-sO (Сканирование IP протокола)

Сканирование такого типа позволяет определить, какие IP протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются целевыми машинами. Технически такое сканирование не является разновидностью сканирования портов, т.к. при нем циклически перебираются номера IP протоколов вместо номеров TCP или UDP портов. Хотя здесь все же используется опция -p для выбора номеров протоколов для сканирования, результаты выдаются в формате таблицы портов, и даже используется тот же механизм сканирования, что и при различных вариантах сканирования портов. Поэтому он достаточно близок к сканированию портов и описывается здесь.

Помимо полезности непосредственно в своей сфере применения, этот тип сканирования также демонстрирует всю мощь открытого программного обеспечения (open-source software). Хотя основная идея довольна проста, я никогда не думал включить такую функцию в Nmap, и не получал запросов на это. Затем, летом 2000-го, Джерард Риджер (Gerhard Rieger) развил эту идею, написал превосходный патч воплощающий ее и отослал его на nmap-hackers рассылку. Я включил этот патч в Nmap и на следующий день выпустил новую версию. Лишь единицы комерческого программного обеспечения могут похвастаться пользователями, достаточно полными энтузиазма для разработки и предоставления своих улучшений!

Способ работы этого типа сканирования очень похож на реализованный в UDP сканировании. Вместо того, чтобы изменять в UDP пакете поле, содержащее номер порта, отсылаются заголовки IP пакета, и изменяется 8 битное поле IP протокола. Заголовки обычно пустые, не содержащие никаких данных и даже правильного заголовка для требуемого протокола. Исключениями явлются TCP, UDP и ICMP. Включение правильного заголовка для этих протоколов необходимо, т.к. в обратном случае некоторые системы не будут их отсылать, да и у Nmap есть все необходимые функции для их создания. Вместо того, чтобы ожидать в ответ ICMP сообщение о недостижимости порта, этот тип сканирования ожидает ICMP сообщение о недостижимости протокола . Если Nmap получает любой ответ по любому протоколу, то протокол помечается как открытый. ICMP ошибка о неостижимости протокола (тип 3, код 2) помечает протокол как закрытый. Другие ICMP ошибки недостижимости (тип 3, код 1, 3, 9, 10 или 13) помечают протокол как фильтруемый (в то же время они показывают, что протокол ICMP открыт). Если не приходит никакого ответа после нескольких запросов, то протокол помечается как открыт|фильтруется

. -b (FTP bounce сканирование)

Интересной возможностью FTP протокола (RFC 959) является поддержка так называемых прокси FTP соединений. Это позволяет пользователю подключиться к одному FTP серверу, а затем попросить его передать файлы другому. Это является грубым нарушением, поэтому многие сервера прекратили поддерживать эту функцию. Используя эту функцию, можно осуществить с помощью данного FTP сервера сканирование портов других хостов. Просто попросите FTP сервер переслать файл на каждый интересующий вас порт целевой машины по очереди. Сообщение об ошибке укажет: открыт порт или нет. Это хороший способ обхода брандмауэров, т.к. организационные FTP сервера обычно имеют больше доступа к другим внутренним хостам, чем какие-либо другие машины. В Nmap такой тип сканирования задается опцией -b . В качестве аргумента ей передается <имя_пользователя> : <пароль> @ <сервер> : <порт> . <Сервер> - это сетевое имя или IP адрес FTP сервера. Как и в случае в обычными URL, вы можете опустить <имя_пользователя> : <пароль> , тогда будут использованы анонимные данные (пользователь: anonymous пароль: -wwwuser@). Номер порта (и предшествующее ему двоеточие) также можно не указывать; тогда будет использован FTP порт по умолчанию (21) для подключения к <серверу> .

Эта уязвимость была широко распространена в 1997, когда была выпущена Nmap, но теперь почти везде исправлена. Уязвимые сервера по-прежнему есть, так что, если ничего другое не помогает, то стоит попробовать. Если вашей целью является обход бранмауэра, то просканируйте целевую сеть на наличие открытого порта 21 (или даже на наличие любых FTP служб, если вы используете определение версии), а затем попробуйте данный тип сканирования с каждым из найденных. Nmap скажет вам, уязвим хост или нет. Если вы просто пытаетесь замести следы, то вам нет необходимости (и, фактически, не следует) ограничивать себя только хостами целевой сети. Перед тем как вы начнете сканировать произвольные Интернет адреса на наличие уязвимого FTP сервера, имейте ввиду, что многим системным администраторам это не понравится.

Вы беспокоитесь о безопасности вашей или какой-нибудь другой сети? Защита вашего маршрутизатора от нежелательных подключений является залогом безопасности вашей сети. Одним из простых методов является Nmap или Network Mapper. Это программа сканирования, которая проверяет какие порты открыты и какие закрыты, а так же другие детали. Специалисты по безопасности используют эту программу для тестирования безопасности сети. Чтобы научиться использовать эту программу смотрите Шаг 1.

Шаги

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

    Скачайте установщик Nmap. Вы можете найти установщик на сайте разработчиков и скачать бесплатно. Рекомендуется скачивание именно с сайта разработчиков, чтобы избежать риск скачивания вирусов или подмененных файлов. Скачивая Nmap вы одновременно получить Zenmap, графический интерфейс для Nmap, что делает программу простой в использовании для новичков при выполнении сканирования без знания команд.

    • Программа Zenmap доступна для операционных систем Windows, Linux, и Mac OS X. Вы можете найти установщики на официальном сайте Nmap.
  1. Запустите программу “Nmap – Zenmap” GUI. Если во время установки вы оставили все пункты не тронутыми, то иконка программы должна появиться на вашем рабочем столе. Если нет, посмотрите в меню старт и запустите Zenmap.

    Введите цель вашего сканирования. Программа Zenmap превращает сканирование сети в очень простой процесс. В первую очередь выберете цель сканирования. Вы можете ввести домен (example.com), IP-адрес (127.0.0.1), сеть (192.168.1.0/24), или комбинацию перечисленных.

    • В зависимости от загрузки и цели вашего сканирования, использование Nmap может оказаться нарушением пользовательских правил вашего интернет провайдера. Всегда проверяйте местные пользовательские правила во время использования Nmap в случаях сканирования этой программой вне вашей собственной сети.
  2. Выберете ваш профиль. Профили представляют из себя группу модификаций, которые изменяют структуру сканирования. Профили позволяют быстро выбрать разные типы сканов без необходимости набора модификаций в командной строке. Выберете лучший профиль для ваших нужд:

    • Intense scan - обширное сканирование. Включает распознавание операционной системы, версии, скриптов, трассировку, и имеет агрессивное время сканирования.
    • Ping scan - это сканирование, определяет онлайн статус цели вашего сканирования, и не сканирует порты.
    • Quick scan - сканирует быстрее чем обычный скан с агрессивным временем сканирования и выборку портов.
    • Regular scan - это стандартны Nmap скан без каких-либо модификаций. Результат включает пинг и открытые порты.
  3. Нажмите Scan чтобы начать сканирование. Активные результаты скана будут отображаться во вкладке Nmap Output. Время сканирования будет зависеть от выбранного профиля, физического расстояния до цели, и сетевой конфигурации.

    Посмотрите ваши результаты. После окончания скана, вы увидите сообщение “Nmap is done” в низу вкладки Nmap Output. Теперь вы можете проверить ваши результаты, в зависимости от типа выбранного скана. Все результаты собраны во вкладке Output, но, выбирая другие вкладки, вы можете более детально изучить получившийся результат.

    • Ports/Hosts - эта вкладка покажет сканирования портов, включая службы, работающие на этих портах.
    • Topology - показывает трассировку для выполненного сканирования. Вы можете посмотреть через сколько «прыжков» ваши данные доходят до нужной цели.
    • Host Details - показывает полную информацию о цели, количество портов, IP-адреса, имена хостов, операционные системы, и другое.
    • Scans - эта вкладка записывает историю ваших предыдущих сканов. Таким образом вы можете быстро перезапустить скан, проделанный в прошлом, с определенным сетом параметров.

Используя командную строку

  1. Установите Nmap. Nmap является не большой и бесплатной программой. Вы можете скачать программу на сайте разработчика. Следуйте инструкциям исходя из вашей операционной системы:

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

  2. Проведите скан нужных вам портов. Чтобы начать простое сканирование, напишите nmap . Таким образом начнется пинг выбранной цели и сканирование портов. Этот скан очень просто распознать. Результаты будут видны на вашем экране. Возможно вам придется прокрутить наверх, чтобы увидеть результаты полностью.

    • В зависимости от загрузки и цели вашего скана, использование Nmap может оказаться нарушением правил вашего интернет провайдера. Всегда проверяйте местные пользовательские правила во время использования Nmap в случаях сканирования этой программой вне вашей собственной сети.
  3. Проведите модифицированное сканирование. Вы можете использовать командные переменные, чтобы изменить параметры сканирования, в результате получая более или менее обширное сканирование. Вы можете добавить несколько переменных оставляя пробел между каждым. Переменные ставятся до цели: nmap

    • -sS - это скрытое сканирование SYN. Это сканирование сложнее обнаружить, чем обычное, но может занять дольше времени для завершения. Большинство новых файерволов могут обнаружить сканирование –sS.
    • -sn - это сканирование пинга. Это сканирование не использует обнаружение портов, и только проверяет онлайн статус цели.
    • -O - это сканирование определяет вид операционной системы цели.
    • -A - эта переменная включает обнаружение более обширной информации: операционная система, версия, скрипты, и трассировка.
    • -F - включает быстрое сканирование, и уменьшает количество сканируемых портов.
    • -v - эта переменная показывает большее количество результатов вашего сканирования, делая их читабельными.
  4. Выведите результаты вашего сканирования в XML файл. Вы можете настроить вывод результатов вашего сканирования в XML файл и, в последствии, легко открыть их в любом веб-браузере. Чтобы это сделать используйте переменную -oX с названием файла для вывода данных. Полностью команда выглядит таким образом nmap –oX ScanResults.xml .

    • Ваш XML файл будет сохранен в текущей директории работы вашей командной строки.
  • Интересно как проходит сканирование? Нажмите пробел, или любую кнопку, во время работы скана, чтобы посмотреть прогресс Nmap.
  • Цель не отвечает? Попробуйте добавить переменную “-P0” к вашему сканированию. В результате сканирование Nmap начнет свою работу, даже если программа «думает», что цель не существует. Это бывает полезно, когда компьютер защищён файерволом.
  • Если ваше сканирование занимает большое время (больше 20 минут), попробуйте добавить переменную “-F”, таким образом Nmap сканирование затронет только недавно использовавшиеся порты.

Предупреждения

  • Убедитесь, что у вас есть разрешение на сканирование цели. Сканирование государственных сайтов принесет вам не мало проблем. Если вы хотите проверить сканирование, вы можете использоваться scanme.nmap.org. Это тестовый компьютер установленный создателем программы.
  • Если вы часто используете сканирование Nmap, будьте готовы ответить на вопросы от вашего интернет провайдера. Некоторые провайдеры специально проверяют трафик на сканирование Nmap. Программа является известной и часто используемой хакерами.

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


Что такое Nmap? Название Nmap это сокращение от “network mapper”, сам nmap это набор инструментов для сканирования сети. Он может быть использован для проверки безопасности, просто для определения сервисов запущенных на узле, для идентификации ОС и приложений, определения типа фаерволла используемого на сканируемом узле.
Nmap это знаменитый инструмент. Как только вы узнаете больше о Nmap, вы поймете, что он делает в эпизодах таких фильмов как Матрица Перезагрузка, Ультиматум Борна, Хоттабыч, и других .
В этом руководстве будут описаны основы использования Nmap и приведены некоторые примеры, которые вы сможете использовать.

Где взять Nmap?
Если Вы используете Linux, то можете найти пакеты Nmap в репозиториях для большинства дистрибутивов. Последний релиз Nmap вышел в начале 2010, поэтому самой свежей версии может не быть в текущих стабильных ветках. Найти исходники и некоторые бинарные сборки можно на странице загрузки .Там есть и windows версия.
Основы использования Nmap.
Синтаксис Nmap следующий:

Nmap Опции_сканирования Цель_сканирования.

Допустим Вы хотите сканировать узел и узнать какая операционная система на нем работает. Чтобы сделать это выполните следующее:

Nmap -O target.host.com

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

Starting Nmap 5.21 (nmap.org) at 2010-02-27 23:52 EST
Nmap scan report for 10.0.0.1
Host is up (0.0015s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
53/tcp open domain
5009/tcp open airport-admin
10000/tcp open snet-sensor-mgmt
MAC Address: 00:11:24:6B:43:E2 (Apple Computer)
Device type: WAP|printer
Running: Apple embedded, Canon embedded, Kyocera embedded, Xerox embedded
OS details: VxWorks: Apple AirPort Extreme v5.7 or AirPort Express v6.3; Canon imageRUNNER printer (5055, C3045, C3380, or C5185); Kyocera FS-4020DN printer; or Xerox Phaser 8860MFP printer
Network Distance: 1 hop

Как вы видите Nmap предоставляет множество информации. Здесь он отображает предположение об операционной системе, которая была запущена на узле. В данном случае выполнялось сканирование маршрутизатора Apple Airport Extrime. В качестве дополнительного бонуса Nmap сообщил, что устройство на расстоянии одного прыжка, а также MAC адрес устройства и производителя сетевой карты, открытые порты и сколько времени выполнялось сканирование.
Ниже приведены результаты другого сканирования, домашнего компьютера с запущенной Ubuntu 9.10:

Starting Nmap 5.21 (nmap.org) at 2010-02-28 00:00 EST
Nmap scan report for 10.0.0.6
Host is up (0.0039s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:17:08:2A:D6:F0 (Hewlett Packard)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.19 - 2.6.31
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at nmap.org/submit .
Nmap done: 1 IP address (1 host up) scanned in 3.40 seconds

Здесь мы видим, что система имеет сетевую карту HP, запущено Linux между версиями 2.6.19 и 2.6.31. Кстати, Вы не сможете явно идентифицировать дистрибутив, только версию Linux ядра.

Сканирование чужих узлов.

В примерах выше для сканирования были выбраны локальный маршрутизатор и одна из рабочих станций, потому что мы имели право на их сканирование. Однако, будет плохой идеей запуск множественного сканирования чужого узла, если вы их не контролируете или не имеете прав для сканирования. Для экспериментов Nmap имеет общедоступный тестовый сервер scanme.nmap.org который Вы можете использовать.
Многие администраторы не любят несанкционированного сканирования их серверов, так что лучшим вариантом будет ограничение сканирования узлов своей локальной сети или тех для которых у вас есть права на сканирование. Также в некоторых случаях вы можете нарушить договор с вашим провайдером, при использовании некоторых особо агрессивных методов сканирования Nmap, поэтому будьте осторожны.

Сканирование нескольких узлов.

Вы можете сканировать больше чем один узел за раз, используя nmap. Если вы производите сканирование по IP-адресу вы можете определить диапазон 10.0.0.1-6 или 10.0.0.0/24.Используя диапазон 10.0.0.1-6 будут сканироваться узлы от 10.0.0.1 до 10.0.0.6. Используя определение /24 будет сканироваться весь диапазон узлов от 10.0.0.0 до 10.0.0.255. Для примера, если нужно просканировать узлы от 10.0.0.1 до 10.0.0.42 и узнать какая ОС вероятно запущена используйте:

Nmap –O 10.0.0.1-42

Если у вас есть некоторый список доменных имен вместо IP адресов, вы можете разделить их в командной строке, вот так:

Nmap -O host1.target.com host2.target.com

Проверка открытых портов

Если вы запустите nmap вообще без опций и укажите какой то узел, то он будет сканировать порты и покажет все найденные открытые порты и сервисы запущенные на них. Например запустите:
nmap target.hostname.com
после чего он должен выдать что то похожее на это:

Interesting ports on target.hostname.com (10.0.0.88):
Not shown: 1711 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql

Nmap done: 1 IP address (1 host up) scanned in 0.228 seconds

Nmap выдаст больше информации если использовать опцию -v (verbose).

Сканирование запущенных сервисов

Если вы хотите узнать какой сервис возможно запущен попробуйте опцию –sV. Эта опция произведет более агрессивное сканирование и попытается выяснить какая версия сервисов запущена на данном узле, а также может помочь более точно определить какая ОС запущена. Для пример запустим nmap –sV на тестовый сервер и получим следующий ответ:

Starting Nmap 5.21 (nmap.org) at 2010-02-28 00:15 EST
Nmap scan report for test.host.net (XX.XXX.XXX.XX)
Host is up (0.090s latency).
Not shown: 965 closed ports, 33 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch)
Service Info: OS: Linux

Service detection performed. Please report any incorrect results at nmap.org/submit .
Nmap done: 1 IP address (1 host up) scanned in 11.43 seconds

Как вы видите, Nmap может проанализировать пакеты и определить версию запущенного приложений на SSH и HTTP портах. Здесь вы можете увидеть что опрашиваемая система это Ubuntu с Apache 2.2.8 и OpenSSH 4.7p1. Эта информация может быть полезна по ряду причин. Nmap сканирование может идентифицировать систему под управлением устаревших сервисов которые могут быть уязвимы для известных эксплойтов.

Кто в моей сети?

Не знаете сколько онлайн узлов находятся в вашей сети? Попробуйте использовать nmap –sP который запустит ping сканирование указанной сети. Для примера, nmap –sP 10.0.0.0/24 сканирует 256 узлов от 10.0.0.0 до 10.0.0.255 проверит доступны ли они и доложит об этом. Так же вы можете использовать диапазон, например:

Nmap –sP 10.0.0.1-15

Zenmap

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

Данный пост это вольный перевод статьи

  • Обнаружение служб и их версий
  • Определение ОС
  • Опции управления временем и производительностью
  • Различные опции
  • Взаимодействие во время выполнения
  • Примеры
  • Информация по скриптам Nmap (на английском):

    Скрыто от гостей


    Самая последня версия документации по Nmap (на английском):

    Скрыто от гостей


    Официальная книга по Nmap от создателей Nmap (на английском):

    Скрыто от гостей

    Преамбула

    nmap - Утилита для исследования сети и сканер портов

    Nmap (“Network Mapper”) это утилита с открытым исходным кодом для исследования сети и проверки безопасности. Она была разработана для быстрого сканирования больших сетей, хотя прекрасно справляется и с единичными целями. Nmap использует сырые IP пакеты оригинальными способами, чтобы определить какие хосты доступны в сети, какие службы (название приложения и версию) они предлагают, какие операционные системы (и версии ОС) они используют, какие типы пакетных фильтров/брандмауэров используются и еще дюжины других характеристик. В тот время как Nmap обычно используется для проверки безопасности, многие сетевые и системные администраторы находят ее полезной для обычных задач, таких как контролирование структуры сети, управление расписаниями запуска служб и учет времени работы хоста или службы.

    Выходные данные Nmap это список просканированных целей с дополнительной информацией по каждой в зависимости от заданных опций. Ключевой информацией является “таблица важных портов”. Эта таблица содержит номер порта, протокол, имя службы и состояние. Состояние может иметь значение open (открыт), filtered (фильтруется), closed (закрыт) или unfiltered (не фильтруется). Открыт означает, что приложение на целевой машине готово для установки соединения/принятия пакетов на этот порт. Фильтруется означает, что брандмауэр, сетевой фильт или какая-то другая помеха в сети блокирует порт, и Nmap не может установить открыт этот порт или закрыт. Закрытые порты не связаны ни с каким приложение, так что они могут быть открыты в любой момент. Порты расцениваются как не фильтрованные, когда они отвечают на запросы Nmap, но Nmap не может определить открыты они или закрыты. Nmap выдает комбинации открыт|фильтруется и закрыт|фильтруется, когда не может определить, какое из этих двух состояний описывает порт. Эта таблица также может предоставлять детали о версии программного обеспечения, если это было запрошено. Когда осуществляется сканирование по IP протоколу (-sO), Nmap предоставляет информацию о поддерживаемых IP протоколах, а не об открытых портах.

    В дополнение к таблице важных портов Nmap может предоставлять дальнейшую информацию о целях: преобразованные DNS имена, предположение о используемой операционной системе, типы устройств и MAC адреса.

    Типичное сканирование с использованием Nmap показано в Примере 1. Единственные аргументы, использованные в этом примере это -A, для определения версии ОС, сканирования с использованием скриптов и трассировки; -T4 для более быстрого выполнения; затем два целевых хоста.

    Пример 1. Типичный пример сканирования с помощью Nmap:

    # nmap -A -T4 scanme.nmap.org playground Starting Nmap (https://nmap.org/) Interesting ports on scanme.nmap.org (64.13.134.52): (The 1663 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Interesting ports on playground.nmap.org (192.168.0.40): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC port: 5900) 5900/tcp open vnc VNC (protocol 3.8) MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP OS details: Microsoft Windows XP Pro RC1+ through final release Service Info: OSs: Windows, Windows XP Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds

    Сводка опций

    Использование:
    nmap [Тип(ы) сканирования] [Опции] {заданные_цели}

    ОПРЕДЕЛЕНИЕ ЦЕЛИ СКАНИРОВАНИЯ:

    Может работать с именами хостов, IP адресами, сетями и т.д.
    Например: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
    -iL <ввести_имя_файла>: Импорт из списка хостов/сетей
    -iR <количество хостов>: Выбор случайных целей
    –exclude : Исключить хосты/сети
    –excludefile <файл_с_исключениями>: Исключить список из файла

    ОБНАРУЖЕНИЕ ХОСТОВ:

    SL: Сканирование с целью составления списка – просто составить список целей для сканирования
    -sn: Пинг сканирование – просто определить, работает ли хост
    -Pn: Расценивать все хосты как работающие – пропустить обнаружение хостов
    -PS/PA/PU/PY[список_портов]: TCP SYN/ACK, UDP или SCTP пингование заданных хостов
    -PE/PP/PM: Пингование с использованием ICMP эхо запросов, запросов временной метки и сетевой маски
    -PO[список_протоколов]: Пингование с использованием IP протокола
    -n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда]
    –dns-servers <сервер1[,сервер2],…>: Задать собственные DNS сервера
    –system-dns: Использовать системный DNS преобразователь
    –traceroute: Провести трассировку (проследить путь) до каждого хоста

    РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ:

    SS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования
    -sU: UDP сканирование
    -sN/sF/sX: TCP Null, FIN и Xmas сканирования
    –scanflags <флаги>: Задать собственные TCP флаги
    -sI <зомби_хост[:порт]>: "Ленивое" (Idle) сканирование
    -sY/sZ: SCTP INIT/COOKIE-ECHO сканирование
    -sO: Сканирование IP протокола
    -b : FTP bounce сканирование

    ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ:

    P <диапазон_портов>: Сканирование только определенных портов
    Пример: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
    -F: Быстрое сканирование – Сканирование ограниченного количества портов
    -r: Сканировать порты последовательно – не использовать случайный порядок портов
    –top-ports <количество_портов>: Сканировать <количество_портов> наиболее распространенных портов
    –port-ratio <рейтинг>: Сканировать порты с рейтингом большим чем <рейтинг>

    ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ:

    SV: Исследовать открытые порты для определения информации о службе/версии
    –version-intensity <уровень>: Устанавливать от 0 (легкое) до 9 (пробовать все запросы)
    –version-light: Ограничиться наиболее легкими запросами (интенсивность 2)
    –version-all: Использовать каждый единичный запрос (интенсивность 9)
    –version-trace: Выводить подробную информацию о процессе сканирования (для отладки)

    СКАНИРОВАНИЕ С ИПОЛЬЗОВАНИЕМ СКРИПТОВ:

    SC: эквивалентно опции –script=default
    –script=: это разделенный запятыми список директорий, файлов скриптов или категорий скриптов
    –script-args=<имя1=значение1,[имя2=значение2,…]>: Передача аргументов скриптам
    –script-args-file=filename: Передача NSE скриптам аргументов в файле
    –script-trace: Выводить все полученные и отправленные данные
    –script-updatedb: Обновить базу данных скриптов
    –script-help=: Показ помощи о скриптах. разделённый запятой список скриптов или список категорий скриптов.

    ОПРЕДЕЛЕНИЕ ОС:

    O: Активировать функцию определения ОС
    –osscan-limit: Использовать функцию определения ОС только для "перспективных" хостов
    –osscan-guess: Угадать результаты определения ОС

    ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ:

    Опции, принимающие аргумент <время>, задаются в миллисекундах, пока вы не добавите "s" (секунды), "m" (минуты), или "h" (часы) к значению (напр. 30m).
    -T<0-5>: Установить шаблон настроек управления временем (больше – быстрее)
    –min-hostgroup/max-hostgroup <кол_хостов>: Установить размер групп для параллельного сканирования
    –min-parallelism/max-parallelism <кол_хостов>: Регулирует распараллеливание запросов
    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <время>: Регулирует время ожидания ответа на запрос
    –max-retries <количество_попыток>: Задает максимальное количество повторных передач запроса
    –host-timeout <время>: Прекращает сканирование медленных целей
    –scan-delay/–max-scan-delay <время>: Регулирует задержку между запросами
    –min-rate <число>: Посылать запросы с интенсивностью не меньше чем <число> в секунду
    –max-rate <число>: Посылать запросы с интенсивностью не больше чем <число> в секунду

    ОБХОД БРАНДМАУЭРОВ/IDS:

    F; –mtu <значение>: Фрагментировать пакеты (опционально с заданным значениме MTU)
    -D <фикт_хост1,фикт_хост2[,ME],…>: Маскировка сканирования с помощью фиктивных хостов
    -S : Изменить исходный адрес
    -e <интерфейс>: Использовать конкретный интерфейс
    -g/–source-port <номер_порта>: Использовать заданный номер порта
    –proxies : Ретранслировать соединения через прокси HTTP/SOCKS4
    –data-length <число>: Добавить произвольные данные к посылаемым пакетам
    –ip-options <опции>: Посылать пакет с заданным ip опциями
    –ttl <значение>: Установить IP поле time-to-live (время жизни)
    –spoof-mac : Задать собственный MAC адрес
    –badsum: Посылать пакеты с фиктивными TCP/UDP/SCTP контрольными суммами

    ВЫВОД РЕЗУЛЬТАТОВ:

    ON/-oX/-oS/-oG Выводить результаты нормального, XML, s| -oA <базовове_имя_файла>: Использовать сразу три основных формата вывода
    -v: Увеличить уровень вербальности (задать дважды или более для увеличения эффекта)
    -d: Увеличить или установить уровень отладки (до 9)
    –reason: Показать причину нахождения порта в определённом состоянии
    –open: Показывать только открытые (или возможно открытые) порты
    –packet-trace: Отслеживание принятых и переданных пакетов
    –iflist: Вывести список интерфейсов и роутеров (для отладки)
    –log-errors: Записывать ошибки/предупреждения в выходной файл нормального режима
    –append-output: Добавлять в конец, а не перезаписывать выходные файлы
    –resume <имя_файла>: Продолжить прерванное сканирование
    –stylesheet <путь/URL>: Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML
    –webxml: Загружает таблицу стилей с Nmap.Org
    –no-stylesheet: Убрать объявление XSL таблицы стилей из XML

    РАЗЛИЧНЫЕ ОПЦИИ:

    6: Включить IPv6 сканирование
    -A: Активировать функции определения ОС и версии, сканирование с использованием скриптов и трассировку
    –datadir <имя_директории>: Определяет место расположения файлов Nmap
    –send-eth/–send-ip: Использовать сырой уровень ethernet/IP
    –privileged: Подразумевать, что у пользователя есть все привилегии
    –unprivileged: Подразумевать, что у пользователя нет привилегий для использования сырых сокетов
    -V: Вывести номер версии
    -h: Вывести эту страницу помощи

    ИНТЕРАКТИВНЫЕ КОМАНДЫ:

    СПРАВКА: Не будет работать с “sudo nmap”, поэтому используйте “sudo –i”
    Во время работы вы можете делать запросы в nmap следующими ключами:
    ? Показать эту информацию
    v/V увеличить/уменьшить вербальность
    d/D увеличить/уменьшить отладку
    p/P включить/отключить трассировку пакетов
    и другие ключи, которые будут напечатаны в статусе

    ПРИМЕРЫ:
    Определение цели сканирования

    В командной строке Nmap все, что не является опцией (или аргументом опции), рассматривается как цель сканирования. В простейшем случае для сканирования используется IP адрес или сетевое имя целевой машины.

    Иногда необходимо просканировать целую сеть. Для этого Nmap поддерживает CIDR адресацию. Вы можете добавить /<кол-во бит> к IP адресу или сетевому имени и Nmap просканирует каждый IP адрес, для которого первые <кол-во бит> такие же как и у заданного хоста. Например, 192.168.10.0/24 просканирует 256 хостов между 192.168.10.0 (бинарное: 11000000 10101000 00001010 00000000) и 192.168.10.255 (бинарное: 11000000 10101000 00001010 11111111) включительно. 192.168.10.40/24 сделает абсолютно то же самое. Зная, что IP адрес scanme.nmap.org 64.13.134.52, при записи типа scanme.nmap.org/16 будет произведено сканирование 65,536 IP адресов между 64.13.0.0 и 64.13.255.255. Наименьшее допустимое значение /0, при котором будет просканирован весь Интернет. Наибольшее значение /32, при котором будет просканирован только заданный хост или IP адрес, т.к. все адресные биты заблокированы.

    CIDR нотация коротка, однако не всегда достаточно гибка. Например, вы хотите просканировать 192.168.0.0/16, но пропустить все IP-ки оканчивающиеся на.0 или.255, т.к. обычно это широковещательные адреса. Nmap может осуществить такое сканирование путем задания диапазонов в октетах. Вместо определния обычного IP адреса, вы можете определить для каждого октета либо разделенный запятыми список чисел, либо диапазон. Например, 192.168.0-255.1-254 пропустит все адреса в диапазоне оканчивающиеся на.0 и.255. Диапазоны не обязательно задавать только в последних октетах: при записи 0-255.0-255.13.37 будет произведено сканирование всех адресов в Интернете оканчивающихся на 13.37. Такой тип сканирования может быть полезен для обозрения просторов Интернета и различных исследований.

    IPv6 адреса могут быть определны только в форме, полностью соответствующей правильной форме записи IPv6 адресов. CIDR и использование диапазонов в октетах не применимо к IPv6 адресам, т.к. они редко используются.

    Вы можете передавать в командной строке Nmap различные варианты определения целей, не обязательно одного типа. Команда nmap scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255 сделает то, что вы ожидаете.

    Цели сканирования обычно задаются в командной строке, и существуют различные опции контроля выбора целей:

    IL <имя_файла> (Ввод из списка)

    Считывает цели из <имя_файла>. Хотя передача большого списка хостов для сканирования является обычным явлением, это не удобно. Например, ваш DHCP сервер передают вам список из 10,000 используемых им на данный момент адресов, и вы хотите его просканировать. Или, возможно, вы хотите просканировать все IP адреса, кроме переданных им, чтобы выявить несанкционированное использование статических IP адресов. Просто сгенерируйте список хостов для сканирования и передайте имя файла в Nmap как аргумент для -iL опции. Записи в файле могут находиться в любой приемлимой для Nmap форме (IP адреса, сетевые имена, CIDR, IPv6, или диапазоны в октетах). Каждая запись должна быть отделена пробелом или несколькими, символами табуляции или символами перехода на новую строку. Вы можете передать в качестве аргумента дефис(-) как имя файла, если хотите, чтобы Nmap считывала список хостов из стандартного ввода, а не из файла.

    IR <кол-во хостов> (Выбирает произвольные цели)

    Для сканирования в пределах всего Интернета или каких-либо исследований, вам, возможно, понадобится выбрать цели произвольно. Аргумент <кол-во хостов> определяет сколько необходимо сгенерировать IP адресов. Неподходящие IP адреса, такие как частные, широковещательные или нелокализованные диапазоны адресов автоматически пропускаются. Аргумент 0 может быть передан для бесконечного сканирования. Имейте в виду, что некоторым системным администраторам может не понравиться неразрешенное сканирование их сетей и они могут пожаловаться. Используйте эту опцию на свой страх и риск! Если в дождливый денек вам будет скучно, попробуйте команду nmap -sS -PS80 -iR 0 -p 80 для сканирования произвольных веб-серверов.

    –exclude <хост1>[,<хост2>[,…]] (Исключить хосты/сети)

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

    –excludefile <имя_файла> (Исключить список из файла)

    Эта опция делает то же самое, что и –exclude, за исключением того, что цели для исключения находятся в разделенном пробелами, символами табуляции или символами перехода на новую строку <файле>, а не в командной строке.



    
    Top