
Nmap — мощный инструмент сетевого сканирования для аудита безопасности и тестирования на проникновение. Он является одним из основных инструментов, используемых сетевыми администраторами для устранения неполадок сетевого подключения и сканирования портов .
Nmap также может определить Mac-адрес, тип ОС , версию сервиса и многое другое.
В этой статье объясняются основы использования команды nmap для выполнения различных сетевых задач.
Установка Nmap
Nmap — это кроссплатформенная программа, совместимая со всеми основными операционными системами. Изначально она была выпущена только для Linux, а затем была портирована на другие системы, такие как BSD, Windows и macOS.
Если вы предпочитаете графический интерфейс командной строке, Nmap также имеет графический пользовательский интерфейс под названием Zenmap .
Официальные двоичные пакеты доступны для загрузки на странице загрузки Nmap.
Процедура установки проста и зависит от вашей операционной системы.
Установка Nmap в Ubuntu и Debian
Nmap доступен в стандартных репозиториях Ubuntu и Debian. Чтобы установить его, выполните:
sudo apt updatesudo apt install nmap
Установка Nmap на CentOS и Fedora
В CentOS и других производных от Red Hat запустите:
sudo dnf install nmap
Установка Nmap на macOS
Пользователи macOS могут установить Nmap, загрузив установочный пакет «.dmg» с сайта Nmap или через Homebrew:
brew install nmap
Установка Nmap на Windows
Версия Nmap для Windows имеет некоторые ограничения и, как правило, немного медленнее версии для UNIX.
Самый простой вариант установки Nmap в Windows — загрузить и запустить установочный exe-файл.
Вы можете запустить Nmap в Windows либо из командной строки, либо запустив программу Zenmap. Подробнее об использовании Nmap в Windows см. в инструкциях по использованию после установки .
Использование Nmap
Nmap обычно используется для аудита безопасности сети, картографирования сети, определения открытых портов и поиска подключенных к сети устройств.
Упрощенный синтаксис команды nmap выглядит следующим образом:
nmap [ Options ] [ Target... ]
Самый простой пример использования Nmap — сканирование одной цели от имени обычного пользователя без указания каких-либо параметров:
nmap scanme.nmap.org
При запуске от имени пользователя, не являющегося пользователем root, без привилегий на обработку необработанных пакетов, nmap запускает сканирование TCP-соединений. Параметр ( -sT ) включен по умолчанию в непривилегированном режиме.
Вывод будет выглядеть примерно так, включая основную информацию о сканировании и список открытых и отфильтрованных TCP-портов.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET Nmap scan report for cast.lan (192.168.10.121) Host is up (0.048s latency). Not shown: 981 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp open pop3 143/tcp open imap 443/tcp open https 587/tcp open submission 993/tcp open imaps 995/tcp open pop3s 1025/tcp open NFS-or-IIS 1080/tcp open socks 8080/tcp open http-proxy 8081/tcp open blackice-icecap Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
Наиболее популярным вариантом сканирования является сканирование TCP SYN ( -sS ), которое быстрее опции подключения и работает со всеми совместимыми стеками TCP.
-sS включен по умолчанию, когда nmap вызывается от имени пользователя с правами администратора:
sudo nmap 192.168.10.121
Для более подробного вывода используйте увеличение детализации с помощью -v или -vv :
sudo nmap -vv 192.168.10.121
Чтобы выполнить сканирование UDP, вызовите команду с опцией ( -sU ) как пользователь root:
sudo nmap -sU 192.168.10.121
Полный список методов сканирования портов можно найти на странице документации Nmap .
Nmap также поддерживает адреса IPv6. Чтобы указать хост IPv6, используйте опцию -6 :
sudo nmap -6 fd12:3456:789a:1::1
Указание целевых хостов
Nmap рассматривает все аргументы, которые не являются опциями, как целевые хосты.
Аргументы считаются вариантами, если они начинаются с одинарного или двойного тире ( - , -- ).
Самый простой вариант — передать один или несколько целевых адресов или доменных имен:
nmap 192.168.10.121 host.to.scan
Для указания диапазона сети можно использовать нотацию CIDR:
nmap 192.168.10.0/24
Чтобы указать диапазон октетов, используйте символ тире. Например, для сканирования 192.168.10.1 , 192.168.11.1 и 192.168.12.1 :
nmap 192.168.10-12.1
Другой символ, который можно использовать для указания целей, — это запятая. Следующая команда указывает на те же хосты, что и предыдущая:
nmap 192.168.10,11,12.1
Вы можете комбинировать все формы:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Чтобы убедиться, что вы указали правильные хосты перед сканированием, используйте опцию сканирования списка ( -sL ), которая только выводит список целей без запуска сканирования:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Если вы хотите исключить цели, входящие в указанный вами диапазон, используйте опцию --exclude :
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Указание и сканирование портов
По умолчанию Nmap выполняет быстрое сканирование 1000 самых популярных портов. Это не первые 1000 портов подряд, а 1000 наиболее часто используемых портов в диапазоне от 1 до 65389.
Для сканирования всех портов от 1 до 65535 используйте опцию -p- :
nmap -p- 192.168.10.121
Каждый порт может находиться в одном из следующих состояний:
- открыто — программа, работающая на порту, отвечает на запрос.
- закрыто — на порту не запущено ни одной программы, хост отвечает на запросы.
- отфильтровано — Хост не отвечает на запрос.
Порты и диапазоны портов указываются с помощью параметра -p .
Например, чтобы просканировать только порт 443, используйте следующую команду:
nmap -p 443 192.168.10.121
Чтобы указать более одного порта, разделите целевые порты запятой:
nmap -p 80,443 192.168.10.121
Диапазоны портов можно указать с помощью символа тире. Например, чтобы просканировать все UDP-порты от 1 до 1024, выполните следующую команду:
sudo nmap -sU -p 1-1024 192.168.10.121
Все вместе взятое:
nmap -p 1-1024,8080,9000 192.168.10.121
Порты также можно указывать по имени. Например, для сканирования порта 22 по SSH можно использовать:
nmap -p ssh 192.168.10.121
Ping-сканирование
Чтобы выполнить сканирование с помощью ping или обнаружение хоста, вызовите команду nmap с опцией -sn :
sudo nmap -sn 192.168.10.0/24
Опция -sn указывает Nmap только на обнаружение хостов, находящихся в сети, без сканирования портов. Это полезно, когда нужно быстро определить, какие из указанных хостов работают.
Отключение разрешения имен DNS
По умолчанию Nmap выполняет обратное разрешение DNS для каждого обнаруженного хоста, что увеличивает время сканирования.
При сканировании больших сетей рекомендуется отключить обратное разрешение DNS и ускорить сканирование. Для этого выполните команду с опцией -n :
sudo nmap -n 192.168.10.0/16
Определение ОС, службы и версии
Nmap может определить операционную систему удалённого хоста, используя отпечатки стека TCP/IP. Чтобы определить ОС, выполните команду с опцией -O :
sudo nmap -O scanme.nmap.org
Если Nmap сможет обнаружить хостовую ОС, он выведет что-то вроде следующего:
... Device type: general purpose Running: Linux 5.X OS CPE: cpe:/o:linux:linux_kernel:5 OS details: Linux 5.0 - 5.4 Network Distance: 18 hops OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
Обычно системные службы прослушивают стандартные порты, которые хорошо известны и зарезервированы для них. Например, если порт 22, соответствующий службе SSH, открыт, можно предположить, что на хосте запущен SSH-сервер. Однако полной уверенности в этом нет, поскольку пользователи могут запускать службы на любых портах.
Благодаря функции определения служб и версий Nmap покажет вам, какая программа прослушивает порт, а также версию программы.
Для сканирования службы и версии используйте опцию -sV :
sudo nmap -sV scanme.nmap.org
... PORT STATE SERVICE VERSION 19/tcp filtered chargen 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 9929/tcp open nping-echo Nping echo 31337/tcp open tcpwrapped Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ...
Вы также можете выполнить сканирование ОС, версий и запустить traceroute одной командой, используя опцию -A :
sudo nmap -A 192.168.10.121
Выход Nmap
По умолчанию Nmap выводит информацию на стандартный вывод (stdout).
Если вы сканируете большую сеть или вам нужна информация для дальнейшего использования, вы можете сохранить вывод в файл.
Nmap предоставляет несколько типов выходных данных. Чтобы сохранить выходные данные в обычном формате, используйте опцию -oN , а затем имя файла:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
Самый популярный вариант — сохранить вывод в формате XML. Для этого используйте опцию -oX :
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Другой полезный формат — это вывод, который можно проанализировать с помощью стандартных инструментов Unix, таких как grep , awk и cut . Вывод, который можно проанализировать, задаётся с помощью опции -oG :
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Скриптовый движок Nmap
Одна из самых мощных функций Nmap — это его скриптовый движок. Nmap поставляется с сотнями готовых скриптов , и вы также можете писать свои собственные скрипты на языке Lua.
Вы можете использовать скрипты для обнаружения вредоносных программ и бэкдоров, проведения атак методом подбора паролей и многого другого.
Например, чтобы проверить, скомпрометирован ли определенный хост, вы можете использовать:
nmap -sV --script http-malware-host scanme.nmap.org
Заключение
Nmap — это инструмент с открытым исходным кодом, который в основном используется сетевыми администраторами для обнаружения хостов и сканирования портов.
Обратите внимание, что в некоторых странах сканирование сетей без разрешения является незаконным.
Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.
Связанные руководства