Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Лабораторная работа № 5. Общая структура Windows XP
и методы атак

1. Теоретическая часть:

1.1. Базовые механизмы функционирования Windows XP

Архитектура функционирования ОС Windows XP состоит из двух частей: привилегированного режима ядра и пользовательского непривилегированного режима, степень ограничение прав которого зави­сит от типа ОС и используемого центрального процес­сора.

ОС Windows XP в значительной мере использует возможности про­цессо­ров, совместимых с семейством Intel x86. В их аппаратной архи­тектуре пре­дусматривается четыре уровня привилегий выполнения кода программ от 0-го наивысшего привилегированного, до 4-го пользова­тельского режима с ог­раниченным набором команд процессора. Про­граммы режима ядра ОС Windows XP функционируют в нулевом, защи­щенном и привилегированном режиме, а остальные пользовательс­кие программы работают в менее привилегированных режимах, находясь под контролем про­грамм режима ядра. ОС Windows, как и большинство других совре­менных ОС, в основном использует только два приоритета: 0 и 3, соответ­ственно для режимов системы ядра и режима пользовательских программ. В режиме пользователя функционируют:

1.Пользовательские приложения.

2.Подсистемы среды Win32, которые выполняют роль переводчиков на язык ядра системы.

3.Службы – программы, которые выполняют опре­деленный класс действий в системе, например, запись событий, поддержка работы сервиса по передаче сообщений пользователю о важных событиях. Системные процессы, функционирующие в режиме пользователя, предназначены для действий непосредственно связанных с работой пользователя, например, программа WinLogon, позволяющая пользо­вателям осуществлять вход в систему.

3.Подсистема DLL, Dynamic Link Library определяет за­грузку частей программ по мере их надобности операционной системе. Функционирова­ние подсистемы обеспечивает файл NTDLL.DLL – программа по поддержке в системе файлов *.DLL, которыми могут пользо­ваться программы пользователя.

В режиме ядра выполняется программы, которые относятся к крити­чески важным функциям ОС. Именно в режиме ядра происходит выполнение системного потока операционной системы (программы операционной системы). Поток – часть программы, которая выполняется операционной системой. Процессом ОС называется целиком при­ложение, которое исполняется в данный момент в системе.

ОС предоставляет своим программам свой набор API-вызовов. API, Application Program Interface – серви­сы, функции или данные, которые предоставляет операционная система пользовательским программам. Все современные операционные системы запрещают доступ программ к ресурсам компьютера, предоставляя им взамен мощные, быстрые и надежные сервисы API. При вызове системной API-функции система переходит из уровня пользователя в уровень систе­мы.

Помимо ядра ОС содержит ряд подпрограмм, например: для выполнения запросов к файловой системе используется файловая подсистема, для координации операций ввода-вывода используется ме­неджер ввода-вывода, для уско­рения работы системы используется менеджер кэш-памяти, который сохраняет наиболее часто используе­мую информацию в сверхбыстрой оперативной памяти. В состав ОС входят специальные системы управления потоками и процессами, система безопасности, система виртуальной памя­ти, которая виртуально расширяет доступную память в компьютере, делая работу прикладных программ более комфортной и быстрой. Для отображения информации на мониторе компьютера используется модуль GDI, Graphics Device Interface – ин­терфейс графических устройств.

Перечисленные подсистемы находятся в тесном взаимодействии с подсистемами более низкого уровня – RTL (Run Time Library – библиотека функций, используемых по мере необходимости при работе программы), драйверами устройств (программами, поддержи­вающими корректное функционирование и коммуникацию системы с опреде­ленными типами устройств) и с ядром системы.

Самый нижний уровень ОС – HAL, Hardware Abstract Layer – уровень, который отделяет ОС от конкретного аппаратного обеспече­ния, позволяя одной и той же системе быть переносимой на другую аппаратную платформу.

1.2. Принципы внутреннего функционирования Windows XP

Правила построения современных ОС та­ковы, что все программы, выполняющиеся в них, имеют свои адресные пространства в памяти компьютера. Никакая задача не может проникнуть в адресное пространство другой задачи, исключая заранее оговоренные воз­можности по взаимному обмену информацией, и это происходит только лишь с разрешения обоих задач и самой ОС.

