logo
All_lections

2. Сканеры безопасности ас

Существует два основных механизма, при помощи которых сканер проверяет наличие уязвимости - сканирование (scan) и зондирование (probe).

Сканирование- механизм пассивного анализа, с помощью которого сканер пытается определить наличие уязвимости без фактического подтверждения её наличия - по косвенным признакам.

Этот метод является наиболее быстрым и простым для реализации. Данный метод получил название «логический вывод» (inference). Этот процесс идентифицирует открытые порты, найденные на каждом сетевом устройстве, и собирает связанные с портами заголовки (banner), найденные при сканировании каждого порта. Каждый полученный заголовок сравнивается с таблицей правил определения сетевых устройств, операционных систем и потенциальных уязвимостей. На основе проведённого сравнения делается вывод о наличии или отсутствии уязвимости.

Зондирование- механизм активного анализа, который позволяет убедиться, присутствует или нет на анализируемом узле уязвимость. Зондирование выполняется путём имитации атаки, использующей проверяемую уязвимость.

Этот метод более медленный, чем «сканирование», но почти всегда гораздо более точный. В терминах компании ISS данный метод получил название «подтверждение» (verification). Согласно компании Cisco этот процесс использует информацию, полученную в процессе сканирования («логического вывода»), для детального анализа каждого сетевого устройства. Этот процесс также использует известные методы реализации атак для того, чтобы полностью подтвердить предполагаемые уязвимости и обнаружить другие уязвимости, которые не могут быть обнаружены пассивными методами, например подверженность атакам типа «отказ в обслуживании» (denial of service).

На практике поиск уязвимостей реализуются следующими несколькими методами.

«Проверка заголовков» (banner check)

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

Типичный пример такой проверки - анализ заголовков программы Sendmail или FTP-сервера, позволяющий узнать их версию и на основе этой информации сделать вывод о наличии в них уязвимости.

Это наиболее быстрый и простой для реализации метод проверки присутствия на сканируемом узле уязвимости. Однако за этой простотой скрывается немало проблем.

Эффективность проверок заголовков достаточно призрачна. И вот почему.

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

Во-вторых, зачастую, версия, указываемая в заголовке ответа на запрос, не всегда говорит об уязвимости программного обеспечения. Особенно это касается программного обеспечения, распространяемого вместе с исходными текстами (например, в рамках проекта GNU). Вы можете самостоятельно устранить уязвимость путём модификации исходного текста, при этом забыв изменить номер версии в заголовке.

И в-третьих, устранение уязвимости в одной версии ещё не означает, что в следующих версиях эта уязвимость отсутствует.

«Активные зондирующие проверки» (active probing check)

Относятся к механизму «сканирования». Однако они основаны не на проверках версий программного обеспечения в заголовках, а на сравнении «цифрового слепка» (fingerprint) фрагмента программного обеспечения со слепком известной уязвимости. Аналогичным образом поступают антивирусные системы, сравнивая фрагменты сканируемого программного обеспечения с сигнатурами вирусов, хранящимися в специализированной базе данных. Разновидностью этого метода являются проверки - контрольных сумм или даты сканируемого программного обеспечения, которые реализуются в сканерах, работающих на уровне операционной системы.

Специализированная база данных (в терминах компании Cisco - база данных по сетевой безопасности) содержит информацию об уязвимостях и способах их использовании (атаках). Эти данные дополняются сведениями о мерах их устранения, позволяющих снизить риск безопасности в случае их обнаружения. Зачастую эта база данных используется и системой анализа защищённости и системой обнаружения атак. По крайней мере, так поступают компании Cisco и ISS.

Этот метод также достаточно быстр, но реализуется труднее, чем «проверка заголовков».

«Имитация атак» (exploit check)

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

Имитация атак является более надёжным способом анализа защищённости, чем проверки заголовков, и обычно более надёжны, чем активные зондирующие проверки.

Однако существуют случаи, когда имитация атак не всегда может быть реализована. Такие случаи можно разделить на две категории: ситуации, в которых тест приводит к «отказу в обслуживании» анализируемого узла или сети, и ситуации, при которых уязвимость в принципе не годна для реализации атаки на сеть.

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

Однако, есть некоторые уязвимости (например, проверка подверженности атакам типа «Packet Storm»), которые просто не могут быть протестированы без возможного выведения из строя сервиса или компьютера. В этом случае разработчики поступают следующим образом, - по умолчанию такие проверки выключены и пользователь может сам включить их, если желает. Таким образом, например, реализованы системы CyberCop Scanner и Internet Scanner. В последней системе такого рода проверки выделены в отдельную категорию «Отказ в обслуживании». При включении любой из проверок этой группы система Internet Scanner выдаёт сообщение:

WARNING: These checks may crash or reboot scanned hosts (Внимание: эти проверки могут вывести из строя или перезагрузить сканируемые узлы).

Этапы сканирования

Практически любой сканер проводит анализ защищённости в несколько этапов:

1) Сбор информации о сети.

На данном этапе идентифицируются все активные устройства в сети и определяются запущенные на них сервисы и демоны.

В случае использования систем анализа защищённости на уровне операционной системы данный этап пропускается, поскольку на каждом анализируемом узле установлены соответствующие агенты системного сканера.

2) Обнаружение потенциальных уязвимостей.

Сканер использует описанную выше базу данных для сравнения собранных данных с известными уязвимостями при помощи проверки заголовков или активных зондирующих проверок. В некоторых системах все уязвимости ранжируются по степени риска.

Например, в системе NetSonar уязвимости делятся на два класса: сетевые и локальные уязвимости. Сетевые уязвимости (например, воздействующие на маршрутизаторы) считаются более серьёзными по сравнению с уязвимостями, характерными только для рабочих станций. Аналогичным образом поступает и Internet Scanner. Все уязвимости в нём делятся на три степени риска: высокая (High), средняя (Medium) и низкая (Low).

3) Подтверждение выбранных уязвимостей.

Сканер использует специальные методы и моделирует (имитирует) определённые атаки для подтверждения факта наличия уязвимостей на выбранных узлах сети.

4) Генерация отчётов.

На основе собранной информации система анализа защищённости создаёт отчёты, описывающие обнаруженные уязвимости.

В некоторых системах (например, Internet Scanner и NetSonar) отчёты создаются для различных категорий пользователей, начиная от администраторов сети и заканчивая руководством компании. Если первых в первую очередь интересуют технические детали, то для руководства компании необходимо представить красиво оформленные с применением графиков и диаграмм отчёты с минимумом подробностей. Немаловажным аспектом является наличие рекомендаций по устранению обнаруженных проблем. И здесь по праву лидером является система Internet Scanner, которая для каждой уязвимости содержит пошаговые инструкции для устранения уязвимостей, специфичные для каждой операционной системы. Во многих случаях отчёты также содержат ссылки на FTP- или Web-сервера, содержащие patch'и и hotfix'ы, устраняющие обнаруженные уязвимости.

5) Автоматическое устранение уязвимостей.

Этот этап очень редко реализуется в сетевых сканерах, но широко применяется в системных сканерах (например, System Scanner).

Например, в System Scanner создаётся специальный сценарий (fix script), который администратор может запустить для устранения уязвимости. Одновременно с созданием этого сценария, создаётся и второй сценарий, отменяющий произведённые изменения. Это необходимо в том случае, если после устранения проблемы, нормальное функционирование узла было нарушено. В других системах возможности «отката» не существует.