Введение
Операционная система Windows NT и ее следующий представитель
Windows 2000, благодаря своим современным принципам построения, защищенности,
гибкости, а также встроенной сетевой поддержке и мощным сетевым возможностям,
получила широкое распространение. Поэтому встает насущная проблема реализации
систем защиты, которые могли бы встраиваться в ОС Windows NT, расширяя
ее возможности и обеспечивая функции защиты сетевой информации.
Отметим сразу, что базовая архитектура ядра ОС Windows NT практически
не изменилась при переходе к Windows 2000, поэтому почти все, что описано
в этой книге верно как для ОС Windows NT, так и для Windows 2000.
В книге помимо базовых основ написания драйверов, являющихся неотъемлемыми
компонентами средств защиты информации, представлена общая и сетевая архитектура
ОС Windows NT. Описание архитектуры необходимо для определения предоставляемых
возможностей по реализации и встраиванию средств защиты сетевой информации,
а также для сравнения возможных способов реализации защиты и определения
наиболее предпочтительных способов. Исследование архитектуры ОС Windows
NT позволяет определить не только то, как и куда можно встроить средство
защиты, но и то, как этому средству предоставить наибольшие возможности
со стороны операционной системы, поскольку от этого зависит решение конкретных
задач по защите, которые оно сможет реализовать.
Знание архитектуры ОС и драйверов применительно к сфере защиты информации
необходимо с различных точек зрения:
С точки зрения средств защиты информации, в том числе
и нестандартных (не упомянутых в документации к ОС).
С точки зрения преодоления средств защиты.
Допустим, нам необходимо разработать средство
защиты. Его типовая структура на данный момент выглядит примерно так:
![](images/1-1.gif)
Реализация почти всех перечисленных элементов системы
защиты для ОС NT возможна только с применением драйверов:
Защита локальных данных - либо драйвер шифрующей файловой
системы, либо драйвер-фильтр для прозрачного шифрования, либо перехват
вызовов системных сервисов.
Защита сетевых данных - драйвер протокола, NDIS-драйвер
промежуточного уровня, собственная сетевая служба, фильтр стандартной
сетевой службы (такие службы реализованы как файловые системы), перехват
вызовов системных сервисов.
Выявление нарушителя для всех вышеприведенных вариантов
- анализ событий, регистрация в журнале, запрос на подтверждение подозрительных
действий.
Для специализированного оборудования должны быть разработаны
драйверы для интеграции в эту схему.
В зависимости от конкретной постановки задачи должен быть выбран наиболее
подходящий способ ее решения. Одного ответа на все случаи жизни быть не
может, так как два основных критерия выбора решения:
критерий максимальной простоты реализации;
критерий максимальной универсальности противоречат
друг другу: чем более универсальным может быть вариант реализации, тем
сложнее его реализация и наоборот.
В качестве примера можно привести задачу реализации
защиты сетевого трафика. Наиболее универсальным (с точки зрения полноты
контролируемого трафика) и, на первый взгляд, простым в этом случае будет
являться NDIS-драйвер промежуточного уровня. Однако, по мере усложнения
системы и приближения ее к коммерческой реализации, будут возникать более
серьезные проблемы. Например, такая система должна знать форматы всех
протоколов в системе, в том числе и тех, которые в данный момент даже
не созданы.
При выборе способа реализации системы жизненно важным может быть также
вопрос документированности этого способа, при этом надо учитывать, что
большая часть ОС NT не документирована.
Драйверы ядра можно разбить на 2 больших класса: драйверы аппаратных устройств
и драйверы виртуальных устройств:
- 1. Архитектура NT исключает использование устройства,
если для него нет драйвера. Прикладному ПО доступ к аппаратуре запрещен.
Поэтому самым очевидным примером драйверов является драйвер аппаратного
устройства, предоставляющий прикладным программам интерфейс доступа
к устройству. В области защиты информации задача написания таких драйверов
весьма актуальна.
2. Драйвер виртуального устройства не работает с каким либо специализированным
аппаратным устройством, однако, предоставляет прикладным программам
такие возможности по работе со стандартными ресурсами компьютера и ОС
(процессор, память, порты, регистры, служебные структуры ОС), которые
без драйвера были бы недоступны.
Что конкретно можно сделать с помощью драйвера виртуального
устройства?
Как будет видно из следующих разделов, системная архитектура NT представляет
собой набор модулей, связанных друг с другом стандартными, но далеко не
всегда документированными интерфейсами. Благодаря этим интерфейсам можно
производить как замену стандартных модулей на собственные, так и вставлять
новые модули
в «разрыв» связей между старыми. Такое устройство ОС позволяет разрабатывать
новые модули (драйверы) для различных целей:
«прозрачная», то есть невидимая для прикладных программ,
обработка данных, например, шифрование и компрессия данных на диске
или в компьютерной сети;
расширение набора предоставляемых ОС сервисов;
«прозрачное» сканирование на наличие вирусов;
написание вирусов и закладок;
средства сбора статистики о событиях для различных
компонентов системы.
Следует иметь в виду, что помимо общих правил разработки
и взаимодействия
драйверов существуют специальные правила для особых типов драйверов. В
качестве примера можно привести драйверы файловой системы FSD и сетевые
драйверы - архитектура NDIS и TDI.
Необходимо остановиться на состоянии изученности данной области. Руководств
по разработке драйверов для ОС Windows NT, изданных на русском языке,
а также информации в области архитектуры ОС Windows NT гораздо меньше,
чем для обычного программирования. В зарубежной литературе также очень
мало книг, посвященных данной тематике. Что касается подмножества этой
тематики - сетевой архитектуры, сетевых интерфейсов и сетевых драйверов,
то соответствующей специализированной литературы практически нет. Основным
источником информации является документация Microsoft Windows NT Device
Driver Kit Version 4.0 и документация Microsoft Platform Software Development
Kit.
Перечисленные источники дают информацию об общей и сетевой архитектуре,
но никак не затрагивают вопросы реализации средств защиты сетевой информации.
При чтении этой книги настоятельно рекомендуется иметь под рукой:
справочник по Visual C++;
MSDN library;
справочник по командам ассемблера.
|