Команды nmap в linux

Обновлено: 06.07.2024

Nmap ( « Network Mapper » ) - это утилита с открытым исходным кодом для исследования сети и проверки безопасности. Она была разработана для быстрого сканирования больших сетей, хотя прекрасно справляется и с единичными целями. Nmap использует "сырые" IP пакеты оригинальным способом, чтобы определить какие хосты доступны в сети, какие службы (название приложения и версию) они предлагают, какие операционные системы (и версии ОС) они используют, какие типы пакетных фильтров/брандмауэров используются и еще множество других характеристик. В то время, как Nmap обычно используется для проверки безопасности, многие системные администраторы находят ее полезной для обычных задач, таких как контролирование структуры сети, управление расписаниями запуска служб и учет времени работы хоста или службы.

Выходные данные Nmap это список просканированных целей с дополнительной информацией по каждой из них в зависимости от заданных опций. Ключевой информацией является « таблица важных портов » . Эта таблица содержит номер порта, протокол, имя службы и состояние. Состояние может иметь значение open (открыт), filtered (фильтруется), closed (закрыт) или unfiltered (не фильтруется). Открыт означает, что приложение на целевой машине готово для установки соединения/принятия пакетов на этот порт. Фильтруется означает, что брандмауэр, сетевой фильтр, или какая-то другая помеха в сети блокирует порт, и Nmap не может установить открыт этот порт или закрыт . Закрытые порты не связаны ни с каким приложением, но могут быть открыты в любой момент. Порты расцениваются как не фильтрованные , когда они отвечают на запросы Nmap, но Nmap не может определить открыты они или закрыты. Nmap выдает комбинации открыт|фильтруется и закрыт|фильтруется , когда не может определить, какое из этих двух состояний описывает порт. Эта таблица также может предоставлять детали о версии программного обеспечения, если это было запрошено. Когда осуществляется сканирование по IP протоколу ( -sO ), Nmap предоставляет информацию о поддерживаемых протоколах, а не об открытых портах.

В дополнение к таблице важных портов Nmap может предоставлять дальнейшую информацию о целях: преобразованные DNS имена, предположение об используемой операционной системе, типы устройств и MAC адреса.

Типичное сканирование с использованием Nmap показано в Пример 1. Единственные аргументы, использованные в этом примере - это -A , для определения версии ОС, сканирования с использованием скриптов и трассировки; -T4 для более быстрого выполнения; затем два целевых хоста.

Nmap - это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.

Эта программа помогает системным администраторам очень быстро понять какие компьютеры подключены к сети, узнать их имена, а также посмотреть какое программное обеспечение на них установлено, какая операционная система и какие типы фильтров применяются. Функциональность программы может быть расширена за счет собственного скриптового языка, который позволяет администраторам автоматизировать много действий.

Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в вашей сети. Namp может использоваться с хорошими и плохими намерениями, будьте аккуратны, чтобы не использовать nmap против закона. В этой инструкции мы рассмотрим как пользоваться namp для сканирования портов в операционной системе Linux. Но сначала нужно попытаться понять как работает эта утилита.

Как работает Nmap?

В компьютерных сетях все подключенные устройства имеют свой ip адрес. Каждый компьютер поддерживает протокол ping, с помощью которого можно определить подключен ли он к сети. Мы просто отправляем ping запрос компьютеру, и если он отзывается, то считаем, что он подключен. Nmap использует немного иной подход. Компьютеры также определенным образом реагируют на те или иные сетевые пакеты, утилита просто отправляет нужные пакеты и смотрит какие хосты прислали ответ.

Утилита nmap в процессе сканирования сети перебирает доступный диапазон портов и пытается подключиться к каждому из них. Если подключение удалось, в большинстве случаев, передав несколько пакетов программа может даже узнать версию программного обеспечения, которые ожидает подключений к этому порту. Теперь, после того, как мы рассмотрели основы, рассмотрим как пользоваться nmap для сканирования портов и сети.

