Вместо этого мы предлагаем создавать такие сети, в которых сканированию могли бы подвергнуться лишь надежные и хорошо защищенные proxy-серверы и брандмауэры, а не компьютеры внутренней сети. В этом случае, даже если взломщику и удастся разведать тип операционной системы того или иного узла, проникновение через устройства защиты будет значительно затруднено.
Пассивное определение операционной системы
Из предыдущих разделов видно, насколько эффективными оказываются средства активного исследования стека, такие как утилиты nmap и queso. Важно не забывать о том, что рассмотренные выше приемы являются активными по своей природе. При этом для определения специфических особенностей сетевого стека и используемой операционной системы каждому узлу нужно передавать тестовые пакеты. Поскольку все активные методы предполагают передачу пакетов, идентификации операционной системы. Другими словами, активное исследование является далеко не самым скрытым методом, к которому может прибегнуть взломщик.
Типы сканирования
Прежде чем перейти к описанию конкретных средств, используемых для сканирования портов, необходимо уделить немного времени обзору методов сканирования, известных в настоящее время. Одним из пионеров реализации различных методов сканирования является ранее упоминавшийся Федор (Fyodor). Многочисленные приемы сканирования были реализованы им в утилите nmар. Многие из описанных в данной книге методов сканирования были предложены самим Федором.
TCP-сканирование подключением (TCP connect scan). При таком типе сканирования осуществляется попытка подключения по протоколу TCP к интересующему нас порту с прохождением полной процедуры согласования параметров (handshake), состоящей в обмене сообщениями SYN, SYN/ACK и АСК. Попытки такого сканирования очень легко выявляются. На рис. 1.3 показана диаграмма обмена сообщениями в процессе согласования параметров.
TCP-сканирование с помощью сообщений SYN (TCP SYN scan). Этот метод называется также сканированием с незавершенным открытием сеанса (half-open scanning), так как при его использовании полное TCP-соединение не устанавливается. Вместо этого на исследуемый порт отправляется сообщение SYN. Если в ответ поступает сообщение SYN/ACK, это означает, что данный порт находится в состоянии LISTENING. Если же ответ приходит в виде сообщения RST/ACK, то, как правило, это говорит о том, что исследуемый порт отключен. Получив ответ, компьютер, выполняющий сканирование, отправляет исследуемому узлу сообщение RST/ACK, поэтому полное соединение не устанавливается. Этот метод обеспечивает более высокую скрытность по сравнению с полным подключением. Многие системы не регистрируют такие попытки, поэтому они довольно часто могут оставаться незамеченными.
Рис. 1.3. При установке TCP-соединения происходит обмен тремя сообщениями: (1) клиент отправляет серверу пакет SYN, (2) получает от сервера пакет SYN/ACK и (3) отправляет серверу пакет АСК
· TCP-сканирование с помощью сообщений FIN (TCP FIN scan). В этом случае исследуемой системе отправляется пакет FIN. Согласно документу RFC 793 (http://www.ieff.org/rfc/rfc0793.txt), в ответ узел должен отправить пакет RST для всех закрытых портов. Данный метод срабатывает только для стека протоколов TCP/IP, реализованного в системе UNIX.
· TCP-сканирование по методу "рождественской елки" (TCP Xmax Tree scan). При использовании данного метода на исследуемый порт отправляются пакеты FIN, URG и PUSH. Согласно документу RFC 793, исследуемый узел в ответ должен отправить сообщения RST для всех закрытых портов.
· TCP нуль-сканирование (TCP Null scan). Этот метод состоит в отправке пакетов с отключенными флагами. Согласно RFC 793, исследуемый узел должен ответить отправкой сообщения RST для всех закрытых портов.
· TCP-сканирование с помощью сообщений АСК (TCP ACK scan). Этот метод позволяет получить набор правил, используемых брандмауэром. Такое сканирование поможет определить, выполняет ли брандмауэр простую фильтрацию пакетов лишь определенных соединений (пакетов с установленным флагом АСК) или обеспечивает расширенную фильтрацию поступающих пакетов.
· TCP-сканирование размера окна (TCP Windows scan). Такой метод позволяет выявить открытые, а также фильтруемые/нефильтруемые порты некоторых систем (например, AIX и FreeBSD), в зависимости от полученного размера окна протокола TCP.
· TCP-сканирование портов RFC (TCP RFC scan). Этот метод применим только для систем UNIX и используется для выявления портов RFC (Remote Procedure Call — удаленный вызов процедур), связанных с ними программ и их версий.
А UDP-сканирование (UDP scan). Данный метод заключается в отправке на исследуемый узел пакетов по протоколу UDP. Если в ответ поступает сообщение о том, что порт ICMP недоступен (ICMP port unreachabie), это означает, что соответствующий порт закрыт. С другой стороны, если такого сообщения нет, можно предположить, что данный порт открыт. В связи с тем, что протокол UDP не гарантирует доставки, точность данного метода очень сильно зависит от множества факторов, влияющих на использование системных и сетевых ресурсов. Кроме того, UDP-сканирование — очень медленный процесс, что особенно сказывается при попытках сканирования устройств, в которых реализован мощный алгоритм фильтрации пакетов. Поэтому, планируя использовать UDP-сканирование, приготовьтесь к тому, что результаты могут оказаться ненадежными.
Некоторые реализации IP-протокола обладают одним неприятным свойством: пакеты RST отправляются обратно для всех сканируемых портов независимо от того, находятся ли соответствующие порты в режиме ожидания запросов. Учитывайте этот факт при использовании описанных методов. Однако в то же время сканирование подключением и сканирование с использованием сообщений SYN могут применяться для всех узлов.
Утилиты сканирования портов для системы Windows
В предыдущих разделах были рассмотрены утилиты сканирования портов с точки зрения пользователя UNIX, однако неужели не существует аналогичных средств, доступных для пользователей Windows? Конечно же, это не так. Следующие утилиты сканирования портов являются лучшими среди подобных средств, поскольку обладают высокой скоростью, точностью и широким набором функциональных возможностей.
NetScanTools Pro 2000
Одним из наиболее универсальных средств исследования сетей, доступных в настоящее время, является пакет NetScanTools Pro 2000 (NSTP2K), содержащий самые разнообразные утилиты, объединенные общим интерфейсом. С использованием NSTP2K можно генерировать запросы DNS, включая nslookup, dig и axf r, запросы whois, осуществлять ping-прослушивание, сканировать таблицы имен NetBIOS, отслеживать сообщения SNMP и выполнять многие другие задачи. Более того, с использованием пакета NetScanTools Pro 2000 можно выполнять несколько задач одновременно. Например, можно выполнять сканирование портов одной сети и осуществлять ping-прослушивание другой сети (хотя мы не можем ручаться за правильность таких действий по отношению к большим сетям).
В состав пакета NetScanTools Pro 2000 включен также один из лучших сканеров портов Windows. Все необходимые параметры можно установить во вкладке Port Probe. К преимуществам утилиты сканирования NSTP2K. можно отнести возможность гибкого задания параметров исследуемых узлов и портов (и IP-адреса и список портов могут быть импортированы из текстовых файлов), возможность TCP- и UDP-сканирования (хотя соответствующие режимы нельзя установить отдельно для каждого порта), а также высокую скорость благодаря реализации многопоточности. К недостаткам утилиты сканирования пакета NSTP2K можно отнести некоторую громоздкость получаемых результатов, что затрудняет их анализ с помощью сценариев, и, кроме того, графический интерфейс делает невозможным применение этой утилиты в сценариях. Нам хотелось бы высказать следующее пожелание: было бы очень удобно, чтобы результаты, полученные с использованием одной утилиты пакета NSTP2K (скажем, NetScanner), можно было бы напрямую передавать другой утилите (например, Port Probe).
В общем, пакет NSTP2K (http://www.nwpsw.com) представляет собой профессионально разработанный программный продукт, который регулярно обновляется посредством сервисных пакетов, однако все же остается несколько дорогостоящим по сравнению с предоставляемыми им возможностями. Можно также познакомиться с менее робастной версией Netscan Tools (в настоящее время доступна версия 4), являющейся пробной 30-дневной версией пакета NSTP2K. Однако предоставляемые ею возможности не столь широки, как у пакета Pro 2000 (например, она не позволяет выполнять UDP-сканирование).
При использовании пакета NSTP2K не забудьте отключить сервер идентификации во вкладке IDENT Server, чтобы не запрещать прослушивание порта 113.
SuperScan
Утилита SuperScan, написанная Робином Кейром (Robin Keir) (http: //members. home.com/rkeir/software.html), является еще одной быстрой и гибкой утилитой TCP-сканирования портов и имеет гораздо более привлекательную стоимость — она распространяется бесплатно! Как и пакет NSTP2K, утилита SuperScan позволяет гибко задавать перечень IP-адресов исследуемых узлов и сканируемых портов. Особенно удобно использовать режим Extract from file. Лучше всего особенности его применения описаны в справочной системе. Вот небольшой фрагмент из справочной системы утилиты SuperScan, из которого видно, что она позволяет сэкономить значительную часть времени.
"Режим [The "Extract from file" feature scans] позволяет просматривать содержимое любого текстового файла и извлекать из него корректные IP-адреса и имена узлов. При поиске корректных имен программой выполняются достаточно интеллектуальные действия. Однако перед обработкой файла из него нужно удалить потенциально неоднозначные фрагменты текста, воспользовавшись внешним текстовым редактором. На кнопках Browse и Extract можно щелкать столько раз, сколько различных файлов имеется в вашем распоряжении. При этом в список имен исследуемых узлов программой будут добавлены все новые имена. Все повторяющиеся элементы будут автоматически удалены. После нахождения всех имен узлов щелкните на кнопке Resolve, чтобы преобразовать их в числовые IP-адреса и выполнить подготовку к этапу сканирования портов." Эта утилита предоставляет также один из наиболее обширных списков портов, с которым нам когда-либо приходилось встречаться. (Авторам книги нравится список под названием henss.lst. Более того, в исходном англоязычном названии книги первые буквы составляют аббревиатуру HENSS&S, откуда можно заключить, что авторы — просто фанаты этого списка.) Кроме того, порты можно выделить или отменить их выделение вручную. Не лишний раз повторить, что утилита SuperScan помимо всех перечисленных возможностей обладает также и высокой скоростью.