Применение общей теории процессов для их формализованного описания в операционных системах

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

Список литературы

1. Безопасность жизнедеятельности. Безопасность технологических процессов и производств (Охрана труда): учеб. пособие для вузов / П.П. Кукин [и др.]. М.: Высш. шк., 2004. 319 с.

2. Гринин А.С., Орехов Н.А. Математическое моделирование в экологии: учеб. пособие для вузов. М.: ЮНИТИ-ДАНА, 2003. 269 с.

E. Falina

Administration of industrial safety and environmental processes with the planning of experiments

The issues of industrial and environmental safety during emergencies in examine. A method of safety management of industrial and environmental processes using design of experiments is proposed.

Keywords: safety, production processes, ecological processes, planning and experimentation.

Получено 12.01.10

УДК 004.451.2

А.С. Шульмин, асп.,

ПРИМЕНЕНИЕ ОБЩЕЙ ТЕОРИИ ПРОЦЕССОВ ДЛЯ ИХ ФОРМАЛИЗОВАННОГО ОПИСАНИЯ В ОПЕРАЦИОННЫХ СИСТЕМАХ

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

Ключевые слова: операционные системы, процесс в операционных системах, теория процессов, скрытые процессы.

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

модели, исследование сцепленности процессов в ОС и разработка метода обнаружения скрытых процессов в ОС.

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

Будем использовать понятийную базу общей теории процессов (ОТП) [5]. Для удобства основные понятия ОТП сведем в таблицу.

Таблица

Основные понятия общей теории процессов_____________________

№ п/п Понятие Обозначение Описание

1 2 3 4

1 Параметрическое множество системы е= к, }’и Параметрическое множество системы - вся совокупность параметров системы, определяющих процесс функционирования или участвующих в нем. - некоторый параметр системы

2 Множество значений параметра 4і Множество значений, которые может принимать параметр

3 Пространство состояний системы е N і ¡ш і4 Декартово произведение множеств значений всех параметров системы

4 Состояние системы £ Є Бд Б0 Любой элемент пространства ^ , описывающий определенное состояние системы

