Анализ безопасности киберфизических систем с использованием методов машинного обучения. тема диссертации и автореферата по ВАК РФ 05.13.19, кандидат наук Жуковский Евгений Владимирович

  • Жуковский Евгений Владимирович
  • кандидат науккандидат наук
  • 2019, ФГАОУ ВО «Санкт-Петербургский политехнический университет Петра Великого»
  • Специальность ВАК РФ05.13.19
  • Количество страниц 152
Жуковский Евгений Владимирович. Анализ безопасности киберфизических систем с использованием методов машинного обучения.: дис. кандидат наук: 05.13.19 - Методы и системы защиты информации, информационная безопасность. ФГАОУ ВО «Санкт-Петербургский политехнический университет Петра Великого». 2019. 152 с.

Оглавление диссертации кандидат наук Жуковский Евгений Владимирович

Введение

1 Анализ угроз информационной безопасности программного обеспечения киберфизических систем

1.1 Особенности применения и построения КФС

1.2 Анализ программного и аппаратного обеспечения, входящего в состав

КФС

1.2.1 Анализ состава систем промышленного и медицинского назначения

1.3 Анализ угроз ПО КФС, связанных с наличием уязвимостей

1.3.1 Анализ уязвимостей компонентов систем промышленного назначения

1.3.1 Анализ уязвимостей компонентов систем медицинского назначения

1.3.2 Особенности уязвимостей в компонентах КФС

1.4 Анализ угроз ПО КФС, связанных с наличием вредоносных функциональных возможностей

1.4.1 Анализ функциональных возможностей ВПО, применяемого в целенаправленных атаках

1.4.2 Анализ функциональных возможностей ВПО, применяемого в целенаправленных атаках на компоненты КФС

1.5 Исследование существующих способов затруднения анализа безопасности ПО

1.5.1 Механизмы защиты программы от статического анализа

1.5.2 Механизмы защиты программы от динамического анализа

1.6 Выводы

2 Исследование существующих подходов и методов анализа безопасности

программного обеспечения

2.1 Методы преодоления механизмов защиты исполняемого кода от исследования

2.1.1 Методы преодоления механизмов защиты от статического анализа

2.1.2 Методы преодоления механизмов защиты от динамического анализа

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

2.2.1 Выявление вредоносных исполняемых файлов на основе статического анализа

2.2.2 Выявление вредоносных исполняемых файлов на основе динамического анализа

2.3 Выводы

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

3.1 Определение функциональных возможностей ПО на основе многовариантного динамического анализа поведения программы в изолированном окружении

3.2 Модель функционирования анализируемого процесса в вычислительной системе, учитывающая порождаемые им информационные потоки

3.3 Метод предварительной оценки потенциальной опасности путей выполнения программы на основе кластерного анализа вызываемых системных функций

3.4 Выявление скрытых функциональных возможностей в ПО с применением технологии динамического символьного выполнения

3.4.1 Использование графа характеристик для представления исполняемого кода анализируемой программы

3.4.2 Алгоритм выявления скрытых функциональных возможностей в ПО с применением технологии динамического символьного выполнения

3.5 Метод оптимизации выбора путей выполнения анализируемой программы с использованием машинного обучения с подкреплением

3.6 Критерии опасности выполняемых операций на основе анализа порождаемых ими информационных потоков с использованием показателей доверия и критичности

3.7 Методика обнаружения ВПО на основе многоэтапного анализа

безопасности программы

3.8 Выводы

4 Прототип системы анализа безопасности ПО КФС и результаты Экспериментальных исследований

4.1 Архитектура и схема функционирования разработанного прототипа системы анализа безопасности ПО КФС

4.2 Экспериментальные исследования возможности увеличения покрытия исполняемого кода программы и преодоления механизмов защиты от анализа

4.3 Экспериментальные исследования возможности выявления опасных функциональных возможностей в ВПО КФС

4.4 Выводы

Заключение

Список сокращений и условных обозначений

Список использованных источников

Приложение А

Приложение Б

ВВЕДЕНИЕ

Рекомендованный список диссертаций по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК

Введение диссертации (часть автореферата) на тему «Анализ безопасности киберфизических систем с использованием методов машинного обучения.»

Актуальность работы

Киберфизические системы (КФС) являются неотъемлемой частью промышленности, энергетики, здравоохранения, военных технологий и других важных отраслей деятельности человека. Киберфизические системы выступают в качестве центральных компонентов критических информационных инфраструктур (КИИ). Важность задачи обеспечения безопасности КФС определяется критичностью функционирующих процессов и возможными последствиями нарушения информационной безопасности (ИБ) объектов КФС. К КФС относится множество критических объектов: атомные электростанции, гидроэлектростанции, теплоэлектроцентрали, плотины, очистные сооружения, системы обеспечения национальной безопасности, медицинские системы и другие. Нарушения безопасности и последствия атак на данные объекты могут приводить к катастрофическим экономическим, гуманитарным и экологическим последствиям.

Разработка современных методов и средств защиты информации, обеспечения безопасности информационных технологий КИИ согласно Доктрине информационной безопасности РФ [1], является одной из задач, требующей безотлагательного решения. Проблемы обеспечения безопасности КИИ рассматриваются в федеральном законе № 187-ФЗ «О безопасности критической информационной инфраструктуры Российской Федерации» [2], приказе ФСТЭК №31 [3], постановлениях Правительства № 127 [4], № 162 [5], № 452 [6], а также во множестве других нормативно-правовых актов, регулирующих обеспечение безопасности в данной сфере [7,8].

Одной из основных задач обеспечения безопасности КФС является задача анализа безопасности программного обеспечения (ПО), используемого в

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

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

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

Степень разработанности темы исследования

Проблеме анализа безопасности ПО посвящено множество исследований российских и иностранных ученых, таких как А.И. Аветисян, А. Ю. Тихонов, А.С. Марков, В.А. Падарян, А.В. Благодаренко, М.О. Щудрак, М.А. Новиков, А.В. Козачок, И.В. Котенко.

Проблемам обеспечения безопасности КФС посвящены работы Д.П. Зегжды, И.В. Котенко, И.Б. Саенко, С.В. Беззатеева, М.Е. Сухопарова, Ю.С. Васильева.

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

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

Цель и задачи исследования

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

Для достижения поставленной цели в работе решались следующие задачи:

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

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

3. Разработать критерии опасности выполняемых ПО операций на основе анализа порождаемых ими информационных потоков с использованием показателей доверия и критичности.

4. Разработать прототип системы анализа безопасности ПО КФС и провести экспериментальные исследования эффективности его применения для выявления угроз безопасности КФС.

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

Научная новизна

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

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

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

3. Впервые предложено использовать машинное обучение с подкреплением для решения задачи оптимизации выбора путей выполнения при проведении динамического анализа ПО.

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

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

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

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

Положения, выносимые на защиту:

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

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

3. Метод оптимизации выбора путей выполнения при проведении динамического анализа ПО на основе использования алгоритма машинного обучения с подкреплением Р-обучение.

4. Критерии опасности выполняемых ПО операций на основе анализа порождаемых ими информационных потоков с использованием показателей доверия и критичности.

Внедрение результатов работы Полученные основные научные результаты диссертационного исследования использованы при реализации гранта Президента РФ для государственной поддержки ведущих научных школ Российской Федерации НШ-2992.2018.9 «Управление безопасностью и устойчивым

