Читайте также:
|
|
Компоненты, как правило, всех версий ядра и базовые драйвера оснащены средствами, осуществляющими трассировку событий в ядре. Трассировка используется разработчиками при анализе нештатной ситуации.
Замечание: мы не можем, как люди защищающие информации в случае нештатной ситуации верить этому. Мы можем верить только тому, кому мы поставили задачу, он ее выполнил и мы приняли продукт.
Трассировочные данные использует компонента, работающая в режиме пользователя, которая называется 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
Дата добавления: 2015-07-07; просмотров: 141 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Глобальные флаги Windows | | | Создание процессов |