Главная » Просмотр файлов » Диссертация Кочарян С.Г — копия

Диссертация Кочарян С.Г — копия (1195359), страница 6

Файл №1195359 Диссертация Кочарян С.Г — копия (Модернизация файервола для защиты информации в ОС Windows) 6 страницаДиссертация Кочарян С.Г — копия (1195359) страница 62020-10-01СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

[Version]

Signature="$Chicago$"

Class=ExampleDrvClass

ClassGuid={DC16BE99-C06B-4801-A144-43A98BB99052}

. . .

[ClassInstall32]

Addreg=ExampleClassReg

[ExampleClassReg] ; секция изменений в Реестре

HKR,,,0,%ClassName% ; имя класса вводится через маркер %ClassName%

[Strings] ; Дополняем секцию значением маркера

ClassName="Example's Driver Class"

На рисунке 4.2 отображено появление нового класса в диспетчере устройств.

Рисунок 4.2 - Новый класс в окне Диспетчера устройств

4.1.7 Секции [DefaultInstall32.Xxx] и [DefaultInstall32.Xxx.Services]

В Windows 98 была возможность установки драйвера по нажатию правой кнопки мышки в программе Проводник на inf-файле с последующим выборе в открывшемся меню пункта "Установить". В Windows 2000/XP/2003 для такой установки необходимо наличие в inf-файле секций [DefaultInstall32.Xxx] и [DefaultInstall32.Xxx.Services], где "Ххх" обозначает суффиксы декорирования имен nt, ntx86, ntia64.

Использование таких секций и усеченная установка из программы Проводник (то есть без вовлечения Мастера Установки) зачастую дают неприемлемые результаты, поэтому рекомендуется при установке драйверов использовать обычный способ установки через Мастера Установки новых устройств.

Установка драйвера при помощи inf-файлов является приемлемым и общепринятым решением для проведения установки драйвера в системе, особенно если драйвер следует передать для использования другим людям, которые не могут и вовсе не обязаны быть в курсе тонкостей установки разработанного драйвера.









5 Фильтр пакетов

Одной из основных функций драйвера является фильтрация пакетов. Проходящих через него пакетов. Так как мой драйвер является Минипортом промежуточного звена NDIS. Через него проходят все пакеты, направляемые на сетевые адаптеры, модемы и виртуальные соединения (VPN), а также все получаемые пакеты.

Для передачи пакетов в NDIS используются специальные пакеты. При получении данных из сети драйвер сетевой карты выделяет ресурсы под NDIS-пакет и помещает в него полученные данные. Также работает и драйвер протокола.

NDIS-пакет является структурой NDIS_PACKET которая содержит следующие поля:

  • поле PhysicalCount содержит количество физических страниц в пакете;

  • поле TotalLength содержит длину данных в пакете;

  • поля Head, Tail ууказывают на первый и последний буферы пакета;

  • поле Flags – Флаги;

  • закрытые данные для драйвера и минипорта.

На рисунке 5.1 показана структура NDIS-пакета.

Буферы являются структурой NDIS_BUFFER, которая в свою очередь является переименованной структурой MDL. Структура MDL имеет следующие поля:

  • поле Next указатель на следующий буфер;

  • поля Size содержит размер буфера;

  • поля MdlFlags содержит флаги;

  • поле MappedSystemVa указывает начальный виртуальный адрес страници;

  • поле StartVa указывает начальный виртуальный адрес буфера;

  • поле ByteCount содержит количество байт в буфере;

  • поле ByteOffset содержит смещение от начала страници.

Структура NDIS буфера также отображена на рисунке 5.1.

Рисунок 5.1 – Структура и взаимодействие NDIS пакета, NDIS буфера, и содержащегося в NDIS пакете Ethernet пакета

В NDIS-пакете данные идут не подряд, а разбиваются кусочки. За каждый такой кусочек отвечает свой буфер. Обычно разные заголовки вложенных пакетов идут в отдельных буферах это связано с тем что данные заголовки заполняются разными драйверами, так же весь пакет может быть в одном буфере, обычно такую структуру имеет пакет, идущий от драйвера сетевой карты к драйверу протокола.