В режиме ядра работают наиболее важные для производительности компо­ненты системы, при этом они могут взаимодействовать с оборудованием и друг с другом без использования переключателей режима исполнения например: ме­неджер памяти, менеджер кэш-памяти, менеджер объектов, система безо­пасности, сетевые протоколы, файловые системы, управление процессами и потока. Все эти компоненты полностью защищены от выполняемых приложе­ний, которые не имеют прямого доступа к коду и данным из привилегирован­ной части операционной системы.

НЕ нашли? Не то? Что вы ищете?

Компоненты режима ядра Windows XP спроектированы на основе принципов построения объектно-ориентированных систем. Поэтому они не работают напрямую со структурами данных, поддер­живаемыми определенными компонентами и программами ядра ОС. Вместо этого для передачи или приема параметров, доступа или модификации структур данных они используют формальный интерфейс. Вместе с тем, несмотря на повсеместное использование объектов для представления раз­деляемых системных ресурсов, Windows XP не является операционной сис­темой, построенной на основе объектно-ориентированного программирования, так как основная часть системы написана на языке Си, для обеспечения высокой производительности, надежности и переносимости на другие аппа­ратные платформы.

Системы, имеющие в наличие одно простое ядро и большое количество компонентов системного режима, которые выполняют различные функции вместе с ядром, на­зываются микроядерной архитектурой (системами на микроядре). В н. в. считается (хотя еще и ведутся отдельные споры), что за такой архитектурой ОС – будущее. В режиме ядра ОС выполняются следующие программы и компоненты:

ядро Windows XP выполняет все низкоуровневые функции ОС: управление потоками, управление прерываниями и исключениями, управление синхронизацией процессов, так же включает набор процедур и базовых объектов, используемых исполняемой частью для создания высокоуровневых элементов;

исполняемая часть, NT Executive включает управление: памятью, процес­сами, потоками, безопасностью, вводом-выводом и межпроцессорными обменами;

уровень абстрагирования от оборудования, HAL изолирует ядро, драй­вера устройств и исполняемую часть Windows от аппаратных особенно­стей платформы;

драйвера устройств, включая файловую систему и аппаратные драйвера, которые транслируют пользовательские запросы и вызовы в соответствующие команды оборудованию по портам ввода-вывода, а потом возвращают информацию о статусе этих устройств обратно про­граммам и компонентами ОС более высокого уровня; находятся в подкаталоге Isystem32l drivers системного каталога и имеют тип файла *.sys,

функции графического интерфейса (файл Gdi32.dll) работают с окнами, элементами управления и рисунками.

Ядро ОС находится в файле:

%SystemRoot%\SYSTEM32\ntoskrnl.exe,

где %SystemRoot% – значение системно-зависимой переменной SystemRoot.

Ядро выполняет большин­ство основных операций ОС, определяющих порядок использования центрального процессора: диспетчеризацию потоков и об­работку исключений, синхронизацию работы процессоров, обеспечение базовых объектов ядра, которые используются управляющей частью, в некоторых случаях экспортирующихся в режим пользователя. В отличие от остальной части ОС, ядро всегда находится в оперативной памяти компьютера, его выполнение нико­гда не прерывается другими потоками. Код ядра напи­сан на языке Си с редкими ассемблерными вставками, предназначенны­ми для увеличения производительности в особо критичных для этого местах.

Одной из функций ядра является формирование специальных примитивов, ис­пользуемых ОС – структурами данных, называемыми объектами ядра. Данные виды объектов обеспечивают нормальную работу компонентов высшего уровня. Ядро изолирует себя от остальной части ОС, что позволяет все, кроме диспетчеризации потоков, вынести за его уровень. Ядро использует набор простейших объектов (объектов яд­ра), которые позволяют управлять работой центрального процессора и поряд­ком создания обрабатываемых объектов. Большинство обрабатываемых объектов включает в себя один или более объектов ядра, включая опреде­ленные ядром атрибуты. Один из наборов объектов связан с обработкой вызова различных процедур, в то время как другие заняты диспетчериза­цией и синхронизацией потоков, потоком ядра, объектами синхрониза­ции потоков, различными событиями системы, вроде возникновения прерывания, ответа от устройства и прочее.