Синтаксис Nmap

Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:

$ nmap опции адрес

Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.

  • -sL - просто создать список работающих хостов, но не сканировать порты nmap;
  • -sP - только проверять доступен ли хост с помощью ping;
  • -PN - считать все хосты доступными, даже если они не отвечают на ping;
  • -sS/sT/sA/sW/sM - TCP сканирование;
  • -sU - UDP сканирование nmap;
  • -sN/sF/sX - TCP NULL и FIN сканирование;
  • -sC - запускать скрипт по умолчанию;
  • -sI - ленивое Indle сканирование;
  • -p - указать диапазон портов для проверки;
  • -sV - детальное исследование портов для определения версий служб;
  • -O - определять операционную систему;
  • -T1 - скорость сканирования, чем больше, тем быстрее;
  • -D - маскировать сканирование с помощью фиктивных IP;
  • -S - изменить свой IP адрес на указанный;
  • -e - использовать определенный интерфейс;
  • --spoof-mac - установить свой MAC адрес;
  • -A - определение операционной системы с помощью скриптов.

Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

Как пользоваться Nmap для сканирования портов в Linux

Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:

nmap

Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите ip вашего роутера. Команда на сканирование сети nmap будет выглядеть вот так:

nmap -sL 192.168.1.1/24

nmap1

Иногда это сканирование может не дать никаких результатов, потому что некоторые операционные системы имеют защиту от сканирования портов. Но это можно обойти, просто использовав для сканирования ping всех ip адресов сети, для этого есть опция -sn:

nmap -sn 192.168.1.1/24

nmap2

Как видите, теперь программа обнаружила активные устройства в сети. Дальше мы можем сканировать порты nmap для нужного узла запустив утилиту без опций:

sudo nmap 192.168.1.1

nmap4

Теперь мы можем видеть, что у нас открыто несколько портов, все они используются каким-либо сервисом на целевой машине. Каждый из них может быть потенциально уязвимым, поэтому иметь много открытых портов на машине небезопасно. Но это еще далеко не все, что вы можете сделать, дальше вы узнаете как пользоваться nmap.

Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:

sudo nmap -sV 192.168.1.1

nmap5

На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:

sudo nmap -sC 192.168.56.102 -p 21

Мы выполняли скрипт по умолчанию, но есть еще и другие скрипты, например, найти все скрипты для ftp вы можете командой:

sudo find /usr/share/nmap/scripts/ -name '*.nse' | grep ftp

Затем попытаемся использовать один из них, для этого достаточно указать его с помощью опции --script. Но сначала вы можете посмотреть информацию о скрипте:

sudo nmap --script-help ftp-brute.nse

nmap6

Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

nmap7

В результате скрипт подобрал логин и пароль, admin/admin. Вот поэтому не нужно использовать параметры входа по умолчанию.

Также можно запустить утилиту с опцией -A, она активирует более агрессивный режим работы утилиты, с помощью которого вы получите большую часть информации одной командой:

sudo nmap -A 192.168.1.1

nmap8

Обратите внимание, что здесь есть почти вся информация, которую мы уже видели раньше. Ее можно использовать чтобы увеличить защиту этой машины.

Выводы

В этой статье мы рассмотрели как выполняется сканирование портов nmap, а также несколько простых примеров использования этой утилиты. Эти команды nmap могут быть полезными многим системным администраторам, чтобы улучшить безопасность их систем. Но это далеко не все возможности утилиты. Продолжайте экспериментировать с утилитой чтобы узнать больше только не в чужих сетях!

nmap — это аббревиатура от «Network Mapper», на русский язык наиболее корректно можно перевести как «сетевой картограф». Возможно, это не лучший вариант перевода на русский язык, но он довольно точно отображает суть — инструмент для исследования сети и проверки безопасности. Утилита кроссплатформенна, бесплатна, поддерживаются операционных системы Linux, Windows, FreeBSD, OpenBSD, Solaris, Mac OS X.

