Об nmap для начинающих






Когда-нибудь задавались вопросом, откуда взломщики узнают о том, какие порты открыты в системе и какие службы доступны на этих портах? Как они это делают, не задавая вопросов администратору сервера? Это и гораздо больше можно делать при помощи маленькой утилиты под названием nmap. nmap — это сокращение от «Network Mapper», по-русски можно назвать «построитель карты сети». Nmap — поистине огромный набор инструментов «в одном флаконе» для сканирования сетей. Он может использоваться для поиска и определения запущенных в сети сервисов, определения типа используемой операционной системы, типа файрвола или же просто для быстрого определения хостов, находящихся в сети. Короче говоря, уметь пользоваться этой штуковиной лишним не будет. Nmap очень известная утилита в буквальном смысле. Когда вы с ней познакомитесь, вы можете узнать её в некоторых эпизодах кинофильмов. В этой заметке я покажу вам базовые приёмы работы с Nmap и покажу несколько примеров, как его использовать.


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

Синтаксис вызова утилиты из командной строки следующий:

Допустим, вам необходимо попытаться определить тип и версию запущенной ОС на удалённой системе target.host.com. Запустите Nmap с опцией '-O' (использование этой опции требует администраторских привилегий):

Опрос удалённой системы займёт некоторое время и после того, как он завершится, вы получите вывод, подобный представленному ниже:

Как вы видите, Nmap предоставил достаточно много информации. В представленном примере Nmap выполнил ряд тестов, на основании которых попытался определить тип и версию ОС, используемую на хосте. Приведённый выше вывод Nmap — результат сканирования роутера Apple Airport Extreme. Помимо того, что Nmap сообщил нам тип предполагаемой ОС, он также вывел информацию о сетевой удалённости устройства, MAC-адрес и производителя сетевого интерфейса, перечень открытых портов и время, затраченное на сканирование.

Ниже представлен вывод другого сканирования, хоста под управлением Ubuntu 9.10:

Здесь мы видим, что производителем сетевого интерфейса является HP, операционной системой является Linux с ядром версии в районе 2.6.19-2.6.31. Вообще, точно определить версию ядра Linux с помощью Nmap обычно невозможно.

Предупреждение

В приведённых выше примерах я сканировал свой собственный роутер и одну из рабочих станций, находящихся в моей сети, поскольку я имею на то полное право. В принципе вы можете сканировать любой хост, какой пожелаете, однако, не очень хорошая идея заниматься сканированием чужих сетей и хостов без разрешения их владельцев. Если вам нужен хочт для экспериментов, сообщество готово вам его предоставить по адресу scanme.nmap.org. Этот хост специально создан для тестирования Nmap, только если вы не собираетесь тестировать на нём атаки типа DoS.

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

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

За один запуск Nmap вы можете сканировать более одного хоста. Если в качетсве целей сканирования вы используете IP-адреса, вы можете передавать их Nmap в виде диапазонов, например: 10.0.0.1-6 или 10.0.0.0/24. Первый способ определяет диапазон IP-адресов c 10.0.0.1 по 10.0.0.6, а вторая — с 10.0.0.1 по 10.0.0.254, т. е. всю подсеть 10.0.0.0 с маской 24 в CIDR-нотации. Например, если вы хотите выполнить сканирование хостов с IP-адресами 10.0.0.1-10.0.0.42, команда будет следующей:

Если же вы используете имена хостов вместо адресов, то просто перечислите имена через пробел:

Поиск открытых портов

Если вы запустите Nmap без опций, передав ему лишь имя целевого хоста, то Nmap выполнит сканирование цели на предмет открытых сетевых портов и служб их прослушивающих. Например:

Здесь вы можете увидеть, что на целевом хосте открыты порты 22, 80 и 3306 с перечислением названий сервисов, сидящих на этих портах, соответственно ssh, http и mysql. Nmap распознаёт шесть состояний портов: open (открыт), closed (закрыт), filtered (порт недоступен, скорее всего фильтруется файрволом), unfiltered (порт доступен, но состояние определить не удалось), open|filtered (открыт или фильтруется файрволом), и closed|filtered (закрыт или фильтруется файрволом).

