Новости
11.12.2024
«Внутреннее устройство Windows. Ключевые компоненты и возможности. 7-е изд.»
Книга «Внутреннее устройство Windows» состоит из 2-х томов, первый из которых был выпущен издательством «Питер» в 2019 году. Она продолжает длинную серию изданий на тему устройства Windows и является масштабным учебником, где на в объеме почти 1 000 страниц рассматривается множество тем, начиная с важнейших внутренних механизмов ОС и инструментов виртуализации, заканчивая кэшированием, файловыми системами и разбором процессов загрузки ОС.
Эта книга предназначена для специалистов по программированию, информационной безопасности и системному администрированию, желающих углубить свои знания в этой сфере и повысить уровень профессионализма при решении повседневных задач. Её цель – подробно познакомить вас с устройством компонентов ядра Windows 10 и Windows Server, в том числе, с некоторыми компонентами Windows 11X и операционной системы Xbox.
Но обо всем по порядку.
Андреа Аллиеви – уже более 15 лет занимает должности системного программиста и специалиста по безопасности. Он получил степень бакалавра в Миланском университете «Бикокка» и в рамках своего дипломного проекта написал 64-разрядного диспетчера главной загрузочной записи (MBR), способного обходить любые средства защиты ядра Windows 7. В числе прочих трудовых достижений Андреа числится создание первого буткита, обошедшего защиту UEFI, множество хаков PatchGuard, а также публикация большого числа научных работ и статей. За время своей карьеры он успел поработать в нескольких IT-компаниях: в итальянской TgSoft, SaferBytes (ныне MalwareBytes) и подразделении Talos компании Cisco Systems. В 2016 году Андреа пришёл в Microsoft в качестве специалиста по безопасности Центра защиты информации (MSTIC). Позднее он был повышен до старшего инженера подразделения защиты ядра ОС, где преимущественно занимается развитием инноваций (конкретно Retpoline и Speculation Mitigations) для NT и безопасного ядра.
Алекс Ионеску – ныне вице-президент направления Endpoint в компании CrowdStrike Inc., в которой с самого ее основания являлся главным архитектором. Алекс по праву считается профессионалом с мировым именем в сфере архитектуры безопасности, являясь матерым консультантом по низкоуровневому программному обеспечению, разработке ядра, теории безопасности и обратной разработки. В прошлом он руководил разработкой ядра ReactOS, клона Windows с открытым кодом, который создавался с нуля. В годы своего обучения Алекс трудился в Apple, где занимался ядром iOS, загрузчиком и драйверами, являясь частью изначальной команды, стоявшей за разработкой iPhone, iPad и AppleTV. Наконец, этот человек основал компанию Winsider Seminars & Solutions, Inc., занимающуюся созданием низкоуровневого системного ПО, обратной разработкой и организацией тренингов по безопасности для различных компаний.
О книге в целом
Это очень обширное издание, которое поистине можно считать наиболее подробным пособием по внутреннему устройству Windows. Освоив эти материалы, вы сможете лучше понимать зачем и почему при разработке программ для этой платформы принимаются те или иные технические решения, а также выбирать более оптимальный путь для создания производительных, масштабируемых и защищённых продуктов. Значительное внимание в книге уделяется, в том числе, отладке сложных проблем, причины которых кроются в глубинах системы.
Если вы занимаетесь защитой информации, то изучение соответствующих тем позволит вам не только лучше понимать, когда поведение программ и самой ОС может нарушаться, но и находить причину этого. Эксперты-криминалисты, в свою очередь, научатся использовать системные структуры данных и сервисы для поиска следов вторжения и узнают, как их обнаруживает сама система.
Также примечательно, что основной автор второго тома, Андреа Аллиеви, подключившись к написанию книги, привнес в нее свое видение с учетом богатого опыта разработки ядра Windows.
Решив, что разделы, посвященные взаимодействию с сетью и анализу аварийных дампов, для современных читателей неактуальны, вместо них он добавил полностью обновленное описание Hyper-V, который на сегодня является одной из основ стратегии Windows как в отношении клиентских систем, так и в рамках Azure. При этом в книге появилось и много других переработанных на актуальный лад материалов, освещающих процесс загрузки системы, новые технологии хранения данных (ReFS и DAX), а также обновления системных и административных механизмов.
Еще одной приятной особенностью серии являются «Практические эксперименты», благодаря которым вы сможете наглядно познакомиться со значительной частью внутренних механизмов Windows. Реализовывать эти эксперименты вам предстоит при помощи отладчика ядра, пакета SysInternals и утилит, созданных специально для данной книги. Там, где эти инструменты можно будет использовать для демонстрации определенной особенности поведения Windows, вы встретите специальные врезки под заглавием «ЭКСПЕРИМЕНТ», содержащие пошаговую инструкцию по реализации этого поведения. Подобные вставки разбросаны по всей книге, и авторы настоятельно рекомендуют по ходу чтения проделывать предложенные практические упражнения.
ЭКСПЕРИМЕНТ. Просмотр GDT в x86
В x86-системах GDT оформляется похожими сегментами, но с другими селекторами. Кроме того, из-за двойного назначения сегментного регистра FS вместо функциональности swapgs, а также из-за отсутствия длинного режима количество селекторов несколько отличается, что видно в примере:
kd> dg 8 38
P Si Gr Pr Lo
Sel Base Limit Type l ze an es ng Flags
---- -------- -------- ---------- - -- -- -- -- --------
0008 00000000 ffffffff Code RE Ac 0 Bg Pg P Nl 00000c9b
0010 00000000 ffffffff Data RW Ac 0 Bg Pg P Nl 00000c93
0018 00000000 ffffffff Code RE 3 Bg Pg P Nl 00000cfa
0020 00000000 ffffffff Data RW Ac 3 Bg Pg P Nl 00000cf3
0030 80a9e000 00006020 Data RW Ac 3 Bg By P Nl 00000493
0038 00000000 00000fff Data RW 3 Bg By P Nl 000004f2
Ключевые сегменты здесь 8h, 10h, 18h, 20h, 30h и 38h. По смещению 08h (KGDT_R0_CODE) можно наблюдать сегмент кода на уровне нулевого кольца. Аналогично по смещению 18h (KGDT_R3_CODE) находится сегмент на уровне третьего кольца. Наконец, в 10h (KGDT_R0_DATA) и 20h (KGDT_R3_DATA) будут сегменты стека, данных и дополнительный сегмент.
В системах x86 в сегментах 30h (KGDT_R0_PCR) и 38h (KGDT_R3_TEB) будут базовые адреса KPCR и TEB текущего потока соответственно. В данной архитектуре никаких MSR для сегментации не используется.
Коротко по главам
Являясь продолжением первого тома, начинается книга с главы 8 «Системные механизмы», которая познакомит вас с важнейшими внутренними механизмами ОС, используемыми такими компонентами режима ядра, как исполнительная система, драйверы устройств и, собственно, само ядро.
Это самая обширная глава книги, где вы познакомитесь с используемой процессором моделью выполнения кода, узнаете об аппаратных уязвимостях к атакам по сторонним каналам и средствах борьбы с ними, изучите механизмы диспетчеризации системных прерываний, а также вникните в принципы работы продвинутого локального вызова процедур и многое другое.
Дополнительно в этой главе приводится детальное описание универсальной платформы Windows (Universal Windows Platform, UWP) и набора служб как пользовательского режима, так и режима ядра, на работу которых она опирается.
Современные микропроцессоры способны вычислять и перемещать данные между своими внутренними регистрами очень быстро (счет идет на пикосекунды). Но сами эти регистры — очень ограниченный ресурс. В связи с этим операционной системе и приложениям приходится постоянно требовать от процессора перемещать данные из регистров в память и обратно. Существуют различные типы памяти, к которым он может обратиться. Память, находящаяся на самом процессоре и доступная не-посредственно из блока исполнения, называется «кэш» и известна своей скоростью и дороговизной. Память, доступная по внешней шине, обычно называется RAM (Random Access Memory) и характеризуется низкой скоростью, малой стоимостью и большим объемом.
…
Одной из важнейших характеристик кэша является время доступа к нему, сравнимое с временем обращения к регистрам процессора (однако еще медленнее). Тем не менее обращение к основной памяти длится в сотни раз дольше. В итоге, если процессор будет исполнять все инструкции по порядку, он столкнется с большими паузами, вызванными попытками достучаться туда. Для решения этой проблемы в со¬временных архитектурах прибегают к различным стратегиям. Исторически они при¬вели к изобретению атак по сторонним каналам (также известных как спекулятивные атаки), очень эффективных при преодолении средств защиты пользовательских систем.
Рис. 8.2. Кэши и память современных процессоров, их средние размеры и время отклика
Глава 9 посвящена технологиям виртуализации. В ней раскрываются такие темы, как устройство и организация работы гипервизора, стек виртуализации, обеспечение безопасности ядра и использование изолированного пользовательского режима.
Освоив нюансы виртуализации, вы сможете не только эффективно применять сопутствующие технологии для запуска нескольких виртуальных машин на одном устройстве, но и обеспечить более высокий уровень безопасности системы в целом.
Гипервизор Hyper-V, также известный как гипервизор Windows, — это гипервизор первого типа (низкоуровневый, или «голое железо»): операционная система в миниатюре, работающая непосредственно на оборудовании хоста и управляющая одной корневой и одной или несколькими гостевыми операционными системами. В отличие от гипервизоров второго типа (хостовых), которые работают на базе традиционной ОС, подобно обычному приложению, гипервизор Windows абстрагируется от корневой ОС, которая знает о его существовании и взаимодействует с ним для обеспечения выполнения одной или нескольких гостевых виртуальных машин. Поскольку гипервизор является частью операционной системы, управление гостями внутри нее, равно как и взаимодействие с ними, полностью интегрированы в нее посредством стандартных механизмов управления, таких как WMI и службы.
…
На рис. 9.1 приведена базовая архитектура стека виртуализации Windows, подробное описание которой приводится далее.
Рис. 9.1. Архитектурный стек Hyper-V (гипервизор и стек виртуализации)
В Главе 10 рассматриваются темы управления, диагностики и трассировки. Значительный акцент в этой главе сделан на темах работы с реестром и службами Windows. Здесь вы подробно узнаете, как конкретно организованы эти механизмы, научитесь эффективно их использовать, настраивать и оптимизировать.
В добавок к этому, Глава 10 познакомит вас с планированием задач, инструментами управления Windows, различными видами трассировки событий, прослойками ядра и другими сопутствующими темами.
Вы можете составить схему организации реестра с помощью хранящихся в нем данных. Существуют девять корневых разделов, в которых хранится информация (табл. 10.2), добавлять новые корневые разделы или удалять существующие нельзя.
Таблица 10.2. Девять корневых разделов
Почему имена корневых разделов начинаются с буквы «H»? Потому что они представляют собой дескрипторы Windows (H — handle) для разделов (KEY). Как упоминалось в главе 1 тома 1, HKLM — это аббревиатура, используемая для HKEY_LOCAL_MACHINE. В табл. 10.3 перечислены все корневые разделы и их сокращения. В последующих разделах подробно объясняются содержание и назначение каждого из этих корневых разделов…
Весьма обширной получилась Глава 11, посвященная кэшированию и файловым системам. Начав с представления общей терминологии, эта глава познакомит вас с ключевыми функциями диспетчера кэша, используемыми в кэше структурами данных, интерфейсами файловой системы, а также механизмами быстрого ввода-вывода, включая подробное рассмотрение особенностей чтения с упреждением и отложенной записи.
Однако основная часть Главы 11 отведена именно под знакомство с файловыми системами Windows и их внутренним устройством, в особенности NTFS и ReFS. Здесь рассматриваются всевозможные темы, начиная с требований к файловой системе высокого класса, безопасности и шифрования, заканчивая туннелированием, сжатием данных и расширенными возможностями.
Каждый открытый дескриптор файла имеет соответствующий файловый объект. Файловые объекты подробно описаны в главе 6 (Том 1). Если файл кэшируется, то файловый объект указывает на структуру закрытой карты кэша, содержащую местоположение двух последних чтений, чтобы диспетчер кэша мог выполнять интеллектуальное упреждающее чтение (описано далее в одноименном разделе). Кроме того, все закрытые карты кэша для открытых экземпляров файла связаны.
Любой кэшированный файл, в отличие от файлового объекта, имеет структуру общей карты кэша, описывающей состояние кэшированного файла, включая раздел, к которому он принадлежит, его размер и действительную длину данных.
…
Все открытые общие карты кэша для разных файлов собраны в глобальном связанном списке, хранящемся в структуре данных раздела диспетчера кэша. Взаимоотношения между этими структурами данных кэша для каждого файла показаны на рис. 11.8.
Рис. 11.8. Структуры данных кэша для отдельного файла
Завершает книгу Глава 12, посвященная запуску и завершению работы системы. Это небольшая глава, где описываются отвечающие за загрузку и завершение работы ОС процессы и компоненты, включая загрузку UEFI и BIOS, диспетчера загрузки, инициализацию ядра и исполнительных подсистем, спящий режим, среду восстановления Windows, файл состояния загрузки и прочее. Кроме того, в ней также уделяется внимание анализу ряда новых технологий, таких как Secure Boot, Measured Boot и Secure Launch.
Процесс загрузки начинается не тогда, когда включается компьютер или нажимается кнопка перезагрузки. Это происходит, когда на компьютер устанавливается Windows. В определенный момент во время выполнения программы установки основной жесткий диск системы подготавливается таким образом, чтобы он был понятен диспетчеру загрузки и прошивке UEFI. Прежде чем перейти к рассмотрению того, что делает код диспетчера загрузки, вкратце рассмотрим интерфейс платформы UEFI.
UEFI — это набор программного обеспечения, предусматривающего первый базовый программный интерфейс к платформе. Термином «платформа» обозначаются материнская плата, чипсет, процессор и другие компоненты, составляющие «двигатель» машины. Как показано на рис. 12.1, спецификации UEFI предоставляют четыре базовых сервиса, которые имеются в большинстве существующих архитектур процессоров — x86, ARM и т. д. Для этого краткого введения используется архитектура x86-64.
Рис. 12.1.Структура UEFI
Чего в книге нет
Поскольку Windows является большой и сложной операционной системой, в книге не рассматриваются вопросы, смежные с ее внутренним устройством, и акцент делается исключительно на базовых компонентах системы. К примеру, в ней не затрагивается тема COM+ — распространяемой в составе Windows инфраструктуре для объектно-ориентированного программирования, как и .NET Framework — платформе для приложений с управляемым кодом. Поэтому она может не подойти рядовым пользователям, поскольку не ставит своей задачей обучение общему использованию или настройке Windows, а уделяет все внимание именно раскрытию ее внутреннего устройства.
Даже по этому сжатому описанию можно представить, что книга «Внутреннее устройство Windows, Том 2» охватывает огромное число тем, большая часть из которых разбирается очень подробно.
Более подробно с книгой можно ознакомиться на сайте издательства.
Комментарии: 0
Пока нет комментариев