Nmap (Network Mapper) — универсальная программа для сканирования сети. Большой плюс в том, что она применима как на Windows , так и на Linux-системах.
Nmap можно использовать как для помощи в администрировании сети, так и для проверки сети на уязвимости, узнать как порты открыты и что можно узнать по данным портам.
В данной статье мы расскажем про наиболее интересные команды, которые могут вам пригодиться.
Nmap показывает состояния по портам:
open — порт открыт для определенного сервиса или приложения;
filtered — порт блокируется фаерволлом;
closed — порт закрыт;
unfiltered — невозможно точно определить статус порта;
Перейдем к самим командам и ключам Nmap на примерах.
Для примера мы находимся в локальной сети 192.168.0.0/24 и будем ее сканировать, но так же можно сканировать любой внешний адрес или доменное имя.
Установка namp командой:
yum install nmap
Сканирование с помощью NMAP.
Сканируем подсеть на c выводом состояния подключений на каждом ip-адресе.
Если в момент сканирования нажать «Пробел», то видим в процентах сколько уже про сканировано.
#nmap -sL 192.168.0.0/24
Если нам нужно отобразить только адреса в состоянии UP, то команда будет выглядеть следующим образом:
#nmap -sn 192.168.0.0/24
Команда nmap с ключом -sL сканирует заданную подсеть и выводит информацию о обнаруженных активных хостах в виде списка.
Можно также сканировать несколько подсетей одной командой, например подсети 192.168.0.0/24 и 10.34.100.0/24
#nmap -sL 192.168.0.0/24 10.34.100.0/24
либо, первые 100 адресов подсети 192.168.0.0/24
#nmap -sL 192.168.0.0-100
#nmap -sP 192.168.0.0/24
Если задать ключ -sP, то nmap выводит более подробную информацию о ip-адресе в виде:
# nmap -sP 192.168.0.0/24 Nmap scan report for Dlink-Router.Dlink (192.168.0.1) Host is up (0.0020s latency). MAC Address: BC:F6:XX:XX:XX:XX (D-Link International)
Мы можем также узнать операционную систему узла 192.168.0.50, через команду:
# nmap -O 192.168.0.50
Сканирование по портам с помощью NMAP.
Можно указать диапазон портов, например 1000-1010 для сканирования адреса 192.168.0.100:
#nmap -p 1000-1010 192.168.0.100
если мы хотим просканировать только tcp-порты, то используем перед портами T:, если UDP-порты, то пишем U:. Например, сканируем только порты U:53, T:23,22 для хоста 192.168.0.0/24:
#nmap -p U:53, T:23,22 192.168.0.0/24
либо с именем сервиса-порта:
#nmap -p ftp 192.168.0.0/24
Ключ «-p-» сканировать все 65 тысяч портов, по-умолчанию сканируется только около 1000-топ портов.
#nmap -p- 192.168.0.100
Как узнать информацию о запущенных сервисах на сайте или узле локальной сети?
Для поиска информации о сервисах используется ключ -sV.
#nmap -sV 192.168.0.201
Который расскажет нам историю про порт (80/tcp), состояние порта (open, closed), имя сервиса (http) и его версию (nginx).
Если вводить команду nmap 192.168.0.201 без каких-либо ключей, то мы видим почти одинаковый вывод как и с ключом -sV, только без колонки VERSION.
Показать только открытые порты.
#nmap 192.168.0.100 --open
Работа NMAP со скриптами.
У NMAP есть стандартная библиотека скриптов, через которые можно прогнать определенный хост. Скрипты можно увидеть командой:
#find /usr/share/nmap/scripts/
Как использовать библиотеку скриптов в nmap?
Через предыдущую команду мы видим в списке скрипт vnc-brute.nse, который по своей библиотеке будет перебирать учетные записи(логи-пароль) для получения доступа к узлу.
Например командой
nmap 192.168.0.100 --open
мы определили, что у хоста открыт порт 5801 и относится к сервису VNC. Теперь прогоним стандартный скрипт для vnc на наличие уязвимости либо командой:
#nmap -sC 192.168.0.10
0, которая прогонит адрес всеми скриптами в библиотеке, или
#nmap --script vnc-brute.nse 192.168.0.100
Обновить базу скриптов можно командой:
#nmap --script-updatedb
Далее примеры nmap и возможности коротко, сборки с интернета:
#nmap -p- -PS80,443 -n -T4 -p- -sS --reason 192.168.0.100
-p- сканирует весь диапазон портов;
-PS80,443 доступность адреса только если проходит ping по доступности tcp-портов 80,;
-n не делать DNS-resolve;
-T4 — быстрое сканирование;
-vvv — порты будут отображаться в онлайн-режиме сканирования, а не по окончанию;
— reason — выясняет почему nmap вывел порт в определенном состоянии
#nmap -v -iR 10 -PN -p 22 192.168.0.200
сканируем случайные 10 адресов по 22 порту;
-PN пропускаем обнаружение хостов.
#nmap -sV -p 22,80,443 192.168.0.100-150
сканер по портам 22,80,443 50 адресов с выводом информации о работающей службе по данным портам.
#nmap --traceroute adminwin.ru
показывает трасировку до хоста.
Дополнительные ключи для обходи систем защиты:
-f; —mtu <значение>: Фрагментировать пакеты (опционально с заданным значением MTU).
-D <фикт_хост1,фикт_хост2[,ME],…>: Маскировка сканирования с помощью фиктивных хостов.
-S <IP_адрес>: Изменить исходный адрес.
-e <интерфейс>: Использовать конкретный интерфейс.
-g/—source-port <номер_порта>: Использовать заданный номер порта.
—data-length <число>: Добавить произвольные данные к посылаемым пакетам.
—ip-options <опции>: Посылать пакет с заданным ip опциями.
—ttl <значение>: Установить IP поле time-to-live (время жизни).
—spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес.
—badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами.
И не вздумайте использовать ключ -A для сканирования машин на которых стоит Oracle i8: если таковой там был, ляжет. Забыли написать про очень важный параметр — -P0 — сканирует неотвечающие хосты. И вообще — думаю 80% людей на хабре — знают как пользоваться nmap.