Научный журнал
Современные наукоемкие технологии
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,916

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

Бородин А.В. 1 Юдина М.А. 1 Васильева М.А. 1
1 ФГБОУ ВО «Поволжский государственный технологический университет»
Статья посвящена исследованию методов внедрения компьютерных вирусов в исполнимый код, представленный классическими файловыми объектами. Рассматриваются особенности механизмов перехвата управления у легальной программы – контейнера размещения тела компьютерного вируса. Разработан подход к внедрению инструкций перехвата управления в код легальной программы, позволяющий снизить вероятность обнаружения факта перехвата со стороны различного рода эвристических антивирусных алгоритмов и основанный на исследовании графа потока управления программы. Предложена математическая модель описания задачи анализа графа потока управления программы-контейнера. Сформулирована задача классификации стартового кода программ, реализованных на языках высокого уровня. Формализованы стратегии внедрения инструкций перехвата управления во всех мыслимых случаях реализации легальной программы. Новизна предлагаемого подхода определяется повышением степени гарантированности перехвата управления по отношению к описанной в литературе технологии с «неизвестной» точкой входа – Entry Point Obscured (EPO) или Unknown Entry Point (UEP). Предложено решение как для случая возможной классификации окрестности корня графа потока управления, так и для случая отсутствия возможности такой классификации. Область применения предложенного подхода – разработка разрушающих программных воздействий различного назначения.
граф потока управления
классификация
компьютерный вирус
обфускация
передача управления
точка входа
язык высокого уровня
1. Бородин А.В. Феномен компьютерных вирусов: элементы теории и экономика существования. Йошкар-Ола: Марийский государственный технический университет, 2004. 144 с.
2. Гульев И.А. Компьютерные вирусы, взгляд изнутри, М.: ДМК. 1998. 304 с.
3. Вавренюк А.Б., Зайчик А.Ю., Иванов М.А., Кутепов С.В., Прилуцкий С.О., Смирнов А.А., Тараканов О.В., Шустова Л.И. База эвристических признаков комплекса программных средств антивирусной защиты компьютерных систем, функционирующих под управлением ОС Linux // REDS: Телекоммуникационные устройства и системы. 2013. Т. 3. № 2. С. 144–147.
4. Бородин А.В. Оптимизация стоимости владения объектно-ориентированной метасистемой в условиях заданной модели угроз // Обозрение прикладной и промышленной математики. 2006. Т. 13. В. 5. С. 843–844.
5. Бойко А.А. Способ аналитического моделирования процесса распространения вирусов в компьютерных сетях различной структуры // Труды СПИИРАН. 2015. № 5 (42). С. 196–211.
6. Далингер Я.М., Бабанин Д.В., Бурков С.М. Математические модели распространения вирусов в компьютерных сетях различной структуры // Информатика и системы управления. 2011. № 4 (30). С. 3–11.
7. Климентьев К.Е. Компьютерные вирусы и антивирусы: взгляд программиста. М.: ДМК Пресс, 2013. 656 с.
8. Ахо А.В., Лам М.С., Сети Р., Ульман Дж.Д. Компиляторы: принципы, технологии и инструментарий. М.: Издательский дом «Вильямс», 2018. 1184 с.
9. Петровский А.Б. Пространства множеств и мультимножеств. М.: Едиториал УРСС, 2003. 248 с.
10. Касперски К. Записки исследователя компьютерных вирусов. СПб.: Питер, 2005. 316 с.
11. Плаксин М.А. Тестирование и отладка программ для профессионалов будущих и настоящих. М.: БИНОМ, Лаборатория знаний, 2015. 170 с.
12. Бородин А.В. Линейные конгруэнтные последовательности максимального периода в задачах обфускации программ // Кибернетика и программирование. 2016. № 6. С. 1–19. DOI: 10.7256/2306-4196.2016.6.18499.
13. Вахрамеева Т.Е., Романова А.А., Сенькова А.А., Бородин А.В. Рандомизация потока управления как дополнительный метод обфускации программ // Россия в многовекторном мире: национальная безопасность, вызовы и ответы. Двадцатые Вавиловские чтения: материалы международной междисциплинарной научной конференции. Ч. 2. Йошкар-Ола: Поволжский государственный технологический университет, 2017. С. 203–205.
14. Козлова К.А. Пул переменных программы как объект-хранилище с рандомизацией карты памяти // Инженерные кадры – будущее инновационной экономики России: материалы II Всероссийской студенческой конференции (г. Йошкар-Ола, 21–25 ноября 2016 г.). Ч. 4. Информационные технологии – основа стратегического прорыва в современной промышленности. Йошкар-Ола: Поволжский государственный технологический университет, 2016. С. 48–50.
15. Петрова Д.И. Гипотеза о возможности расширенного воспроизводства технологий компьютерных вирусов // Инженерные кадры – будущее инновационной экономики России: материалы III Всероссийской студенческой конференции (г. Йошкар-Ола, 21–24 ноября 2017 г.). Ч. 4. Информационные технологии – основа стратегического прорыва в современной промышленности. Йошкар-Ола: Поволжский государственный технологический университет, 2017. C. 82–85.