В связи с такой сложной организацией пакета для доступа к данным пакета пришлось разрабатывать специальные функции:

  • функция GetBufferSize определяет общий размер цепочки буферов;

  • функция GetPacketDataSize определяет размер данных в пакете;

  • функция CopyPacketData копирует весь Ethernet пакет в буфер.

На рисунке 5.2 показан принцип заполнения буфера в NDIS-пакете.

Рисунок 5.2 – Заполнение буферов в NDIS-пакете

Для фильтрации в точках входа MiniportSendPackets и ProtocolReceive вызывается функция фильтрации FilterIP, которая разрешает или запрещает пакет в соответствии с действующими правилами.

Функция FilterIP копирует содержимое в отдельный буфер, это необходимо из-за сложной организации данных в пакете. После этого он вызывает функцию GetPacketTCPIPInfoEX, которая расшифровывает данные в пакете для TCPIP протокола, если пакет не является TCPIP пакетом, то функция GetPacketTCPIPInfoEX возвращает false и в результате пакет разрешается для передачи, после чего при помощи функции GetPraviloID определяется правило под которое под подает пакет. Если пакет не подпадает, под какое-либо правило, то пакет разрешается для передачи. Также ведётся лог всех обработанных пакетов, для этого вызывается функция AddFirewallLog.

В функции GetPacketTCPIPInfoEX в начале расшифровывается Ethernet заголовок, что изображено на рисунке 5.3. Ethernet заголовок на аппаратном и программном уровне имеет разную структуру из-за того, что часть полей таких рак Преамбула, начальный разделитель и контрольная сумма генерируются чипом сетевой карты.

Рисунок 5.3 – Ethernet заголовок на програмном и аппаратном уроне

Для определения содержимого пакета используется поле тип пакета. Для протокола TCP/IP тип равен 0x0800. IP заголовок начинается сразу после поля тип в Ethernet заголовке, то есть со смещение 14 от начала пакета.

На рисунке 5.4 изображен IP-заголовок.

Рисунок 5.4 – IP заголовок

В IP заголовке для проверки в начале, определяю версию протокола, она должна быть равна четырем. После этого из поля iph_verlen получает размер заголовка в 32-х битовых словах. Если пакет является TCP пакетом, то определяю TCP заголовок и данные в нём. Аналогично поступаю, если пакет является UDP пакетом. Вся информация об анализе пакета помещается в структуру TPacketTCPIPInfo.

Функция GetPraviloID просматривает таблицу правил и ищет правило, под которое подпадает пакет. Если правило чётко указывает что пакет надо запретить или разрешить, то функция возвращает номер правила. А если в правиле указан фильтр, то пакет передаётся в фильтр, который определяет, запретить пакет или нет, если нет, то просматриваются следующие правила.






















6 Фильтр HTTP трафика

Фильтр HTTP трафика простаивает, пакеты и выискивает заголовки HTTP запросов, после этого расшифровывает их. Определяет Host и URL после чего просматривает на совпадение со списками, если фрагмент Host или URL совпал со списком то пакет содержащий данный запрос удаляется.

