Даже если веб-узел неизвестен службе антифишинга, обозреватель Internet Explorer 7 может проверить деятельность веб-узла и сообщить пользователю о подозрительных действиях (например, о сборе сведений о пользователе при отсутствии сертификата безопасного соединения (SSL). В этом случае с помощью функции антифишинга сбор сведений будет предотвращен прежде, чем веб-узел появится в официальном списке мошеннических веб-узлов.
При работе в обозревателе Internet Explorer 7 функция антифишинга по умолчанию настроена таким образом, чтобы пользователь мог включить или отключить ее. В параметрах групповой политики, описанных в предыдущей главе, нельзя изменить это поведение по умолчанию. Тем не менее, администраторы могут контролировать действие функции антифишинга с помощью групповой политики.
Просмотреть и настроить параметры групповой политики, касающиеся функции антифишинга, можно в следующем разделе в редакторе объектов групповой политики.
Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Internet Explorer
Вредоносное ПО может завладеть пользовательской машиной с использованием переполнения буфера или путем исполнения кода в областях памяти, предназначенной для хранения данных. SDL и другие аналогичные инструменты способны предотвратить возможность переполнения буфера еще на стадии проектирования или программирования, однако существует еще один путь борьбы с переполнением – использование технологий NX (NoExecute) на аппаратном уровне. NX позволяет программному обеспечению помечать сегменты памяти, в которых будут хранится только данные, и процессор не позволит приложениям и службам исполнять произвольный код в этих сегментах.
Множество современных процессоров поддерживают ту или иную форму NX, и Microsoft, в свою очередь, начиная с WindowsXPSP2, включила поддержку процессоров с NX-технологией посредством инструмента DataExecutionPrevention. WindowsVista обеспечивает дополнительную поддержку NX, позволяя производителям ПО встраивать защиту NX в свои программные продукты. Независимые продавцы ПО могут помечать свои продукты как NX-совместимые, что позволит повысить безопасность при загрузке программы. Данный подход позволяет значительно увеличить количество программных продуктов, поддерживающих защиту NX. Особенно это актуально для 32-битных платформ, поскольку в них стандартная политика совместимости для NX сконфигурирована только для защиты компонентов ОС. На 64-битных версиях Windows защита NX – стандарт.
(AddressSpaceLayoutRandomization (ASLR)) – это еще один вид защиты в ОС WindowsVista, который затрудняет использование системных функций вредоносным ПО. Каждый раз, когда компьютер перезагружается, ASLR в случайном порядке назначает 1 из 256 возможных вариантов адреса для расположения ключевых системных DLL и EXE файлов. Это осложняет эксплоиту задачу поиска нужных файлов, а, следовательно, противодействует выполнению его функций. ASLR лучше использовать в связке с DataExecutionPrevention, потому что в некоторых случаях компонент DataExecutionPrevention можно обойти путем построения эксплоита, который сам по себе не выполняется (он вызывает системные функции для атаки).
WindowsVista также содержит в себе ряд улучшений по сравнению с WindowsXPSP2, связанный с определением переполнения «кучи» (области памяти, выделяемой программе для динамически размещаемых структур данных). При вмешательстве в буфер «кучи» к ОС поступает сигнал, и она, в свою очередь, может немедленно завершить скомпрометированную программу, тем самым сократив ущерб от вмешательства. Эта технология используется для защиты компонентов ОС, включая встроенные системные службы, хотя может использоваться и сторонними производителями ПО через специальный одиночный API-вызов.
64-битные версии WindowsVista поддерживают технологию защиты ядра (иногда используется термин PatchGuard), которая запрещает неавторизованному ПО изменять ядро Windows.
Для того чтобы разобраться в сути данной технологии, необходимо понять, что означает термин kernelpatching (изменение ядра).
Kernelpatching – это техника, использующая внутренние системные вызовы, а также различные неподдерживаемые ОС механизмы, с целью изменения или замены кода, а, возможно, и критических структур данных ядра Windows на другой «неизвестный» код или данные, которые могут быть и вредоносными. Под понятием «неизвестный» имеется в виду код, не авторизованный Microsoft как часть ядра Windows.
Производители ПО иногда патчат ядро для своих целей, изменяя адрес функции-обработчика системного вызова (указатель функции) в таблице системных вызовов (systemservicetable, SST), которая представляет собой массив из указателей функций, находящихся в памяти. Такая процедура изменения адреса называется хуком (hook). Когда выполняется любой системный вызов (например, NtCreateProcess), диспетчер системных вызовов по номеру вызова восстанавливает адрес функции-обработчика данного системного вызова. Соответственно, если поменять адрес функции-обработчика, на адрес начала «неизвестного» кода, диспетчер системных вызовов перейдет по этому адресу, и «неизвестный» код будет исполнен. Именно по этой причине модификация ядра запрещена в 64-битных версиях WindowsVista. Конкретнее запрещена модификация следующих компонентов ядра:
– Таблицы системных вызовов (systemservicetables, SST)
– Таблица прерываний (interrupt descriptor table (IDT))
– Таблица глобальных дескрипторов (global descriptor table (GDT))
– Изменение любой части ядра (работает только на AMD64-системах)
При попытке изменения вышеописанных частей ядра операционная система генерирует bugcheck и завершает свою работу. Соответственно, для своей корректной работы приложения и драйверы не должны изменять структуру данных частей ядра. Со временем, список защищаемых компонентов ядра может быть увеличен.
По заявлениям Microsoft, систему защиты ядра отключить нельзя. Защита ядра автоматически отключается лишь в случае работы в системе отладчика ядра. Ядро может изменяться и официальными патчами от Microsoft.
Для того чтобы пользователи могли видеть поставщиков драйверов и других программных продуктов, начиная с Windows 2000, в ОС присутствует механизм проверки цифровой подписи драйверов. Хотя раньше и была возможность запретить установку неподписанных драйверов, в конфигурации по умолчанию пользователь лишь предупреждался о том, что собирается устанавливать неподписанный драйвер. Системные администраторы, однако, могли заблокировать установку неподписанных драйверов посредством Групповой политики (GroupPolicy), но, поскольку, количество нужных неподписанных драйверов было достаточно велико, администраторы не пользовались этой возможностью. Вредоносное программное обеспечение обычно устанавливается скрытно от пользователя, и, поскольку никаких проверок изменения ядра до появления WindowsVista не было, вредоносное ПО успешно устанавливалось (имеется в виду, что установка производилась от имени пользователя с административными привилегиями).
При установке WindowsVista на 64-битные системы их безопасность на уровне ядра значительно возрастает в случае, если все драйверы режима ядра (kernelmode) имеют цифровую подпись. Цифровая подпись обеспечивает подлинность и целостность кода. Поврежденный модуль ядра не загрузится. Любой драйвер, не имеющей соответствующей цифровой подписи не получит доступа к ядру и не загрузится.
Хотя подписанный драйвер и не является гарантией безопасности, все равно он помогает определить и предотвратить множество злонамеренных атак, в тоже время позволяя Microsoft помочь разработчикам улучшить общее качество драйверов и сократить число сбоев по вине последних.
Обязательное подписывание драйверов также помогает повысить надежность WindowsVista, потому что большинство сбоев ОС – уязвимости в драйверах режима ядра. Принуждая авторов этих драйверов идентифицировать себя, Microsoft облегчает себе задачу определения причин сбоя ОС и позволяет работать с производителями с целью разрешения возникших проблем. На основе вышеизложенного, можно сделать такой вывод: неподписанные драйверы на WindowsVista установить не удастся.
WindowsServiceHardening
Системные службы это фоновые процессы, которые загружаются для поддержки ключевых функций ОС. Они всегда были целью злонамеренных атак, потому что обычно загружаются с самыми высокими привилегиями в системе, то есть под учетной записью LocalSystem. Атаки, направленные на системные службы могут вызвать серьезные проблемы, поскольку позволяют исполнять произвольный код с административными полномочиями на машинах пользователей (черви Slammer, Blaster и Sasser атаковали именно системные службы).
Чтобы каким-то образом ослабить данную угрозу, WindowsVista предлагает концепцию «ограниченных служб» (restrictedservices), которые загружаются с минимальными привилегиями, и влияние их на компьютер и сеть ограничено. Данный подход позволяет существенно сократить число служб, способных нанести серьезный вред пользовательской машине.
Персональный межсетевой экран в WindowsVista тесно связан с компонентом WindowsServiceHardening, который позволяет усилить защиту как входящего, так и исходящего трафика в процессе межсетевого взаимодействия. Необходимо добавить, что службы могут быть однозначно идентифицированы, что позволяет вести списки контроля доступа для каждой службы, разрешая, например, службам записывать только в определенные места файловой системы, реестра или других системных ресурсов.
Встроенные службы Windows имеют собственные профили, которые определяют необходимые права для каждой службы, правила доступа к системным ресурсам и сетевые порты, которые службам разрешено использовать. Если служба попытается отправить или получить данные с сетевого порта, который ей не разрешен для использования, межсетевой экран заблокирует эту попытку. Например, службе удаленного вызова процедур (RemoteProcedureCallservice) запрещено перемещать системные файлы, модифицировать реестр, вмешиваться в конфигурации других служб в системе (например, ей нельзя изменять конфигурацию и сигнатуры вирусов антивирусного ПО).