Рассмотрим использование утилиты в Debian. В стандартной поставке дистрибутива nmap отсутствует, установим его командой

Nmap умеет сканировать различными методами — например, UDP, TCP connect(), TCP SYN (полуоткрытое), FTP proxy (прорыв через ftp), Reverse-ident, ICMP (ping), FIN, ACK, SYN и NULL-сканирование. Выбор варианта сканирования зависит от указанных ключей, вызов nmap выглядит следующим образом:

nmap <ключи> цель

Хинт: Если во время сканирования нажать пробел — можно увидеть текущий прогресс сканирования и на сколько процентов он выполнен. Через несколько секунд получаем ответ, в котором пока что интересна строчка Device type:

Device type: general purpose|WAP|webcam|storage-misc
Running (JUST GUESSING) : Linux 2.6.X|2.4.X (93%), AXIS Linux 2.6.X (89%), Linksys Linux 2.4.X (89%)
Aggressive OS guesses: Linux 2.6.17 - 2.6.28 (93%), Linux 2.6.9 - 2.6.27 (93%), Linux 2.6.24 (Fedora 8) (92%), Linux 2.6.18 (Slackware 11.0) (92%), Linux 2.6.19 - 2.6.26 (92%), OpenWrt (Linux 2.4.32) (91%), Linux 2.6.22 (91%), Linux 2.6.22 (Fedora Core 6) (90%), Linux 2.6.13 - 2.6.27 (90%), Linux 2.6.9 - 2.6.18 (90%)
No exact OS matches for host (test conditions non-ideal).

Вообще, точную версию ядра средствами nmap определить невозможно, но примерную дату «свежести» и саму операционную систему определить можно. Можно просканировать сразу несколько хостов, для этого надо их перечислить через пробел:

Вернемся к нашему подопытному хосту. Хочется узнать поподробнее, какой используется софт. Попробуем уточнить полученные данные с помощью ключей -sV:

Прогресс налицо — мы узнали точные названия используемых служб и даже их версии, а заодно узнали точно, какая операционная система стоит на сервере. С расшифровкой никаких проблем не возникает, все вполне понятно.

Агрессивное сканирование можно провести, указав ключ -A

Nmap выведет очень много информации, я не стану приводить пример. Сканирование может длится довольно долго, занимая несколько минут.

В локальных сетях или просто имея на руках диапазон ip адресов, удобно проверить их на занятость с помощью ключей -sP:

Сканирование проходит довольно быстро, так как по сути это обычный ping-тест, отвечает ли хост на ping. Следует учесть, что хост может не отвечать на ping из-за настроек фаерволла. Если нужный участок сети нельзя ограничить маской, можно указать диапазон адресов, с какого и по какой надо провести сканирование. Например, есть диапазон адресов с 192.168.1.2 до 192.168.1.5. Тогда выполним:

Ответ будет выглядеть так:

Host 192.168.1.2 is up (0.0023s latency)
Host 192.168.1.3 is up (0.0015s latency)
Host 192.168.1.4 is up (0.0018s latency)
Host 192.168.1.5 is up (0.0026s latency)

В моем случае все ip в данный момент были в сети.
Это далеко не все возможности nmap, но уместить их в рамках одной статьи несколько сложновато.

Если вам ближе GUI — есть замечательная утилита Zenmap — графическая оболочка для nmap, умеющая заодно и строить предполагаемую карту сети.

Хочу предупредить, что сканирование портов на удаленных машинах может нарушать закон.
UDPInflame уточнил, что сканирование портов все-таки не является противозаконным.

Как установить nmap?

Вы также можете сканировать диапазон IP-адресов:

Наконец, вы можете сканировать всю подсеть:

Опция -iL позволяет вам читать список целевых систем, используя текстовый файл. Это полезно для сканирования большого количества хостов / сетей. Создайте текстовый файл следующим образом:

При сканировании большого количества хостов/сетей вы можете исключить хосты из проверки:

Или исключить список с помощью файла /tmp/exclude.txt

