Справочное руководство Nmap (Man Page). Как пользоваться Nmap для сканирования сети Показывать Только Открытые Порты

Справочное руководство Nmap (Man Page). Как пользоваться 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, за исключением того, что цели для исключения находятся в разделенном пробелами, символами табуляции или символами перехода на новую строку <файле>, а не в командной строке.

    nmap [ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

    Описание

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

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

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

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

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

    # nmap -A -T4 scanme..org) Interesting ports on scanme.сайт (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..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 можно скачать с

    There are four types of NSE scripts, namely:

    • Prerule scripts – are scripts that run before any of Nmap’s scan operations, they are executed when Nmap hasn’t gathered any information about a target yet.
    • Host scripts – are scripts executed after Nmap has performed normal operations such as host discovery, port scanning, version detection, and OS detection against a target host.
    • Service scripts – are scripts run against specific services listening on a target host.
    • Postrule scripts – are scripts run after Nmap has scanned all of its target hosts.

    Then these scripts are grouped under various categories including those for authentication (auth ), discovering of hosts (broadcast ), brute force attacks to guess authentication credentials (brute ), discovering more about a network (discovery ), causing a denial of service (dos ), exploiting some vulnerability (exploit ), etc. A number of scripts belong to the default category.

    Note : Before we move any further, you should take a note of these key points:

    • Do not execute scripts from third parties without critically looking through them or only if you trust the authors. This is because these scripts are not run in a sandbox and thus could unexpectedly or maliciously damage your system or invade your privacy.
    • Secondly, many of these scripts may possibly run as either a prerule or postrule script. Considering this, it is recommend to use a prerule for purposes of consistency.
    • Nmap uses the scripts/script.db database to figure out the available default scripts and categories.

    To see the location of all available NSE scripts, run the on the terminal, like this:

    $ locate *.nse /usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts/afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse /usr/share/nmap/scripts/ajp-auth.nse /usr/share/nmap/scripts/ajp-brute.nse /usr/share/nmap/scripts/ajp-headers.nse /usr/share/nmap/scripts/ajp-methods.nse /usr/share/nmap/scripts/ajp-request.nse /usr/share/nmap/scripts/allseeingeye-info.nse /usr/share/nmap/scripts/amqp-info.nse /usr/share/nmap/scripts/asn-query.nse ...

    NSE scripts are loaded using the --script flag, which also allows you to run your own scripts by providing categories, script file names, or the name of directories where your scripts are located.

    The syntax for enabling scripts is as follows:

    $ namp -sC target #load default scripts OR $ nmap --script filename|category|directory|expression,... target

    You can view a description of a script with the --script-help option. Additionally, you can pass arguments to some scripts via the --script-args and --script-args-file options, the later is used to provide a filename rather than a command line arg.

    To perform a scan with most of the default scripts, use the -sC flag or alternatively use --script=default as shown.

    $ nmap -sC scanme.nmap.org OR $ nmap --script=default scanme.nmap.org OR $ nmap --script default scanme.nmap.org

    Sample Output
    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:36 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.0027s latency). Not shown: 999 filtered ports PORT STATE SERVICE 80/tcp open http |_http-title: Go ahead and ScanMe! Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

    To use a script for the appropriate purpose, you can first of all get a brief description of what it actually does, for instance http-headers .

    $ nmap --script-help http-headers scanme.nmap.org

    Sample Output
    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:37 IST http-headers Categories: discovery safe https://nmap.org/nsedoc/scripts/http-headers.html Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.

    Loading NSE Scripts To Perform Nmap Scans

    You can select or load scripts to perform a scan in different methods explained below.

    Using Script Name

    Once you know what a script does, you can perform a scan using it. You can use one script or enter a comma-separated list of script names. The command below will enable you view the HTTP headers configured on the web server at the target host.

    $ nmap --script http-headers scanme.nmap.org

    Scan HTTP Headers

    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:39 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.27s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-headers: | Date: Wed, 15 Nov 2017 05:10:04 GMT | Server: Apache/2.4.7 (Ubuntu) | Accept-Ranges: bytes | Vary: Accept-Encoding | Connection: close | Content-Type: text/html | |_ (Request type: HEAD) 179/tcp filtered bgp 31337/tcp open Elite Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds

    Using Categories

    You can also load scripts from one category or from a comma-separated list of categories. In this example, we are using all scripts in the default and broadcast category to carry out a scan on the host 192.168.56.1 .

    $ nmap --script default,broadcast 192.168.56.1

    Using * Wildcard

    This is useful when you want to select scripts with a given name pattern. For example to load all scripts with names starting with ssh , run the command below on the terminal:

    $ nmap --script "ssh-*" 192.168.56.1

    Using Boolean Expressions

    You can also select scripts using boolean expressions which you can build using the and , or , and not operators. And names in a Boolean expression may be a category, a filename from script.db , or all.

    The following command will load scripts from the default or broadcast categories.

    $ nmap --script "default or broadcast" 192.168.56.10

    Which is equivalent to:

    $ nmap --script default,broadcast 192.168.56.10

    To load all scripts omitting those in the vuln category, run this command on the terminal.

    $ nmap --script "not vuln" 192.168.56.10

    The next command looks a little complicated but it is easy to understand, it selects scripts in the default, or broadcast categories, leaving out those with names starting with ssh-:

    $ nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

    Importantly, it is possible to combine categories, script names, a directory containing your custom scripts or a boolean expression to load scripts, like this:

    $ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

    Passing Arguments to NSE Scripts

    Below is an example showing how to pass arguments to scripts with the –script-args option:

    $ nmap --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="password_here", mysql-audit.filename="nselib/data/mysql-cis.audit""

    To pass a port number, use the -p nmap option:

    $ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="password_here" , mysql-audit.filename="nselib/data/mysql-cis.audit""

    This above command runs an audit of the MySQL database server security configuration against parts of the CIS MySQL v1.0.2 benchmark. You can as well create your own useful custom audit files for other MySQL audits.

    That’s it for now. You can find more information in the nmap man page or check out NSE Usage .

    To get started with writing your own NSE scripts, check out this guide: https://nmap.org/book/nse-tutorial.html

    Conclusion

    Nmap is a really powerful and useful tool that every system or network administrator needs in his/her security arsenal – NSE simply adds more efficiency to it.

    In this article, we introduced you to the Nmap Script Engine , and looked at how to find and use the various available scripts under different categories. If you have any questions, do not hesitate to write back to us via the comment form below.

    Ниже вы найдете 20 базовых примеров использования команды Nmap .

    Вы узнаете, как использовать Nmap из командной строки в Linux для поиска активных хостов в сети и сканирования открытых портов.

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

    Я так-же покажу как с помощью Nmap осуществить скрытое сканирование , как определить фаервол и как подменить MAC адрес .

    1. Сканирование Одного Хоста или IP Адреса

    Сканировать Отдельный IP Адрес :

    $ nmap 192.168.1.1

    Сканировать сервер по Имени Хоста :

    $ nmap server.сайт

    Увеличить Уровень Детализации результатов сканирования:

    $ nmap -v server..сайт

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

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

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

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

    $ nmap 192.168.1.0/24 $ nmap 192.168.1.*

    Сканировать Диапазон IP Адресов (192.168.1.0 — 192.168.1.200):

    $ nmap 192.168.1.0-200

    3. Поиск Активных Компьютеров в Сети

    Дельный Совет: Сканируйте сеть с помощью одной лишь команды ping ! Вычислите все активные компьютеры!

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

    $ nmap -sn 192.168.1.0/24

    4. Сканирование Списка Хостов из Файла

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

    $ nmap -iL input.txt

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

    # Записи могут быть представлены в любом из форматов, с которыми работает # Nmap из командной строки (IP адреса, имена хостов, CIDR, IPv6, или октетные # диапазоны). Записи должны разделятся одним или более пробелами, табуляциями # или переходами на новую строку. $ cat input.txt server.сайт 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

    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 --top-ports 5 192.168.1.1 $ nmap --top-ports 10 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

    * Сканирует меньшее кол-во портов, чем при обыкновенном сканировании.

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

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

    $ nmap --reason 192.168.1.1

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

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

    $ nmap --open 192.168.1.1

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

    Одна из наиболее известных функциональных возможностей Nmap — это удаленное определение ОС на основе анализа работы стека TCP/IP.

    Nmap посылает серию TCP и UDP пакетов на удаленный хост и изучает ответы.

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

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

    $ nmap -O 192.168.1.1

    13. Определение Версии Сервисов

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

    $ nmap -sV 192.168.1.1

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

    14. Обнаружение Фаервола

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

    $ nmap -sA 192.168.1.1

    15. Подмена MAC Адреса

    Подменить MAC Адреса :

    $ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

    Подменить MAC Адрес Случайным MAC-ом :

    $ nmap --spoof-mac 0 192.168.1.1

    16. Сканирование Фаервола на Уязвимости

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

    Когда сканируется система отвечающая требованиям RFC, любой пакет, не содержащий установленного бита SYN, RST или ACK, повлечет за собой отправку RST в ответ в случае, если порт закрыт, или не повлечет никакого ответа, если порт открыт.

    Т.к. ни один из этих битов не установлен, то любая комбинация трех оставшихся (FIN, PSH и URG) будет являться правильной.

    TCP Null сканирование:

    $ nmap -sN 192.168.1.1

    * Не устанавливаются никакие биты (Флагов в TCP заголовоке 0).

    TCP Fin сканирование:

    $ nmap -sF 192.168.1.1

    * Устанавливается только TCP FIN бит.

    TCP Xmas сканирование:

    $ nmap -sX 192.168.1.1

    * Устанавливаются FIN, PSH и URG флаги (пакет светится как новогодняя елка).

    17. Скрытое Сканирование

    Дельный Совет: Сохраняйте анонимность во время сканирования портов! Используйте Nmap + Tor + ProxyChains ! Безопасное и простое тестирование на проникновение!

    TCP SYN сканирование:

    $ nmap -sS 192.168.0.1

    * Известное как сканированием с использованием полуоткрытых соединений, так как не отрывает полных TCP соединений.

    18. Отключение Обнаружения Хостов (No Ping)

    Не пинговать хосты перед сканированием:

    $ nmap -Pn 192.168.1.1

    19. Отключение Использования DNS

    Дельный Совет: Необходимо усилить безопасность в Linux? Шифруйте DNS трафик для защиты от спуфинга!

    Никогда не производить обратное преобразование DNS имен для каждого обнаруженного активного IP адреса.

    Nmap - это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.

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

    Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в вашей сети. Namp может использоваться с хорошими и плохими намерениями, будьте аккуратны, чтобы не использовать nmap против закона. В этой инструкции мы рассмотрим как пользоваться namp для сканирования портов в операционной системе Linux. Но сначала нужно попытаться понять как работает эта утилита.

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

    Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.

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

    Синтаксис Nmap

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

    $ nmap опции адрес

    Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.

    • -sL - просто создать список работающих хостов, но не сканировать порты nmap;
    • -sP - только проверять доступен ли хост с помощью ping;
    • -PN - считать все хосты доступными, даже если они не отвечают на ping;
    • -sS/sT/sA/sW/sM - TCP сканирование;
    • -sU - UDP сканирование nmap;
    • -sN/sF/sX - TCP NULL и FIN сканирование;
    • -sC - запускать скрипт по умолчанию;
    • -sI - ленивое Indle сканирование;
    • -p - указать диапазон портов для проверки;
    • -sV - детальное исследование портов для определения версий служб;
    • -O - определять операционную систему;
    • -T - скорость сканирования, чем больше, тем быстрее;
    • -D - маскировать сканирование с помощью фиктивных IP;
    • -S - изменить свой IP адрес на указанный;
    • -e - использовать определенный интерфейс;
    • --spoof-mac - установить свой MAC адрес;
    • -A - определение операционной системы с помощью скриптов.

    Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

    Как пользоваться Nmap для сканирования портов в Linux

    Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:

    Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите ip вашего роутера. Команда на сканирование сети nmap будет выглядеть вот так:

    nmap -sL 192.168.1.1/24

    Иногда это сканирование может не дать никаких результатов, потому что некоторые операционные системы имеют защиту от сканирования портов. Но это можно обойти, просто использовав для сканирования ping всех ip адресов сети, для этого есть опция -sn:

    nmap -sn 192.168.1.1/24

    Как видите, теперь программа обнаружила активные устройства в сети. Дальше мы можем сканировать порты nmap для нужного узла запустив утилиту без опций:

    sudo nmap 192.168.1.1

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

    Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:

    sudo nmap -sV 192.168.1.1

    На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:

    sudo nmap -sC 192.168.56.102 -p 21

    Мы выполняли скрипт по умолчанию, но есть еще и другие скрипты, например, найти все скрипты для ftp вы можете командой:

    sudo find /usr/share/nmap/scripts/ -name "*.nse" | grep ftp

    Затем попытаемся использовать один из них, для этого достаточно указать его с помощью опции --script. Но сначала вы можете посмотреть информацию о скрипте:

    sudo nmap --script-help ftp-brute.nse

    Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:

    sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

    В результате скрипт подобрал логин и пароль, admin/admin. Вот поэтому не нужно использовать параметры входа по умолчанию.

    Также можно запустить утилиту с опцией -A, она активирует более агрессивный режим работы утилиты, с помощью которого вы получите большую часть информации одной командой:

    sudo nmap -A 192.168.1.1

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

    Выводы

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

    Об авторе

    Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.



    top