Одной из важных задач при проектировании компьютерных вирусов (КВ) является разработка механизма (или нескольких механизмов) передачи управления от легальной программы (ЛП) к коду вируса [1]. Самым простым решением этой задачи является перехват управления в точке входа в ЛП [2]. Однако этот способ имеет существенный недостаток. Перехват управления в точке входа в ЛП очень легко обнаружить. На это способны практически все эвристические алгоритмы поиска КВ [3]. С другой стороны, если внедрить механизм передачи управления КВ далеко (в смысле количества инструкций/операторов) от точки входа, то вероятность получения управления КВ существенно снижается с ростом такого расстояния. Усложняется, в общем случае, и процесс внедрения, увеличивая тем самым вероятность возникновения неожиданных для вирмэйкера ошибок [4]. Последствия здесь: сокращение времени скрытого существования КВ в вычислительной системе (ВС), то есть, по сути, рост вероятности удаления КВ из ВС раньше достижения цели, ради которой вирус разрабатывался [5, 6]. Тем не менее эта технология получила достаточно широкое распространение в КВ для 32-разрядных операционных систем семейства Microsoft Windows. Так поступают вирусы Win32.CTX, Win32.SK, Win32.Blakan, Win32.Deemo и др. Эта технология внедрения получила название технологии вирусов с «неизвестной» точкой входа – Entry Point Obscured (EPO) или Unknown Entry Point (UEP) [7].

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

Материалы и методы исследования

В качестве фактического материала для исследования проблемы были использованы результаты дизассемблирования программ, написанных на языках программирования C++ (компиляторы Microsoft Visual Studio 2008, 2015 и 2017), Object Pascal (компилятор Free Pascal Compiler версии 3.0.4) и Visual Prolog (компилятор компании Prolog Development Center версии 7.5), реализованных для операционных систем семейства Microsoft Windows, функционирующих на процессорах семейства Intel x86.

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

Результаты исследования и их обсуждение

Рассмотрим поставленную задачу формально. Назовем ГПУ четверку

borod01.wmf,

где borod02.wmf – ориентированный граф,

V – множество вершин или базовых блоков (последовательностей смежных инструкций, в которые поток управления входит в их начале и покидает в конце, без останова программы или возможности ветвления [8]),

E – множество дуг, дугу можно рассматривать как последовательность из двух вершин e = (v1, v2)∈E, borod03.wmf, дуги, по сути, представляют поток управления,

start – начальная вершина (корень) ГПУ, borod05.wmf,

stop – конечная вершина ГПУ, borod07.wmf.

Введем понятие пути на ГПУ:

borod08.wmf

borod09.wmf, borod10.wmf,

где borod11.wmf – множество натуральных чисел. Отсюда множество всех путей на ГПУ можно определить следующим образом:

borod12.wmf

borod13.wmf

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

1. Функция длины пути:

borod14.wmf,

определенная следующим образом:

borod15.wmf

2. Функция начала пути:

borod16.wmf,

определенная следующим образом:

borod17.wmf

3. Функция конца пути:

borod18.wmf,

определенная следующим образом:

borod19.wmf

Заметим, что borod20.wmf и, таким образом, эти функции определены и на E.

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

4. Функция входящих дуг в вершину:

borod21.wmf,

определенная следующим образом:

borod22.wmf, borod23.wmf.

Здесь 2E – булеан множества E (множество всех подмножеств множества E).

5. Функция исходящих дуг из вершины:

borod24.wmf,

определенная следующим образом:

borod25.wmf, borod26.wmf.

Пользуясь двумя последними функциями, отметим, что borod27.wmf и borod28.wmf.

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

borod29.wmf, borod30.wmf, borod31.wmf,

графа G, определяемый своим множеством путей:

borod32.wmf

borod33.wmf

где Vg – множество вершин, заканчивающихся командой передачи управления без явного задания адреса перехода (например, ret, iret для процессоров семейства x86), множество Vg, фактически, ограничивает возможность построения ГПУ без анализа потоков данных,

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

