Иногда нужно «прослушать», какие порты открыты на том или ином ресурсе. Изобретать велосипед не нужно, есть готовое решение — 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: FreeBSDService 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: closedNmap 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
Источник http://muff.kiev.ua/content/nmap-skaner-portov
Неплохой обзор. Вообще, для анализа стоит использовать не только сканер портов. Хотя, все зависит от того, что именно вам надо. Если вы анализируете внутреннюю сеть, то неплохо бы иметь сниффер (в народе — сканер пакетов и т.д.). Если вы анализируете внешнюю сеть, то не плохо бы, чтобы программа умела работать с диапазоном ip адресов. Но, всегда стоит помнить, что есть 272, 273 и 274 статьи. Поэтому никогда не злоупотребляйте ими.
Если вам интересно, то более подробно вы можете узнать в обзоре утилиты анализа сети.