Научная статья на тему 'Методы обфускации кода для компьютерных вирусов'

Методы обфускации кода для компьютерных вирусов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1373
124
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ / INFORMATION SECURITY / КОМПЬЮТЕРНЫЕ ВИРУСЫ / МАСКИРОВКА ВИРУСОВ / COMPUTER VIRUSES / ОБФУСКАЦИЯ / OBFUSCATION / ПОЛИМОРФИЗМ / POLYMORPHISM / ВЗЛОМ / HACKING / STEALTH VIRUS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Картак Вадим Михайлович, Гатиятуллин Тимур Радикович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Картак Вадим Михайлович, Гатиятуллин Тимур Радикович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Методы обфускации кода для компьютерных вирусов»

13. Калыгин В.Г. Промышленная экология: /учеб. пособие для студ. высш. учеб. заведений, стер. М.: Изд. Центр «Академия», 2007. 432 с.

14. Калыгин В.Г., Бондарь В.А., Дедеян Р.Я. Безопасность жизнедеятельности. Промышленная и экологическая безопасность, безопасность в техногенных чрезвычайных ситуациях. / Под ред. В.Г. Калыгина. М.: Колосс, 2006. 520 с.

15. Гречко А.В. Современные методы термической переработки твердых бытовых отходов. // Пром. энергетика, 2006. № 9. С. 102-112.

16. Бабушкин Д.А., Кузнецова А.В. Методы утилизации нефтесодержащих отходов // ЭИ Ресурсосберегающие технологии, 2006. № 6. С. 217-223.

МЕТОДЫ ОБФУСКАЦИИ КОДА ДЛЯ КОМПЬЮТЕРНЫХ

ВИРУСОВ Картак В.М.1, Гатиятуллин Т.Р.2 Email: Kartak17123@scientifictext.ru

1 Картак Вадим Михайлович - заведующий кафедрой, доктор технических наук, профессор; 2Гатиятуллин Тимур Радикович - магистр, кафедра вычислительной техники и защиты информации, факультет информатики и робототехники, Уфимский государственный авиационный университет, г. Уфа

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

Ключевые слова: информационная безопасность, компьютерные вирусы, обфускация, полиморфизм, взлом, маскировка вирусов.

METHODS FOR OBFUSCATING CODE FOR COMPUTER

VIRUSES Kartak V.M.1, Gatiyatullin T.R.2

1Kartak Vadim Mikhaylovich - Head of the Department, Doctor of Technical Sciences, Professor; 2Gatijatullin Timur Radikovich - Master, DEPARTMENT OF COMPUTER SCIENCE AND INFORMATION SECURITY, FACULTY OF COMPUTER SCIENCE AND ROBOTICS, UFA STATE AVIATION TECHNICAL UNIVERSITY, UFA

Abstract: methods of hiding computer viruses are constantly being improved, the authors of malicious programs each time find new ways to hide the presence of viruses in the system and make it more difficult to analyze the code of the virus by information security specialists. This article provides an overview of the various masking techniques currently used by malicious programs, examines the reasons for using obfuscation, provides examples of obfuscation in the JavaScript programming language, and methods for deciphering obfuscated code.

Keywords: information security, computer viruses, obfuscation, polymorphism, hacking, stealth virus.

УДК 004.491.22

В последнее десятилетие огромную долю рынка программного обеспечения стали занимать программные продукты, распространяемые в промежуточном архитектурно-независимом коде, по-другому в байт-коде. Это спровоцировало повышение рисков получения и несанкционированного использования исходного кода из исполняемых модулей. Схожая проблема волнует большое количество компаний-разработчиков программного обеспечения, они заинтересованы в защите своей интеллектуальной собственности и своих продуктов от несанкционированного реверс-инжиниринга. Хотя закон об авторском праве препятствует нелицензионному использованию программного продукта, создатели обеспокоены возможностью хищения проприетарных структур данных и алгоритмов [1].

Невзирая на наличие различных способов защиты программных товаров, таких как шифрование, выполнение на стороне сервера и внедрение машинного кода, обфускация является самым дешевым и простым методом решения данной проблемы [2]. Обфускация кода - это процесс создания нечитаемого кода, или, сильно затрудняющий его анализ. Процесс обфускации содержит в себе трансформацию кода, которая меняет представление кода, оставляя его логику прежней. Но не только лишь компании-разработчики программного обеспечения стали применять обфускацию, в текущее время она интенсивно применяется именно создателями вредоносных программ (например, Virus.Win32.Sality.aa).