Опция -6 включает сканирование IPv6. Синтаксис:

Вы можете идентифицировать приложения и ОС удаленного хоста, используя опцию -O:

Если брандмауэр блокирует стандартные запросы ICMP, попробуйте следующие методы обнаружения хоста:

Это сканирование обходит брандмауэры, фильтрующие только TCP запросы:

Самые популярные сервисы в интернете работают по протоколу TCP. DNS, SNMP и DHCP являются тремя наиболее распространенными службами UDP. Используйте следующий синтаксис для поиска служб UDP:

Этот тип сканирования позволяет определить, какие протоколы IP (TCP, ICMP, IGMP и т. д.) поддерживаются целевыми машинами:

Следующие типы сканирования используют небольшую лазейку в TCP и подходят для проверки безопасности распространенных атак:

Опция -f заставляет nmap использовать крошечные фрагментированные IP-пакеты. Идея состоит в том, чтобы разделить заголовок TCP на несколько пакетов для усложнения фильтрации пакетов.

Опция -D показывает удаленному хосту, что хосты, которые вы указали в качестве приманок, также сканируют целевую сеть. Таким образом, их IDS могут сообщать о 5-10 сканированиях портов с уникальных IP-адресов, но они не будут знать, какой IP сканировал их, а какие были невинными приманками:

Используйте опцию -T:

Попробуйте zenmap. Установить его можно командой:

Fig.02: zenmap in action

zenmap в действии

Nmap, также известный как Network Mapper, - это очень универсальный инструмент с открытым исходным кодом для системных/сетевых администраторов Linux. Nmap используется для исследования сетей, выполнения сканирования безопасности, аудита сети и поиска открытых портов на удаленной машине. Он сканирует живые хосты, операционные системы, фильтры пакетов и открытые порты, работающие на удаленных хостах.


Я расскажу о большей части использования NMAP в двух разных частях, и это первая серьезная часть nmap. Здесь, в этой настройке, я использовал два сервера без брандмауэра для проверки работы команды Nmap.

Как установить NMAP в Linux

Большинство современных дистрибутивов Linux, таких как Red Hat, CentOS, Fedoro, Debian и Ubuntu, включают Nmap в свои репозитории управления пакетами по умолчанию, называемые APT. Оба инструмента используются для установки и управления пакетами программного обеспечения и обновлениями. Чтобы установить Nmap в конкретном дистрибутиве, используйте следующую команду.

После установки последней версии приложения nmap вы можете следовать примерам инструкций, приведенным в этой статье.

1. Сканируйте систему с помощью имени хоста и IP-адреса.

2. Сканирование с использованием опции «-v».

Вы можете видеть, что приведенная ниже команда с параметром «-v» дает более подробную информацию об удаленной машине.

Сканирование нескольких хостов

Вы можете сканировать несколько хостов, просто записав их IP-адреса или имена хостов с помощью Nmap.

4. Сканирование всей подсети.

Вы можете просканировать всю подсеть или диапазон IP-адресов с помощью Nmap, указав подстановочный знак *.

На приведенном выше выводе вы можете увидеть, что Nmap просканировал всю подсеть и дал информацию о тех хостах, которые находятся в сети.

5. Сканирование нескольких серверов с использованием последнего октета IP-адреса.

Вы можете выполнять сканирование нескольких IP-адресов, просто указав последний октет IP-адреса. Например, здесь я выполняю сканирование IP-адресов 192.168.0.101, 192.168.0.102 и 192.168.0.103.

6. Сканировать список хостов из файла.

Если у вас есть несколько хостов для сканирования и все детали хоста записаны в файл, вы можете напрямую попросить Nmap прочитать этот файл и выполнить сканирование. Посмотрим, как это сделать.

Создайте текстовый файл с именем «nmaptest.txt» и определите все IP-адреса или имя хоста сервера, который вы хотите сканировать.

