Диссертация Кочарян С.Г — копия (1195359)
Текст из файла
Содержание
Введение 3
1 Среда и средства разработки 4
1.1 Комплект разработки драйверов Windows Device Driver Kit 4
1.2 Межсетевой экран 5
1.3 Среда NDIS 7
1.4 DDK 11
1.5 Сетевая модель OSI 12
2 Принципы работы межсетевого экрана 17
2.1 Брандмауэр с фильтрацией пакетов 17
2.2 Политика организации брандмауэра 18
3 Разработка NDIS драйвера в качестве межсетевого экрана 21
3.1 Структура драйвера 21
3.2 Загрузка и инициализация драйвера 23
3.3 Механизм передачи информации на уровень пользователя 25
4 Структура inf- файла 31
4.1 Секции inf-файла и основные общие правила ввода записей 31
4.1.1 Секция описания версии «Version» 33
4.1.2 Секция описания поставщика «Manufacturer» 36
4.1.3 Секция описания моделей аппаратуры «Models» 39
4.1.4 Секция «CopyFiles» 41
4.1.5 Секции «ServiceInstall» 45
4.1.6 Секция «ClassInstall32» 47
4.1.7 Секции [DefaultInstall32.Xxx] и [DefaultInstall32.Xxx.Services] 48
5 Фильтр пакетов 50
6 Фильтр HTTP трафика 55
7 Портирование драйвера на 64-битную систему. 61
8 Установка драйвера 70
9.1 Взаимодействие с драйвером 74
9.2 Загрузка драйвера 75
9.3 Результат работы драйвера 78
9.4 Отладка брандмауэра 79
9.4 Цифровое подписание драйвера 80
Заключение 84
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 85
Введение
Брандмауэр представляет собой систему сетевой безопасности, которая контролирует исходящий и входящий сетевой трафик, на основе определенных правил безопасности. Брандмауэр обычно создает барьер между внутренней и внешней сетью, например, интернетом, которая считается небезопасной и не надежной сетью. Брандмауэр Windows, который входит в стандартную поставку операционной системы Windows, не имеет практически никаких настроек присущих другим сетевым экранам. Большинство других Сетевых экранов, таких как Outpost и др, работают на уровне приложений и перехватывают функции сетевых библиотек. Но, судя из сетевой модели OSI перехват пакетов лучше всего делать между сетевым и канальным уровнями, так, как на сетевом и выше работает протокол TCP/IP, а на канальные такие протоколы как Ethernet, ATM, X.25 и другие. Именно для этого в операционных системах на чинная с DOS присутствует драйвер NDIS. NDIS — спецификация интерфейса сетевого драйвера, была разработана совместно фирмами Microsoft и 3Com для сопряжения драйверов сетевых адаптеров с операционной системой. Для разработки драйвера также потребуется специальный пакет программ DDK (Driver Development Kit). DDK- набор из средств разработки, заголовочных файлов, библиотек, утилит, программного кода примеров и документации, который позволяет программистам создавать драйверы для устройств по определённой технологии или для определённой платформы.
Большинство современных сетевых экранов являются платными и с закрытым исходным кодом, именно поэтому более экономично разработать свой сетевой экран, при том что все средства, необходимые для разработки драйвера являются бесплатными, DDK в свободном доступе можно скачать с сайта Microsoft, Visual Studio 2008 Trial Edition – Можно бесплатно использовать 90 дней.
1 Среда и средства разработки
1.1 Комплект разработки драйверов Windows Device Driver Kit
Программы, работающие в режиме ядра, не могут пользоваться обычными программными интерфейсами Win32, поэтому при разработке драйверов режима ядра нельзя использовать привычные для многих программистов Win32 заголовочные файлы и библиотеки. Для разработки программ Win32 компания Microsoft предлагает использовать комплект разработки программ Platform Software Development Kit (SDK), однако для разработки драйверов режима ядра потребуется комплект Windows Driver Development Kit (DDK). Помимо документации в этот комплект входят специальные заголовочные файлы и библиотеки, необходимые для обеспечения взаимодействия разрабатываемого вами кода и других модулей ядра Windows. После того будет установлен DDK, необходимо запустить Microsoft Visual С и добавить пути к файлам DDK к списку файлов, используемых компилятором и компоновщиком при создании исполняемого файла.
Среда программирования DDK несколько отличается от модели Win32. К наиболее значительным отличиям следует отнести:
-
в исходный код программ Win32 обязательно следует включить заголовочный файл windows.h, однако при разработке драйвера режима ядра этот заголовочный файл использовать нельзя. Вместо него в текст драйвера следует включить файл ntddk.h;
-
функция, являющаяся основной точкой входа для драйвера, называется DriverEntry(), но не WinMain() и не main(), как это принято в обычных программах;
-
некоторые типы данных Win32, такие как BYTE, WORD и DWORD, недоступны при разработке драйверов режима ядра. Вместо них в среде DDK следует использовать UCHAR, USHORT, UL0NG и т. п.
1.2 Межсетевой экран
Задача брандмауэра заключается в том, что он контролирует и фильтрует весь трафик между компьютером и другими сетями. Без использования фаерволла, на компьютер может поступать любой трафик. В случае, если брандмауэр включен, проходит только тот трафик, который разрешен правилами брандмауэра.
Брандмауэр – это набор программ фильтрации сетевых пакетов и маршрутизации. Такие программы определяют, можно ли пропустить данный пакет и если можно, то отправить его точно по назначению. Для того чтобы брандмауэр мог сделать это, ему необходимо определить набор правил фильтрации. Главная цель брандмауэра – контроль удаленного доступа извне или изнутри защищаемой сети или компьютера.
В основе работы брандмауэра – задание системы правил, определяющих условия прохождения пакетов. Каждый пакет проверяется на соответствие правилам, и по результатам проверки пакет либо пропускается, либо отбрасывается. В правилах могут быть установлены запреты или разрешения на прохождения пакетов, сформированных по протоколам тех или иных служб, приходящих с конкретного IP-адреса, запрашивающих определенный порт компьютера и т.д. В брандмауэр обычно встроен счетчик количества пакетов и байтов, подвергнутых проверке на соответствие определенному правилу.
При установке сетевых экранов выбирают разрешительную или запретительную стратегию. В работе это выглядит так: правила выстраивают в пронумерованном порядке. Приоритет правила убывает с ростом номера.
Пакеты пропускают сквозь строй правил, и если какое-то из них выставляет запрет, то дальше пакеты не пройдут. При запретительной стратегии последнее правило гласит: все запрещено, и пакеты, встретившие при проходе через строй разрешающее, правило с меньшим номером, не будут отвергнуты и пройдут до места назначения. Так что настройка брандмауэра сводится к формулированию правил и выстраиванию их в определенном порядке.
Брандмауэр позволяет частично решить проблемы, связанные с обеспечением безопасного функционирования вашей сети. Как бы хорошо он ни был настроен, если вы вовремя не обновили программный пакет, в котором была найдена уязвимость, или кто-то узнал ваши логин и пароль – ждите больших неприятностей. Основная цель брандмауэра – разрешать функционирование только тем службам, которым было явно разрешено работать в вашей сети или защищаемом компьютере.
Основными компонентами брандмауэра являются:
– политика безопасности сети;
– механизм аутентификации;
– механизм фильтрации пакетов.
Понятие "брандмауэр" может принимать различные значения в зависимости от принципа, положенного в основу работы средств защиты, сетевой архитектуры и схемы маршрутизации. Брандмауэры обычно разделяют на три типа:
– брандмауэр с фильтрацией пакетов;
– прикладной шлюз;
– универсальный Proxy-сервер.
Большинство брандмауэров с фильтрацией пакетов может пропускать или отбраковывать пакеты на основе информации, позволяющей ассоциировать данный пакет с конкретными отправителем и получателем
Брандмауэр с фильтрацией пакетов действует на сетевом и транспортном уровнях и реализуется в составе операционной системы. Источником информации для фильтрации является содержимое заголовков IP-пакетов, на основе которого брандмауэр принимает решение, по какому маршруту следует направить пакет.
1.3 Среда NDIS
С
етевые драйверы можно разделить на две категории: NDIS-драйверы (Network Driver Interface Specification) и TDI-драйверы (Transport Driver Interface). TDI-драйверы – это высокоуровневые драйверы, например, SMB-клиент, SMB-сервер, обертки SMB (NFFS, MSFS) и т.п. NDIS – это специальный драйвер (ему соответствует файл ndis.sys), который содержит функции, используемые низкоуровневыми сетевыми драйверами. NDIS как бы обволакивает низкоуровневые сетевые драйверы и является посредником в их общении между собой и с железом. По сути NDIS можно считать третьим ядром Windows. Чтобы более четко уяснить себе что из себя представляет NDIS можно посмотреть на рисунке 1.1.
Рисунок 1.1 – Структура NDIS драйвера
Из рисунка 1 видно, что NDIS-драйверы бывают трёх типов:
– минипорт-драйверы (драйверы адаптера);
– промежуточные драйверы (например, psched.sys);
– драйверы протокола (например, tcpip.sys).
Минипорт-драйверы
У каждой сетевой карты есть свой минипорт-драйвер. Через NDIS минипорт-драйвер получает команды. Функции минипорт-драйвера можно описать следующим образом:
-
производит инициализацию своего устройства (адаптера);
-
создание /включение/выключение/удаление сетевых подключений;
-
выдача клиенту или изменение параметров адаптера;
-
отправка пакетов;
-
получение пакетов;
-
оповещение ОС о состоянии адаптера;
-
перезагрузка и остановка адаптера;
Минипорт-драйвер содержит 22 стандартные callback-функции, с помощью которых он оповещает о различных событиях (некоторые из этих функций могут быть NULL, тогда драйвер о соответствующих событиях не оповещается). NDIS экспортирует около 150 функций для использования минипорт-драйверами.
Минипорт-драйверы бывают «Connectionless» (например, драйвер Ethernet-адаптера) и «Сonnection-oriented» (например, драйвер модема). У Сonnection-oriented драйверов система коллбэков чуть сложнее, в нее входят обработчики событий, связанных с подключением к каналу связи, отключением от канала, выбором канала (для беспроводных адаптеров) и т.п. Для некоторых операций Сonnection-oriented драйверы вызывают специальные функции NDIS, отличающиеся префиксом «Со» в имени (например, вместо NdisMIndicateReceivePacket Сonnection-oriented драйвер должен вызывать NdisMColndicateReceivePacket).
Каждый коллбэк выполняет свою задачу: выдача информации, отправка данных, прием данных и т.п. Подробнее можно посмотреть в хелпе к WDK (DDK). Там можно получить полную информацию о коллбэках.
Драйверы протоколов могут передоверять минипорт-драйверу (при условии, что минипорт-драйвер это умеет – либо сам, либо адаптер умеет это делать на аппаратном уровне) некоторые свои функции (например, разграничить контрольную сумму или цифровую подпись IP-пакета или принять решение, как фрагментировать большой ТСP-пакет). Это значительно повышает производитель сети.
NDIS состоит из обязательной части – самого себя (файл NDIS.SYS), и теоретически неограниченного количества пользовательских драйверов, которые этот самый NDIS.SYS оборачивает. При этом обязан выполнить некоторые действия, чтобы подсистема NDIS вообще посчитала его местным, и смогла интегрировать в свой «стек». Необходимые условия для этого:
-
драйвер должен сам себя зарегистрировать. Это означает то, что драйвер при загрузке указывает ядру, что он есть на самом деле и какого он типа;
-
драйвер должен предоставлять минимальный набор интерфейсных функций, которые он предоставляет NDIS'у. Собственно, за эти функции NDIS и будет тягать этот самый драйвер;
-
так же драйвер должен, в зависимости от своего типа, реализовать функции управления собой, которые так же тягаются во время выполнения. Отличие от предыдущего пункта в том, что эти функции для каждого типа драйвера уникальные.
Назначение драйвера (обычное назначение, т.е. для чего этот драйвер используется) устанавливается на этапе установки в его .INF файле.
Версии NDIS, поддерживающие различными версиями Windows, указаны в таблице 1.1.
Таблица 1.1 – Таблица версий NDIS и, поддерживающих их, версии ОС
Операционная система | Версия NDIS | Имя файла |
MS-DOS | 2.0 | ndis.sys |
Windows 3.11 | 3.0 | ndis.386 |
Windows NT 3.5 | 3.0 |
|
Windows 95 | 3.1 | ndis.vxd |
Windows 95 OSR2 | 4.0 | ndis.vxd |
Windows NT 4.0 | 4.0 | ndis.sys |
Windows 98 | 4.1 | ndis.vxd |
Windows NT 4.0 SP3 | 4.1 | ndis.sys |
Windows Me | 5.0 |
|
Windows 2000 | 5.0 | ndis.sys |
Windows XP | 5.1 | ndis.sys |
Windows Server 2003 | 5.1 | ndis.sys |
Windows Server 2003 SP1 | 5.1 | ndis.sys |
Windows CE 4.2 (Pocket PC 2003) | 5.1 | ndis.dll |
Windows CE 4.21 (Pocket PC 2003 SE) | 5.1 | ndis.dll |
Windows CE 5.2 (Windows Mobile 6) | 5.1 | ndis.dll |
Windows Server 2003 SP2 | 5.2 | ndis.sys |
Windows Vista | 6.0 | ndis.sys |
Windows Server 2008 | 6.1 | ndis.sys |
Windows 7 | 6.20 | ndis.sys |
Windows 8 | 6.30 | ndis.sys |
1.4 DDK
DDK (Driver Development Kit) – набор из средств разработки, утилит, библиотек, заголовочных файлов, программного кода примеров и документации, который позволяет программистам создавать драйверы для устройств по определённой технологии или для определённой платформы (программной или программно-аппаратной). Название произошло от более общего термина SDK (англ. Software Development Kit), которым обозначают комплекты для разработки программ вообще, не только драйверов.
SDK (software development kit) – комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.