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), или, по-нашему, технология, обеспечивающая случайное расположение адресного пространства.
Говоря о технологии ASLR, следует все же отдать должное Microsoft в обеспечении безопасности Windows Vista. Введя ASLR, спецы из корпорации, ни много ни мало, позаботились о том, чтобы усложнить жизнь писателям вирусов. По мнению разработчиков, ASLR практически полностью исключает угрозу удаленных атак для Windows-платформ.
Все дело в том, что в настоящее время Windows предусматривает загрузку системных файлов с использованием одинакового смещения в памяти при загрузке системы, что позволяет посредством вирусного ПО внедрять код "по месту назначения". Суть новой технологии заключается в том, что в x64-версиях Vista системные файлы загружаются в случайные адреса памяти, что существенно осложняет написание работающего вируса. По заверениям Microsoft, свыше 99 % всех удаленных атак на x64-версии Vista закончатся крахом.
Смысл ASLR прост и заключается в следующем: каждый раз, когда компьютер перезагружается, ASLR в случайном порядке назначает один из 256 возможных вариантов адреса для расположения ключевых системных DLL-и EXE-файлов. Это осложняет поиск вирусом нужных файлов и, как следствие, препятствует его выполнению. Нетрудно догадаться, что теперь существует всего лишь один шанс из 256, что текущая загрузка файлов произойдет с адреса с тем же смещением, что и при предыдущей загрузке.
Потрясает? Действительно. Введение данной технологии выведет защиту операционных систем на принципиально новый уровень. А вот на какой уровень данное нововведение выведет написание вирусного ПО?
Как прокомментировал в списке почтовой рассылки BugTraq исследователь из Next Generation Security Software Дэвид Личфилд (David Litchfield), "дистанционное использование переполнений значительно усложнилось", на что некто под псевдонимом cntex в ответе Личфилду заверил, что ASLR "уже много лет элементарно обходится в Linux".
Ну что ж, рассмотрение "самых страшных и могущественных" технологий защиты NT 6.0 (большинство из которых реализовано аппаратно) закончено, и, как видите, не так все и безоблачно.
Приступим к рассмотрению технологий защиты прикладного уровня, реализованных в большей части программно.
Защитник Windows
Нововведением Windows новой линейки стал Защитник Windows – как оно следует из названия, компонент, призванный активно защищать нашу операционную систему.