![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Трассировка событий ядра
Компоненты, как правило, всех версий ядра и базовые драйвера оснащены средствами, осуществляющими трассировку событий в ядре. Трассировка используется разработчиками при анализе нештатной ситуации. Замечание: мы не можем, как люди защищающие информации в случае нештатной ситуации верить этому. Мы можем верить только тому, кому мы поставили задачу, он ее выполнил и мы приняли продукт. Трассировочные данные использует компонента, работающая в режиме пользователя, которая называется 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
|