Анализ уязвимостей ос windows
Несовершенство операционных систем и программного обеспечения — едва ли не главная причина колоссального ущерба, нанесенного мировой экономике компьютерными злоумышленниками. Большинство хакерских атак становится возможными из-за наличия уязвимостей в существующих ОС и ПО. В Сети появляется все больше вредоносного кода, который использует их для проникновения в компьютеры, выполнения запрограммированных действий и дальнейшего своего распространения.
Статистика показывает, что количество уязвимостей растет год от года. С одной стороны, это связано с тем, что год от года растет количество ПО, а с другой, с тем, что сейчас уязвимости ищутся намеренно, как хакерами, так и компаниями производителями ПО и ОС. Первые преследуют криминальные цели — использовать «дыру» для получения доступа к чужим информационным ресурсам, вторые — чтобы не испортить свою репутацию и обезопасить информационные ресурсы своих клиентов.
Количество обнаруженных уязвимостей
По данным mi2g, ущерб от различных видов атак достиг в 2004 г. $150 млрд., что примерно в два раза больше, чем в годом ранее. По мнению экспертов, ежегодно хакерами взламывается до 90% сетей предприятий
Сегодня уже никого не удивишь тем, что одним из основных элементов безопасности является операционная система компьютера, так как, по большому счету, именно она аккумулирует в себе подавляющую часть используемых механизмов защиты. Поэтому именно эффективность механизмов защиты ОС определяет уровень безопасности корпоративной сети и информационной системы предприятия в целом.
Основополагающие посылы защиты информации
Текущее состояние защищенности системы может иметь одно из двух состояний: полностью защищена, либо полностью незащищена. Переход системы из одного состояние в другое осуществляется при обнаружении хотя бы одной уязвимости защиты, возвращение в исходное состояние — при устранении известной уязвимости. Другими словами, рассуждения о степени защищенности ОС неуместны — любая обнаруженная в системе уязвимость делает ее полностью незащищенной.
Под уязвимостью системы защиты понимается такое ее свойство (недостаток), которое может быть использовано злоумышленником для осуществления несанкционированного доступа (НСД) к информации. При этом любая уязвимость системы защиты несет в себе угрозу осуществления злоумышленником НСД к информации, посредством реализации атаки на уязвимость в системе защиты. Таким образом, уязвимость системы защиты — это признак системы, а наличие (отсутствие) известных уязвимостей (известных, так как уязвимости в любой системе защиты присутствуют всегда) является характеристикой защищенности (текущего состояния защищенности) системы.
Как следствие, характеристикой защищенности системы следует считать не только реализованный в ней набор механизмов защиты, который должен быть достаточным для условий применения системы, но и продолжительность устранения известной уязвимости разработчиком системы. Причем каждый механизм защиты должен быть реализован корректно, как с точки зрения идеологической продуманности решения, так и с точки зрения ошибок программирования при реализации. Недостаточность и некорректность реализации механизмов защиты — две основные причины уязвимости системы.
Считая, что обнаружение каналов НСД к информации (уязвимостей) — (или в терминологии теории надежности — отказов системы защиты), и процесс их устранения являются пуассоновскими потоками (соответственно, с интенсивностями λ и μ), можно оценить с использованием простейшей формулы:
Уязвимости устраняются по мере их обнаружения, иначе нельзя обеспечить высокую интенсивность исправлений. Надежность системы защиты — вероятность того, что в любой момент времени система защищена (определяется тем условием, что число не устраненных уязвимостей равно 0)
Вероятность защищенности системы
1 в год
2 в год
5 в год
10 в год
1 нед.
2 нед.
1 мес.
2 мес.
3 мес.
4 мес.
Рассмотрим, например, значение “0,98” (лучшее значение надежности системы защиты в таблице). Оно достигается в том случае, если в среднем обнаруживается одна уязвимость в год при среднем времени ее восстановления разработчиком, составляющим одну неделю. При этом вероятность того, что в любой момент времени система защищена, равна 0,98, т.е. в любой момент времени с вероятностью 0,02 систему защиты можно считать отказавшей. Для современных систем это практически идеальная ситуация. Сегодня во многих современных системных средствах за год находится отнюдь не одна уязвимость, а продолжительность устранения уязвимости разработчиком может составлять несколько месяцев.
Используя данный подход, можно оценить защищенность современных ОС, с учетом того, что средняя задержка появления исправлений — один-два месяца. Обнаружение лишь 5 уязвимостей в год уже является достаточным для вывода о незащищенности системы.
Таким образом, безопасность ОС характеризуется не только достаточностью и корректностью реализации механизмов защиты, но и ошибками программирования, приводящими к уязвимостям, а также способностью разработчика системы быстро и качественно устранять подобные ошибки.
Статистика уязвимостей ОС семейства Windows
Используя статистику успешных атак, представленную в существующих каталогах, их можно сгруппировать на основании используемых уязвимостей. Объединение по различным признакам позволяет получить следующую классификацию атак:
— получение имени и пароля ОС или БД. В эту группу входят уязвимости позволяющие узнать из файлов и реестра имена и пароли пользователей системы, включая имя и пароль администратора;
— получение имени и пароля других служб и приложений. Такие уязвимости позволяют сделать тоже, что и в первой группе, но с учетом того, что несистемные имена и пароли могут совпадать с системными;
— крах системы. Уязвимости, приводящие к аварийному завершению работы системы в результате ошибки в ядре. Типичная настройка ОС Windows генерирует файл дампа памяти, в котором могут содержаться имена и пароли пользователей в том или ином виде;
— использование некорректных настроек безопасности реестра. Позволяет беспрепятственно читать и записывать информацию из/в реестр ОС. Поскольку реестр — это системная БД ОС, которой также пользуются и другие приложения, получив к нему полный доступ можно получить полный доступ и к ОС;
— использование некорректных настроек файловой системы. Для ОС Windows применяются файловые системы FAT и NTFS. Есть различные версии этих файловых систем. Одни абсолютно не защищены (FAT), другие развиваются и включают все большее количество возможностей по защите (NTFS). Разрешения на чтение и запись в файловой системе позволяет узнавать конфиденциальную информацию и менять конфигурации ОС и приложений;
— подмена адреса программы, становится возможной, если получен доступ к реестру или файловой системе (см. предыдущие пункты). Замена стандартных программ с известными именами на вредоносные, возможно скрытые программы, позволяет незаметно внедряться в систему, расширяя права до прав системы или администратора;
— получение доступа к временным файлам (доступ к общим папкам неразделяемым ОС), Позволяет получить имена и пароли пользователей из временных файлов;
— использование ошибок программирования. Уязвимости, в результате наличия которых некорректно изменяются настройки безопасности после изменения состояния ОС, например переход в ждущий режим или запуск заставки. Некорректные настройки позволяют злоумышленнику расширить свои права в ОС;
— использование ошибки каталога «..» (две точки). Полное имя файла включает в себя имена вложенных каталогов. Часто в конфигурациях безопасности явно указываются каталоги, к которым разрешен или запрещен доступ. Системный каталог «..» означает ссылку на родительский каталог данного каталога. Указав в пути к файлу системный каталог «..», из-за этого типа уязвимостей, можно получить доступ к файлам, изначально не подлежащим доступу. Кроме этого, уязвимость позволяет подменять одни файлы другими, включая исполняемые;
— перехват информации пользователя. Позволяет получить имена и пароли, вводимые пользователем с клавиатуры или прочитать конфиденциальную информацию так же вводимую пользователем;
— определение имени пользователя ( information leak). Часто удаленные атаки, совершаемые злоумышленниками, имеют своей целью сбор первичной информации об атакуемой системе, а ряд уязвимостей позволяет удаленно получать список пользователей системы или имя текущего пользователя. Это позволяет более осмысленно искать недостающие пароли;
— дезинформация пользователя. Эти уязвимости позволяют совершать с системой вредоносные манипуляции, о которых система или приложения либо не сообщают пользователю, либо явно дезинформируют его в результате программных ошибок;
— поиск и подбор пароля. Стандартная функция для пользователя становится уязвимостью при получении доступа к компьютеру злоумышленником. Одним из основных действий, совершаемых с использованием возможности запуска произвольной программы, является поиск и подбор паролей пользователей. В эту группу не включаем запуск программ-тестов безопасности (exploit), которые необходимы для реализации уязвимостей. Эту группу также можно назвать «запуск вспомогательных программ». Ниже рассматриваются уязвимости требующие возможности запуска программ-тестов (exploit) без которых нельзя получить доступ к интерфейсам, недоступным через графический интерфейс и командную строку — например, подключение к именованным каналам, генерация нестандартных сетевых пакетов для служб различных протоколов. Все ручные операции и часть программ-тестов должны быть выполнены локально остальные с использованием сети локально или удаленно. Место запуска в нашей классификации характеризует необходимые или начальные условия для совершения атаки;
— удаление и перезапись. Уязвимости этой группы позволяют удалять следы пребывания в системе злоумышленника, позволяя некорректно стирать и перезаписывать системные журналы событий;
— отождествление прав с правами системы (priveledge escalation/elevation, protection bypass, buffer overflow). Ошибки компонентов системного ПО связанные с передачей или расширением прав приводят к выполнению произвольного кода с привилегиями системы или администратора.
Процентное соотношение количества уязвимостей в каждой из определенных групп для ОС Windows
Источник: CNews Analytics, 2005
Динамика изменения процентного соотношения уязвимостей
Принципиальный интерес вызывает динамика изменения процентного соотношения уязвимостей. Во-первых, если уязвимости известны, то они должны устраняться разработчиком. Одна и та же уязвимость не должна из года в год присутствовать в системе. Если же подобные уязвимости присутствуют, возникает вопрос, почему они не устраняются разработчиками системы, а, как следствие — можно ли подобную систему считать защищенной в принципе?
Для получения ответов на поставленные вопросы, выберем в представленной диаграмме уязвимости, связанные с расширением привилегий пользователей посредством получения ими системных прав (эти уязвимости составляют подавляющую часть — 26% всех найденных уязвимостей для платформы Windows), и проведем анализ причин их возникновения.
Динамика изменения процентного отношения доли уязвимостей, связанных с возможностью расширения привилегий пользователей
Источник: CNews Analytics, 2005
Ввиду наличия динамики роста доли рассматриваемых уязвимостей возникает вопрос, почему же, включая в состав ОС все новые и новые механизмы защиты, разработчик не устранил данные уязвимости, использование которых злоумышленниками из года в год растет?
Ключевой причиной является противоречие, в которое вступают архитектурные принципы реализации ОС и сервисы, предоставляемые разработчикам приложений. Например, в ОС Windows системные пользователи имеют практически неограниченные права доступа к ресурсам (аналогичную ситуацию имеем для ОС семейства Unix, применительно к пользователю «Root»). В части архитектурного построения системы — это вполне обоснованное решение. Противоречие же состоит в том, что разработчикам приложений предоставляется возможность запуска приложения под этими учетными записями. Это приводит к тому, что ошибка программирования в приложении может привести к несанкционированному получению системных прав, как следствие, к возможности полного управления компьютером. В частности, эти уязвимости используются атаками «на переполнение буферов приложений», «некорректного олицетворение прав» и др. Любая атака, позволяющая получить управление приложением в этом случае приводит к преодолению системы защиты. Ошибка в приложении, в котором априори не должно присутствовать механизмов защиты, приводит к преодолению защиты ОС. Таким образом, за безопасность ОС в общем случае отвечают не только разработчики ОС, но и разработчики приложений.
С учетом всего сказанного, наиболее критичными являются именно уязвимости, основанные на архитектурных недостатках ОС. Дело в том, что устранение подобных уязвимостей весьма проблематично для разработчиков ОС, как следствие, подобные уязвимости «переносятся» ими в последующие версии системы, что делает их уязвимыми, несмотря на расширение функциональных возможностей реализуемых в них механизмов защиты.
Одним из способов решения данной проблемы являются средства добавочной защиты, которые усиливают встроенные в ОС механизмы и устраняют многие существующие уязвимости, основанные, в первую очередь, на архитектурных недостатках ОС.
Андрей Щеглов, д.т.н., проф.
Уязвимости Windows. Взгляд изнутри
Уязвимости Windows. Взгляд изнутри
Уязвимости Windows. Взгляд изнутри
Предлагаем Вашему вниманию вторую часть статьи О.М. Бойцева об уязвимостях ОС Windows, которые наиболее часто используются злоумышленниками.Первую часть статьи читайте в № 1-2 журнала «Информационная безопасность» за 2006 г.
Нулевой сеанс: добро пожаловать!
Наверное, многие из читателей не раз встречались с выражение типа «удаленный взлом через NetBIOS». Ну что ж, попытаемся внести ясность и наполнить данное выражение смыслом. Нулевой сеанс, который реализуется посредством протокола NetBIOS, используется в Windows-сетях для диагностических целей, что, впрочем, не исключает его использования в совершенно другом «амплуа». Дело в том, что создание нулевого сеанса не требует аутентификации соединения, что может быть с легкостью использовано в злонамеренных целях. Чтобы установить null session (нулевой сеанс, или анонимное подключение), необходимо ввести пустое имя пользователя и пустой пароль, при этом для анонимного подключения всегда открыт специальный ресурс IРС$ (inter-process communication). Для того чтобы соединиться с ресурсом IPC$, выполняется следующая команда: c:\>net use \\[IP-адрес]\ipc$ «» /user:»»
Анонимный доступ имеет ряд ограничений, но с помощью этого инструмента возможно многое, а именно: просматривать и модифицировать отдельные ветви реестра; запускать User Manager и просматривать список существующих пользователей и групп; запускать Event Viewer и другие средства удаленного администрирования. В системах NT4 и Win2k и по сей день можно встретить данный непропатченный баг. Кстати, ликвидировать возможность подключения через IPC$ можно занесением значения «1» в ключ реестра «HKEY_LOCAL_MACHINE \System\CurrentControlSet\Control\ LSA Name: RestrictAnonymous», также желательно прикрыть в настройках вашего брандмауэра 139-й порт, который, собственно, и является дверью для IPC$.
Функции хэширования паролей
Для хранения и обработки таких атрибутов пользователя, как пароли в ОС Windows NT и ей подобных, используется SAM (Security Accounts Manager — администратор учетных записей в системе защиты). SAM размещает всю информацию в одноименной базе данных, которая находится по адресу %SystemRoot%\system32\config. Забегая вперед, необходимо сказать, что именно SAM-файл является наиболее ценным трофеем, пропустив который через соответствующий софт, можно получить пароли от текущих учетных записей. Но в данном случае, учитывая тему статьи, нас в большей степени интересует не взлом как таковой, а баг, посредством которого брут (от англ. brute — грубый, в контексте brute force — взлом грубой силой) имеет место быть.
В ОС Windows NT для защиты паролей используются две однонаправленные хэш-функции (хеш-функция — алгоритм, используемый для генерации хеш-кодов цифровых объектов, в нашем случае паролей). В системе Windows присутствуют LM-хэш (Lan Manager хэш) и NT-хэш (Windows NT). Наличие двух аналогичных функций необходимо для совместимости со старыми ОС. Алгоритм LM-хэш изначально был разработан Microsoft для операционной системы OS/2, он интегрирован в Windows 95/98, Windows for Workgroups и частично в Windows 3.1. Хэш Windows NT был разработан специально для ОС Microsoft Windows NT. На страже LM-хэша стоит известный алгоритм шифрования DES; NT-хэш держится на алгоритме шифрования MD4. Как при локальном, так и при удаленном способах входа в систему, SRM (Security Reference Monitor — «смотрящий» за безопасностью — служба, работающая в режиме ядра, контролирующая безопасность системы посредством таких компонентов, как LSA — Local Security Authority; уже упомянутого SAM -Security Accounts Manager; AD -Active Directory и ряда других) сначала пытается идентифицировать NT-хэш. Если его нет,тогда SRM пытается проверить подлинность LM-хэша. А теперь внимание! Вот, собственно, и момент истины. Создание LM-хэша происходит по алгоритму, который вряд ли кто-либо осмелится назвать криптостойким. Посмотрим, как «элегантные брюки превращаются в шорты»:
1.Пароль преобразуется в 14-символьную строку.
2.Комбинация символов переводится в верхний регистр.Полученное 14-байтовое значение разбивается на две 7-байтовых части.
3.Каждая часть строки используется в качестве ключа DES при шифровании фиксированной константы с последующим объединением для создания одного 16-разрядного значения хэш-функции.
Эпикриз: независимо от длины выбранного пароля «окно» обрежет его до 14 символов, после чего переведет полученное значение в верхний регистр. Все, что надо сделать «злоадмину», — это взломать два семисимвольных пароля;-).
Прокомментировать такой расклад можно по-разному, и было бы удивительно, если бы никто не возразил: «Постойте, все не так уж и плохо, как Вы тут нам написали! Ведь для исправления сложившейся ситуации Microsoft выпустила гораздо более защищенный протокол NTLMv2, присутствующий уже в 3-м Service Pack-е для Windows NT 4.0. и, наконец, в Windows 2000 и XP для сетевой аутентификации был введен протокол Kerberos, криптостойкость которого на порядок выше!» Оно-то так. Но дело в том, что для совместимости со старыми системами в Windows опять-таки используются все предыдущие протоколы. И если компьютеры Windows 2000/XP не в состоянии идентифицировать друг друга через Kerberos, они автоматически переходят на использование все тех же NTLM или LMЕ.