Иллюстрированный самоучитель по программированию систем защиты

Введение

В качестве примера можно привести задачу реализации защиты сетевого трафика. Наиболее универсальным (с точки зрения полноты контролируемого трафика) и, на первый взгляд, простым в этом случае будет являться 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;
  • справочник по командам ассемблера.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.