являются новые средства безопасности x64-версий Vista в сочетании с такими функциями x32-версий Vista, как User Account Control (UAC), Windows Defender, Windows Firewall, Windows Service Hardening, Encrypting File System (EFS) и Bit-Locker.
Однако начнем, пожалуй, с реалий.
Авторитетный специалист по безопасности Джоанна Рутковска (Joanna Rutkowska) в конце июля нынешнего года изящно представила оригинальные способы обхода средств защиты информации Windows Vista. В ходе конференции Black Hat Briefings and Training, которая проходила в Лас-Вегасе с 28 июля по 2 августа 2007 года, Рутковска и ее коллега Алекс Терешкин представили разработанные для Vista rootkit- программы. По словам Рутковской, из этических соображений участие в семинаре было ограничено только представителями 'легитимных' компаний. Недавно Рутковска продемонстрировала методы, с помощью которых руткиты могут скрывать себя даже от самого надежного на сегодня механизма распознавания– аппаратных средств, считывающих содержание оперативной памяти системы. По ее словам, июльская демонстрация была посвящена именно таким методам. До недавнего времени Рутковска работала в компании Coseinc, а в настоящее время занимается основанием в Польше новой компании, которая будет специализироваться на информационной безопасности.
Потрясает? Пожалуй, да, ведь не будем забывать, что выход системы состоялся ну совсем уже недавно. Однако то ли еще будет. Как обещает многоуважаемая Рутковска, это только начало, ведь в планах ближайшего времени опубликовать новые оригинальные способы взлома пресловутой защиты NT 6.0.
Чего же все-таки стоит хваленая безопасность новой операционной системы и какие технологии за этим стоят? Попробуем разобраться в этом.
Драйверы с цифровой подписью
Никто не будет отрицать, что значительная часть потенциальных проблем безопасности операционных систем связана именно с драйверами. По заявлениям Microsoft, x64-версии Vista будут допускать установку драйверов исключительно с цифровой подписью. Порочная практика «драйвер не имеет цифровой подписи – все равно продолжить» должна теперь кануть в небытие?! Понятное дело, что обязательное подписывание драйверов в значительной степени способствует надежности Windows Vista, ведь большинство сбоев операционной системы и критических ошибок связаны именно с недоработкой драйверов режима ядра.
Прокомментировать подобный вариант защиты от установки драйверов без цифровой подписи можно было бы вполне однозначно: новая технология исправно защищает ядро операционной системы от модификаций, обеспечивая, как бы это хотелось сказать, непревзойденный уровень защиты.
Однако постойте. В начале августа этого года Symantec обнародовала до примитива простой способ обхода всей этой хваленой защиты: защита ядра 32-и 64-битных версий Vista от установки неподписанных драйверов может быть взломана с помощью простой бесплатной утилиты! Специалистам Symantec удалось обнаружить в свободном доступе программу Atsiv, разработанную австралийской компанией Linchpin Labs.
Реакция Microsoft на появившееся средство обхода защиты Vista пока неизвестна.
PatchGuard
Как следует из названия, PatchGuard создан, чтобы обеспечить защиту от несанкционированной модификации ядра Vista вредоносным кодом. По определению Microsoft, PatchGuard представляет собой не что иное, как «метод предотвращения расширения драйверов режима ядра или замены других служб ядра, а также редактирования какой-либо части ядра сторонними программами».
Чтобы понять суть данной технологии защиты, будет полезным разобраться в том, что же такое kernel patching (изменение ядра).
Под kernel patching, как это следует из названия, понимается некая техника модификации/замены критических областей данных ядра Windows на другой код или данные, которые могут быть потенциально вредоносными. Модификация эта, в свою очередь, возможна посредством использования внутренних системных вызовов или другим способом. Вообще, модификация и обновление ядра, по сути, не являются чем-то экзотическим и априорно запрещенным для системы, ведь многие производители ПО достаточно часто модифицируют его для своих целей, например, изменяя адрес функции-обработчика системного вызова (указатель функции) в таблице системных вызовов (system service table, SST).
Вдаваясь в технические подробности работы PatchGuard, следует сказать, что благодаря данной технологии в системе запрещена модификация таких компонентов ядра, как:
¦ таблицы системных вызовов (system service tables, SST);
¦ таблицы глобальных дескрипторов (global descriptor table (GDT));
¦ таблицы прерываний (interrupt descriptor table (IDT)).
В случае если какой-либо код попытается модифицировать вышеописанные компоненты ядра, операционная система сгенерирует отчет об обнаруженной уязвимости и экстренно завершит свою работу. По официальным заявлениям Microsoft, данный компонент системы защиты ядра отключить невозможно. Однако, как оно всегда и бывает, нет ничего невозможного: защита ядра все-таки отключается. Подобное вполне возможно, если в системе работает отладчик ядра. Решение, как мне кажется, не заставит себя долго ждать.
NX (No Execute) DEP!
Под загадочной аббревиатурой NX стоит вполне прозрачная технология DEP – DATA EXECUTION PREVENTION. Реализованный программно в 32-битной версии Windows Vista, в 64-разрядной версии операционной системы NX реализован аппаратно. Понятное дело, что аппаратно реализованная функция DEP более надежна, поскольку здесь на страже нашей безопасности стоит само «железо».
Чтобы лучше понять, что же такое NX, необходимо разобраться в DEP.
DEP, или предотвращение выполнения данных, – используется для предотвращения проникновения на компьютер вирусов и других угроз безопасности, выполняющих вредоносный код из областей памяти, которые должны использоваться только операционной системой Windows и другими программами. В ходе своей работы DEP следит, чтобы программы использовали системную память безопасным образом. Для этого DEP работает отдельно или вместе с совместимыми микропроцессорами и помечает некоторые области как «невыполняемые». Если программа пытается запустить код (любой код) из защищенной области, DEP закрывает программу и отображает уведомление (подобный метод инфекции, описанный выше, при котором вредоносный код выполняется из запрещенных областей памяти, реализуется посредством переполнения буфера).
Механизм переполнения буфера, в свою очередь, заключается в следующем. Предположим, что некая процедура для хранения данных использует буфер. Буфер находится в стеке (в определенной области памяти, которая используется во время выполнения программы). Представим в стеке несколько переменных и адрес возврата функции – число, показывающее, куда передать управление после выполнения текущей процедуры. Каким образом программа записывает данные в N-й байт буфера? К адресу начала буфера прибавляется число N. Полученный результат и есть адрес, по которому будут записаны данные. Если размер буфера равен 1024 байт, а мы попытаемся «втиснуть» в него больше, то некоторая часть данных попадет в другую область памяти. Может произойти так, что адрес возврата функции затеряется, и, как следствие, программа выполнит не тот код, на который указывал предыдущий адрес возврата.
Возвращаясь к NX и резюмируя вышесказанное, следует отметить: NX позволяет программному обеспечению помечать сегменты памяти, в которых будут храниться только данные, и процессор не позволит приложениям и службам исполнять произвольный код в этих сегментах.
'Капитально… ' – скажет кто-нибудь из читателей. Действительно, капитально, если бы не одно но.
Методология обхода аппаратной реализации DEP давно уже отработана и поставлена, если так можно выразиться, на поток (подробную информацию об обходе аппаратной реализации DEP можно найти по адресу www.securityLab.ru).
ASLR
Ну что ж, продолжим наш экскурс в технологии защиты новой линейки 6.0.
Фанфары и салют! Наш следующий подопытный конкурсант, призванный сделать Windows Vista сверхзащищенной системой, – это ASLR (Address Space Layout Randomization), или, по-нашему, технология,