Добавлен: 07.07.2023
Просмотров: 372
Скачиваний: 5
В любом случае у администратора, осуществляющего поиск уязвимостей, есть несколько вариантов использования системы анализа защищенности:
Запуск сканирования только с проверками на потенциальные уязвимости (этапы 1,2 и 4). Это дает предварительное ознакомление с системами в сети. Этот метод является гораздо менее разрушительным по сравнению с другими и также является самым быстрым.
- Запуск сканирования с проверками на потенциальные и подтвержденные уязвимости. Этот метод может вызвать нарушение работы узлов сети во время реализации проверок типа "exploit check".
- Запуск сканирования с вашими пользовательскими правилами для нахождения конкретной проблемы.
- Все из вышеназванного.
Особенности применения
Если сканер не находит уязвимостей на тестируемом узле, то это еще не значит, что их нет. Просто сканер не нашел их. И зависит это не только от самого сканера, но и от его окружения. Например, если Вы тестируете сервис Telnet или FTP на удаленной машине, и сканер сообщает Вам, что уязвимостей не обнаружено - это может значить не только, что уязвимостей нет, а еще и то, что на сканируемом компьютере установлен, например, TCP Wrapper. Да мало ли еще чего? Вы можете пытаться получить доступ к компьютеру через межсетевой экран или попытки доступа блокируются соответствующими фильтрами у провайдера и т.д. Для ОС Windows NT характерен другой случай. Сканер пытается дистанционно проанализировать системный реестр (registry). Однако в случае запрета на анализируемом узле удаленного доступа к реестру, сканер никаких уязвимостей не обнаружит. Существуют и более сложные случаи. И вообще различные реализации одного итого же сервиса по-разному реагируют на системы анализа защищенности. Очень часто на практике можно увидеть, что сканер показывает уязвимости, которых на анализируемом узле нет. Это относится к сетевым сканерам, которые проводят дистанционный анализ узлов сети. И удаленно определить, существует ли в действительности уязвимость или нет, практически невозможно. В этом случае можно порекомендовать использовать систему анализа защищенности на уровне операционной системы, агенты которой устанавливаются на каждый контролируемый узел и проводят все проверки локально.
Для решения этой проблемы некоторые компании-производители пошли по пути предоставления своим пользователям нескольких систем анализа защищенности, работающих на всех указанных выше уровнях, - сетевом, системном и уровне приложений. Совокупность этих систем позволяет с высокой степенью эффективности обнаружить практически все известные уязвимости. Например, компания Internet Security Systems предлагает семейство SAFEsuite, состоящее из четырех сканеров: Internet Scanner, System Scanner, Security Manager и Database Scanner. В настоящий момент это единственная компания, которая предлагает системы анализа защищенности, функционирующие на всех трех уровнях информационной инфраструктуры. Другие компании предлагают или два (Axent) или, как правило, один (Network Associates, NetSonar и др.) сканер.
Компания Cisco, предлагающая только систему анализа защищенности на уровне сети пошла другим путем для устранения проблемы ложного срабатывания. Она делит все уязвимости на два класса:
- Потенциальные - вытекающие из проверок заголовков и т.н. активных "подталкиваний" (nudge) анализируемого сервиса или узла. Потенциальная уязвимость возможно существует в системе, но активные зондирующие проверки не подтверждают этого.
- Подтвержденные - выявленные и существующие на анализируемом хосте.
Проверки на потенциальную уязвимость проводятся через коллекцию заголовков и использование "несильных подталкиваний". "Подталкивание" используется для сервисов, не возвращающих заголовки, но реагирующих на простые команды, например, посылка команды HEAD для получения версии HTTP-сервера. Как только эта информация получена, система NetSonar использует специальный механизм (rules engine), который реализует ряд правил, определяющих, существует ли потенциальная уязвимость.
Таким образом, администратор знает, какие из обнаруженных уязвимостей действительно присутствуют в системе, а какие требуют подтверждения.
Однако в данном случае остаются уязвимости, с трудом обнаруживаемые или совсем не обнаруживаемые через сеть. Например, проверка "слабости" паролей, используемых пользователями и другими учетными записями. В случае использования сетевого сканера вам потребуется затратить очень много времени на удаленную проверку каждой учетной записи. В то же время, аналогичная проверка, осуществляемая на локальном узле, проводится на несколько порядков быстрее. Другим примером может служить проверка файловой системы сканируемого узла. Во многих случаях ее нельзя осуществить дистанционно.
Достоинства сканирования на уровне ОС кроются в прямом доступе к низкоуровневым возможностям ОС хоста, конкретным сервисам и деталям конфигурации. Тогда как сканер сетевого уровня имитирует ситуацию, которую мог бы иметь внешний злоумышленник, сканер системного уровня может рассматривать систему со стороны пользователя, уже имеющего доступ к анализируемой системе и имеющего в ней учетную запись. Это является наиболее важным отличием, поскольку сетевой сканер по определению не может предоставить эффективного анализа возможных рисков деятельности пользователя.
Многие сканеры используют более чем один метод проверки одной и той же уязвимости или класса уязвимостей. Однако в случае большого числа проверок использование нескольких методов поиска одной уязвимости привносит свои проблемы. Связано это со скоростью проведения сканирования.
Например, различие между системами CyberCop Scanner и Internet Scanner в том, что разработчики из NAI никогда не добавят в свой продукт проверку, если не могут с уверенностью сказать, что проверка надежно обнаруживает уязвимость. В то время как разработчики ISS пополняют свою базу даже в том случае, если их проверка обнаруживает уязвимость с некоторой точностью. Затем, уже после выпуска системы, происходит возврат к разработанным проверкам, их улучшение, добавление новых механизмов осуществления проверок той же уязвимости для повышения достоверности, и т.д. Достаточно спорный вопрос, что лучше. С одной стороны лучше, когда вы с уверенностью можете сказать, что на анализируемом узле определенной уязвимости нет. С другой, даже если существует хоть небольшой шанс, что вы можете обнаружить уязвимость, то надо этим шансом воспользоваться. В любом случае наиболее предпочтительным является проверка типа "имитация атак", которая обеспечивает наибольший процент точного обнаружения уязвимостей.
Не все проверки, разработанные в лабораторных условиях, функционируют так, как должны. Даже несмотря на то, что эти проверки тестируются, прежде чем будут внесены в окончательную версию сканера. На это могут влиять некоторые факторы:
- Особенности конфигурации пользовательской системы.
- Способ, которым был скомпилирован анализируемый демон или сервис.
- Ошибки удаленной системы.
- И т.д.
В таких случаях автоматическая проверка может пропустить уязвимость, которая легко обнаруживается вручную и которая может быть широко распространена во многих системах. Проверка заголовка в совокупности с активным зондированием в таком случае может помочь определить подозрительную ситуацию, сервис или узел. И хотя уязвимость не обнаружена, еще не значит, что ее не существует. Необходимо другими методами, в т.ч. и неавтоматизированными, исследовать каждый подозрительный случай.
Разница в реализации
Системы различных производителей могут использовать различные методы поиска одной и той же уязвимости, что может привести к ее нахождению в случае использования одного средства и ненахождения - в случае другого. Хорошую ассоциацию приводит ведущий разработчик системы Internet Scanner Девид ЛеБлан. "Если вы спросите меня - дома мой товарищ или нет, я просто позвоню ему. Если его телефон не отвечает, то я позвоню вам и сообщу, что его нет дома. Затем вы идете к нему домой, стучите в дверь и он отвечает. Не называйте меня лжецом только из-за того, что то, что я пытался сделать не сработало. Возможно, я был не прав или необходимо было использовать другие методы, но я пытался сделать то, что считал нужным". Так и со средствами поиска уязвимостей.
Кроме того, если в созданном отчете не сказано о той или иной уязвимости, то иногда стоит обратиться к журналам регистрации (log) системы анализа защищенности. В некоторых случаях, когда сканер не может со 100%-ой уверенностью определить наличие уязвимости, он не записывает эту информацию в отчет, однако сохраняет ее в логах. Например, анализ и разбор поля sysDescr в журнале регистрации системы Internet Scanner существенно помогает во многих спорных случаях.
Существуют различия и между тем, как влияет одна и та же проверка на различные версии сервисов в различных операционных системах. Например, использование учетной записи halt для демона Telnet на некоторых компьютерах под управлением Unix или Windows NT не приведет к плачевным последствиям, в то время как на старых версиях Unix это вызовет запуск команды /bin/halt при попытке доступа к удаленной системе с использованием этой учетной записи.
Перспективы развития
С 1992 года, когда появился первый сканер SATAN, существенно изменились требования к такого рода средствам. Сейчас уже недостаточно, чтобы система анализа защищенности обладала только обширной базой уязвимостей. Поэтому производители стали расширять функциональность своих продуктов за счет добавления следующих возможностей.
Автоматическое обновление уязвимостей
До недавнего времени пополнение сканера новыми уязвимостями проводилось достаточно редко (1 раз в месяц и реже). При этом под пополнением понималось обновление всей системы анализа защищенности, т.е. получение новой версии программного обеспечения.
Сейчас ситуация меняется. В некоторых системах, например, HackerShield существует возможность автоматического обращения через Internet к Web-серверу компании-производителя и загрузка с него новых уязвимостей. При этом соединение с сервером может производиться как по требованию оператора системы, так и по заданному расписанию.
Единый формат базы уязвимостей
В целях унификации и возможной интеграции систем анализа защищенности в настоящий момент ведутся работы по созданию единого для всех сканеров формата базы уязвимостей. И хотя работа эта только началась и ей далеко до своего завершения, первые шаги уже сделаны. Например, лаборатория COAST в университете Purdue разработала проект такой базы данных. Одна из проблем, с которой пришлось столкнуться исследователям, - это описание уязвимостей и их проверок (атак).
Языки описания уязвимостей и проверок
Попытки добавить механизмы описания уязвимостей и проверок в системы анализа защищенности велись давно. Они предпринимались практически всеми компаниями-разработчиками. Первая такая попытка была предпринята Витсом Венема и Деном Фармером - разработчиками системы SATAN. Описание новых уязвимостей, точнее их проверок, осуществлялось при помощи языка Perl. Это достаточно нетривиальная задача требовала обширных знаний как языка Perl, так и архитектуры стека протоколов TCP/IP и сканируемой операционной системы. По этому же пути (использование Perl) пошли разработчики системы WebTrends Security Analyzer. В приложении 1 приведен пример проверки, позволяющей определить тип операционной системы сканируемого узла. Язык Perl, наряду с языком C, используется и в системе Internet Scanner. Причем помимо возможностей, встроенных в саму систему Internet Scanner, компания ISS поставляет отдельную систему описания атак APX (Advanced Packets eXchange).
Другим языком, используемым при описании осуществляемых проверок, стал Tcl. Модификации этого языка используются в системах APX (бесплатное приложение к системе Internet Scanner), Security Manager и CyberCop Scanner. Компания Network Associates последовала примеру компании ISS и выделила механизм описания уязвимостей в отдельную систему CyberCop CASL (Custom Audit Scripting Language). Также как и APX, система CyberCop CASL может функционировать под управлением ОС Windows NT и Unix (Linux для CASL и Solaris для APX).
В системах APX и CASL описываются параметры сетевых пакетов, при помощи которых моделируются различные атаки. К таким параметрам можно отнести флаги в заголовке IP-пакета, номера портов в заголовке TCP-пакета, поля данных в пакетах различных протоколов и т.д. В качестве примера (Приложение 2) можно привести проверку возможности осуществления подмены пакетов (Spoofing).
Однако наиболее удобным с точки зрения конечного пользователя (не программиста) является язык VDL (Vulnerability Descriptive Language) и VEL (Vulnerability Exploit Language), разработанный компанией Cisco. Проверки, описываемые этими языками, основаны на простых логических утверждениях, и пользователь может добавлять правила, если он видит, что они необходимы. Примером такого правила может быть:
1. Секция описания сервисов: На анализируемом узле найден netstat
port 15 using protocol tcp => Service:Info-Status:netstat
Данная проверка описывает правило, которое определяет наличие сервиса netstat на 15-ом TCP-порту анализируемого узла. Более сложное следующее правило определяет наличие запущенного приложения SuperApp устаревшей версии по заголовку, возвращаемому на запрос, обращенный к портам 1234 или 1235.