Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Трассировка событий ядра






Компоненты, как правило, всех версий ядра и базовые драйвера оснащены средствами, осуществляющими трассировку событий в ядре. Трассировка используется разработчиками при анализе нештатной ситуации.

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

Трассировочные данные использует компонента, работающая в режиме пользователя, которая называется ETW (Event Tracing for Windows). Возможно использовать следующие опции этого приложения:

1) начинать и прекращать сессию протоколирования;

2) увеличивать и уменьшать буферные пулы;

3) определять те или иные события для протоколирования;

4) определять тот или иной объект, с которого надо снимать трассировочные данные.

К продуктам, реализующим механизмы ETW относятся: Active Directory и т.д. В целом выделяются так называемые классы трассировки, мониторинг которых можно осуществлять, а именно:

1) дисковый ввод-вывод,

2) файловый ввод-вывод,

3) конфигурирование, переконфигурирование оборудования,

загрузка-выгрузка образов, ошибки (отсутствие в реальной ОП виртуальных страниц),

4) создание, удаление процессов,

5) создание, удаление потоков,

6) сетевая активность.

Замечание: необходимо их применять для построения систем обнаружения вредоносной активности.

 

Wow64

Основная задача – эмуляция Win32 в 64-разрядную Windows.

Примечание: задача приблизительно такая же как обеспечение выполнения 16-разрядных DOS приложений в 32-разрядной Windows.

Процессоры 16-, 32-, 64-разрядные имеют разную систему команд, разное количество и форматы регистров, доступные пользовательскому коду и могут вызвать при запуске приложений конфликтные ситуации.

Wow64 относится к механизму Windows, которые дает возможность выполнять 32-разрядные приложения в 64-разрядной Windows. Компонента реализована как модель DLL пользовательского режима и включает:

1) wow64.dll – управляет созданием процессов и потоков, подключается к диспетчеризации исключений и перехватывает выполнение базовых системных функций в NTOSKrnl.exe.

Выполняет также специфические функции: перенаправление файловой системы, перенаправление реестра, отражение.

2) wow64cpu.dll – управляет 32-разрядным контекстом процессора каждого потока и предоставляет специфичную для процессорной архитектуры потока поддержку из режима 32-разрядного в режим 64-разрядный и наоборот.

3) wow64win.dll – осуществляет перехват системных функций по управлению графикой (выполняемых win32k.sys). Взаимосвязь этих компонент показана на слайде 64.

Идея: wow64 ставит ловушки на всех путях выполнения, где 32-разрядный код взаимодействует с 64-разрядным. И наоборот, 64-разрядному коду надо обращаться к 32-разрядному.

При создании процесса 32-разрядного приложения диспетчер процессов проецирует в его адресное пространство 64-разрядную библиотеку ntdll.dll. 64-разрядный загрузчик проверяет, к какой платформе относится исполнительный код. Если он относится к 32-разрядной x86, то загружает wow64.dll. После этого wow64 начинает использовать 32-разрядную ntdll, которая есть в 64-разрядной Windows. Wow64 настраивает в ntdll и переключает процессор в 32-разрядный режим и выполнять 32-разрядный загрузчик (т.е. как идет в 32-разрядной системе). В каталоге Windows/SysWow64 находятся специальные 32-разрядные версии ntdll.dll, user32.dll и gdi32.dll. Они вызывают Wow64, который, в свою очередь, переключает процессор в 64-разрядный режим, захватывает параметры, связанные с 32-разрядным вызовом, преобразует их в 64-разрядные и осуществляет вызов на исполнение соответствующий 64-рязрядный Windows. Приложение выполняется. При завершении преобразует из 32-разрядного в 64-разрядный.

Wow64 также перехватывает диспетчеризацию исключений. Идея: всякий раз, когда 64-разрядное ядро собирается направить исключение процессу Wow64, он (Wow64) перехватывает и создает 32-разрядные исключения и отдает процессу так как это было бы при 32-разрядном режиме.

Перенаправление файловой системы. Идея: имена системных каталогов для 32- и 64-разрядных Windows остаются те же, поэтому в system32 содержатся 64-разрядные исполнительные файлы.

Примечание: т.к. Wow64 ставит все ловушки на системные вызовы, осуществляется трансляция всех API вызовов, относящихся к путям на каталог Windows/SysWow64.

Замечание: в каталоге windows/system32 есть несколько подкаталогов, которые не участвуют в перенаправлении, т.е. 32-разрядные приложения обращаются к ним напрямую.

Перенаправление реестра и отражение. Приложения хранят свои конфигурационные файлы в реестре, они записываются, как правило, в ходе регистрации. Если один и тот же компонент поочередно регистрируется как 32-разрядный и 64-разрядный, то последний остается в реестре, т.к. они пишутся по одному и тому же адресу. Для того, чтобы устранить эту проблему, не модифицируя 32-разрядные компоненты, в 64-разрядной Windows реестр делится на две части (Native и Wow64). По умолчанию 32-разрядные компоненты получают доступ к 32-разрядной части, а 64-разрадные соответственно к 64-рязрядной. Wow64 перехватывает все системные вызовы к реестру и осуществляет перенаправление.

Отражение – самостоятельно.

Запросы на управление вводом-выводом

Для выполнения 32-разрядных приложений управление вводом-выводом осуществляется через API DeviceControlFile (слайд 65). При вызове этой функции указывается входной и выходной буфер в зависимости от операции. Если процесс является процессом Wow64, то у 32- и 64-разрядного драйвера устройства разные представления о структуре. Например, 32-разрядные используют 4-байтные указателя, а 64-разрядные – 8-байтные. Поэтому запрос на ввод-вывод осуществляется в зависимости от того, какой процесс. Чтобы узнать, к 32-разрядному или 64-разрядному он принадлежит, можно воспользоваться API.

Следующий нюанс, связанный с переносом. Wow64 не поддерживает выполнение 16-разрядных приложений в целом, но некоторые компоненты Wow64 имеют возможность выполнять некоторые наиболее известные 16-разрядные программы. Когда поступает на выполнение 16-разрядное приложение и необходимо выполнить CreateProcess по нему, осуществляется проверка, относится ли данное приложение к поддерживаемым программам Wow64. Происходит запуск CreateProcess, но в зависимости от того, что это за приложение.

Печать. 32-разрядные драйвера устройств и 64-разрядные несовместимы. Поэтому создан механизм SPLWow64.exe, поддерживающий печать из 32-разрядных приложений в 64-разрядном Windows.

 

Windows NT и NTFS






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.