HTTP основывается на парадигме запросов/ответов. Запрашивающая программа (обычно она называется клиент) устанавливает связь с обслуживающей программой-получателем (обычно называется сервер) и посылает запрос серверу в следующей форме: метод запроса, URI, версия протокола, за которой следует MIME-подобное сообщение, содержащее управляющую информацию запроса, информацию о клиенте и, может быть, тело сообщения. Сервер отвечает сообщением, содержащим строку статуса (включая версию протокола и код статуса - успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, вероятно, само тело ответа. Следует отметить, что одна программа может быть одновременно и клиентом и сервером. Использование этих терминов в данном тексте относится только к роли, выполняемой программой в течение данного конкретного сеанса связи, а не к общим функциям программы.

В Интернет коммуникации обычно основываются на TCP/IP протоколах. Для WWW номер порта по умолчанию – TCP 80, но также могут быть использованы и другие номера портов – это не исключает возможности использовать HTTP в качестве протокола верхнего уровня. Поэтому при создании фильтра HTTP пакетов должен определять является ли пакет HTTP запросом или нет в независимости от порта на который или с которого идут пакеты.

Для большинства приложений сеанс связи открывается клиентом для каждого запроса и закрывается сервером после окончания ответа на запрос. Тем не менее, это не является особенностью протокола. И клиент, и сервер должны иметь возможность закрывать сеанс связи, например, в результате какого-нибудь действия пользователя. В любом случае, разрыв связи, инициированный любой стороной, прерывает текущий запрос, независимо от его статуса.

Фильтр HTTP трафика фильтрует только запросы так, как в HTTP протоколе сервер не может передать какие либо данные без запроса.

Запрос – это сообщение, посылаемое клиентом серверу.
Первая строка этого сообщения включает в себя метод, который должен быть применен к запрашиваемому ресурсу, идентификатор ресурса и используемую версию протокола. Для совместимости с протоколом HTTP/0.9, существует два формата HTTP запроса:

  • простой запрос: «GET» SP Запрашиваемый-URI CRLF;

  • полный запрос: Строка-Статус;

*(Общий-Заголовок | Заголовок-Запроса | Заголовок-Содержания) CRLF

[Содержание-Запроса ]

Если HTTP/1.0 сервер получает Простой-Запрос, он должен отвечать Простым-Ответом HTTP/0.9. HTTP/1.0 клиент, способный обрабатывать Полный-Ответ, никогда не должен посылать Простой-Запрос.

Запрашиваемый-URI может быть двух типов: абсолютный-URL и относительный-URL. Абсолютный-URL допускается только при обращении к proxy серверу. Строка запроса, например, может иметь такой вид:

« GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.0 »

Относительный-URL используется при прямом соединении. Например, для « http://www.w3.org/pub/WWW/TheProject.html » необходимо соединится с серверов www.w3.org, через TCP соединение на 80 порт и послать запрос:

« GET /pub/WWW/TheProject.html HTTP/1.0 »

На одном сервере может быть несколько обслуживаемы хостов. В запрос добавляется параметр Host который записывается следующим образом:

Host: SP Имя_хоста CRLF

Заголовок полного запроса состоит из строк заканчивающихся символами CRLF и заканчивается пустой строкой то есть символами CRLFCRLF.
Для анализа HTTP запросов используется функция FilterHTTP которая анализирует данные в пакете и если он является HTTP запросом то извлекает из него такие данные как URL и Host. Для этого она делит пакет на строки дотех пор пока не поподётся пустая строка или не закончатся данные в пакете. После этого происходит анализ первой строки запроса.

Первая строка запроса является простым запросом или Статус строкой полного запроса.

Строка Статус начинается со строки с названием метода, за которым следует URI-Запроса и использующаяся версия протокола. Строка Статус заканчивается символами CRLF. Элементы строки разделяются пробелами (SP). В Строке Статус не допускаются символы LF и CR, за исключением заключающей последовательности CRLF.

Строка-Статус: Метод SP URI-Запроса SP «Версия-HTTP» CRLF

Следует отметить, что отличие Строки Статус Полного-Запроса от Строки Статус Простого- Запроса заключается в присутствии поля «Версия-HTTP».

Для определения является ли первое слова в стороке методом HTTP запросов вызывается функция IsHTTPMetod. Которая которая вкачестве параметря получает первую строку запроса. В в HTTP запросе могут быть сдующие методы: GET, HEAD, PUT, POST, DELETE, LINK, UNLINK

Метод GET служит для получения любой информации, идентифицированной URI-Запроса. Если URI- Запроса ссылается на процесс, выдающий данные, в качестве ответа будут выступать данные, сгенерированные данным процессом, а не код самого процесса (если только это не является выходными данными процесса).

Характеристики

Тип файла
Документ
Размер
654,38 Kb
Высшее учебное заведение

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6709
Авторов
на СтудИзбе
288
Средний доход
с одного платного файла
Обучение Подробнее