функционированием киберфизических систем с адаптивной топологией», в проектной деятельности АО «ЦентрИнформ», а также нашли свое отражение в учебном процессе Высшей школы кибербезопасности и защиты информации Института прикладной математики и механики ФГАОУ ВО «Санкт-Петербургского политехнического университета Петра Великого» при организации дисциплин «Модели безопасности компьютерных систем», что подтверждается соответствующими актами о внедрении.

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

и апробацией полученных результатов в научных публикациях и докладах на конференциях.

Личное участие соискателя в получении результатов

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

Соответствие специальности научных работников

Полученные научные результаты соответствуют следующим пунктам раздела 2 «Области исследования» паспорта специальности научных работников 05.13.19 «Методы и системы защиты информации, информационная безопасность»: методы, модели и средства выявления, идентификации и классификации угроз нарушения информационной безопасности объектов различного вида и класса (п. 3); принципы и решения (технические, математические, организационные и др.) по созданию новых и совершенствованию существующих средств защиты информации и обеспечения информационной безопасности (п. 13).

Апробация работы

Основные результаты исследований и научных разработок докладывались и обсуждались на следующих конференциях:

— научно-практическая конференция c международным участием «Неделя науки СПбГПУ» (Санкт-Петербург, 2014 г.);

— научная конференция «Информатика и кибернетика (ComCon-2015)» (Санкт-Петербург, 2015 г.);

— международная конференция «Региональная информатика (РИ-2014)» (Санкт-Петербург, 2014, 2016 гг.);

— межрегиональная конференция «Информационная безопасность регионов России (ИБРР-2015)» (Санкт-Петербург, 2015 г.);

— научно-техническая конференция «Методы и технические средства обеспечения безопасности информации» (Санкт-Петербург, 2013, 2015, 2016, 2017 и 2018 гг.);

— межрегиональная научно-практическая конференция «Перспективные направления развития отечественных информационных технологий» (Севастополь, 2018 г.);

— научно-практическая конференция «РусКрипто» (Москва, 2018, 2019 гг.).

Работа победила в конкурсе грантов Правительства Санкт-Петербурга для студентов вузов, расположенных на территории Санкт-Петербурга, аспирантов вузов, отраслевых и академических институтов, расположенных на территории Санкт-Петербурга, в 2014 году.

Публикации

Результаты диссертационной работы отражены в 18 публикациях, в том числе 5 публикаций в рецензируемых журналах из перечня ВАК РФ, 7 публикаций в изданиях из перечня РИНЦ.

Объем и структура работы

Диссертация состоит из введения, четырех глав, заключения, списка использованных источников из 139 наименований, списка сокращений и условных обозначений, и двух приложений. Общий объем работы составляет 153 страницы, в том числе 36 рисунков и 12 таблиц.

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

В первой главе приведены результаты исследования угроз безопасности программного обеспечения КФС. Описаны примеры современных КФС, представлен анализ особенностей построения КФС, приведен перечень составных компонентов КФС и указание их функционального назначения. Разработана классификация ПО и аппаратного обеспечения (АО), входящего в состав КФС. На примере промышленного и медицинского оборудования представлен анализ известных уязвимостей в ПО КФС, демонстрирующий основные типы уязвимостей.

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

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

Сформулированы требования к технологии анализа безопасности ПО КФС для возможности выявления скрытых угроз безопасности.

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

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

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

- алгоритм выявления скрытых функциональных возможностей в ПО с применением технологии динамического символьного выполнения;

- метод оптимизации выбора путей выполнения при проведении динамического анализа ПО на основе использования алгоритма машинного обучения с подкреплением Р-обучение;

- критерии опасности выполняемых ПО операций на основе анализа порождаемых ими информационных потоков с использованием показателей доверия и критичности.

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

В заключении приведены основные результаты и выводы, полученные в ходе выполнения работы.

1 АНАЛИЗ УГРОЗ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КИБЕРФИЗИЧЕСКИХ СИСТЕМ

В данной главе приведены результаты исследования угроз безопасности программного обеспечения КФС. Описаны примеры современных КФС, представлен анализ особенностей построения КФС, приведен перечень составных компонентов КФС и указание их функционального назначения.

Определены основные типы ПО и АО, используемые в КФС на примере компонентов промышленного и медицинского назначения. Разработана классификация ПО и АО, входящего в состав КФС.

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

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

1.1 Особенности применения и построения КФС

Киберфизической принято называть систему, характеризующуюся тесной интеграцией вычислительных и физических ресурсов, где вычислительная компонента распределена по всей физической системе, которая является ее носителем [9].

В настоящее время прослеживается тенденция внедрения цифровизации во все большее количество сфер деятельности человека. Массовое внедрение киберфизических систем в производство и другие отрасли именуют четвертой промышленной революцией. Многие государства и крупные компании прилагают огромные усилия для ускорения данных процессов. Так в стратегию развития высоких технологий в Германии входит внедрение концепции «Индустрия 4.0» (Industry 4.0), направленной на организацию «умного» производства на базе глобальной промышленной сети Интернета вещей и услуг. Происходящие технологические изменения часто называют четвертой промышленной революцией, направленной на появление «Индустрии 4.0» [10]. Основой четвертой промышленной революции принято выделять следующие технологии [11]:

- Анализ больших данных (Big Data). Возможность построения более сложных интеллектуальных систем.

- Автономные роботизированные системы.

- Моделирование и симуляция процессов, SD-моделирование.

- Дополненная реальность. Возможность визуализации сложных процессов.

- Облачные вычисления. Возможность распределенного масштабируемого хранения данных и предоставления вычислительных возможностей по требованию.

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

- Технология SD-печати. Возможность организации децентрализованного производства, в т.ч. с индивидуальных образцов изделий.

Наиболее быстрое внедрение цифровых технологий происходит в направлениях, связанных с развитием «умного» производства (smart manufacturing) и «умного» города (smart city) [12]. Технологии, связанные с «умным» производством, прежде всего, направлены на повышение

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

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

К киберфизическим объектам (КФО) можно отнести следующие системы и устройства[15]:

— системы управления производством (АСУ ТП, SCADA-системы);

— устройства Интернета вещей (Internet of Things, «умный» дом, «умные» вещи);

— робототехнические системы критического назначения;

— беспилотные летательные аппараты;

— беспилотные автомобили;

— системы военного назначения.

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

Современные КФС имеют ряд особенностей по сравнению с традиционными компьютерными и информационными системами [16, 17]:

1. Наличие гибридной составной структуры.

2. Тесный обмен информацией как внутри системы, так и с внешней средой.

3. Наличие центра управления, предназначенного для поддержания штатного функционирования всей КФС.

4. Зависимость функционирования КФС от внешних информационных воздействий, направленных на компоненты подсистем управления, человеко-машинный интерфейс, исполнительные устройства и протоколы взаимодействия.

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

КФС разрабатываются как сеть взаимодействующих элементов с физическим вводом и выводом, а не как автономные устройства, в отличие от традиционных встроенных систем [18], что обуславливает необходимость также в анализе безопасности передаваемых данных между компонентами КФС, включая анализ побочных каналов передачи информации [19].