Ядро играет важную роль в поддержке оборудования пу­тем изоляции его от исполняемой части системы и драйверов, посредст­вом определения в ядре специфичных для каждой конкретной архитекту­ры вещей. Функции, которые могут отличаться от машины к машине, реализованы в составе HAL.

Исполняемая часть, NT Executive использует сервисы яд­ра и включает следующие компоненты:

менеджер процессов и потоков управляет потоками, т. к. процессы и потоки поддерживаются нижележащим слоем, то ОС только добавляет дополнительную семантику и новые функ­ции к объектам более высокого уровня;

менеджер виртуальной памяти использует схему управления, при которой каждый процесс получает собственное адресное пространство, защищенное от воздействия других процессов, так же обеспечивает низкоуровневую поддержку для менеджера кэш-памяти;

монитор безопасности проводит политику обеспечения мер безопасности на локальном компьютере, охраняя системные ресурсы и выполняя процедуры аудита и защиты объектов;

система ввода-вывода использует независимый от устройств ввод-
вывод и отвечает за пересылку данных соответствующим драйвером для дальнейшей обработки;

менеджер кэш-памяти улучшает производительность системы ввода-вывода, размещая читаемые с диска данные в основной памяти для ускорения доступа к ним, а также откладывая на короткое время за­пись измененных данных на диск.

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

менеджер объектов, который создает объекты и абстрактные типы
данных и управляет ими; объекты используются для предоставления таких ресурсов, как процессы, потоки и объекты синхронизации потоков;

система LPC (Local Process Communication, локальная коммуникация между процессами) передает сообщения между клиентским процессом и процессом сервера на том же компьютере; фактически это оптимизированная версия процедуры удаленного вызова процедур RPC (Remote Procedure Call, удаленный вызов процедур), который является стандартным для организации процесса взаимодей­ствия процессов в архитектуре клиент/сервер;

набор библиотечных функций: обработка строк, арифметические операции, преобразование типов данных, об­работка структур.

процедуры распределения памяти, взаимообмен между процессами через память; два специальных типа объектов синхронизации: ресурсы и объекты fast mutex (объекты класса mutex обеспечивают исключительный доступ программ к какому-либо ресурсу системы).

Уровень абстракции от оборудования HAL являются одним из наиболее важных ком­понентов ядра, который определяет переносимость и надежность ОС. Загружаемый модуль ядра hal.dll обеспечивает низкоуровневый интерфейс с аппаратной платформой, что позволяет скрыть аппаратно-зависимые и специфичные для архитектуры детали: интерфейс ввода-вывода, котроллеры прерываний, механизм обмена данными между процессорами.

Драйвера устройств – загружаемые модули, которые работают в ре­жиме ядра и обеспечивают интерфейс между системой ввода-вывода и соот­ветствующим оборудованием. Имена модулей обычно имеют расши­рения. sys. Как правило, они написаны на языке Си (но иногда встречается и язык C++) с использованием процедур и функций уровня HAL и могут быть переносимы на уровне двоичного кода между плат­формами, поддерживаемыми Windows XP. Существует несколько типов драйверов устройств:

-  драйверы, манипулирующие устройствами (с использованием уровня HAL) для записи выходных данных или получения входных данных от устройств или через сеть;

-  драйверы файловой системы, которые принимают запросы на файло­вый ввод-вывод и транслируют их запросы ввода-вывода, связанные с конкретными устройствами;

-  драйверы фильтров, например, драйвера поддержки зеркалируемых дисков, шифрования данных, перехвата ввода-вывода для до­полнительной обработки перед их передачей на следующий уровень и пр.;

-  сетевые драйверы, которые передают и принимают удаленные запросы ввода-вывода.