Продолжая формирование языка описания математической модели процесса анализа ГПУ программы-контейнера, положим, что V является порождающим множеством (доменом) для семейства мультимножеств borod34.wmf. Для любого мультимножества стандартно определена функция высоты [9]:

borod35.wmf,

значением которой является максимальная кратность вхождения элементов мултимножества-аргумента:

borod36.wmf

Здесь использованы следующие обозначения: borod37.wmf – множество неотрицательных целых чисел, borod38.wmf – функция кратности элементов мультимножества A. Таким образом, равенство hgt A = 1 означает, что все элементы мультимножества A входят в него ровно один раз (все элементы A уникальны).

Определим, далее, функцию контента

borod39.wmf

следующим образом:

borod40.wmf

С использованием этой функции факт отсутствия циклов в пути p на ГПУ можно представить следующим образом:

borod41.wmf

Теперь можно ввести множество путей без циклов:

borod42.wmf

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

borod43.wmf

при условии реализации механизма однократного выполнения кода КВ, в том числе при многократных передачах управления на этот код.

Во многих случаях простейшую стратегию можно улучшить. Изучение опыта исследователей компьютерных вирусов [10], а также материалов дизассемблирования множества программ позволило сделать вывод о том, что для многих компиляторов можно выделить инвариантную окрестность ГПУ, определяемую множеством borod44.wmf, при borod45.wmf, где l0 – некоторое пороговое значение, зависящее от компилятора. (Интересно, например, что для компилятора языка логического программирования Visual Prolog компании Prolog Development Center значение l0 оказалось существенно больше, чем у других исследованных компиляторов.) Этот факт позволяет предварительно, на этапе проектирования КВ, составить базу данных типовых окрестностей ГПУ G', изучить их и выделить только лучшие (для внедрения инструкций передачи управления КВ) базовые блоки из множества

borod46.wmf

Таким образом, при внедрении инструкций передачи управления компьютерному вирусу последний предварительно решает задачу классификации по базе данных, логически состоящей из записей вида borod47.wmf, где borod48.wmf – множество базовых блоков, наиболее удобных для внедрения и обеспечивающих гарантированное получение КВ управления, borod49.wmf. Иначе говоря, происходит поиск множества borod50.wmf по ключу G'. Далее КВ производит внедрение инструкций перехвата управления в базовые блоки из множества borod51.wmf.

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

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

borod52.wmf

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

Как и технология EPO, предложенный подход к внедрению КВ в ЛП провоцирует антивирусные сканеры при поиске заражения по сигнатурам просматривать весь код программы [7], что существенно снижает быстродействие антивирусного программного обеспечения. Увеличение времени на сканирование программного обеспечения означает определенное снижение вероятности обнаружения на фиксированных промежутках времени. Это первый шаг к достижению цели исследования. С другой стороны, обеспечение изменчивости кода КВ за счет обфускации на основе, например, функционально инвариантного псевдослучайного изменения ГПУ КВ [12] позволяет свести на нет возможности сигнатурного поиска, тем самым оставляя возможность обнаружения лишь со стороны эвристических алгоритмов. Именно в этом случае предложенная технология может в максимальной степени продемонстрировать свои сильные стороны.

Заключение

Подводя итог, отметим, что в рамках представленной работы был предложен механизм передачи управления от ЛП к КВ, отличающийся нетривиальным подходом к размещению инструкций/операторов перехвата. Данный подход усложняет обнаружение КВ эвристическими алгоритмами, с одной стороны, увеличивает вероятность передачи управления вирусу, с другой стороны, и, наконец, снижает вероятность фатальных ошибок в системе ЛП + КВ. Данный подход, особенно в сочетании с перспективными методами обфускации [12, 13] внедренного в ЛП кода, а также обфускации карты памяти [14], способен, по мнению авторов, существенно повысить живучесть КВ.

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


Библиографическая ссылка

Бородин А.В., Юдина М.А., Васильева М.А. О ЗАДАЧЕ КЛАССИФИКАЦИИ НА ОКРЕСТНОСТИ КОРНЯ ГРАФА ПОТОКА УПРАВЛЕНИЯ ПРОГРАММЫ В КОНТЕКСТЕ ПРОЦЕССА РАЗМНОЖЕНИЯ ФАЙЛОВЫХ КОМПЬЮТЕРНЫХ ВИРУСОВ // Современные наукоемкие технологии. – 2019. – № 1. – С. 31-35;
URL: http://www.top-technologies.ru/ru/article/view?id=37374 (дата обращения: 06.06.2020).

Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1.074