Важную роль в функционировании современных КФС (рисунок 1.1) играют технологии интеллектуального анализа данных и принятия решений, требующие хранения и агрегирования больших объемов информации.

Рисунок 1.1 - Обобщенная архитектура КФС Под безопасностью программного обеспечения (ПО) подразумевается свойство данного ПО функционировать без проявления различных негативных последствий для конкретной компьютерной системы [20] . Таким образом, анализ безопасности ПО направлен на оценку влияния функционирования данного ПО на безопасность системы. Чтобы определить возможные последствия выполнения программы необходимо определить ее функциональные возможности. Функциональные возможности ПО, которые могут привести к нарушению информационной безопасности (ИБ) системы будем называть опасными функциональными возможностями (ОФВ). В задачи анализа безопасности ПО входит как выявление уязвимостей в нем, так и определение того, является ли ПО вредоносным или содержит в себе недекларированные возможности.

Особенностями ПО КФС, усложняющими процесс анализа безопасности является распространённость встроенного ПО, предполагающего решение задач, связанных с извлечением ПО из оборудования определение формата

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

КФС могут быть различного масштаба и назначения. Но, несмотря на различные назначения КФС в крупных системах есть компоненты управления системой оператором, представляющие возможности централизованной корректировки параметров функционирования системы. В КФС промышленного назначения данным компонентом являются SCADA и панели операторов (НМ1). Данные компоненты являются центральными с точки зрения управления технологическими процессами. Компоненты управления являются наиболее критичными в связи со своей ролью и возможностями влияния на процессы, а также по причине подверженности большому количеству угроз. Чаще всего данные компоненты представляют собой рабочие станции, функционирующие под управлением ОС общего назначения и специализированного ПО (SCADA), применяемого для взаимодействия с оборудованием. Таким образом, узлы управления зачастую подвержены всему множеству возможных угроз, связанных с наличием уязвимостей и вредоносных возможностей в общесистемном ПО [21].

Несмотря на то, что на логическом уровне в отношении КФС выделяют новые классы атак [22] на уровне программного и аппаратного обеспечения компонентов КФС они обусловлены уже известными ранее типами уязвимостей и вредоносных действий.

Современные КФС зачастую реализуют функции автоматизированного управления предприятием (АСУП), так и АСУ ТП, таким образом, что автоматизированное управление осуществляется уже на том уровне, где ранее решение принималось человеком (рисунок 1.2).

Уровень функционирования

Компоненты

Протоколы

АСУП

АСУ ТП

Уровень планирования ресурсов MPR, ERP Ethernet, TCP/IP

предприятия

Уровень управления MES Ethernet, TCP/IP

производственными ресурсами

Диспетчерский уровень оперативного управления ТП

SCADA, HMI

Ethernet, TCP/IP

Уровень сбора данных и

непосредственного

управления

Уровень ввода-вывода информации

Контроллеры

Датчики и

исполнительные

механизмы

Modbus, Profibus

AS-интерфейс, 1-Wire, CAN

Рисунок 1.2 - Основные уровни компонентов промышленных систем Уровни диспетчерского управления АСУ ТП и АСУП чаще всего реализуются в виде ПО, функционирующего на рабочих станциях под управлением ОС Windows, что несет в себе множество угроз ИБ.

1.2 Анализ программного и аппаратного обеспечения, входящего в

состав КФС

В составе КФС можно выделить следующие основные компоненты [23]:

— подсистема управления (SCADA);

— коммуникационная подсистема (сетевое оборудование);

— подсистема взаимодействия с пользователем (человеко-машинные интерфейсы, панели операторов);

— подсистема физических устройств (измерительное оборудование, исполнительные механизмы).

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

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

Похожие диссертационные работы по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК

Список литературы диссертационного исследования кандидат наук Жуковский Евгений Владимирович, 2019 год

Список

J. Bai, 2014 [99] импортируемых функций, значения полей PE-заголовка и др. Случайный лес 99,1%

Частоты вызовов API

K. Chumachenko, 2017 [100] функций; количество ошибочных вызовов API функций; возвращаемое значение API функций Случайный лес 96,8%

Как можно видеть из таблицы 2.2 высокую точность обнаружения ВПО на основе методов классификации позволяет достичь использование алгоритма случайного леса, при использовании следующих признаков: поля РЕ-заголовка, список импортируемых функций, список строк, последовательности байт фиксированной длины.

2.2.2 Выявление вредоносных исполняемых файлов на основе динамического

анализа

Существующие подходы к выявлению ВПО на основе динамического анализа исполняемых файлов применяют как методы классификации, так и кластеризации [103].

В работе [104] предлагается алгоритм обнаружения ВПО, основанный на анализе графов, построенных в результате сбора последовательностей выполненных инструкций в ходе динамического анализа ПО. Эти графы представляют цепь Маркова, где вершинами являются инструкции, а вероятность перехода между ними оценивается по данным, содержащимся в трассе выполнения. Авторы предлагают использовать метод опорных векторов, а в качестве признаков - матрицы схожести. В результате авторам удалось достичь точности классификации равной 96.41%.

В работе [105] представлены результаты сравнительного исследования методов обнаружения ВПО, основанных на статических, динамических и гибридных подходах анализа. В результате динамический анализ позволяет достичь наибольшей площади под АиС кривой - 98% при использовании скрытых марковских моделей. В качестве рассматриваемых параметров использовались последовательности вызовов АР1-функций и последовательности машинных инструкций. В ходе исследования было замечено, что стадия обучения с использованием динамического анализа ВПО занимает существенно больше времени, однако на стадии тестирования все модели показывают примерно одинаковое время.

В работе [106] совместно используется статический и динамический анализ ВПО. В качестве параметров, которые извлекаются статически используются строки, а при помощи динамического анализа строится трасса системных вызовов, которые объединяются в последовательности из трех или четырех вызовов. В качестве алгоритмов машинного обучения используется метод опорных векторов и случайный лес. В результате авторам удалось достичь точности классификации при случайном лесе 97.68% и 98.71% при методе опорных векторов.

В работе [107] описано разработанное программное средство извлечения последовательностей вызовов АР1-функций из исполняемых файлов, при их выполнении в виртуальной среде. С использованием разработанного средства

осуществляется формирование статистики частоты вызовов системных функций. Для построения классификаторов использовались возможности, предоставляемые библиотекой WEKA [108]. Исследовалась возможность классификации файлов на вредоносные и легитимные, а также классификация ВПО по семействам. Для демонстрации своей работы использовался набор данных из 1368 вредоносных и 456 легитимных исполняемых файлов. Была достигнута точность классификации более 97%.

В работе [109] в качестве параметров для алгоритмов кластеризации используется последовательность WinAPI-вызовов, но при этом выполняется выбор признаков при помощи метода взаимной информации. В результате авторам удалось выделить 5 кластеров, которые в дальнейшем использовались для классификации ВПО. В данной работе описан один из возможных методов сжатия входных данных.

В работе [110] авторы рассматривают алгоритм CLOPE (Clustering with sLOPE), который, показал достаточно высокое качество кластеризации на основе трассы WinAPI-вызовов.

В работе [111] кластеризация применяется с целью дальнейшего использования результатов в алгоритмах классификации. Выполняется сравнение алгоритмов ^-средних и ЕМ-алгоритма, при этом лучшие результаты показывает ЕМ-алгоритм.

