Nmap один из основных инструментов, используемых администраторами сети для устранения проблем с подключением к сети и сканирования портов.
Nmap также может определять Mac-адрес, тип ОС, версию службы и многое другое.
В этой статье объясняются основы использования команды nmap для выполнения различных сетевых задач.
Установка Nmap
Nmap - это многоплатформенная программа, которую можно установить во всех основных операционных системах. Первоначально он был выпущен как инструмент только для Linux, а позже был перенесен на другие системы, такие как BSD, Windows и macOS.
Если вы предпочитаете графический интерфейс, а не командную строку, Nmap также имеет графический пользовательский интерфейс под названием Zenmap.
Официальные бинарные пакеты доступны для загрузки со страницы загрузки Nmap.
Процедура установки проста и зависит от вашей операционной системы.
Установка Nmap в Ubuntu и Debian
Nmap доступен из репозиториев Ubuntu и Debian по умолчанию. Чтобы установить его, запустите:
|
|
Установка Nmap на CentOS и Fedora
На CentOS и других производных от Red Hat запускаются:
|
|
Установка Nmap на macOS
Пользователи macOS могут установить Nmap, загрузив установочный пакет «.dmg» с сайта Nmap или через Homebrew:
|
|
Установка Nmap в Windows
Версия Nmap для Windows имеет некоторые ограничения и, как правило, немного медленнее, чем версия для UNIX.
Самый простой вариант установки Nmap в Windows - это загрузить и запустить самоустанавливающийся exe-файл.
Вы можете запустить Nmap в Windows либо из командной строки, либо запустив программу Zenmap. Для получения дополнительной информации о том, как использовать Nmap в Windows, ознакомьтесь с инструкциями по использованию после установки.
Использование Nmap
Nmap обычно используется для аудита сетевой безопасности, отображения сети, определения открытых портов и поиска сетевых устройств.
Упрощенный синтаксис команды nmap
следующий:
|
|
Самый простой пример использования Nmap - сканирование одной цели от имени обычного пользователя без указания каких-либо параметров:
|
|
При вызове от имени пользователя без полномочий root, у которого нет прав доступа к исходным пакетам, nmap
запускает сканирование TCP-соединения. (-sT
) по умолчанию включен в непривилегированном режиме.
Вывод будет выглядеть примерно так, включая основную информацию о сканировании и список открытых и отфильтрованных TCP-портов.
|
|
Самым популярным вариантом сканирования является сканирование TCP SYN (-sS
), которое работает быстрее, чем параметр подключения, и работает со всеми совместимыми стеками TCP.
-sS
включается по умолчанию, когда nmap
вызывается от имени пользователя с административными привилегиями:
|
|
Для более подробного вывода используйте увеличение детализации с помощью -v
или -vv
:
|
|
Чтобы выполнить сканирование UDP, вызовите команду с параметром (-sU
) от имени пользователя root:
|
|
Для получения полного списка методов сканирования портов посетите страницу документации Nmap.
Nmap также поддерживает адреса IPv6. Чтобы указать хост IPv6, используйте параметр -6
:
|
|
Указание целевых хостов
Nmap рассматривает все аргументы, которые не являются опциями, как целевые хосты.
Аргументы считаются вариантами, если они начинаются с одинарного или двойного тире (
-
,--
).
Самый простой вариант - передать один или несколько целевых адресов или доменных имен:
|
|
Вы можете использовать нотацию CIDR, чтобы указать диапазон сети:
|
|
Чтобы указать диапазон октетов, используйте символ тире. Например, для сканирования 192.168.10.1
, 192.168.11.1
и 192.168.12.1
:
|
|
Другой символ, который вы можете использовать для указания целей, - это запятая. Следующая команда нацелена на те же хосты, что и предыдущая:
|
|
Вы можете комбинировать все формы:
|
|
Чтобы убедиться, что вы указали правильные хосты перед сканированием, используйте параметр сканирования списка (-sL
), который перечисляет только целевые объекты без запуска сканирования:
|
|
Если вы хотите исключить цели, которые включены в указанный вами диапазон, используйте параметр --exclude
:
|
|
Указание и сканирование портов
По умолчанию Nmap выполняет быстрое сканирование 1000 самых популярных портов. Это не первые 1000 последовательных портов, а 1000 наиболее часто используемых портов в диапазоне от 1 до 65389.
Чтобы сканировать все порты с 1 по 65535, используйте параметр -p-
:
|
|
Каждый порт может находиться в одном из следующих состояний:
- open - программа, запущенная на порту, отвечает на запрос.
- closed - на порту не работает ни одна программа, и хост отвечает на запросы.
- filtered - Хост не отвечает на запрос.
Порты и диапазоны портов указываются с параметром -p
.
Например, чтобы просканировать только порт 443, вы должны использовать следующую команду:
|
|
Чтобы указать более одного порта, разделите целевые порты запятой:
|
|
Диапазоны портов можно указать с помощью символа тире. Например, чтобы просканировать все порты UDP в диапазоне от 1 до 1024, вы должны запустить:
|
|
Все вместе:
|
|
Порты также можно указать с помощью имени порта. Например, для поиска порта 22, ssh, вы можете использовать:
|
|
Ping сканирование
Чтобы выполнить ping-сканирование или обнаружение хоста, вызовите команду nmap
с параметром -sn
:
|
|
Опция -sn
указывает Nmap только обнаруживать сетевые хосты и не выполнять сканирование портов. Это полезно, когда вы хотите быстро определить, какой из указанных хостов запущен и работает.
Отключение разрешения DNS-имен
По умолчанию Nmap выполняет обратное разрешение DNS для каждого обнаруженного хоста, что увеличивает время сканирования.
При сканировании больших сетей рекомендуется отключить разрешение обратного DNS и ускорить сканирование. Для этого вызовите команду с параметром -n
:
|
|
Определение ОС, служб и версий
Nmap может обнаружить операционную систему удаленного хоста с помощью снятия отпечатков стека TCP / IP. Чтобы запустить обнаружение ОС, вызовите команду с параметром -O
:
|
|
Если Nmap может обнаружить ОС хоста, он напечатает что-то вроде следующего:
|
|
Обычно системные службы прослушивают стандартные порты, которые хорошо известны и зарезервированы для них. Например, если порт 22, соответствующий службе SSH, открыт, вы предполагаете, что на узле работает SSH-сервер. Однако вы не можете быть абсолютно уверены, потому что люди могут запускать службы на любых портах, которые они хотят.
Благодаря обнаружению службы и версии Nmap покажет вам, какая программа прослушивает порт и версию программы.
Для поиска службы и версии используйте параметр -sV
:
|
|
|
|
Вы также можете сканировать ОС, версии и запускать traceroute одной командой, используя параметр -A
:
|
|
Вывод Nmap
По умолчанию Nmap выводит информацию на стандартный вывод (stdout).
Если вы сканируете большую сеть или нуждаетесь в информации для дальнейшего использования, вы можете сохранить результат в файл.
Nmap предоставляет несколько типов вывода. Чтобы сохранить вывод в нормальном формате, используйте параметр -oN
, за которым следует имя файла:
|
|
Самый популярный вариант - сохранить вывод в формате XML. Для этого используйте параметр -oX
:
|
|
Еще один полезный формат - вывод grepable, который можно анализировать с помощью стандартных инструментов Unix, таких как grep, awk и cut. Вывод grepable указывается с параметром -oG
:
|
|
Механизм сценариев Nmap
Одна из самых мощных функций Nmap - это скриптовый движок. Nmap поставляется с сотнями скриптов, и вы также можете писать свои собственные скрипты на языке Lua.
Вы можете использовать скрипты для обнаружения вредоносных программ и бэкдоров, выполнения атак методом перебора и многого другого.
Например, чтобы проверить, скомпрометирован ли данный хост, вы можете использовать:
|
|
Заключение
Nmap - это инструмент с открытым исходным кодом, который в основном используется администраторами сети для обнаружения хоста и сканирования портов.
Обратите внимание, что в некоторых странах сканирование сетей без разрешения является незаконным.