На главную страницу
Форум txt.version   




Статья :: Программирование систем защиты: Перехват операций открытия, создания и удаления файлов
 

Перехват операций открытия, создания и удаления файлов

Реализация драйвером перехвата файловых операций основана на недокументированном механизме перехвата системных сервисов, описанном в разделе «Реализация защиты на уровне собственного API для ОС Windows NT».
Принцип функционирования драйвера основан на механизме замены адресов функций, предоставляемых «родным» API. Обработчик прерывания int 2E для вызова соответствующего системного сервиса использует таблицу распределения системных сервисов KeServiceDescriptorTable, экспортируемую ntoskrnl.exe.
Во время инициализации драйвера в функции DriverEntry, после успешного создания объекта-устройства, устанавливаются собственные обработчики файловых операций. Для этого сначала надо получить адрес таблицы распределения системных сервисов:

ServiceTable = KeServicepescriptorTable;

Зная индексный номер функции, реализующей системный сервис, можно ио таблице определить адрес ее начала и заменить его на адрес начала собственного обработчика режима ядра.
Это делается следующим образом:

#define SYSCALL(_function)
ServiceTable->ServiceTable[ *(PULONG)((PUCHAR)_function+l)]
RealCreateFile = SYSCALL( ZwCreateFile );
//RealCreateFile - оригинальный обработчик создания файла;
SYSCALL( ZwCreateFile ) = (PVOID) HookCreateFile;
//HookCreateFile - собственный обработчик создания файла;
RealO'penFile = SYSCALL ( ZwOpenFile );
//RealOpenFile - оригинальный обработчик открытия файла;
SYSCALL( ZwOpenFile ) = (PVOID) HookOpenFile;
//HookOpenFile - собственный обработчик открытия файла;

При перехвате функций ZwCreateFile и ZwOpenFile необходимо учитывать, что операции запуска исполняемых файлов, переименования и удаления объектов производятся именно этими функциями при установленных следующим образом флагах: .
DesiredAccess & DELETE - операция удаления файла,
DesiredAccess & FILE_EXECUTE) ||
(DesiredAccess & GENERIC_EXECUTE) - запуск исполняемого файла.
Отдельную задачу представляет собой различение операций с объектами типа PIPE или СОМ-порт. В ряде случаев это может быть сделано по имени, например, memcmp(AnsiString.Buffer, "\\dosdevices\\com", 15) после выполнения фрагмента кода:

UnString.Length = (USHORT)
ObjectAttributes->ObjectName->Length;
UnString.MaximumLength = (USHORT)
ObjectAttributes->ObjectName-> ., ,.
MaximumLength-; . ,
UnString.Buffer = ObjectAttributes->ObjectName->Buffer;.
RtlUnicodeStringToAnsiString
.. ( SAnsiString, SUnString, TRUE ),.;

 

Программирование систем защиты: Перехват операций открытия, создания и удаления файлов

страницы в данном разделе 
 Программирование систем защиты: Глава 5. Общие вопросы обеспечения безопасности в операционной среде Windows NT/2000  Программирование систем защиты: Механизм идентификации и аутентификации в ОС Windows NT.Общее описание
 Программирование систем защиты: Основные сведения о процессе Winlogon и его состояниях  Программирование систем защиты: Протокол взаимодействия процесса Winlogon и библиотеки GINA
 Программирование систем защиты: Локальная аутентификация пользователя в Windows NT  Программирование систем защиты: Сетевая аутентификация пользователя в Windows NT
 Программирование систем защиты: Основные подходы к созданию изолированной программной среды  Программирование систем защиты: Макет системы защиты от несанкционированного доступа
 Программирование систем защиты: Перехват операций открытия, создания и удаления файлов  Программирование систем защиты: Собственный обработчик создания файла и собственный обработчик открытия файла
 Программирование систем защиты: Определение имени процесса  Программирование систем защиты: Вывод сообщений на «синий» экран
 Программирование систем защиты: Процедура распределения IRP_MJ_DEVICE_CONTROL драйвера контроля доступа  Программирование систем защиты: Модифицированная библиотека Gina


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)
Flutter
React Native
Xamarin

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
React Native
demo forum