В работе [112] описана реализация подхода, основанного на анализе ВПО в виртуально системе VMWare, где сбор информации о трассе выполнения осуществляется путем перехвата вызовов системных функций на пользовательском уровне с использованием средства WINAPIOverride32. При проведении эксперимента каждая программа продолжала работать 2 минуты, в течение которых производилось логирование используемых функций в файл формата XML. Далее система возвращалась в исходное состояние и новый файл запускался в уже чистой системе. Перехват используемых функций производился

из следующих системных библиотек: advapi32.dll, kernel32.dll, ntdll.dl, user32.dll, wininet.dll, ws2_32.dll.

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

В работе [113] описан подход к выявлению вредоносных трасс выполнения программы, собранных с помощью динамического анализа ПО в среде изолированного анализа Cuckoo Sandbox. Для эмуляции наличия доступа к сети Интернет используется средство InetSim. При анализе поведения программы обрабатывались только 200 первых вызовов функций. Использовались следующие аргументы: имя функции, адрес структуры Handle, адрес функций и т.д. Представлять информацию о функции и ее аргументах можно несколькими путями. В первом случае пронумерованы все функции и аргументы, и в качестве признака использовать запись вида «число-число», во втором случае аргументы и функции рассматривались как отдельные признаки. В качестве алгоритма машинного обучения используется случайный лес.

Полученные в существующих работах результаты свидетельствуют о том, что подход на основе трассы вызовов функций является наиболее перспективным. Однако извлеченная таким образом информация имеет очень большой размер, что ухудшает скорости и качество алгоритмов кластеризации. Многие авторы предлагают использовать функции хеширования [58, 63] для сокращения объема анализируемых данных или другие алгоритмы сжатия информации [61].

В работе [114] используется метод главных компонент для выделения наиболее критичных WinAPI-функций, которые описывают определенное семейство ВПО. На основе сформированной частоты вызовов этих функций составляется матрица признаков семейств ВПО. Для каждого анализируемого файла используется Рети и строится трасса вызовов системных функций. На основе полученной трассы и имеющейся матрицы признаков при помощи алгоритмов машинного обучения делается вывод о принадлежности файла к определенному семейству ВПО. В результате авторам удалось добиться 75-80% точности классификации.

В работе [115] предпринята попытка скомбинировать несколько техник, используемых в кластеризации ВПО. Из набора машинных инструкций, которые были получены статически из секции кода, выделяются и-граммы, которые в последствии объединяются в один вектор, который подвергается хешированию.

В работе [116] используется суффиксное дерево для выделения длинных подпоследовательностей инструкций. Основное отличие от предыдущей работы заключается в отсутствии функции хеширования на последнем этапе.

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

В работе [117] предлагается использовать некриптографическую, быстро вычисляемую хеш-функцию для бинарных РЕ-файлов, которая преобразует структурную информацию об образце в хеш-значение. Используя данную хеш-функцию, выполняется кластеризация РЕ-файлов с целью обнаружения различных экземпляров одного и того же полиморфного вируса. В результате применения описанного подхода не удалось найти никаких кластеров, которые бы содержали образцы, упакованные одним и тем же упаковщиков, но содержащих разную полезную нагрузку.

В работе [118] описывается возможность применения спектральной кластеризации. В результате авторам не удалось достигнуть точности, которую

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

В работе [119] используются алгоритмы кластеризации к-средних и ЭВБСАК для анализа графов потока управления вредоносных программ. Лучший результат классификации с точностью 95,5% был получен при использовании алгоритма ЭВБСАК с использованием в качестве растояния между графами расстояния редактирования.

2.3 Выводы

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

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

анализа ВПО ЦА, обладающих множеством условий выполнения вредоносных действий.

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

На основе проанализированных механизмов защиты ПО и известных угроз безопасности были сформированы требования к технологии анализа безопасности ПО КФС, включающие в себя обеспечение следующих возможностей:

— выявление опасных функциональных возможностей (ОФВ) в ПО в условиях отсутствия исходного кода;

— оценка безопасности отдельных операций, выполняемых ПО;

— выявление скрытых ОФВ за счет максимизации покрытия анализируемого кода;

— определение условий выполнения целевых участков кода программы;

— преодоление механизмов защиты ПО от статического и динамического анализа.

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

3 ПОДХОД К ВЫЯВЛЕНИЮ ОПАСНЫХ ФУНКЦИОНАЛЬНЫХ

ВОЗМОЖНОСТЕЙ ПО НА ОСНОВЕ МНОГОВАРИАНТНОГО ДИНАМИЧЕСКОГО АНАЛИЗА С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ

МАШИННОГО ОБУЧЕНИЯ И СИМВОЛЬНОГО ВЫПОЛНЕНИЯ

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

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

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

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

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

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

Для обеспечения эффективного анализа безопасности ПО необходимо обеспечить выполнение следующих требований:

— максимизация покрытия исполняемого кода программы;

— преодоление механизмов защиты программы от исследования;

— предварительная оценка потенциальной опасности участков исполняемого кода программы для выбора их для анализа;

— определение условий достижения выбранных путей выполнения программы;

— модификация контекста исполнения программы для выполнения выбранного пути;

— отслеживание выполняемых программой операций;

— оценка опасности, выполненных программой операций, выявление опасных операций;

— анализ выполненных программой опасных операций и классификация ПО как вредоносного.

3.1 Определение функциональных возможностей ПО на основе

многовариантного динамического анализа поведения программы в

изолированном окружении

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

покрытия кода программы с учетом потенциальной опасности выполняемых операций.

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

— оценить потенциальную опасность возможных путей выполнения программы;

— определить условия достижимости потенциально опасных целевых путей выполнения;

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

Путь выполнения программы - последовательность выполняемых инструкций и вызовов функций для достижения определенного состояния программы. Путь выполнения программы (рисунок 3.1), прежде всего, характеризуется местом начала и окончания выполнения, заданных в виде указания конкретных инструкций, или базовых блоков. Базовым блоком называется линейная последовательность инструкций машинного кода, имеющая одну точку входа и одну точку выхода и не содержащая инструкций передачи управления ранее точки выхода [120].

sub 1400S4244 proc near

mov rll, rsp 1

mov [rll+20h], r9d

mov [rll+lSh], rS