Поскольку драйвера устройств являются единст­венной возможностью проникнуть программе пользователя в режим яд­ра, то некоторые программисты могут их использовать как способ досту­па к внутренним функциям и структурам данных ОС, недоступным из пользовательского режима.

В режиме пользователя ОС Windows XP имеется четыре типа пользовательских процессов:

-  специальные процессы поддержки системы, например, процесс регистра­ции пользователей и менеджер сессий, которые не являются службами ОС;

-  процессы сервера, которые являются службами системы, например, регистратор событий Event Logger; многие устанавливае­мые приложения и драйвера устройств включают в себя процессы-серверы, работающие как службы;

-  подсистемы среды, которые обеспечивают пользовательским приложени­ям среду для других ОС; Windows XP поставляется с тремя типами систем: Win32, POSIX и OS/2 2.1;

-  пользовательские приложения одного из пяти типов: Win32 (например программы, из комплекта Microsoft Office, Windows Media Player и др.), Windows 3.1, MS-DOS, POSIX или OS/2 2.1.

1.3. Подсистемы и библиотеки

ОС Windows XP имеет две подсис­темы среды (Win32 и POSIX1), которые работают только на плат­форме х86. Каждая из указанных подсистем обеспечивает пользовательским приложениям доступ к разным службам Windows XP.

Пользовательские процессы для вызова служб операционной системы исполь­зуют библиотеки динамической связки (DLL) соответствующей подсистемы среды. Их задача заключается в транслировании документированных функ­ций среды в соответствующие недокументированные функции служб ядра операционной системы. Например, библиотека DLL подсистемы Win32 ис­пользует функции Win32 API, библиотека системы POSIX, соответственно, функции POSIX 1003.1 API.

Главными компонентами подсистемы Win32 являются процессы подсисте­мы среды и драйвер режима ядра. Процесс подсистемы среды поддерживает:

-  консольные (текстовые) окна;

-  создание и удаление процессов и потоков;

-  работу виртуальной 16-разрядной DOS-машины;

-  прочие функции MS-DOS.

Драйвер режима поддерживает:

-  менеджер окон, который управляет: отображением окон, выводом на экран, вводом с клавиатуры, от мыши и других устройств, передачей пользовательских сообщений приложениям;

-  интерфейс графических устройств GDI (Graphics Device Interface) – биб­лиотеку функций для вывода на графические устройства для рисования текста, линий, фигур и манипуляций графическими объектами;

-  зависимые от устройств драйверы графики, принтера и видеокарты;

-  несколько библиотек DLL, которые транслируют документированные функции Win32 API в соответствующие недокументированные вызовы Ntoskrnl. exe и Win32k. sys.

Приложения вызывают стандартные функции для создания окон и кнопок на дисплее. Менеджер окон передает эти запросы драйверам графических устройств через интерфейс GDI, где они формати­руются для вывода средствами конкретных устройств. GDI обеспечивает набор стандартных функций, позволяющих приложениям общаться с графическими устройствами (включая дисплеи и принтеры), без конкретных знаний о них. GDI интерпретирует запросы приложений на графический вывод и посылает их драйверам графических дисплеев. Этот интерфейс позволяет создать код приложения, независимый от конкретных устройств их драйверов.

Файл: %SystemRoot%\SYSTEM32\Ntdll.dll является специальной систе­мой поддержки DLL-библиотек. Эта система содержит два типа функций:

Первая группа функций обеспечивает интерфейс к службам Windows XP, которые могут быть вызваны из пользовательского режима. Существует более 200 таких функций, например NtCreateFile, NtSetEvent и т. д. Для каждой из них имеется точка входа в Ntdll.dll с тем же именем. Внутренний код функции содержит специфичные для архитектуры коман­ды, которые вызывают переход в режим ядра для обращения к реальным службам ОС, код которых содержится в Ntoskrnl.exe.

Вторая группа функций содержит большое количество функций под­держки: загрузчик исполняемых модулей, коммуникационные функции для процессов подсистемы Win32, библиотека функций реального време­ни пользовательского режима, диспетчер вызовов асинхронных процедур АРС (Asynchronous Procedure Call, асинхронный вызов процедур) пользо­вательского режима, диспетчер исключений.

