Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия nmap.doc
Скачиваний:
45
Добавлен:
21.02.2016
Размер:
569.34 Кб
Скачать

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

Nmap, как известно, умеет делать много полезных вещей: это и определение операционной системы при помощи снятия отпечатков стека TCP/IP, многофункциональный ping-опрос, вычисление временных параметров, сканирование протоколов и т.д. Однако историческое его предназначение – это, конечно, сканирование портов. Укажите Nmap’у интересующий Вас хост – и он может сообщить Вам, что порты 25/tcp, 80/tcp и 35/udp хоста открыты. Используя собственную базу данных, размещенную в файле nmap-services и содержащую свыше 2200 названий «общеизвестных» служб, напротив каждого номера обнаруженного порта Nmap укажет возможное назначение этого порта: относится ли он к почтовому серверу (SMTP), веб-серверу (HTTP) или к службе DNS. При этом результат определения службы, закрепленной за «общеизвестным» портом, практически всегда совпадает с действительностью, поскольку все почтовые сервера, например, должны «сидеть» на 25-м порту. Но не стоит забывать о том, что люди могут и ЗАПУСКАЮТ службы, закрепляя их за весьма необычными портами.

Возможна, например, такая ситуация: веб-сервер развернут и работает на 80-м порту, а в дополнении к этому используется другой «нестандартный» порт для тестирования и обслуживания сервера. Вполне возможно, что при выборе «нестандартных» портов людьми движет желание скрыть уязвимые службы от злоумышленников. И наиболее распространенной причиной использования «нестандартных» портов для вполне обычных служб является наличие файрволла, ограничивающего доступ к защищенным портам извне. Так, например, когда один весьма крупный интернет-провайдер заблокировал 80-й порт после «нашумевших» червей CodeRed и Nimida, поражающих службу Microsoft IIS, пользователи попросту переместили свои персональные веб-сервера на другие порты. В другой компании системный администратор заблокировал телнет-доступ к рабочим местам из-за высокой степени риска, а некоторые «продвинутые» пользователи просто перевели службу телнет на порт, используемый SSH, и продолжали работать. И случаи, подобные этим, отнюдь не редкость.

Даже если Nmap прав, и на гипотетическом хосте, описанном выше, действительно запущены службы SMTP, HTTP и DNS, этой информации недостаточно для квалифицированного тестирования безопасности сети. Необходимо знать, какой именно почтовый или DNS-сервер работает на исследуемом хосте (его тип), и, по возможности, определить его версию. Имея точную информацию о типе и версии сервера, можно определить его уязвимости.

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

Те, кто часто занимается сканированием сетей, знают, что большая часть обнаруженных активных служб прослушивают как раз «нестандартные» порты, но определить, какие это службы, не представляется возможным. Без механизма определения версий служб «нестандартные» открытые порты представляют собой подобие «черных дыр»: что туда приходит, что с этим происходит и что выходит – тайна, покрытая мраком.

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

Использование нового механизма определения типа и версии активных служб в сетевом сканере Nmap позволяет решить эти проблемы. При обнаружении открытого порта запускается подсистема определения служб, и опрашивает его при помощи специальных тестовых запросов, которые может «понять» та или иная служба. Вот реальный пример:

# nmap -A -T4 -F www.insecure.org

Starting nmap 3.40PVT16 ( http://www.insecure.org/nmap/ ) at 2003-09-06 19:49 PDT

Interesting ports on www.insecure.org (205.217.153.53): (The 1206 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.1p1 (protocol 1.99) 25/tcp open smtp Qmail smtpd 53/tcp open domain ISC Bind 9.2.1 80/tcp open http Apache httpd 2.0.39 ((Unix) mod_perl/1.99_07-dev Perl/v5.6.1) 113/tcp closed auth

Device type: general purpose Running: Linux 2.4.X|2.5.X OS details: Linux Kernel 2.4.0 - 2.5.20 Uptime 108.307 days (since Wed May 21 12:27:44 2003)

Nmap run completed -- 1 IP address (1 host up) scanned in 34.962 seconds

На самом деле, Nmap – не первая программа, которая использует этот механизм. Около 3 лет назад Jay Freeman (AKA Saurik) разработал патч для Nmap, который он назвал Nmap+V. В то время Nmap+V работал гораздо медленнее, чем сейчас, однако технику определения типа и версии службы демонстрировал с успехом. Кроме того, такие замечательные утилиты, как Nessus и THC Amap, также имеют некоторые возможности, характерные для данной техники. Тем не менее, ни одна из этих программ не смогла удовлетворить всем требованиям пользователей. Мы же, напротив, попытались это сделать. Итак, перечислим основные достоинства новой подсистемы определения типа и версии служб, используемой в сканере Nmap:

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

  • Определение названия приложения и, по возможности, номера его версии

  • Поддержка протоколов TCP и UDP, равно как и поддержка текстовых (ASCII) и пакетных бинарных служб.

  • Поддержка различных платформ, включая Linux, Windows, Mac OS X, FreeBSD/NetBSD/OpenBSD, Solaris, и любых других, на которых работает Nmap.

  • При обнаружении SSL, Nmap установит соединение с использованием OpenSSL (если возможно) и попытается определить, какая служба работает «за» шифрованным каналом. Эта возможность позволяет определить наличие таких служб, как https, pop3s, imaps и т.д., и обеспечить получение детализированной информации об этих службах.

  • При обнаружении службы SunRPC, Nmap запустит собственный механизм атаки по методу «грубой силы» на RPC для определения номера программы, ее названия и номера версии.

  • Полная поддержка протокола IPv6, включая TCP, UDP и SSL over TCP.

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

  • Объемная база данных «отпечатков» служб. Благодаря огромной команде бета-тестирования и применения механизма определения неизвестных служб, уже на стадии разработки новой системы нам удалось составить базу данных, включающую свыше 300 различных описаний сервисов. Вот лишь некоторые из них: chargen, cvspserver, daytime, domain, echo, exec, finger, font-service, ftp, ftp-proxy, http, http-proxy, hylafax, ident, ident, imap, imaps, ipp, ircbot, ircd, irc-proxy, issrealsecure, landesk-rc, ldap, meetingmaker, microsoft-ds, msrpc, mud, mysql, ncacn_http, ncp, netbios-ns, netbios-ssn, netsaint, netwareip, nntp, nsclient, oracle-tns, pcanywheredata, pop3, pop3s, postgres, printer, qotd, redcarpet, rlogind, rpc, rsync, rtsp, shell, smtp, snpp, spamd, ssc-agent, ssh, ssl, telnet, time, upnp, uucp, vnc, vnc-http, webster, whois, winshell, X11. Этот список далеко не полон и не включает некоторые специфические RPC-программ, равно как и службы, обнаруженные «под» протоколом SSL (https, imaps, и т.д.). Мы надеемся, что, по аналогии с отпечатками операционных систем, эта база будет постоянно обновляться и дополняться, естественно, не без Вашей помощи.

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