mov [rll+iehj, rdx

mov [rll+3], rex

sub rspj 28h

mov r9d, r9d

test r9d, r9d

ji short loc_1400S4276

mov

mov

1

П

T

Bag

г

lea

cmp

rax, [rdx+r9] rax, [rcx+20h] short loc 140084276

4

3

add г^р, 2Sh

jmp loc_l40084304 loc_140084276:

mov eax, 0C000000Dh add rspj 23h retn

sub_140084244 endp

Рисунок 3.1 - Представление исполняемого кода программы в виде базовых

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

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

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

Позже, на основе технологии статического символьного выполнения (Static Symbolic Execution, SSE) была разработана [ехнология динамического

блоков и графа потока управления

символьного выполнения (DSE, Dynamic Symbolic Execution, Concrete execution). Данная технология совмещает динамическое выполнение программы с выборочным использованием символьных переменных для анализа определенных путей выполнения программы. Таким образом, не требуется построение формул для всех путей программы и количество символьных переменных значительно меньше в решаемых логических формулах.

3.2 Модель функционирования анализируемого процесса в вычислительной системе, учитывающая порождаемые им информационные

потоки

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

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

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

Информационный поток (ИП) - взаимодействие объектов при выполнении операций в системе, характеризующееся передачей данных от источника Src к получателю Dst. Информационные потоки IF обладают следующими атрибутами:

источник данных Src, получатель данных Dst, тип информационного потока Type (IFr, IFw, IFX).

Выделяются следующие типы информационных потоков:

1. Информационный поток чтения данных IFr.

2. Информационный поток передачи данных IFw.

3. Информационный поток передачи управления IFX.

Операция OP - совокупность действий, порождающих информационные потоки, в результате вызова анализируемым процессом системной функции. Системная функция - функция, выполнение которой приводит к передаче управления доверенному коду операционной системы (ОС). В рамках предложенной модели используется допущение, что код, реализующий штатный функционал ОС и представляемый в виде стандартных библиотек является доверенным. При практической реализации предложенной модели данное предположение обеспечивается контролем целостности исполняемых файлов, реализующих интерфейсы вызова системных функций, а также непосредственно ядро ОС. Операция OP обладает следующими атрибутами: вызываемая системная функция Func, множество порождаемых информационных потоков чтения данных IFr, множество порождаемых информационных потоков передачи данных IFw, множество информационных потоков передачи управления данным IFX. Множества могут быть нулевыми. Непосредственно ИП порождаются в результате вызова системных функций.

Выделяются следующие типы операций:

1. Операции чтения данных OPr;

2. Операции изменения данных OPw;

3. Операции передачи данных OPs;

4. Операции передачи управления OPx.

Каждая операция может относиться одновременно к нескольким типам, к операциям изменения данных также относятся операции, связанные с созданием новых объектов в системе. Предлагаемая модель предполагает осуществление

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

На рисунке 3.2 представлено графическое изображение модели функционирования анализируемого процесса в вычислительной системе, учитывающей порождаемые им информационные потоки. Данные и код анализируемого и других процессов в предложенной модели также являются объектами (тип Process). При выполнении операций в системе порождаются информационные потоки между объектами исследуемой системы.

Рисунок 3.2 - Модель функционирования анализируемого процесса в

вычислительной системе

На рисунке 3.3 представлен пример порождаемых информационных потоков при выполнении операций, связанных с чтением данных из файла Obj2 и Obj3 и отправка обработанной информации по сети через сетевой сокет Obj4. При этом, в качестве операций OP могут выступать вызовы функций ReadFile и send, соответственно.

Рисунок 3.3 - Пример анализа порождаемых информационных потоков при выполнении операций на основе предложенной модели

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

Предложенная модель базируется на отслеживании не только информационных потоков между объектами, внешними по отношению к анализируемому процессу, но также анализируются потоки внутри программы с использованием технологии отслеживания помеченных данных (1ат1-анализа).

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

Для реализации предложенной модели в качестве типов объектов используется 32 типа объектов, большая часть из которых (26) является типами объектов ядра ОС Windows [122]. При динамическом анализе необходимо отслеживание вызовов функций, отвечающих за создание новых объектов и удаление существующих.

Таблица 3.1 - Перечень основных типов объектов ядра ОС Windows

№ Объект ядра Функция создания Функция удаления

1 CreateRestrictedToken,

Маркеры доступа (Access token) DuplicateToken, DuplicateTokenEx, OpenProcessToken, OpenThreadToken CloseHandle

2 Нотификаторы (Notification) FindFirstChangeNotification FindCloseChangeNotifi cation

3 Устройства (Devices) CreateFile CloseHandle

4 Консоль (Console) CreateFile, с CONIN$ CloseHandle

5 Экранный буфер (Screen buffer) CreateFile, с CONOUT$ CloseHandle

6 Рабочий стол (Desktop) GetThreadDesktop Приложение не может удалить объект

7 События (Event) CreateEvent, CreateEventEx, OpenEvent CloseHandle

8 Лог событий (Event log) OpenEventLog, RegisterEventSource, OpenBackupEventLog CloseEventLog

9 Файл (File) CreateFile CloseHandle, DeleteFile

10 Отображение файла в память (File mapping) CreateFileMapping, OpenFileMapping CloseHandle

11 Файловый поиск (Find file) FindFirstFile FindClose

12 Куча (Heap) HeapCreate HeapDestroy

13 Порты завершения (I/O completion port) CreateIoCompletionPort CloseHandle

14 Задача (Job) CreateJobObiect CloseHandle

№ Объект ядра Функция создания Функция удаления

15 Mailslot CreateMailslot CloseHandle

16 Нотификаторы ресурсов памяти CreateMemoryResourceNotif ication CloseHandle

17 Исполняемый модуль (Module) LoadLibrary, GetModuleHandle FreeLibrary

18 Мьютекс (Mutex) CreateMutex, CreateMutexEx, OpenMutex CloseHandle

19 Пайп (Pipe) CreateNamedPipe, CreatePipe CloseHandle, DisconnectNamedPipe

20 Процесс (Process) CreateProcess, OpenProcess, GetCurrentProcess CloseHandle, TerminateProcess

21 Семафор (Semaphore) CreateSemaphore, CreateSemaphoreEx, OpenSemaphore CloseHandle

22 Сокет (Socket) socket, accept closesocket

23 CreateThread, CloseHandle, TerminateThread

Поток (Thread) CreateRemoteThread, GetCurrentThread

24 CreateWaitableTimer,

Таймер (Timer) CreateWaitableTimerEx, OpenWaitableTimer CloseHandle

25 Ресурсы обновления (Update resource) BeginUpdateResource EndUpdateResource

26 Оконная станция (Window station) GetProcessWindowStation Приложение не может удалить объект

В ходе исследования было выполнено описание всех системных функций ОС Windows на предмет выделения создаваемых/изменяемых информационных потоков, указано их направление и типы объектов, участвующих в выполнении операций [58].

3.3 Метод предварительной оценки потенциальной опасности путей выполнения программы на основе кластерного анализа вызываемых

системных функций

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

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

Опасность функции оценивается на основе результатов предварительной кластеризации WinAPI-функций на три класса: безопасные операции, подозрительные операции, потенциально опасные операции.

1. Безопасные операции. Операции, не представляющие опасности. Имеющие высокую встречаемость как во вредоносном, так и в легитимном ПО. К таким операциям относятся функции открытия/создания файлов, чтение файлов и ключей реестра.

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

передачи управления: установка обработчиков исключений, создание процессов и служб.

3. Опасные операции. Операции, которые могут приводить к нарушению ИБ. Чаще всего встречаются во вредоносном ПО.

Кластеризация функций осуществлялась [123] на основе статистики встречаемости функций в выборках вредоносного и легитимного программного обеспечения. Анализируемая выборка состояла из более 100 тысяч исполняемых файлов, половина из которых являлась вредоносными. В выборку ВПО были включены исполняемые файлы, детектируемые не менее чем 5 антивирусными средствами как вредоносные, выборка легитимных файлов состояла из компонентов различного прикладного программного обеспечения известных производителей без наличия положительных результатов детектирования антивирусными средствами. Выборка анализируемых функций состояла из порядка 5400 системных функций ОС Windows. Статистика встречаемости функций в выборках была получена на основе статического анализа исполняемых файлов. В качестве алгоритмов кластеризации использовался метода k-средних. В результате кластеризации класс «потенциально опасные функции» включает в себя 175 функции, класс «подозрительные функции» - 444 функции, а класс «безопасные функции» - 4774 функций. На рисунке 3.4 представлены полученные результаты кластеризации. Показатель Д (/), отражающий преобладание встречаемости функции f во вредоносной выборке на основе собранной статистики, рассчитывается на основе следующей формулы:

п т = lLk=aMalw(f) lLk=oGood(f)

Р ( ) N М ,

где f - анализируемая системная функция,

Malw (f) - количество вредоносных файлов, содержащих функцию /,

N - общее количество вредоносных файлов,

Good (f) - количество легитимных файлов, содержащих функцию f,

М - общее количество легитимных файлов, Ь - общее количество анализируемых системных функций.

Рисунок 3.4 - Результаты кластеризации системных функций на основе метода к-

средних

Полученное в результате кластеризации функций разбиение использовалось

при оценке опасности путей выполнения исследуемой программы. По

результатам анализа системных функций, всем функциям были назначены веса с

учетом их представленности в выборках вредоносного и легитимного ПО.

Оценка D (f) потенциальной опасности системной функции f

рассчитывается следующим образом: D (f) = еР Class(f) ,

где Р (f) - показатель, отражающий преобладание встречаемости функции во вредоносной выборке, Class(f) - результат кластеризации: для «безопасной» функции Class(f) = 1, для «подозрительной» функции Class (f) = 2, для «потенциально опасной» функции Class (f) = 3.

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

Для каждого пути выполнения программы рассчитывается показатель М, основанный на оценке опасности достижимых функций, для заданной глубины

анализа графа передачи управления:

к

М(А) = ОД / (1 + Сф),

где А - анализируемая ветвь выполнения кода, Я - количество достижимых функций при глубине анализа к, f - анализируемая функция,

D(f) - оценка опасности функции, С - количество предыдущих вызовов данной функции, к - глубина анализа графа передачи управления.

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

3.4 Выявление скрытых функциональных возможностей в ПО с применением технологии динамического символьного выполнения

В п.п. 1.5.2 главы 1 были указаны наиболее распространенные механизмы затруднения динамического анализа, используемые в ВПО. Для того чтобы

обеспечить условия выполнения неисполненного кода предлагается применить возможности современных средств решения формул в теориях (БЫТ-решателей).

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

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

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

Технология отслеживания помеченных входных данных (1ат1-анализ) нашли широкое применение в области анализа безопасности ПО и используются для выявления уязвимостей, НДВ [124] и вредоносных возможностей в ПО.

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

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

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

Значительная часть функций, прежде всего, в программах, написанных с использованием методологии объектно-ориентированного программирования, может вызываться с использованием механизмов косвенных вызовов функций. Для решения проблемы определения вызываемых функций в таких случаях предлагается ограниченно использовать средства эмуляции выполнения кода. Для вызовов неизвестных функций предлагается брать оценку опасности, соответствующую классу «подозрительных» функций. В результате отслеживания символьных переменных (taint-анализа), используемых в условиях достижения требуемой точки Y программы строится формула H(Y ) в логике первого порядка,

содержащая символьные переменные, например:

H (Y ) = x <10 & x >100 & ..., где x1, x2 - символьные переменные, от

значений которых зависит достижимость точки Y .

Построенная формула, передается SMT-решателю для нахождения допустимых значений символьных переменных, необходимых для достижения целевой точки Y программы (рисунок 3.5).

X - место считывания внешних данных,

У. - целевая точка выполнения программы, приводящая к осуществлению потенциально опасных операций

Рисунок 3.5 - Пример анализа путей выполнения программы и определения

требуемых условий

3.4.1 Использование графа характеристик для представления исполняемого

кода анализируемой программы

Наиболее распространенными графовыми представлениями исполняемого кода программы являются абстрактные синтаксические деревья, графы передачи управления, графы зависимости программы, графы характеристик. Также существует подход, основанный на использовании для анализа безопасности ПО схем Янова, получаемых на основе графа передачи управления [125].

Для решения задачи анализа возможных путей выполнения программы и выбора из них наиболее опасных предложено использовать граф характеристик [126] для их представления.

Граф характеристик в = ( V, Е, X, у) - направленный мультиграф, где V -множество вершин, Е - множество ребер, X • Е - это функция, которая каждому ребру ставит в соответствие метку из алфавита £. Все вершины и ребра могут обладать свойствами, или характеристиками. Функция у • (V и Е) X К ^ 5 задает сопоставление множества ключей свойств К на множество значений свойств 5 для всех вершин и ребер.

На рисунке 3.6 представлен пример графа характеристик. Поскольку он является мультиграфом, вершины могут быть соединены несколькими ребрами. Каждая вершина и ребро имеют метку. Также все вершины обладают свойством с ключом к и разными значениями.

Рисунок 3.6 - Пример графа характеристик

Основной инструмент для работы с графов является «обход по графу» (graph traversal).

Обход - это функция Т : P(V) ^T(V), которая сопоставляет множество вершин к множеству других вершин, где Т(V) - все множество вершин.

На основе этого определения строятся различные операции по обходу графа. Три базовые операции, присущие все графам характеристик, - это фильтр, получение входящих вершин, получение исходящих вершин.

Операция фильтрации определяется следующей формулой:

Filterp(X) = [vEX\ p(v)}.

Фильтрация возвращает все вершины из множества X , для которых выполняется предикат р(и). Например, это может быть проверка определенного свойства, или параметра, вершины.

Одна из функций обхода по ребрам - это получение исходящих вершин:

ОМ(Х) = е Е}

vex

Outl(X) = J{u: (v,v) eE U A((v,u)) = I}

vex

Outf's(X) = J{u: (v,v) eE U A((v,u)) = I U p((v,v),k) = s}

vex

Обход Out возвращает множество вершин, достижимых из множества узлов

к. s

X. Outi фильтрует вершины по метке ребра, которое их соединяет. Outt' также фильтрует по метке грани, а также по множеству свойств с ключами из к, значениями из s.

Аналогично операции получения всех исходящих вершин вводится операция получения всех входящих вершин:

In(X) = JJ{V: (v, v) e E}

vex

"rW,v\

1Щ(Х) = JJ{v: (v,v) eE U A((v,u)) = 1}

vex

Inf's(X) = J{v: (v,v) eE U A((v,u)) = I U p((v,v),k) = s}

vex

Для агрегации результатов вводятся операции Or и And: Or(Ti,...,TN) = Ti(X) U ... U TN(X) And(T1,..., TN) = T1(X) n ... n TN(X) Операция Or - это объединение подмножеств результатов всех обходов. Операция And - это операция пересечения подмножеств результатов всех обходов.

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

Рисунок 3.7 - Пример представления программы в виде взаимодействующих базовых блоков

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

О Считывание внешних данных

Передача управления с

использованием инструкций ф Передача управления неизвестной

безусловного перехода (call, jmp, ret) функции (call еах)

Передача управления с # Изменение внешних данных

-использованием инструкций

условных переходов (je,jz, ..) Щ Возврат из функции

Рисунок 3.8 - Пример представления программы в виде графа характеристик

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

3.4.2 Алгоритм выявления скрытых функциональных возможностей в ПО с применением технологии динамического символьного выполнения

Предлагаемый алгоритм анализа программы [127] и выявления скрытых функциональных возможностей состоит из следующих шагов, представленных на рисунке 3.9. Анализ программы выполняется пока не будет достигнута требуемая величина значения покрытия кода Covmax, либо достигнуто заданное максимальное время работы Ттах. Одной из сложностей динамического анализа являются механизмы нелинейной передачи управления, например, выполнение вредоносных операций в коде обработчиков исключений. Для решения данной

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

Рисунок 3.9 - Блок-схема алгоритма выявления скрытых функциональных возможностей в ПО с применением технологии динамического символьного

выполнения

Результатом работы алгоритма анализа программного обеспечения является сохраненная информация о выполненных в ходе анализа последовательностей вызовов функций, их аргументах, оценка их опасности, и условия их выполнения. Также сохраняется информация обо всех ветвлениях программы и оценка М (Л) опасности путей дальнейшего выполнения программы. Полученная информация может быть визуализирована в графовом виде для возможности анализа вручную.

3.5 Метод оптимизации выбора путей выполнения анализируемой программы с использованием машинного обучения с подкреплением

Для оптимизации выбора анализируемых путей выполнения программы с учетом их потенциальной опасности предложен метод, основанный на применении алгоритмов машинного обучения с подкреплением (reinforcement learning).

Обучение с подкреплением предполагает обучение агента на основе многократного его взаимодействия с окружающей средой, и наличие обратной связи при обучении в виде численного вознаграждения за выполняемые агентом действия (рисунок 3.10) [128].

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

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

Процесс выполнения выбранного пути программы до достижения следующего ветвления будет выступать в качестве окружающей среды.

Рисунок 3.10 - Схема взаимодействия агента и среды в задаче обучения с

подкреплением

На каждом временном шаге ? агент получает описание состояния окружающей среды 8(1), выраженной в графах потока передачи управления и зависимости по данным.

На основании данной информации о состоянии среды осуществляется действие а(1) — выбор дальнейшего пути выполнения программы. Выбор между следованием по текущему пути выполнения программы, определяемым текущим состоянием памяти и регистров, либо построением, и решением символьного уравнения, и изменением пути выполнения программы.

Решение агента о выборе пути дальнейшего выполнения принимается на основе следующих параметров:

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

—тип проверки (тип объекта): реестр, файл, сетевое соединение, время и другие;

—условие проверки (WinAPI-функция, связанная с проверкой); — степень опасности функции условия; —достижимость невыполненного кода;

—отличается ли в других средах выполнения текущее состояние; —количество не выполняемых ранее инструкций (в т.ч. передачи управления) до следующего ветвления;

—количество достижимых вызовов, не выполняемых ранее функций при заданной глубине анализа k;

На следующем временном шаге агент получает вознаграждение r(t) = ri(t) -r2(t), состоящее из положительного и отрицательного вознаграждения.

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

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

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

Цель агента максимизировать ожидаемую награду: R(t) = r(t+1) + r(t+2) + r(t+3) + ... + r(T).

В качестве используемого алгоритма машинного обучения с подкреплением был выбран алгоритм Q-обучение (Q-learning). Выбранный алгоритм относится к классу алгоритмов на основе временных различий (Temporal Difference, TD) с разделенной оценкой ценности стратегий. Агент в Q-обучении придерживается определённой стратегии n(S), являющейся наилучшей стратегией среди использованных ранее и с ее помощью происходит выбор дальнейшего пути исполнения программы. Конечной целью является поиск оптимальной стратегии

действий я*(б), которая приносит наибольшее вознаграждение за время жизни агента.

Агент не хранит правила поведения, а запоминает более общую структуру -Q-таблицу. Q-таблица - это функция Q(s, а) для каждого состояния s и каждого возможного действия а в этом состоянии. Эта таблица хранит, оценки действий а, совершенных в состоянии s. Таким образом, Q-значение соответствует полезности действия а в состоянии s. В самом начале Q-таблица агента является нулевой. В результате работы алгоритма мы получаем таблицу Q = Q*(s, а), где Q* является оптимальной таблицей. Агент, используя оценки действий, содержащиеся в оптимальной таблице, будет следовать по оптимальному пути.

Агент на каждом шаге выбирает действие а, используя е-жадную стратегию. После чего агент обновляет оценку Q(s, а) по следующей формуле:

Q(s, a) = Q(s, a) + а[г + у max а' Q(s', а') - Q(s, а)], где s' - следующее состояние, а - фактор обучения, определяющий степень доверия агента новой информации. у - фактор дисконтирования. Чем он меньше, тем меньше агент задумывается о выгоде от будущих своих действий. Таким образом, одной из важных задач в обучении с подкреплением является нахождение компромисса (ехр1огайоп^-ехр1ойайоп) между исследованием (анализом графов и решением символьного уравнения для достижения другого пути) и эксплуатацией (выполнением программы в текущих условиях). Шаги повторяются до тех пор, пока агент не проанализирует все достижимые пути выполнения программы или закончится время, выделенное на проведение анализа исполняемого файла.

3.6 Критерии опасности выполняемых операций на основе анализа порождаемых ими информационных потоков с использованием показателей

доверия и критичности

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

Показатель доверия T(X) - характеристика взаимодействующих сущностей, обратно пропорциональная вероятности нарушения ИБ системы в результате выполнения операций с сущностью X.

Показатель критичности C(X) - характеристика взаимодействующих сущностей, связанная с оценкой степени влияния на ИБ системы выполнения операций указанного типа (r, w, x) c сущностью X.

Показатели доверия и критичности рассчитываются на основе известной информации о существующих угрозах и распространенных техниках нарушения ИБ.

Показатель доверия T рассчитывается следующим образом:

T(obj) = WRights*Rights + Wsign*Sign + Wprotect*Protect + Wioc*IoC + WEdit*T(Edit),

где WRights, Wsign, Wprotect, Wioc, WEdit - веса каждого из учитываемых параметров в рассчитываемом показателе, по умолчанию равны 1;

Rights - права процесса в системе или права владельца файла, уровень целостности (integrity level) ОС, разделение объектов на 3 класса на основе прав доступа: непривилегированные объекты (1), привилегированные объекты (2), системные объекты (3), каждому классу соответствует численная оценка;

Sign - наличие цифровой подписи у файла и уровень доверия к ее издателю (на основе предварительной кластеризации);

Protect - наличие признаков защиты файла от анализа (упаковка, шифрование);

IoC - наличие объекта в перечне известных индикаторов компрометации (IoC, indicator of compromise);

T(Edit) - наименьшее из значений показателя доверия взаимодействовавшего объекта для информационных потоков передачи данных и управления по отношению к данному объекту.

Показатель критичности C рассчитывается следующим образом:

C(obj) = WRights*Rights + WSign*Sign + WClass*Class + WMalwStat *MalwStat + Wattack *ATTACK ++ Wioc*IOC + WEdit*C(Edit),

где WRights, WSign, Wclass, WMalwStat, Wattack, Wioc, WEdit - веса каждого из учитываемых параметров в рассчитываемом показателе, по умолчанию равны 1;

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

Sign - наличие цифровой подписи у файла и уровень доверия к ее издателю (на основе предварительной кластеризации);

Class - тип ПО, к которому относится объект (системное ПО, прикладное и другие классы);

MalwStat - встречаемость данного объекта в качестве целей воздействия ВПО, полученная на основе статистического анализа выборок вредоносного и легитимного ПО;

ATTACK - воздействие на данный объект в ходе целенаправленных атак, на основе информации об известных техниках, применяемых в ЦА из базы знаний MITRE ATT&CK;

IoC - наличие объекта в перечне известных индикаторов компрометации (IoC, indicator of compromise);

С(Еёй) - наибольшее из значений показателя критичности объекта, осуществлявшего считывание для Сг и запись для С№.

Для оптимального подбора весов W возможно применение генетических или нейросетевых методов оптимизации.

Критерии опасности выполняемой операции

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

1. Т(Бгс) < С^^Об^

Если показатель доверия к источнику 8те передаваемой информации меньше критичности получателя данных Dst, то выполняемая операция является потенциально опасной операцией изменения данных. Примером служит изменение критического системного файла или модификация памяти процесса.

2. Шг: Сг(Бгс) > Т^)

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

- если получателем Dst выступает анализируемый процесс, то является потенциально опасной операцией чтения данных. Примером служит считывание критических данных анализируемой программой;

- если получателем Dst выступает сторонний объект, то является потенциально опасной операцией передачи данных. Примером служит отправка критических данных на удаленный сервер.

3. Шх: Т(Бгс) < Сх^)