Затем выполните следующую команду с опцией «iL» и командой nmap, чтобы просканировать все перечисленные IP-адреса в файле.

7. Сканирование диапазона IP-адресов.

Вы можете указать диапазон IP-адресов при сканировании с помощью Nmap.

8. Сканировать сеть, исключая удаленные хосты.

Вы можете исключить некоторые хосты при выполнении полного сканирования сети или при сканировании с использованием подстановочных знаков с опцией «–exclude».

9. Сканирование информации об ОС и Traceroute.

С помощью Nmap вы можете определить, какая ОС и версия работают на удаленном хосте. Чтобы включить определение ОС и версии, сканирование сценариев и трассировку, мы можем использовать параметр «-A» с протоколом NMAP.

В приведенном выше выводе вы можете видеть, что nmap представляет собой отпечаток TCP/IP ОС, работающей на удаленных узлах, и более конкретен в отношении порта и служб, работающих на удаленных узлах.

10. Включите обнаружение ОС с помощью Nmap

Использование опций «-O» и «-osscan-guess» также помогает получить информацию об ОС.

11. Сканирование хоста для обнаружения брандмауэра.

Приведенная ниже команда выполнит сканирование удаленного хоста, чтобы определить, используются ли хостом какие-либо фильтры пакетов или брандмауэр.

12. Сканируйте хост, чтобы убедиться, что он защищен брандмауэром.

Для сканирования хоста, если он защищен каким-либо программным обеспечением для фильтрации пакетов или межсетевыми экранами.

13. Найдите живые хосты в сети

С помощью опции «-sP» мы можем просто проверить, какие хосты активны и активны в сети, с этой опцией Nmap пропускает определение портов и другие вещи.

14. Выполните быстрое сканирование.

Вы можете выполнить быстрое сканирование с опцией «-F», чтобы найти порты, перечисленные в файлах nmap-services, и оставить все остальные порты.

15. Найдите версию Nmap.

Вы можете узнать версию Nmap, установленную на вашем компьютере, с помощью опции «-V».

16. Последовательное сканирование портов.

Используйте флаг «-r», чтобы не использовать случайный выбор.

17. Распечатать интерфейсы хоста и маршруты

Вы можете узнать интерфейс хоста и информацию о маршруте с помощью nmap, используя опцию «–iflist».

В выходных данных выше вы можете видеть, что карта перечисляет интерфейсы, подключенные к вашей системе, и их соответствующие маршруты.

18. Сканирование для определенного порта.

Существуют различные варианты обнаружения портов на удаленной машине с помощью Nmap. Вы можете указать порт, который должен сканировать Nmap, с помощью опции «-p», по умолчанию Nmap сканирует только TCP-порты.

19. Сканирование TCP-порта.

Вы также можете указать определенные типы и номера портов с помощью nmap для сканирования.

20. Сканирование порта UDP.

21. Сканирование нескольких портов

Вы также можете сканировать несколько портов, используя опцию «-p».

22. Сканирование портов по сетевому диапазону.

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

23. Найдите номера версий служб хоста

Мы можем узнать версии сервиса, работающие на удаленных хостах, с помощью опции «-sV».

24. Сканирование удаленных хостов с помощью TCP ACK (PA) и TCP Syn (PS)

Иногда брандмауэры с фильтрацией пакетов блокируют стандартные запросы ICMP ping, в этом случае мы можем использовать методы TCP ACK и TCP Syn для сканирования удаленных хостов.

25. Сканирование удаленного хоста на предмет определенных портов с помощью TCP ACK.

26. Сканирование удаленного хоста на наличие определенных портов с помощью TCP Syn.

27. Выполните скрытое сканирование.

28. Проверьте наиболее часто используемые порты с помощью TCP Syn.

29. Выполните сканирование tcp null, чтобы обмануть брандмауэр.

На этом все с NMAP, я предлагаю более творческие варианты NMAP во второй части этого серьезного. А пока следите за обновлениями и не забывайте делиться своими ценными комментариями.

Читайте также: