nmap

nmap — свободная утилита, предназначенная для разнообразного настраиваемого сканирования IP-сетей с любым количеством объектов, определения состояния объектов сканируемой сети (портов и соответствующих им служб). Изначально программа была реализована для систем UNIX, но сейчас доступны версии для множества операционных систем.

Nmap

Результаты сканирования NMap
Тип Сканер портов
Разработчик Gordon Lyon[d]
Написана на C++, Python, Си, Lua[1] и Java
Операционная система Linux, BSD[2], Microsoft Windows[2] и macOS[2]
Первый выпуск 1 сентября 1997[3]
Последняя версия
Сайт nmap.org (англ.)
 Медиафайлы на Викискладе

Nmap использует множество различных методов сканирования, таких как UDP, TCP (connect), TCP SYN (полуоткрытое), FTP-proxy (прорыв через ftp), Reverse-ident, ICMP (ping), FIN, ACK, Xmas tree, SYN- и NULL-сканирование. Nmap также поддерживает большой набор дополнительных возможностей, а именно: определение операционной системы удалённого хоста с использованием отпечатков стека TCP/IP, «невидимое» сканирование, динамическое вычисление времени задержки и повтор передачи пакетов, параллельное сканирование, определение неактивных хостов методом параллельного ping-опроса, сканирование с использованием ложных хостов, определение наличия пакетных фильтров, прямое (без использования portmapper) RPC-сканирование, сканирование с использованием IP-фрагментации, быстрый поиск уязвимостей SQL Injection[5], а также произвольное указание IP-адресов и номеров портов сканируемых сетей.

В последних версиях добавлена возможность написания произвольных сценариев (скриптов) на языке программирования Lua - Nmap Scripting Engine (NSE).

Существуют графические интерфейсы, упрощающие выполнение задач сканирования:

Использование утилиты

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

nmap [Тип(ы) Сканирования] [Опции] {цель сканирования}[6]

Сводка опций утилиты

Утилита предлагает различные опции для проведения сканирований[6]:

Определение цели сканирования

-iL <имя_входного_файла>: Использовать список хостов/сетей из файла

-iR <количество_хостов>: Выбрать произвольные цели

--exclude <хост1[,хост2][,хост3],...>: Исключить хосты/сети

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

Обнаружение хостов

-sL: Сканирование с целью составления списка - просто составить список целей для сканирования

-sP: Пинг сканирование - просто определить, работает ли хост

-PN: Расценивать все хосты как работающие -- пропустить обнаружение хостов

-PS/PA/PU [список_портов]: TCP SYN/ACK или UDP пингование заданных хостов

-PE/PP/PM: Пингование с использованием ICMP эхо запросов, запросов временной метки и сетевой маски

-PO [список_протоколов]: Пингование с использованием IP протокола

-n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда]

--dns-servers <сервер1[,сервер2],...>: Задать собственные DNS сервера

--system-dns: Использовать системный DNS преобразователь

Различные приемы сканирования

-sS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования

-sU: UDP сканирование

-sN/sF/sX: TCP Null, FIN и Xmas сканирования

--scanflags <флаги>: Задать собственные TCP флаги

-sI <зомби_хост[:порт]>: «Ленивое» (Idle) сканирование

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

-b <FTP_хост>: FTP bounce сканирование

--traceroute: Отслеживать путь к хосту

--reason: Выводить причину нахождения порта в определенном состоянии

Определение портов и порядка сканирования

-p <диапазон_портов>: Сканирование только определенных портов

-F: Быстрое сканирование - Сканирование ограниченного количества портов

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

--top-ports <количество_портов>: Сканировать <количество_портов> наиболее распространенных портов

--port-ratio <рейтинг>: Сканировать порты с рейтингом большим чем <рейтинг>

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

-sV: Исследовать открытые порты для определения информации о службе/версии

--version-intensity <уровень>: Устанавливать от 0 (легкое) до 9 (пробовать все запросы)

--version-light: Ограничиться наиболее легкими запросами (интенсивность 2)

--version-all: Использовать каждый единичный запрос (интенсивность 9)

< blockquote>--version-trace: Выводить подробную информацию о процессе сканирования (для отладки)

Сканирование с использованием скриптов

-sC: эквивалентно опции --script=default

--script=<Lua скрипты>: <Lua скрипты> это разделенный запятыми список каталогов, файлов скриптов или категорий скриптов

--script-args=<имя1=значение1,[имя2=значение2,...]>: Передача аргументов скриптам

--script-trace: Выводить все полученные и отправленные данные

--script-updatedb: Обновить базу данных скриптов

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

-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 <IP_адрес>: Изменить исходный адрес

-e <интерфейс>: Использовать конкретный интерфейс

-g/--source-port <номер_порта>: Использовать заданный номер порта

--data-length <число>: Добавить произвольные данные к посылаемым пакетам

--ip-options <опции>: Посылать пакет с заданным ip опциями

--ttl <значение>: Установить IP поле time-to-live (время жизни)

--spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес

--badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами

Вывод результатов

-oN/-oX/-oS/-oG <файл>: Выводить результаты нормального, XML, s|<rIpt kIddi3, и Grepable формата вывода, соответственно, в заданный файл

-oA <базовое_имя_файла>: Использовать сразу три основных формата вывода

-v: Увеличить уровень вербальности (задать дважды или более для увеличения эффекта)

-d[уровень]: Увеличить или установить уровень отладки (до 9)

--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: Вывести эту страницу помощи

Определение цели сканирования

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

Сканирование целевой сети[7]

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

Примеры использования утилиты

Самая простая команда для использования утилиты - запуск сканирования определенного IP адреса:

nmap 127.0.0.1

Следующей командой будут просканированы все TCP порты машины scanme.nmap.org . Опция -v активирует вербальный режим[8]:

nmap -v scanme.nmap.org

Следующей командой будет произведено скрытное SYN сканирование всех 255 машин сети «класса C», в которой расположена машина Scanme. Также будет произведена попытка определения операционной системы на каждом работающем хосте. Из-за SYN сканирования и опции определения ОС данная команда требует привилегий суперпользователя (root)[8]:

nmap -sS -O scanme.nmap.org/24

Следующей командой будет запущен перебор хостов и TCP сканирование первой половины всех (из доступных 255) 8 битных подсетей адресного пространства 198.116 класса B. Также утилита с помощью команды проверяет запущены ли SSH, DNS, POP3 или IMAP с использованием их стандартных портов, а также использует ли какое-нибудь приложение порт 4564. Если какой-нибудь из этих портов открыт, то утилитой будет произведена попытка определения работающего с этим портом приложения[8]:

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

Проникновение в культуру

Утилита nmap появляется на экране в фильмах:

См. также

Примечания

  1. The nmap Open Source Project on Open Hub: Languages Page — 2006.
  2. Free Software Directory
  3. http://phrack.org/issues/51/11.html#article
  4. Lyon G., Lyon G. F. Nmap 7.92 Defcon Release! (англ.) — 2021.
  5. Николай Дубков. Поиск SQL Injection с помощью Nmap (5 августа 2016).
  6. Сводка опций |. nmap.org. Дата обращения: 8 февраля 2019.
  7. Определение цели сканирования |. nmap.org. Дата обращения: 19 февраля 2019.
  8. Примеры |. nmap.org. Дата обращения: 18 февраля 2019.
  9. Movies featuring the Nmap Security Scanner  (англ.)

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.