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 - это инструмент с открытым исходным кодом, который в основном используется администраторами сети для обнаружения хоста и сканирования портов.
Обратите внимание, что в некоторых странах сканирование сетей без разрешения является незаконным.