Русский English Українська
Автореферат выпускной работы магистра Библиотека Ссылки Отчет о поиске Инд.задание





    Определение уязвимостей

Марат Давлетханов

Источник: http://www.infobez.ru

Eязвимости в операционных системах и программном обеспечении являются весьма серьезной опасностью. Именно они открывают путь для многих удаленных атак, а также вирусных эпидемий. Причем зачастую "дыры" создают не производители ОС и ПО, а сами пользователи из-за неправильной настройки продуктов или использования программ собственной разработки. Справиться с первым типом уязвимостей можно путем регулярного обновления используемого программного обеспечения. Естественно, если его разработчики проявляют должное внимание и постоянно закрывают обнаруженные "дыры". Кроме того, нельзя забывать о существовании пока неизвестных уязвимостей, которые, однако, тоже могут использоваться хакерами для проведения атак. А ведь еще есть и собственные "дыры" пользователей, дела с которыми обстоят еще сложнее (их очень сложно обнаружить). Практически единственной защитой от всех этих уязвимостей в ОС и ПО является своевременное их выявление. Для этого существуют специальные программы-сканеры. И сегодня мы с вами, уважаемые читатели, поговорим о принципе работы одной из самых известных утилит этого класса. Речь идет об инструменте XSpider, разработанном специалистами компании Positive Technologies.

Первым этапом в процессе поиска уязвимостей является сканирование портов. Вообще-то эта процедура довольно-таки проста. Однако и у нее есть свои особенности. Начать нужно с того, что сетевых портов очень много, порядка 135 тысяч (чуть больше 65 тысяч портов TCP и столько же портов UDP). Так что сканирование их всех затянется на достаточно продолжительное время. Именно поэтому в программе-сканере существует несколько вариантов проверок. Первая из них позволяет протестировать только указанные пользователем порты. Такой способ сканирования весьма удобен для проверки отдельных сетевых сервисов или служб. Второй вариант - сбалансированная проверка. Суть ее заключается в следующем. Специалисты компании разработали список портов, которые используются различными системами в подавляющем большинстве случаев и являются как бы стандартными для них. Использование этого способа сканирования позволяет выявить практически все уязвимости за минимальное время. Впрочем, если на компьютере есть службы или сервисы, работающие на совсем необычных портах (например, 32973), то они будут пропущены. Для их тестирования необходим третий вариант сканирования - полный.

Итак, сканер приступил к проверке портов. И вскоре на одном из них он обнаружил открытый сервис. Что дальше? А дальше возникает задача точной идентификации этого сервиса. Причем ее решение связано с целым рядом проблем. Во-первых, использование того или иного порта не гарантирует наличия на нем стандартного сервиса. Например, на TCP-порту с номером 110 не обязательно должен "висеть" обработчик POP3, хотя в большинстве случаев именно так и обстоят дела. Можно, конечно, для идентификации сервиса использовать его баннер (блок информации, выдающийся в ответ на обращение), в котором зачастую указываются тип и версия программного обеспечения. Однако сегодня многие администраторы изменяют эти данные. И действительно, ими вполне могут воспользоваться хакеры во время сетевой разведки. Поэтому сканер уязвимостей должен использовать для идентификации сервисов не баннеры, а специальные алгоритмы.

Если говорить откровенно, то данная задача не имеет гарантированного решения: слишком много в ней различных "неизвестных". Каждая из компаний, выпускающих сканеры уязвимостей, разработала собственные методики идентификации сетевых сервисов. Давайте посмотрим, что придумали специалисты из Positive Technologies. В их продукте XSpider реализовано сразу же несколько механизмов идентификации, дополняющих друг друга. Первым из них являются специальные матрицы соответствия. Обнаруженные сервисы сравниваются с ними по различным показателям. А на основе результатов этого сравнения и осуществляется идентификация. Другим механизмом являются специально разработанные эвристические алгоритмы. Они позволяют определить версию многих найденных сервисов (HTTP, FTP, SMTP, POP3, DNS, SSH) даже в тех случаях, когда изменены стандартные баннеры. Разработчики заявляют, что эффективность работы этих алгоритмов составляет примерно 95 процентов. Ну и, наконец, третьим, последним механизмом идентификации являются специальные технологии работы с RPC-сервисами. Программа умеет точно определять более 30 Windows-сервисов и около 200 Unix-сервисов. Причем применяемые для этого алгоритмы оригинальны и не зависят от предоставляемой системой информации.

Итак, тип и версию сервиса мы с вами, уважаемые читатели, выяснили. Что же дальше? Ну а дальше можно переходить непосредственно к поиску "дыр". Самым простым способом для этого является использование специальной базы данных, содержащей информацию по всем известным уязвимостям. Причем здесь очень важно регулярное обновление информации. Новые "дыры" в операционных системах и программном обеспечении находят постоянно. Так что от быстроты обновления базы данных действительно зависит многое. Если говорить о сканере XSpider, то генерация новых модулей, которые пользователи могут загрузить через Интернет, осуществляется 1-2 раза в неделю. Кроме того, в случае выявления критических уязвимостей создание обновления для базы данных производится в течение нескольких часов. Все это обеспечивает достаточную для надежного определения "дыр" оперативность.

Учли специалисты компании Positive Technologies и постоянно увеличивающуюся популярность удаленных атак на отказ в обслуживании. А поэтому в сканере XSpider существует специальная функция прямого тестирования на подверженность исследуемого компьютера наиболее распространенным DoS-воздействиям. Это позволяет администратору узнать о потенциальной опасности и задуматься над тем, как ликвидировать угрозу. Следующей важной ступенью защиты являются многочисленные brute-словари, специально оптимизированные для различных сервисов и типов уязвимостей (в том числе для несанкционированного доступа к каталогам).

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

Но и это еще не все. В программе XSpider есть функции глубокой проверки веб-серверов, а точнее, сайтов, которые на них размещены. Дело в том, что пользовательские скрипты зачастую несут в себе серьезную опасность. Существует несколько видов атак (SQL-инъекция, code-инъекция) и т. д., которые позволяют хакерам выполнять различные коды на сервере именно через них. Так что анализ скриптов, размещенных на веб-серверах, и поиск уязвимостей в них - это очень важные задачи.

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

Марат Давлетханов
portal@maratd.ru