Адресное пространство компьютера от 2 до 4 Гбайт под управлением ОС Windows XP занимает ядро ОС (нулевое кольцо защиты микропроцессора). Системный сервер функционирует в адресном пространстве, невидимом для программ Win32. Здесь происходит проверка действительности параметров вызова и исполняется подлинный системный код. Такая организация обес­печивает высокую степень безопасности, но иногда приводит к существен­ным накладным расходам. Каждая программа Win32 видит неструктуриро­ванное адресное пространство размером 2 Гбайт. Данную область памяти прикладных программ называют памятью третьего кольца защиты микро­процессора. К этой памяти может иметь доступ кроме исполняе­мого приложения и операционная система. Сама программа отобража­ется в область между 64 Кбайт и 2 Гбайт. Первые 64 Кбайт недоступны. Верхняя область принадлежащего программе пространства содержит код, который воспринимается ею как системные DLL. На самом деле, это за­глушки – DLL клиентской стороны, которые выполняют пере­направление вызовов. Когда программа вызывает функцию API, DLL кли­ентской стороны передает вызов отдельному системному процессу.

1.4. Возможные атаки и методы взлома ОС

Все виды атак, которые могут быть проведенные против ОС можно разделить на два класса: локальные и удаленные атаки.

Локальные атаки являются наиболее эффективными и действенными. Они возможны тогда, когда проводящее их лицо имеет прямой физический доступ к системе или объект, проводящий локальную атаку, представлен какой-либо исполняемой сущностью, например, программой-вирусом или трояном. К другим типам локальных взломщиков относятся специальные письма, содержащие деструктивный («психологический») код, а также другие методы воздействия на пользователя или систему, связанные с запуском соответствующих программ-взломщиков на компьютере пользователя.

Удаленные атаки являются наиболее распространенными и производятся в локальных или глобальных сетях, включая модемные соединения Интернет. Удаленные атаки бывают не столь эффективны, в худшем случае заканчиваются DoS (Denied of Service) атакой, в ходе которой нарушается нормальное функционирование компьютера подключенного к сети, что приводит к его зависанию или перезагрузке, в результате могут оказаться потерянными данные, которые пользователь не успел сохранить. Если же компьютер, против которого осуществлялась атака, был сервером организации, то из-за прекращения его работы компания может понести убытки. Для рабочих станций, использующих модемное соединение для выхода в Интернет, взломщикам атаки провести гораздо сложнее.

Чтобы избежать локальных атак посредством вирусов и троянов достаточно использовать антивирусы, которые осуществляют мониторинг системы и электронной почты.

Удаленные и локальные атаки имеют общую структуру проникновения на компьютер. В н. в. для проникновения на компьютер используются сложные технологии, основывающиеся на системном программиро­вании и знании архитектуры ОС, против которой они проводятся. За­частую, чтобы найти метод проникновения, взломщику необ­ходимо провести несколько месяцев в исследовании операционной системы, приложений, системных сервисов и программ, предположительно запущенных на компьютере-жертве.

Однако, независимо от конкретного пути проникновения в каждую опреде­ленную систему, взломщиками используется один и тот же метод, называе­мый «переполнение буфера» (buffer overflow). Этот метод заключается в запуске программы взломщиков, посредством программного обеспечения, например, сервиса удаленного вызова процедур (RPC), контроля сети или даже какого-либо драйвера уст­ройства, запущенного на компьютере-жертве.

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

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

В настоящий момент более или менее действующим средством от удален­ных атак переполнения буфера является установка брандмауэров (firewall), отбрасывающих все подозрительные соединения, которые пыта­ются установить сетевые пользователи. Однако перегрузки буфера возможны и в самом брандмауэре. Поэтому до недавнего времени считалось, что надежной защиты от атак пере­грузкой буфера не существует.

