Как использовать команду nmap

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 исходным пакетам, 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.

Чтобы -p- все порты с 1 по 65535, используйте параметр -p- :

nmap -p- 192.168.10.121

Каждый порт может находиться в одном из следующих состояний:

  • open — программа, запущенная на порту, отвечает на запрос.
  • закрыто — на порту не работает ни одна программа, и хост отвечает на запросы.
  • фильтруется — хост не отвечает на запрос.

Порты и диапазоны портов указываются с параметром -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

Еще один полезный формат — вывод grepable, который можно анализировать с помощью стандартных инструментов Unix, таких как grep , awk и cut . Вывод grepable указывается с параметром -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 — это инструмент с открытым исходным кодом, который в основном используется администраторами сети для обнаружения узлов и сканирования портов.

Обратите внимание, что в некоторых странах сканирование сетей без авторизации является незаконным.

Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Оставьте комментарий