Иногда нужно "прослушать", какие порты открыты на том или ином ресурсе. Изобретать велосипед не нужно, есть готовое решение - 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 Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . |
Стоит обратить внимание на то, что в поле 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
Последние комментарии
5 недель 6 дней назад
30 недель 1 день назад
2 года 30 недель назад
3 года 4 дня назад
3 года 23 недели назад
3 года 39 недель назад
3 года 39 недель назад
3 года 43 недели назад
4 года 2 недели назад
4 года 6 недель назад