Ситуация начала меняться лишь в последнее время, когда компания AMD (Advanced Micro Devices, http://www.amd.com/) впервые в истории компь­ютерной индустрии предложила радикальное решение этой проблемы. Оно основывается на аппаратной защите Enhance Virus Protection, зало­женной в новейшие и наиболее технологичные микропроцессоры этой компании. Основной идей является предотвращение исполнения подозри­тельного кода. Однако данные функции, помимо микропроцессора, долж­на поддерживать и сама операционная система. Для функционирования данной системы защиты под Windows XP необходимо обновление Service Pack 2 или выше.

Если взломщикам удалось запустить свою программу на компьютере, первое, о чем они подума­ют: какие права они имеют в вашей системе, а также смогут ли они с этими правами выполнить свои задачи или нет, т. к. все процессы в Windows XP работают с разными правами. Чаще всего у взломщиков будут те права, которые имеет програм­ма, от имени которой они действуют.

Если взломщикам удалось методом перегрузки буфера взломать какой-то сетевой сервис в случае удаленной атаки, то они смогут работать в системе только от его имени и под его правами (вероятно, что это будет группа SYSTEM или какая-либо другая, в зависимости от сервиса и настроек системы). Поэтому для обеспечения защиты системы необходимо стремиться к тому, чтобы запущенные приложения и сервисы обладали только теми права­ми, которые им действительно нужны.

Однако это понимают и взломщики (сетевые кракеры), поэтому они используют двойной взлом системы, который заключается в том, чтобы вначале провести удаленную атаку и получить доступ к системе-жертве, а затем повысить свои права в системе. Это достигается за счет второго взлома какой-либо исполняемой сущности, которая имеет требуемые права. Второй взлом фактически является локаль­ной атакой, так как взломщики уже имеют доступ к компьютеру. Локальные атаки выполняются с целью получение больших прав, в идеале – прав системного админи­стратора. Поэтому необходимо поставить взломщикам дополнительные барьеры от проникновения в систему, для чего необходимо всем пользователям ра­ботать в системе только с теми правами, которые им действительно нужны.

В случае если взломщики получили права системного администратора или опытных пользователей группы Power Users, то система становится уже управляемой ими, что может привести к полной потере важной информации или к утечке коммерческой информации за пределы компании.

2. Практическая часть

2.1. Вопросы по разделу

1.  Из каких частей состоит архитектура функционирования ОС Windows XP?

2.  Какие уровни привилегий пре­дусматривается в аппаратной архи­тектуре про­цессо­ров, совместимых с семейством Intel x86?

3.  В каком режиме функционируют программы ядра ОС Windows XP?

4.  Какие программы функционируют в режиме пользователя?

5.  Какие программы функционируют в режиме ядра?

6.  Дайте определение термину «набор API-вызовов»

7.  Какой модуль используется для отображения информации на мониторе?

8.  Определите самый нижний уровень ОС.

9.  Какие правила построения современных ОС?

10. На основе каких принципов построения спроектированы компоненты режима ядра Windows XP?

11. Как называются системы, имеющие в наличие одно простое ядро и большое количество компонентов системного режима

12. Какие программы и компоненты выполняются в режиме ядра?

13. В каком файле находится ядро ОС?

14. Какие операции выполняет ядро ОС?

15. Какие компоненты включает исполняемая часть ОС Windows XP?

16. Какие группы функций входят в состав исполняющей части ОС Windows XP?

17. Какие функции определяет уровень абстракции от оборудования?

18. Какие функции выполняют драйвера устройств

19. Перечислите типы драйверов устройств.

20. Какие типы пользовательских процессов имеются в режиме пользователя?

21. Какие подсис­темы среды имеет ОС Windows XP?

22. Что является главными компонентами подсистемы Win32?

23. Что поддерживает процесс подсистемы среды

24. Какие компоненты поддерживают драйвера режима?

25. Какие функции содержит систе­ма поддержки DLL-библиотек в ОС Windows XP?

26. Перечислите возможные атаки на ОС.

27. Перечислите методы взлома ОС.

2.2. Порядок отчетности и форма контроля выполнения работы

Контроль выполнения задания производится по окончании занятия и на консультациях в форме защиты выполненной работы, предоставленной в электронном и в бумажном виде в форме «Отчет по лабораторной работе …».