Методы самозащиты вредоносных программ чрезвычайно многочисленны и многообразны. Некоторые из защитных технологий нацелены на обход сигнатурных антивирусов, другие - на затруднение анализа кода специалистами; одна вредоносная программа старается как можно тщательнее спрятаться в системе, в то время как другая, не растрачивая на это свое драгоценное процессорное время, занимается конкретно поиском и «отстрелом» определенных средств антивирусной защиты. К тому же, тот или иной прием можно систематизировать по-разному и отнести к различным категориям [3].

Методы самозащиты вредоносной программы решают одну или сразу несколько задач. Вот главные из их:

1. Затруднить детектирование вируса сигнатурными способами;

2. Затруднить анализ кода вируса специалистами;

3. Затруднить обнаружение вредоносной программы в системе;

4. Затруднить работу «защитного» ПО (антивирусов, файерволов).

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

Для создания «запутанного» кода существуют специализированные утилиты, которые так и называются — обфускаторы.

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

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

<script type="application/javascript">

alert('Hello, World!');

</script>

С помощью функции eval(), которая берет в качестве аргумента текст, выполняет его как JavaScript-код и приводит классическую надпись «Hello, World!» к непонятному виду:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(! ".replace(/A/,String)){while(c--){d[c]=k[c]\\c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c) + '\\b','g'),k[c])}}return p}('<0 2="1/3">4(\'6, 5!\');</0>', 7,7, 'script\application\type\javascript\alert\ World\Hello'.split('\'),0,{}))

Также можно изменить код до неузнаваемости, который превратит небольшой скрипт alert("1 ") в Braifuck-подобный вид:

([][(![]+[];[!+[]+!+[]+!+[]]+(!![]+[][(![]+[];[+[]]+(![]+[]+[][[]];[+!+[]+[+[]]]+ (![]+[])[!+[]+!+[]]+0![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+0![]+[])[+!+[]]])[+!+[ ]+[+[]]]+0![]+[])[+!+[]]+(!![]+[])[+[]]][([][0[]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+ []]]+0[]+[])[!+[]+!+[]]+0![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]] +[])[!+[]+!+[]+■'+[]]+(■'[]+[])[+ ■'+[]]+(■'[]+[])[!+[]+■'+[]]+(■'[]+[])[!+[]+!+[]]]()[(![ ]+[])[+ ■'+[]]+(■'[]+[])[!+[]+■'+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(»П+П)[+ ■'+[]]+(■'![]+[ ])[+[]]])(+ !+[])

Для обычного человека изменённый код, полученный с помощью программ-обфускаторов, труден для восприятия, что значительно усложняет статический анализ и практически полностью «размывает» полезную нагрузку вируса.

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

Вышеописанные примеры — это примеры так называемой высокоуровневой обфускации «мирного назначения». Если же ее экстраполировать на вирусный код, то изменится немногое: разве только то, что при маскировке вирусного кода используют в большинстве случаев низкоуровневую обфускацию (с применением команд ассемблера), а также программы для автоматической обфускации. Технология обфускации может подразумевать следующие процедуры:

• изменение таблиц импорта, экспорта и переадресации;

• маскировка оригинальной Entry Point (точка входа в программу);

• использование полиморфного варианта распаковки. Как бороться с защитой от обратной разработки?

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

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

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

1. Обфускация JavaScript. [Электронный ресурс]: Хабрахабр. Режим доступа: https://habrahabr.ru/post/112530/ (дата обращения: 10.01.2018).

2. Реверсинг и обфускация, как это работает. [Электронный ресурс]: Geekbrains. Режим доступа: https://geekbrains.ru/posts/Reversing_and_obiuscation/ (дата обращения: 19.01.2018).

3. Эволюция технологий самозащиты вредоносных программ. [Электронный ресурс]. Режим доступа: Itsec: http://www.itsec.ru/articles2/Ini_security/evolution-of-techs/ (дата обращения: 15.01.2018).

4. Jean-Marie Borello, Ludovic Mé. Code obfuscation techniques for metamorphic viruses. Journal in Computer Virology, 2008. Vol. 4. P. 211-220.

i Надоели баннеры? Вы всегда можете отключить рекламу.