5 Процесс Z = (Б ,Т, ^ Последовательность изменения состояний системы во времени: $ - пространство состояний системы, в которой развивается процесс; Т - множество моментов времени изменения состояния системы; Р - однозначное (функциональное) отображение Р ^ $

Продолжение таблицы

1 2 3 4

6 Интервал определения процесса [?Н; % ] Интервал, на котором определен про-цесс6 Н = тт {Т } = тах {Т }

7 Объект системы О с б Составная часть системы; определяется параметрическим множеством объекта, которое является подмножеством параметрического множества системы

8 Пространство состояний объекта Бо = П°{Ч1) 4 е0 Декартово произведение множеств значений всех параметров объекта

9 Состояние объекта s е Бо Любой элемент пространства Бо, описывающий определенное состояние объекта

10 Процесс в объекте 1о = Пр Бо Определение процесса в объекте о по заданному процессу Хд в системе

11 Оператор генерации состояния объекта 80, = н0

12 Элементарный оператор ь Оператор, вычисляющий состояние 8 е Бб системы ^ только в одной точке 1

13 Инициатор I Объект, перемещающийся от одного элементарного оператора к другому, и вызывающий выполнение элементарного оператора при сцеплении с ним

14 Трек процесса ТК = (Ь >Г=1, р) Линейная последовательность элементарных операторов

Окончание таблицы

1 2 3 4

15 Сцепленность объектов (процессов) Ol ^ Om Если в системе развиваются два процесса в объектах О1 и От, для которых заданы операторы генерации состояния объекта (см. п. 11 таблицы), причем О1 П А°т ^ 0 , то говорим, что объект О1 сцеплен с объектом От . То же касается и их процессов

Рассмотрим один из основных компонентов ОС - процесс. Процесс - это абстрактное понятие, описывающее работу программы [4].

Как указано в [10], в общем случае процесс в системе состоит из следующих компонентов:

- исполняемого образа машинного кода данной программы;

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

- дескрипторов ресурсов ОС, связанных с процессом (файловые дескрипторы, источники данных и т.п.);

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

- состояния процесса (контекст), содержащего информацию о значениях регистров, адресации физической памяти и т.п.

Операционная система хранит большую часть информации об активных процессах в специальных структурах данных, называемых «блоками контроля процессов» (англ. «process control blocks - PCB») [6].

Таким образом, в общем случае процесс в ОС можно определить как шестерку:

P =

где IMG - исполняемый образ, из которого процесс был создан; MEM - память, принадлежащая процессу; DESCR - дескрипторы ресурсов операционной системы, связанные с процессом; LSA - параметры системы безопасности ОС для данного процесса; CNTX - контекст процесса; ALG - алгоритмическая модель процесса.

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

190

нального отображения F ^ S (см. таблицу). В дальнейшем, чтобы избежать двусмысленности, будем использовать термины «процесс ОС» и «процесс ОТП» соответственно.

Рассмотрим составные элементы описания процесса ОС. В соответствии с ОТП алгоритмическую модель процесса ОТП в [5] предложено определять как совокупность трека процесса ОТП и инициатора на данном треке:

ALG =

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

Память, принадлежащую процессу ОС, представим в виде тройки:

MEM = {Me ,M d , Mh) ,

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

Дескрипторы ресурсов ОС, связанные с процессом ОС, представим следующим образом:

DESCR = {r, p}n=i,

где r - описатель конкретного ресурса ОС, предоставленного в пользование процессу ОС; p - права доступа к данному ресурсу, которыми наделен процесс ОС.

Параметры системы безопасности ОС для данного процесса - это множество разрешений, установленных для процесса, и описатель владельца процесса, т.е.:

LSA =

где {Ps}j__i- множество прав данного процесса ОС; OWNER - описатель

пользователя - владельца данного процесса ОС.

Блок состояния процесса ОС (контекст процесса ОС) может быть описан следующим образом:

CNTX =< PID, REGS, SP, PR >,

где PID - идентификатор процесса ОС; REGS - значение регистров центрального процесса (ЦП) на момент последней выполненной команды

процессом; SP - указатель на вершину стека процесса ОС; PR - приоритет процесса ОС.

Будем рассматривать каждый процесс операционной системы с позиций ОТП как некоторый объект Oi. Процесс ОТП, развивающийся в объекте Oi, будем обозначать Z01. Рассмотрим предложенное авторами описание процесса ОС (1) и выявим параметры процесса ZO1.

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

саZO .

MEM - память процесса ОС - представлена как тройка составных элементов (3). Md и Mн - атрибуты с динамически изменяемым значением, выступают в роли параметров при описании процесса ZOi .

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

будем считать данный атрибут параметром процесса ZOi .

Ресурсы ОС, предоставленные в распоряжение процессу ОС, описываются как множество, состоящее из дескрипторов ресурсов и прав доступа (4). Процесс ОС самостоятельно не может изменить данное множество, для этого он должен вызвать соответствующий сервис ОС. Данные о ресурсах конкретного процесса ОС не являются параметрами соответствующего ему процесса ОТП.

Параметры безопасности, установленные ОС для конкретного процесса ОС (5), не могут быть изменены процессом ОС самостоятельно, как и описатель пользователя-владельца данного процесса ОС, следовательно,

параметры безопасности также не являются параметрами процесса ZOi .

Идентификатор процесса ОС (PID) является уникальным для каждого процесса ОС, присваивается ОС каждому процессу при рождении и не изменяется в течение всего срока жизни процесса. Идентификатор процесса ОС не может рассматриваться как параметр соответствующего ему

процесса

ZOi .

Приоритет процесса ОС ( PR ) устанавливается и изменяется ОС (системным процессом ОС), самостоятельно процесс не может изменить данный атрибут. Следовательно, он не является параметром процесса.

Значения регистров и указателя на вершину стека (REGS и SP соответственно) - это параметры процесса ZOi , поскольку могут быть модифицированы процессом ОС.

Таким образом, для пользовательского процесса в ОС следующие элементы его описания являются элементами параметрического множества объекта ОТП, соответствующего рассматриваемому процессу в ОС: qi = Mq - память процесса ОС, занятая исполняемым кодом; q2 = Md - память процесса ОС, занятая данными; q3 = Mн - память процесса ОС под «кучу» объектов; q4 = SP - указатель на вершину стека процесса ОС. Весь стек вызовов, предшествующих данному этапу выполнения процесса ОС, может быть восстановлен из этого параметра. В общем случае является самостоятельным параметром и не входит в q5;

q5 = REGS - регистры ЦП, используемые данным процессом ОС. Таким образом, процесс в объекте Oi в системе Q развивается на множестве параметров {qi,q2,q3,q4,q5}. Множество параметров, на которых определяется состояние объекта Oi с Q, и множество аргументов

AOi оператора генерации процесса HOi являются самостоятельными подмножествами Q .

Введем понятие множества возможных аргументов для генерации процесса и обозначим его а(AOi) = {O>1 }=. Данное множество будет

включать в себя все те элементы, из которых может быть составлено мно-

лOi ~ +

жество аргументов A 1 в конкретный момент времени ti .

*i

В общем случае развитие процесса зависит от следующих факторов:

1. Памяти процесса, содержащей исполняемый код: aOi = qi = Mq ;

2. Памяти процесса, содержащей данные: а° = q2 = Mp;

3. «Кучи» процесса а^ = q3 = Mh ;

4. Указателя на вершину стека 0° = q4 = SP;

5. Значения регистров процессора a5Oi = q5 = REGS = {regs}^;

6. Множества дескрипторов безопасности аO = DESCR = {г, р}П=1;

7. Множества разрешений, установленных для процесса

aO =({ps}iu).

Очевидно, что ст(AOi) П Oi ф 0, но при этом ст(AOi) ф Oi, т.е. множество возможных аргументов для генерации процесса в объекте Oi шире,

7Oi

чем множество параметров, на которых развивается процесс Z i .

193

Если в системе существуют два объекта - 0\ и 0т и 0\ ^ 0т, это

значит, что в некоторый момент времени ^ 0\ П А0т ф 0, т.е. в момент времени ^, параметры процесса в объекте 0[ являются атрибутами генерации нового состояния объекта 0т . Исследование пересечения множеств

О1 и А0т позволит сделать вывод о том, по каким параметрам произошло

Т1

сцепление объекта О1 с объектом 0т. То же верно для процессов ОТП, протекающих в этих объектах.

Применим предложенную модель к процессам в ОС общего назначения ’^пёо,№8 ХР с целью исследования сцепленности процессов режима ядра с ядром ОС в момент вызова системных сервисов. По данным исследования компании «Даблютрискулз» ^^ЗбсИооЬ», Норвегия) [9] на ноябрь 2009 ’^пёо’№8 ХР являлась самой распространенной ОС среди ОС общего назначения.

Как указано в [7], «руткиты» (вредоносные программы, скрывающие свое присутствие в системе) для ОС ’^пёо,№8 являются существенной проблемой, так как архитектура системы позволяет злоумышленнику легко осуществить доставку вредоносного кода на уровень максимальных привилегий (уровень ядра ОС). Аналитики «Лаборатории Касперского» отмечают [8] рост количества вредоносных программ, использующих руткит-технологии (скрывающих свое присутствие в системе). На сегодняшний день авторами антивирусных продуктов предложен ряд методов для обнаружения скрытых процессов в системе (руткитов и защищаемых ими процессов), однако вирусные эпидемии последних лет [1, 2] показали необходимость совершенствования имеющихся методов.

ОС ’^пёо,№8 ХР содержит в себе специальный интерфейс системных вызовов, используя который, прикладные программы (через шлюз) и драйверы (напрямую) могут обратиться к ядру системы с запросом на выполнение привилегированных функций [3].

Рассмотрим систему, в которой развивается системный процесс ОС режима ядра (объект в терминах ОТП, соответствующий данному процессу, - 0$), а также процесс ядра ОС (Ок). В дальнейшем для краткости, говоря о выполняющихся процессах в ОС, будем использовать обозначения соответствующих им объектов с позиций ОТП - 0$ и Ок .

Системные сервисы режима ядра в ОС ’^пёо,№8 ХР размещены в ядре ОС. Следовательно, вызов системного сервиса из процесса 0$ вызовет смену выполняющегося процесса на Ок . Большинство системных сервисов режима ядра имеют параметры - набор аргументов, передаваемых из вызывающих процессов. При вызове каждого системного сервиса в стеке

сохраняется адрес возврата - он указывает внутрь М°. Системные сер-

висы возвращают значения тремя способами: через регистры ЦП, через рабочие параметры и через выходные параметры. Следовательно, процесс Ok развивается на параметрах процесса Os, т е.

Os П aOk * 0,

ч

где tj - момент смены выполняющегося процесса в системе при вызове системного сервиса.

Таким образом, процесс Ok сцеплен с процессом Os , т.е.

Os ^ Ok •

Среди параметров процесса Ok есть указатель на вершину стека

d°K = SP, куда процесс Os помещает адрес возврата. Атрибут a°K является локальной средой процесса Ok , по данному значению процессы Os и Ok сцеплены.

Таким образом, анализируя атрибут a°K , можем легко получить адрес возврата Aret . Очевидно, что в рассматриваемом случае

Aret є McS •

В случае наличия в системе процесса Он, скрывающего свое присутствие, он также будет пользоваться системными сервисами, передавая

~ Он

ядру всякий раз параметр а4 н .

Один из системных сервисов (ZwQuerySystemlnformation) при запросе типа SystemModulelnformation возвращает информацию о загруженных драйверах режима ядра с сообщением для каждого модуля данных:

SM = {base, size) ,

где BASE - начальный адрес загрузки модуля в память; SIZE - размер модуля.

Верно следующее: М°н с [BASEн;BASEн + SIZEн ], поскольку область памяти процесса Он не выходит за границы памяти, отведенной данному драйверу системой при его загрузке.

Соответственно, если

аОн й U [BASEj; BASEj + SIZEj ],

Vi

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

Такой способ обнаружения скрытых процессов эффективен по следующим причинам: во-первых, практически все известные сегодня вредоносные программы, работающие в режиме ядра ОС, вызывают системные сервисы, во-вторых, при сокрытии процессов в системе они, как правило,

исключаются из выдачи сервиса 7’№0иегу8ув1ет1п1:огта1;юп. Таким образом, сравнительный анализ позволит легко выявить несоответствие.

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

Возможна ситуация, при которой вредоносный код, скрывающий свое присутствие в системе, для обеспечения своего функционала обращается к системным сервисам, минуя стандартный шлюз, или непосредственно к нижележащим функциям. К примеру, на рисунке представлен стек системных вызовов при выполнении АР1-функции КеаёБИе (запроса на чтение данных).

Режим ядра ОС

Пользовательский

режим

Передача АР1-запроса на чтение файла ЯеайШе

Роль шлюза исполняет функция К1Еав1;Са11Еп1;гу, которая передает запрос из АР1-функции КеаёБИе в режим ядра, в системный сервис ЖКеаёЕПе. После системного сервиса вызов проходит еще 16 вызовов, прежде чем будет непосредственно исполнен. Соответственно вредоносный код может инициировать запрос на чтение на любом из этих уровней. Предложенный выше способ обнаружения в этом случае требует модернизации: перехват с передачей управления в контролирующий драйвер следует производить как можно ниже по стеку вызовов (ближе к вершине ри-

СІ_Й55РНР*С1а55Неа(Шг:ие і

пі:* Iopf Са1Югіиег+0х31 РагіМдг*РтНеаіШгііе+0х2і1 пі* Гор*1 Са11Огіиег+0х31 ійІ5к*РіОІ5кНеа(Шгііе+0х19и пі:! Іор^аІІОгіиег+ОхЗІ иоІЗпар* ио1$парНеасІ+0х26 ПЇ* Іорі1 Са11Огіиег+0х31 Ж:Рб*. Ж:Р55іпд1еЙ5упс+0х6гі Ж:Р5*Ж:Р5ио1иг10Оа5(]1о+0хЗ(]

Ж:Р 5* НіР5СогіітюпІІра(]+0x23(1

Ш:Р5*М:Я5Р!;ЙНеа(1+0х22(1

пі* Іор*:Са11Огіиег+0х31

БГ'ЗгРаББТЬгоидЬ+ОхЗІ

ПЇ* Іорі1 Са11Огіиег+0х31

пі*Іор5упсЬгопои55егиісеТаі1+0хй0

п1:*М:НеайРі1е+0х580

піїКіРаБЇСаІІЕпігу+ОхЕ8

ПІЙ11+0ХЄЬФ4

кегпе132*Неа(1Рі1е+0х67

ІЄ5І*таІП+0ХСЄ

сунка) с последующим обратным рекурсивным анализом стека вызовов и поиском адреса возврата, не принадлежащего существующим в системе модулям.

Список литературы

1. Буткит 2009 [Электронный ресурс] // Лаборатория Касперского: [сайт]. [2009]. URL http://www.securelist.com/ru/ analysis/204007655/ Butkit_2009 (дата обращения 24.02.2010).

2. Буткит: вызов 2008 [Электронный ресурс] //Лаборатория Касперского: [сайт]. [2008]. URL: http://www.securelist.com/ru/analysis

/204007635/Butkit_vyzov_2008 (дата обращения 24.02.2010).

3. Руссинович М., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003; Windows XP и Windows 2000. 4-е изд. М.: Издательско-торговый дом «Русская Редакция», 2005. 992 с.

4. Таненбаум Э. Современные операционные системы. 2-е изд. СПб.: Питер, 2002. 1040 с.

5. Черненький В.М. Процессно-ориентированная концепция системного моделирования АСУ: дис. ... д-ра техн. наук.: 05.13.06. М., 2000. 299 c.

6. Deitel H. An introduction to operating systems. 2nd ed. Addison-Wesley Longman Publishing Co., Inc, 1990. 853 p.

7. Hoglund G., Butler J. Rootkits: subverting the Windows kernel - Ad-dison-Wesley, 2006. 324 p.

8. Kaspersky Security Bulletin. Развитие угроз в 2008 году [Электронный ресурс] // Лаборатория Касперского: [сайт]. [2008].

URL:http://www.securelist.com/ru/analysis/204007645/Kaspersky_Security_Bu lletin_Razvitie_ugroz_v_2008_godu (дата обращения 24.02.2010).

9. OS Platform Statistics [Электронный ресурс] // Refsnes Data: [сайт]. [2010]. URL: http://www.w3schools.com/browsers/browsers_os.asp

10. Silberschatz A., Gagne G., Galvin P. Operating system concepts with Java. 6th edition. John Wiley & Sons, 2004. 952 p.

A. Shulmin

Using of general theory of processes for formalized description of processes in operating systems

The operating system’s process and its components is described. The parameters of process and attributes for generation the new state of the process have been determined. The interconnection of the process while the system service routine is running examined and on the basis of it a new method of detection of hidden processes has been advised.

Keywords: operating systems, the process in operating systems, the theory of processes, hidden processes.

Получено 12.01.10