Если вам нужна более детальная информация, воспользуйтесь одинарной или двойной опцией '-v', например:

Сканирование служб

Если вам необходимо выяснить как можно подробней, что за сервис болтается на том или ином порту, попробуйте воспользоваться опциями '-sV'. Эти опции заставляют Nmap вместо обычного сканирования портов, произвести более агрессивное сканирование, опрашивая сервисы, находящиеся на том или ином порту. Также этот метод иногда позволяет более точно определить тип и версию используемой на целевой системе ОС.

Как видно из вывода выше, Nmap определил серверы SSH-4.7 и Apache-2.2.8, находящиеся на портах 22 и 80. Также из названий версий ПО удаётся определить, что сервер работает под Ubuntu Linux. Такой метод сканирования может оказаться весьма кстати, когда вам необходимо выявить устаревшие версии ПО, работающие на ваших хостах, которые могут быть подвержены известным угрозам.

Кто живёт в моей сети?

Не уверены точно, что знаете обо всех обитателях своей сети? Попробуйте запустить Nmap с параметрами '-sP' и он выполнит обычное пинг-сканирование, определяя лишь отвечающие хосты, не прибегая к сканированию портов. Например, чтобы определить «живых» в подсети 10.0.0.0/24, достаточно простой команды:

Или же, как было сказано выше, вы можете указать диапазон хостов, а не всю подсеть. Например:

Zenmap

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

Zenmap обладает предустановленными профилями сканирования, которые вы можете просто выбрать из выпадающего списка и, возможно, не погружаться в тонкости работы опций Nmap. Zenmap — отличный инструмент для тех, кто ещё только собирается познакомиться с Nmap или просто желает с ним поиграть. Если же вам по долгу службы придётся использовать Nmap часто, то конечно же, обязательно изучите документацию к нему и потратьте время на эксперименты.

Итоги

В будущих статьях об Nmap мы более плотно прикоснёмся к этому невероятно мощному инструменту. А пока, я надеюсь, эта статья даст некоторый стимул к его изучению тем, кто ещё этого не сделал.

По материалам Linux.Com




Об nmap для начинающих: 2 комментария

  1. а как при работе с прогарммой из командной строки выдает вот такое сообщение

    Starting Nmap 5.51 ( nmap.org ) at 2011-11-21 00:13 ╠юёъютёъюх тЁхь  (чшь

    р)

    WARNING: Using raw sockets because ppp2 is not an ethernet device. This probably

    won't work on Windows.

    pcap_open_live (ppp2, 100, 0, 2) FAILED. Reported error: Error opening adapter: ╤

    шёЄхьх эх єфрхЄё  эрщЄш єърчрээюх єёЄЁющёЄтю. (20). Will wait 5 seconds then re

    try.

    pcap_open_live (ppp2, 100, 0, 2) FAILED. Reported error: Error opening adapter: ╤

    шёЄхьх эх єфрхЄё  эрщЄш єърчрээюх єёЄЁющёЄтю. (20). Will wait 25 seconds then r

    etry.

    Call to pcap_open_live () failed three times. There are several possible reasons

    for this, depending on your operating system:

    LINUX: If you are getting Socket type not supported, try modprobe af_packet or r

    ecompile your kernel with PACKET enabled.

    *BSD: If you are getting device not configured, you need to recompile your ker

    nel with Berkeley Packet Filter support. If you are getting No such file or dir

    ectory, try creating the device (eg cd /dev; MAKEDEV ; or use mknod).

    *WINDOWS: Nmap only supports ethernet interfaces on Windows for most operations

    because Microsoft disabled raw sockets as of Windows XP SP2. Depending on the

    reason for this error, it is possible that the --unprivileged command-line argum

    ent will help.

    SOLARIS: If you are trying to scan localhost or the address of an interface and

    are getting '/dev/lo0: No such file or directory' or 'lo0: No DLPI device found

    ', complain to Sun. I don't think Solaris can support advanced localhost scans.

    You can probably use «-Pn -sT localhost» though.

    QUITTING!

Комментарии запрещены.