буют большого количества вычислений. Раньше это являлось сдерживающим фактором широкого практического применения Data Mining, однако сегодняшний рост производительности современных процессоров снял остроту этой проблемы. Теперь за приемлемое время можно провести качественный анализ сотен тысяч и миллионов записей.
Методами Data Mining решаются следующие задачи.
1. Классификация - это отнесение объектов (наблюдений, событий) к одному из заранее известных классов.
2. Кластеризация - это группировка объектов (наблюдений, событий) на основе данных (свойств), описывающих сущность этих объектов. Объекты внутри кластера должны быть похожими друг на друга и отличаться от объектов, вошедших в другие кластеры. Чем больше похожи объекты внутри кластера и чем больше отличий между кластерами, тем точнее кластеризация.
3. Регрессия, в том числе задачи прогнозирования. Установление зависимости непрерывных выходных от входных переменных.
4. Прогнозирование - аналогично задаче регрессии, но с учетом временной составляющей, например, прогноз трендов финансовых показателей.
5. Ассоциация - выявление закономерностей между связанными событиями. Примером такой закономерности служит правило, указывающее, что из события X следует событие Y. Такие правила называются ассоциативными. Впервые эта задача была предложена для нахождения типичных шаблонов покупок, совершаемых в супермаркетах, поэтому иногда ее еще называют анализом рыночной корзины (market basket analysis).
6. Последовательные шаблоны - установление закономерностей между связанными во времени событиями, то есть обнаружение зависимости, что если произойдет событие X, то спустя за-
данное время произойдет событие Y.
7. Анализ отклонений - выявление наиболее нехарактерных шаблонов.
Из сказанного можно сделать следующие выводы.
Рынок систем на базе технологии Data Mining активно развивается. В этом развитии принимают участие практически все крупнейшие корпорации, в частности, Oracle руководит некоторым сегментом данного рынка (издает специальный журнал, проводит конференции, разрабатывает собственные продукты).
Другие проблемы связаны с тем, что известные методы поиска логических правил не поддерживают функцию обобщения найденных правил и функцию поиска оптимальной композиции таких правил. Вместе с тем указанные функции являются весьма существенными для построения баз знаний, требующих умения вводить понятия, метапо-нятия и семантические отношения на основе множества фрагментов знаний о предметной области.
Вышесказанное подтверждает актуальность разработки новых подходов и алгоритмов Data Mining в классе IF... THEN правил. Основные требования к новым подходам:
1) способность находить логические правила неограниченной сложности в данных высокой размерности;
2) умение обобщать найденные логические правила и осуществлять поиск их оптимальной композиции.
Конкурентные преимущества, которые дает Data Mining, не позволяют игнорировать эту технологию. Но чтобы получить полезные результаты, требуются детальные знания данных и длительные проверки методом проб и ошибок.
Специалисты, чувствующие высокий коммерческий потенциал средств Data Mining, видят перспективы для расширения границ применения технологии и влияния на прибыльность бизнеса.
НОВЫЕ МЕТОДЫ ПОИСКА СКРЫТЫХ ПРОЦЕССОВ ЯДРА
WINDOWS NT 5.1
А. С. Моляков (Институт информационных наук и технологий безопасности, г. Москва)
Современные компьютерные локальные сети предоставляют большие возможности для разграничения прав доступа для различных пользователей, однако пользователь может повысить свои права в рамках локальной сети, воспользовавшись уязвимостями установленного в рамках сети программного обеспечения. Возможность воспользоваться уязвимостями внутри системы повышается благодаря тому, что зачастую вопросам внутренней безопасности уделяется гораздо меньше вни-
мания. Актуальность проведения аналитического исследования ядра Windows NT заключается в необходимости создания надежных операционных систем реального времени, в повышении уровня защищенности и предоставлении конечным пользователям сведений о недекларированных возможностях операционных систем реального времени. Объект исследования - подсистема ввода-вывода, менеджер виртуальной памяти, микроядро ОС Windows NT 5.1. Целью данного исследова-
ния является разработка новых методов поиска скрытых процессов ядра. Для достижения поставленной цели необходимо выполнить следующие задачи: изучить модули планировщика задач ядра, реализовать алгоритмы поиска и предоставить общее описание принципов их работы. Рассмотрим основные положения предлагаемых программных методов.
Реализация методов SwapContex-факторинга и PsCidTable-сканирования
Метод SwapContex-факторинга решает проблему повышения эффективности обнаружения вредоносного кода программ, эмулирует полностью системные вызовы в стеке процессора при обращении к ресурсам виртуальной памяти. Метод сканирования скрытых процессов (потоков) ядра посредством перехвата обращений к PsCid-Сontext-таблицам позволяет детектировать запуск любых процессов (потоков) в исполнительном пространстве ядра с введением проактивного контроля процессов планировщика ядра. Данный подход решает проблему повышения эффективности скрытых процессов ядра на уровне базовых примитивов безопасности. В работах Джоанны Ратковской, ведущего специалиста по разработке методов поиска сигнатур вирусов Массачусетско-го технологического университета, был описан метод перехвата вызовов базовых интерфейсов ядра (Ratkowska J., Heckerman D. A tutorial on learning NT Kern: Technical Report MSR-TR-95-06. - Microsoft Research: Advanced Technology Division, 2003). Однако данный подход не решает проблему обнаружения модифицированных потоков в контексте системных процессов. Необходимо разработать оригинальный метод поиска скрытых процессов с введением эффективного контроля исполнительной среды менеджера виртуальной памяти и реализовать алгоритм перехвата операций чтения-записи на уровне внутренних таблиц процессора. Если в системе имеется процесс, то, соответственно, он будет иметь свои потоки. Само переключение потоков выполняется неэкспортируемой функцией ядра SwapContext. Следует отметить, что на сегодняшний день не решена проблема сопряжения проектов верхнего и нижнего уровней Windows NT. Классический подход к анализу структуры swap-контекста не позволяет контролировать исполнение кода страниц подкачки, поскольку не учитывает интерфейсные механизмы нижнего уровня стека ядра. C точки зрения теории алгоритмов Маркова в системе должны быть описатель - блок, содержащий информацию об активационной записи процесса, и динамическая ссылка в таблицах выделения памяти. Поскольку каждый тип представления кода распознается процессором по 4 бита, а дешифратор памяти оперирует тетрадами кода адреса, то запись в базовые регистры осуществляется последовательно, с линейным смещени-
ем в булевом кольце на 4 позиции. При вызове процедуры записи данных в индексные и сегментные регистры командой lea производится вычисление исполнительного адреса (Executive task) со смещением +28h. Массив системных указателей создается со смещением 89h((100h-12h)+1), причем 12 бит - смещение за счет слова управления (PSW). Блок обработки событий записывает данные со смещением 12h. В глобальном пространстве ядро детектирует сегмент двойной ошибки стека. Весь цикл представляет собой чтение данных системных таблиц и активационной записи. При этом не учитывается процедура явного определения системного бита s при смене контекста задач. Интервалы временных диаграмм распознавания процессором данных имеют размерность 6 за счет преобразования в конвейере параллельного потока данных. На данном элементарном уровне представления была выявлена коллизия. В структуре описания состояния конечного автомата разница 28-24=4 содержит явно неопределенные значения булева вектора. Метод SwapContext-факторинг позволяет эмулировать неявные механизмы чтения-записи ps-таблиц ядра при обращении к дисковым устройствам.
Опишем кратко новый метод поиска скрытых процессов при взаимодействии с менеджером памяти и подсистемой ввода-вывода. Данный метод основан на анализе опкода процессорных инструкций исполняемого кода. Переменная p содержит указатель на страницы кода (проверка значения маски Access), а системный бит s инициализируется при изменении статуса контекста активных задач. Значит, описанный 4-битный вектор представляет собой структуру видаplsl p2 s2, гдеp1p2 - указатели на контекст текущего и следующего потоков; s1s2 - атрибуты потоков соответственно. Стек имеет размерность 100h, причем старшие биты адресуют область защищенных страниц памяти, а младшие - сегменты общедоступной виртуальной памяти. Проиллюстрируем работу алгоритма сканирования при загрузке страниц виртуальной памяти фрагментом кода:
void GetSwapContextinpsTable - функция просмотра кода внутреннего обработчика ядра
{
PUCHAR cPtr, pOpcode; // передача опкода
ULONG Length;
{
Length = SizeOfCode(cPtr, &pOpcode); (*(PUSHORT)pOpcode==0x2354 && *(pOpcode+2)==0xE8 }
Значение опкода 2354 определяет режим уровня двоичной карты ввода-вывода, в котором разрешен прямой доступ к защищенным сегментам памяти при подкачке страниц. В методе Swap-факторинга используются специальные модификаторы кодового представления инструкций процессора. Старшие биты 01 в десятичном формате определяют область размерности 256 бит (зарезервированную системную область для стека). Младшие биты кодируют вектор размерности
192(256-64), поскольку необходимо резервировать память для записи 64-битного поля инструкций процессора. Мы эмулируем полностью вызов функции call ebx[esp] на уровне Р-кода. Список структур EPROCESS (исполнительное пространство процессов) всех процессов в системе начинается с переменной ядра PsActiveProcessesLink, которая ядром не экспортируется, но ее можно получить с помощью анализа двухсвязного списка структур EPROCESS. Для получения списка всех процессов в системе нужно реализовать алгоритм сканирования PsCid-таблиц, минуя стандартные интерфейсные вызовы, получить указатель на EPROCESS любого процесса, после чего двигаться по спискам ActiveProcessesLink до той структуры, с которой начали. В качестве эталона необходимо получить указатель на EPROCESS процесса System, так как это единственный обязательный процесс в системе, который существует все время ее работы (после загрузки). Для получения этого указателя сначала получим с помощью функции ядра IoGetCurrentProcess указатель на EPROCESS текущего процесса, после чего будем двигаться по связанным спискам, просматривая содержимое структуры PsContext, пока не обнаружится процесс с Pid=0 и со значением бита подчинения 0rd=0 (родительский процесс) - это и будет процесс System. В ходе экспериментов были выявлены недокументированные структуры внутренних дескрипторных таблиц ядра Windows, которые позволяют эффективно обнаруживать базовые процессы-потоки во взаимодействии с низкоуровневыми микрообъектами. Процессор разрешает об-
ращаться к внутренним структурам через указатель &Context, поскольку во время операции теневого копирования блокируется доступ к внутренним регистрам программными средствами. Внедрившись в системный стек, автор получил прямой доступ к Context ID процессов ядра посредством оригинального метода. Теперь краткий фрагмент кода поиска EPROCESS процесса System выглядит так:
UndocData: packed record // описание недокументированной внутренней структуры планировщика процессов ядра
{Получение списка процессов прямым доступом к структурам ядра.
{получение указателя на структуру EPROCESS для System }
function GetSystemEPROCESS(): dword; Data.UndocAdr := @UndocData; // декларация недокументированных структур ps-таблиц ядра
CallRing0(@Ring0Call, @Data);// вызов функции перехвата полного контекста
Offset=01B0 (данное смещение позволяет получить доступ к контексту TSS-регистра)
(*(PUSH0RT)p0pcode==0x01B1 &&*(p0pcode+2)==0xE8) CurrentStruct:=pdword(dword(@Eprocess)+UndocData.Acti vePsList0ffset)A;// указатель на полный список активного контекста процессов ядра}.
В заключение отметим, что материалы проведенных исследований использованы при создании средства защиты информации ViPNet Office Firewall компании «ИнфоТеКС» (г. Москва). Эффективность полученных результатов подтверждена документально. Уникальность предложенных автором методов заключается в том, что реализованные алгоритмы сканируют списки процессов и потоков посредством чтения данных из внутренних недокументированных структур микроядра.
ИССЛЕДОВАНИЕ ПРОЕКТОВ ВЕРХНЕГО И НИЖНЕГО УРОВНЕЙ ПОЛИТИКИ БЕЗОПАСНОСТИ ОС WINDOWS
А.А. Грушо, д.ф.-м.н.; А.С. Моляков
(Институт информационных наук и технологий безопасности, г. Москва)
Применяемые в системах обработки информации организационные меры защиты не могут обеспечить необходимую степень безопасности заинтересованных субъектов информационных отношений. Достаточно сказать, что наиболее популярная MS DOS является полностью открытой системой и не имеет никаких механизмов защиты. Защитные функции среды Windows 3.X, Windows 95 (далее Windows) весьма ограничены. Наиболее широко распространенная сетевая операционная система (ОС) Novell Netware, хотя и имеет богатый арсенал механизмов защиты, но все они предназначены для защиты данных, хранимых на сетевых дисках (на файловых серверах). Именно поэтому исследование формальных моделей безопасности становится определяющей задачей.
Цель работы - выявить неопределенности (коллизии) в формальном описании политики безопасности (ПБ) Windows NT и продемонстрировать несоответствие ее требованиям полноты и непротиворечивости. Рассмотрим общие положения исследования проектов верхнего и нижнего уровней ОС класса NT.
Описание исследования формальной модели ПБ Windows NT 5.1
Групповые ПБ (Group Policy - GP) представляют собой основной метод обеспечения централизованного управления конфигурацией безопасности в Windows XP и Windows 2003. Они могут применяться на уровне сайта, домена и OU, а также могут применяться к пользователям и компью-