Если показатель доверия к источнику информации 5Ус, которым передается управление меньше критичности получателя данных целевого контекста выполнения кода Dst, то выполняемая операция является потенциально опасной операцией передачи управления. Примером служит загрузка неподписанных

динамических исполняемых модулей с наличием признаков защиты кода от исследования.

На рисунке 3.11 приведен пример анализа ПО на основе отслеживания безопасности порождаемых им при выполнении операций информационных потоков.

Рисунок 3.11 - Схема анализа функционирования ПО на основе предложенной

модели

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

3.7 Методика обнаружения ВПО на основе многоэтапного анализа

безопасности программы

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

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

Таким образом, для эффективного решения задачи определения является ли анализируемый файл вредоносным возможно применение [123] поэтапного анализа программы (рисунок 3.12), основанного на принципе минимальной достаточности используемых средств и подходов.

Рисунок 3.12 - Стадии многоэтапного анализа исполняемых файлов в

изолированной среде выполнения

Многоэтапный анализ безопасности ПО предполагает следующие стадии исследования исполняемых файлов в разработанной изолированной среде выполнения:

1. Если в результате статического анализа не выявлено признаков наличия механизмов защиты от статического анализа (упаковки, шифрования,

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

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

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

4. Если выявлены признаки триггерного поведения, то осуществляется итерационный анализ программы с исследованием отдельных путей выполнения и определением условий их достижения на основе символьного выполнения.

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

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

3.8 Выводы

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

Для повышения эффективности анализа безопасности ПО с использованием предложенного подхода были разработаны следующие модели, методы и алгоритмы:

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

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

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

4. Метод оптимизации выбора путей выполнения при проведении динамического анализа ПО на основе использования алгоритма машинного обучения с подкреплением Р-обучение.

5. Критерии опасности выполняемых ПО операций на основе анализа порождаемых ими информационных потоков с использованием показателей доверия и критичности

Совместное использование разработанных методов и алгоритмов позволяют обеспечить увеличение покрытие исполняемого кода программы при проведении динамического исследования ПО.

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

4 ПРОТОТИП СИСТЕМЫ АНАЛИЗА БЕЗОПАСНОСТИ ПО КФС И РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТАЛЬНЫХ ИССЛЕДОВАНИЙ

В ходе выполнения работы осуществлялась разработка прототипа системы анализа безопасности (САБ) ПО КФС, предназначенного для выявления потенциально опасных функциональных возможностей в ПО на основе предложенного в главе 3 подхода, основанного на проведении многовариантного анализа поведения программы в изолированной среде выполнения.

4.1 Архитектура и схема функционирования разработанного прототипа

системы анализа безопасности ПО КФС

Разработанный прототип САБ ПО КФС состоит из функциональных компонентов, представленных на рисунке 4.1. Процесс функционирования САБ ПО КФС состоит их нескольких этапов:

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

2. Предварительный сбор информации об известных угрозах и объектах взаимодействия, представление собранной информации в БД в формате, доступном для анализа компонентом оценки безопасности выполняемых программой операций.

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

Рисунок 4.1 - Архитектура прототипа системы анализа безопасности ПО КФС

Основные сторонние программные компоненты, используемые при построении подсистемы динамического анализа прототипа САБ ПО КФС и их логическая связь представлены на рисунке 4.2.

Рисунок 4.2 - Основные программные компоненты подсистемы динамического

анализа прототипа САБ ПО КФС

Основные компоненты, необходимые для проведения динамического анализа с использованием символьного выполнения:

4. Средство отслеживания выполнения программы и возможности его изменения. ДБИ Intel PIN [129].

5. Средство, реализующее технологию динамического символьного выполнения и предоставляющее интерфейс для анализа исполняемых файлов. Используется платформа Triton [130]

В качестве SMT-решателя используется решатель компании Microsoft

Research Z3[131], совместимый с интерфейсом SMT2-LIB [132].

6. Для организации виртуальной изолированной среды анализа используется система виртуализации KVM [133].

Тестирование разработанного прототипа САБ ПО КФС осуществлялось на персональном компьютере Intel(R) Core(TM) i7-3520M CPU 2.90GHz с 32 Gb оперативной памяти.

4.2 Экспериментальные исследования возможности увеличения покрытия исполняемого кода программы и преодоления механизмов защиты от

анализа

Эффективность динамического анализа ПО определяется уровнем покрытия исполняемого кода программы. В ходе исследования осуществлялся динамический анализ с использованием разработанного прототипа САБ ПО КФС следующих исполняемых файлов [40], задействованных в целенаправленных атаках на промышленные системы:

1. Исполняемый файл 1, используемый в ЦА Stuxnet;

2. Исполняемый файл 2, используемый в ЦА Shamoon;

3. Исполняемый файл 3, используемый в ЦА EnergeticBear;

4. Исполняемый файл 4, используемый в ЦА BlackEnergy;

5. Исполняемый файл 5, используемый в ЦА Triton.

На рисунке 4.3 представлены результаты анализа покрытия исполняемого кода исследуемых программ с использованием средства ДБИ Intel PIN, реализующего анализ единственной трассы выполнения и разработанного прототипа САБ ПО КФС. Разработанный прототип САБ ПО КФС осуществляет многократный запуск исполняемого файла с модификацией путей выполнения программы на основе предложенных методов и алгоритмов. Покрытие исполняемого кода оценивалось путем подсчета количества вызванных базовых блоков (ББ) программы по отношению к количеству ББ, выявленных в ходе статического анализа ПО.

so

os ГО

el

О

ai s i-

Ъ о.

SÉ О С

Анализ покрытия кода выборки ВПО ЦА КФС

100,00% 90,00% 80,00%% 70,00% 60,00% 50,00% 40,00% 30,00% 20,00% 10,00% 0,00%

/

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