УСТРОЙСТВО РАСПОЗНАВАНИЯ ФУНКЦИОНАЛЬНЫХ ОБЪЕКТОВ В ИСПОЛНЯЕМЫХ МОДУЛЯХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Устройство распознавания функциональных объектов в исполняемых модулях программного обеспечения относится к компьютерным системам и может быть использовано в программно-аппаратных комплексах обеспечения компьютерной безопасности, а именно в составе инструментальных средств, используемых при проведении сертификационных испытаний средств защиты информации при отсутствии полного набора исходных текстов программ, а также в составе программно-аппаратных комплексов анализа бинарного кода при проведении исследований программного обеспечения (ПО) на предмет отсутствия недекларированных возможностей.
Известен “Аппаратный антивирус” по патенту РФ №92217 класс G06N 99/00, заявл. от 17.06.2009. Изобретение содержит минимум два интерфейса, один из которых подключают к системной шине компьютера, а другой подключают к носителю информации, являясь при этом прозрачным фильтром, обеспечивающим передачу данных между интерфейсами, фильтрация упомянутых данных осуществляется центральным процессором антивируса, который использует оперативное запоминающее устройство, при этом основная работа антивируса заключается в фильтрации поступающих данных с носителя информации, и если в них обнаружен компонент вредоносного ПО, то данные блокируются, иначе данные передаются на интерфейс, который подключен к системной шине.
Недостатками данного технического решения являются: использование для распознавания функциональных объектов (как компонентов исполняемых модулей ПО) сигнатурного метода, который зачастую имеет большую вероятность ошибки второго рода по сравнению с альтернативными методами, а также отсутствие возможности распознавания функциональных объектов в исполняемых модулях программного обеспечения, для которых невозможно создание сигнатур.
Наиболее близким по своей технической сущности к заявленному решению, выбранным в качестве прототипа, является «Устройство обнаружения вирусных воздействий на информационные системы» по патенту РФ №83145 класс G06F 12/14, заявл. от 25.08.2008. Изобретение содержит блок приема пакетов, блок хранения эталонов известных атак и необходимых коэффициентов, блок идентификации состояния web-сервера, блок проверки поступающих пакетов данных на соответствие заданным правилам, блок принятия решения для принятия мер защиты от атаки, блок прогнозирования состояния web-сервера, блок формирования исполняемых файлов, блок предварительной обработки, блок обучения, причем вход блока приема пакетов связан с каналом связи, его выход соединен с входом блока проверки на соответствие заданным правилам, входом блока идентификации, входом блока прогнозирования и входом блока формирования исполняемых файлов, выход блока хранения эталонов соединен с входом блока проверки по заданным правилам, выход блока идентификации соединен со входом блока проверки по заданным правилам, выход блока прогнозирования соединен со входом блока проверки по заданным правилам, выход блока проверки по заданным правилам соединен с входом блока принятия решения, выход блока принятия решения соединен с входом блока приема пакетов, выход блока формирования исполняемых файлов соединен с блоком предварительной обработки, выход блока предварительной обработки соединен с входом блока проверки по заданным правилам и входом блока обучения, а выход блока обучения подключен к блоку проверки по заданным правилам.
В случае использования данного технического решения в целях распознавания функциональных объектов (ФО) в исполняемых модулях программного обеспечения основным его недостатком является недостижимое на практике количество прецедентов (несколько тысяч), необходимых для обучения системы. В связи с этим ухудшается оперативность процесса, что, в свою очередь, приводит к снижению эффективности всей системы в целом.
Задачей, решаемой предлагаемой полезной моделью, является создание устройства распознавания функциональных объектов в исполняемых модулях программного обеспечения, позволяющее повысить оперативность распознавания функциональных объектов в исполняемых модулях в условиях отсутствия полного набора исходных текстов программ.
Эта задача решается тем, что устройство распознавания функциональных объектов в исполняемых модулях программного обеспечения, содержащее блок внешнего интерфейса, блок внутреннего интерфейса, блок предварительной обработки, блок обучения, блок хранения эталонов и блок распознавания, причем выход блока внешнего интерфейса соединен с входом блока предварительной обработки, выход блока предварительной обработки соединен с входом блока обучения, выход блока обучения соединен с входом блока хранения эталонов, выход блока хранения эталонов соединен с входом блока распознавания, с этим же блоком соединен второй выход блока предварительной обработки, выход блока распознавания соединен с входом блока внутреннего интерфейса, согласно полезной модели дополнено блоком вычисления срезов трасс выполнения функциональных объектов и блоком сравнения граф-моделей, выход которого соединен с входом блока вычисления срезов трасс выполнения функциональных объектов, а его вход - с выходом блока предварительной обработки, выход блока вычисления срезов трасс выполнения функциональных объектов соединен с входом блока распознавания, при этом в блок обучения введены элемент формирования графов программных зависимостей искомых ФО, элемент слайсинга процедуры обучения и элемент анализа алгоритмов, а блок вычисления срезов трасс выполнения функциональных объектов содержит в себе элемент формирования графов программных зависимостей трасс выполнения ФО и элемент слайсинга процедуры распознавания, выход которого соединен с блоком распознавания, а вход - с выходом элемента формирования графов программных зависимостей трасс выполнения ФО, вход которого соединен с выходом блока сравнения граф-моделей, входы элемента формирования графов программных зависимостей искомых ФО и элемента анализа алгоритмов соединены с выходом блока предварительной подготовки, выход элемента формирования графов программных зависимостей искомых ФО соединен с входом элемента слайсинга, выход которого вместе с выходом элемента анализа алгоритмов соединен с блоком хранения эталонов.
Перечисленная новая совокупность существенных признаков обеспечивает возможность повышения оперативности распознавания ФО в исполняемых модулях программного обеспечения за счет снижения временных затрат на процесс локализации предполагаемого местоположения искомых ФО и автоматизации процесса их распознавания.
Проведенный анализ уровня техники позволил установить, что аналоги, характеризующиеся совокупностью признаков, тождественных всем признакам заявленного технического решения, отсутствуют, что указывает на соответствие полезной модели условию патентоспособности «новизна».
Заявляемое устройство поясняется чертежами, на которых показаны:
фиг. 1 - структурная схема предлагаемого устройства;
фиг. 2 - структурная схема блока обучения, блока вычисления срезов трасс выполнения функциональных объектов.
На фиг. №1 и фиг. №2 цифрами обозначены: 1 - Блок внешнего интерфейса; 2 - Блок предварительной обработки; 3 - Блок обучения; 4 - Блок сравнения граф-моделей; 5 - Блок вычисления срезов трасс выполнения функциональных объектов; 6 - Блок хранения эталонов; 7 - Блок распознавания; 8 - Блок внутреннего интерфейса.
I - связь между блоком внешнего интерфейса и блоком предварительной обработки, II - связь между блоком предварительной обработки и блоком обучения, III - связь между блоком обучения и блоком хранения эталонов, IV - связь между блоком предварительной обработки и блоком сравнения граф-моделей, V - связь между блоком хранения эталонов и блоком сравнения граф-моделей, VI - связь между блоком сравнения граф-моделей и блоком вычисления срезов трасс выполнения функциональных объектов, VII - связь между блоком хранения эталонов и блоком распознавания, VIII - связь между блоком вычисления срезов трасс выполнения функциональных объектов и блоком распознавания, IX - связь между блоком распознавания и блоком внутреннего интерфейса.
Предлагаемое устройство распознавания функциональных объектов в исполняемых модулях программного обеспечения функционирует следующим образом.
К блоку №1 (внешнего интерфейса) подключается носитель информации, с которого на вход блока поступают исполняемые модули программного обеспечения, функциональные объекты которых необходимо распознать.
В блоке №2 реализуется проверка корректности исполняемого файла, предназначенная для верификации поступивших на вход устройства распознавания файлов на соответствие спецификации исполняемого файла для данной операционной системы (Microsoft Corporation. Microsoft Portable Executable and Common Object File Format Specification. Rev. 6.0, 1999. - 77 p.). В этом же блоке выполняется дизассемблирование полученных файлов, и, в зависимости от выполняемой в данный момент процедуры (обучение или распознавание), выделяются либо листинги искомых ФО, либо адреса и листинги всех ФО, присутствующих в файле, соответственно. Выходом данного блока (в зависимости от выполняемой процедуры) является сформированное для процедуры обучения множество дизассемблированных листингов искомых ФО или множество дизассемблированных листингов всех нераспознанных ФО, присутствующих в контрольном файле.
В ходе выполнения процедуры обучения листинги искомых ФО, полученные с выхода блока №2, передаются в блок №3. В элементе №9 блока №3 (фиг. №2) на основе листингов искомых ФО строятся их графы программных зависимостей (В.Н. Касьянов, И.Л. Мирзуитова. Slicing: срезы программ и их использование. - Новосибирск: НФ ООО НПО “Эмари” РИЦ, 2002, - 117 с). В элементе 10 блока №3 (фиг. №2) на основе полученных графов программных зависимостей (ГПЗ) вычисляются обратные статические срезы (процедура «слайсинга»), в качестве критерия для которых выступают выходные переменные искомых ФО. Для вычисления используется метод, при котором в срезе оставляются только те операторы (инструкции процессора), для которых в исходном ГПЗ критерий среза является достижимой вершиной (Ферранте Дж., Оттенштейн К., Уоррен Дж. Граф программных зависимостей и его применение в оптимизации // Векторизация программ: теория, методы, реализация. - М.: Мир, 1991. - С. 141-182). После выполнения процедуры слайсинга, ГПЗ полученных срезов упрощаются (Aurélien Thierry, Guillaume Bonfante, Joan Calvet, Jean-Yves Marion, Fabrice Sabatier. Recognition of binary patterns by Morphological Analysis [электронный ресурс] // Recon 2012 [сайт]. [2012]. URL: http://recon.cx/2012/shedule/attachments/56_SlidesRecon_Aurelien_Thierry.pdf (дата обращения 13.05.2013), p. 5-7) После упрощения в этом же элементе определяются векторы степеней всех вершин упрощенных ГПЗ срезов искомых ФО по формуле:
k
где: d - степень вершины k упрощенного ГПЗ среза искомых ФО;
K - число вершин упрощенного ГПЗ среза искомых ФО;
L - число дуг упрощенного ГПЗ среза искомых ФО;
kl
I - элемент матрицы инцидентности упрощенных ГПЗ срезов искомых ФО.
В этом же элементе рассчитываются матрицы всех путей длины от 1 до K-1 (K - число вершин упрощенного среза ФО) для каждого из срезов по формуле (СВ. Судоплатов, Е.В. Овчинникова. Дискретная математика: Учебник. - М.: ИНФРА-М; Новосибирск: Изд-во НГТУ, 2005, - 256 с):
где:  - матрица путей длины k упрощенного ГПЗ среза искомых ФО;
K - число вершин упрощенного ГПЗ среза искомых ФО;
- матрица смежности упрощенного ГПЗ среза искомых ФО.
Рассчитанные векторы степеней всех вершин и матрицы всех путей длины от 1 до K-1 (K - число вершин упрощенного среза ФО) представляют собой параметры граф-моделей искомых ФО.
В элементе №11 блока №3 (фиг. №2) происходит восстановление грамматик алгоритмов, реализованных искомыми ФО и представленных командами языка программирования низкого уровня.
Восстановленные грамматики алгоритмов, а также параметры граф-моделей искомых ФО хранятся в блоке №6.
В ходе выполнения процедуры распознавания с выхода блока №2 дизассемблированные листинги нераспознанных ФО поступают на вход блока №4. На другой вход блока №4 поступают параметры граф-моделей искомых ФО с выхода блока №6. В блоке №4 происходит определение параметров граф-моделей нераспознанных ФО. Данные действия аналогичны процедурам элементов №9 и 10 блока №3 (фиг. №2). Далее, в блоке №4 выполняется локализация ФО, подобных искомым, посредством анализа сходства параметров граф-моделей искомых и нераспознанных ФО. Отобранные подобным образом ФО, с выхода блока поступают на вход блока №5.
В блоке №5 эмулируется выполнение ФО, выделенных в блоке №4, с целью получения трассы их выполнения. В элементе 12 данного блока (фиг. №2) аналогично элементу 9 блока №3 (фиг. №2) строятся ГПЗ полученных трасс выполнения ФО. С выхода элемента 12 ГПЗ поступают на вход элемента 13 блока №5 (фиг. №2). В данном элементе аналогично элементу 10 блока №3 (фиг. №2) на основе ГПЗ вычисляются срезы полученных трасс выполнения ФО, критерием для которых также являются выходные переменные ФО. Отличием данного элемента от элемента 10 блока №3 (фиг. №2) является отсутствие процедуры упрощения полученных срезов. Выходом блока №5 являются обратные статические срезы ФО относительно их выходных переменных, полученные из ГПЗ трасс выполнения. С выхода блока №5 вычисленные срезы поступают на вход блока №7.
В блок №7 с выхода блока №6 также поступают восстановленные грамматики алгоритмов, реализуемых искомыми ФО. В блоке №7 происходит синтаксический анализ (грамматический разбор) последовательностей инструкций процессора срезов нераспознанных ФО на предмет их соответствия формальному языку, заданному восстановленными в элементе №11 блока №3 (фиг. №2) грамматиками. В этом же блоке, при необходимости, оценивается мера близости поступивших на вход последовательностей инструкций процессора срезов нераспознанных ФО допустимым предложениям формального языка, заданного грамматиками из блока №6. По полученным значениям принимается решение о принадлежности нераспознанного ФО к одному из искомых. Результат распознавания в виде пар «(файл: адрес ФО) - искомый ФО (или ⌀ в случае невозможности отнесения ФО к какому-либо из известных классов)» блока №7 поступает на вход блока №8.
Блок №8 отвечает за передачу результата работы устройства на системную шину ПЭВМ.
Экспериментальная проверка характеристик устройства распознавания функциональных объектов в исполняемых модулях программного обеспечения была выполнена на ПЭВМ путем имитационного моделирования с использованием средств разработки Borland Delphi 7.1, а также таких инструментальных средств исследования бинарного кода, как IDA Pro 6.4 и Pintools 2.12. В качестве искомого ФО был выбран объект, реализующий алгоритм расчета хэш-функции SHA-256 (FIPS PUB 180-4. Secure Hash Standatr (SHS) [электронный ресурс] // National Institute of Standarts and Technology [сайт]. [2012]. URL: http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf (дата обращения 22.03.2013)). В качестве исследуемого программного обеспечения было решено использовать MD5 Checksum Tool v3.1 фирмы NoVirusThanks Company, содержащее исполняемый модуль MD5Checksum.exe, т.к. данный исполняемый модуль, по заявлению разработчиков, реализует искомый алгоритм расчета. Поиск данного ФО без использования предлагаемого устройства занял у опытного специалиста порядка 5 минут (с учетом возможности создания для искомого алгоритма сигнатур и их наличия в исследуемом исполняемом модуле). С применением возможностей предлагаемого устройства на поиск аналогичного объекта ушло менее минуты. В случае необходимости распознавания ФО, для которых невозможно создание сигнатур, оперативность данной процедуры повысится гораздо значительнее.
Одной из важнейших характеристик информационной системы является ее правильное функционирование и выполнения запросов пользователей в заданное время. Угрозами функционированию информационной системы являются не только атаки “отказа в обслуживании” и файловые вирусы или “сетевые черви”, находящиеся в исполняемых файлах, но также и ошибки реализации стандартизированных алгоритмов или недекларированные возможности как непосредственно программного обеспечения самой системы, так и ее средств защиты. Предлагаемое устройство реализовано в виде программно-аппаратного комплекса, реализованного на программируемых логических интегральных схемах и имеющего в своем составе собственный микропроцессор и оперативно-запоминающее устройство, и в процессе распознавания для пользователя является по сути «прозрачным» фильтром, что позволяет ускорить процесс анализа исполняемых файлов.
Таким образом, предложенное устройство распознавания функциональных объектов в исполняемых модулях программного обеспечения осуществляет повышение оперативности распознавания функциональных объектов в исполняемых модулях в условиях отсутствия полного набора исходных текстов программ за счет введения блока вычисления срезов трасс выполнения ФО, содержащего элементы формирования графов программных зависимостей трасс выполнения ФО и процедуры слайсинга, блока сравнения граф-моделей, а также введения в блок обучения элементов формирования графов программных зависимостей искомых ФО, процедуры слайсинга и элемента анализа алгоритмов.