Nmap - сканер портов

Версия для печатиОтправить другуPDF version

NMAP

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


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

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

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


Заинтересовало? Тогда приступим к установке.

Nmap есть в портах. Оттуда и будем устанавливать.

# cd /usr/ports/security/nmap && make install clean

О возможностях nmap можно узнать ознакомившись с руководством пользователя.

Рассмотрим несколько примеров использования nmap.

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

Методом TCP connect () nmap будет сканировать диапазон портов (1-65535) компьютера с IP-адресом 172.16.0.1. Опция -sV служит для получения версий запущенных сервисов.

# nmap -sV 172.16.0.15 -p 1-65535

Starting Nmap 5.00 ( http://nmap.org ) at 2009-11-30 03:28 EET
Interesting ports on 172.16.0.15:
Not shown: 65531 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 5.1p1 (FreeBSD 20080901; protocol 2.0)
53/tcp   open  domain  ISC BIND 4.X
80/tcp   open  http    Apache httpd 2.2.13 ((FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8e DAV/2 PHP/5.2.11 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.8.9)
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 00:14:5E:22:11:2A (IBM)
Service Info: OS: FreeBSD

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20983.73 seconds

Стоит обратить внимание на то, что в поле SERVICE всегда отображается значение из файла /etc/services, соответствующее номеру порта. Это отнюдь не означает, что по данному порту будет запущен тот сервис, который указан в поле SERVICE. Можно запустить Web-сервер по 22 порту, а сервер SSH - по 80, но nmap все будет писать, что 22 порт - это ssh, a 80 - это HTTP.
Теперь просканируем брандмауэр/маршрутизатор на базе Linux. Вначале просканируем маршрутизатор с внут­реннего узла сети, а после - с удаленного узла, который находится вне нашей сети (например, в Интернете или другой локальной сети):

# nmap 172.16.0.254 -p 1-65535

Starting Nmap 4.00 ( http://www.insecure.org/nmap/ )

Interesting ports on 172.16.0.254:

(The 65529 ports scanned but not shown below are in state: closed)

PORT STATE SERVICE

22/tcp open ssh

8080/tcp open http-proxy

10000/tcp open snet-sensor-mgmt

Nmap finished: 1 IP address (1 host up) scanned in 42.636 seconds

 

 

# nmap -p 1-65535 example.com

Starting Nmap 4.00 ( http://www.insecure.org/nmap/ )

Interesting ports on example.com (172.20.1.100):

(The 65529 ports scanned but not shown below are in state: closed)

PORT STATE SERVICE

22/tcp filtered ssh

8080/tcp filtered http-proxy

Nmap finished: 1 IP address (1 host up) scanned in 47.537 seconds

В одном случае порт ssh открыт (open), другом - отфильтрован (filtered). Значение Filtered значит, что порт отклоняет (reject) или отбрасывает (drop) трафик. Это не говорит о том, запущен ли на этом порту сервис или нет.

UDP-сканирование.

UDP-порты надо обязательно сканировать. При поиске уязвимостей UDP-сервисы обычно упускают из виду. Мол, там ничего нет интересного. Так делать нельзя. Многие UDP-сервисы (echo, chargen, DNS - работает как по TCP, так и по UDP, а также RPC (Remote Procedure Call)) работают по протоколу UDP. Некоторые из них известны своим огромным списком эксплоитов, позволяющим получить права root'a. UDP-сканирование делается с помощью опции -sU сканера nmap:

# nmap -sU 172.16.0.1 -p 1-65535

Starting Nmap 4.00 ( http://www.insecure.org/nmap/ )

All 65535 ports on 172.16.0.1 are: closed

Nmap run completed - 1 IP address (1 host up) scanned in 85599:56 seconds

Время сканирования очень большое примерно 1 секунда на порт. Отчего так долго? Система ограничила отправку ICMP-ответов: не более 1 в секунду. При UDP-сканировании нужно использовать опцию -Т. Она позволяет указать агрессивность сканирования. Есть 6 скоростей сканирования: Paranoid, Sneaky, Polite, Normal, Aggressive и Insane ( -T Polite). Первая скорость самая медленная, последняя - самая быстрая.

PING-сканирование.

Последующий режим nmap - это Ping-сканирование, которое обыкновенно исполь­зуется для того, чтобы определить, «жив» ли узел или нет. Если узел вклю­чен и подключен к сети (не 220!), значит, он «жив».

Многие узлы игнорируют ICMP-запросы echo, поэтому nmap отправляет АСК-пакеты на порт 80 (по умолчанию). Если в ответ получен RST-пакет, то жертва "жива". С помощью tcpdump можно увидеть, как nmap комбинирует методы - первым идет обычный "пинг", а после этого он отправляет пакеты на порт 80 (http).

Данный метод не совершенен. ICMP-запросы echo игнорируются многими узлами. Еще и 80-й порт нередко закрывают брандмауэром, поскольку посылается АСК-пакет без предварительной установки соединения. Чтобы "обойти" stateful-брандмауэр, нужно использовать для пинга SYN-пакеты:

# nmap -sP -PS 172.16.0.1

Также можно изменить порт (указать другой порт, не 80):

# nmap -sP -PS22 172.16.0.1

Эта команда указывает nmap использовать порт 22/tcp(ssh) вместо 80. Если не знаете, какие порты открыты, а какие - нет, то нужно использовать стандартные порты 21, 22, 25 и 53.

Ping-сканирование хорошо подходит, когда есть список машин сети и нужно узнать, в какое время к сети подключаются некоторые машины, а когда - отключаются от нее. Его можно использовать для обнаружения новых машин в сети. Для ping-сканирования диапазона IP-адресов обязательно используйте при указании IP-адреса звездочку (*). Когда нужно просканировать диапазон 172.16.0.0-172.16.0.255, надо использовать следующую команду:

# nmap -sP 172.16.0.*

Starting Nmap 4.00 ( http://www.insecure.org/nmap/ )

Host 172.16.0.1 appears to be up.

Host 172.16.0.3 appears to be up.

Host 172.16.0.255 seems to be a subnet broadcast address (returned 1 extra pings).

Nmap finished: 256 IP addresses (2 hosts up) scanned in 2.767 seconds

Обзор основных возможностей на этом закончу. Думаю интересно будет, также, ознакомиться со следующими материалами:

Система определения версий служб в сетевом сканере Nmap

Обход Брандмауэров/IDS

 

Ваша оценка: Нет Средняя: 3.7 (17 голосов)

Вставай, Україно!

Литература