Выпуск №6 (Июнь)
XLII Международная научно-практическая конференция «Актуальные проблемы современной науки», 27.06.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLI Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.05.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XL Международная научно-практическая конференция «Актуальные проблемы современной науки», 28.03.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

МНПК "Цифровая трансформация и инновации в экономике, праве, государственном управлении, науке и образовательных процессах", 18-21.03.2019

XXXIX Международная научно-практическая конференция «Актуальные проблемы современной науки», 27.02.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XIII Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 31.01.2019 (Совместная конференция с Финансово-экономическим научным советом)

XXXVIII Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.01.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XXXVІI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2018 (Совместная конференция с Международным научным центром)

XXXVI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2018 (Совместная конференция с Международным научным центром)

XIII Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.10.2018 (Совместная конференция с Финансово-экономическим научным советом)

XXXV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.10.2018 (Совместная конференция с Международным научным центром)

XXXIV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.09.2018 (Совместная конференция с Международным научным центром)

ХXXIII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.08.2018 (Совместная конференция с Международным научным центром)

ХXXII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 31.07.2018 (Совместная конференция с Международным научным центром)

XII Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.07.2018 (Совместная конференция с Финансово-экономическим научным советом)

ХXXI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.06.2018 (Совместная конференция с Международным научным центром)

ХІ Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 31.05.2018 (Совместная конференция с Финансово-экономическим научным советом)

XXХ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.05.2018 (Совместная конференция с Международным научным центром)

XXIХ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.04.2018 (Совместная конференция с Международным научным центром)

ХХVIІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.03.2018 (Совместная конференция с Международным научным центром)

ІІІ МНПК "Экономика, финансы и управление в XXI веке: анализ тенденций и перспективы развития", 19-22.03.2018 (Совместная конференция с Финансово-экономическим научным советом)

X Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 28.02.2018 (Совместная конференция с Финансово-экономическим научным советом)

ХХVІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.02.2018 (Совместная конференция с Международным научным центром)

ХХVІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.01.2018 (Совместная конференция с Международным научным центром)

XІІ Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 29.12.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХХV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2017 (Совместная конференция с Международным научным центром)

ХХІV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2017 (Совместная конференция с Международным научным центром)

XI Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.10.2017 (Совместная конференция с Финансово-экономическим научным советом)

XІ Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 29.09.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХХIІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.09.2017 (Совместная конференция с Международным научным центром)

X Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.07.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХXII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.07.2017 (Совместная конференция с Международным научным центром)

ХXI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.06.2017 (Совместная конференция с Международным научным центром)

IX Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 31.05.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХX Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.05.2017 (Совместная конференция с Международным научным центром)

"Тенденции развития национальных экономик: экономическое и правовое измерение" 18-19.05.2017 (Совместная конференция с Финансово-экономическим научным советом и ККИБиП)

ХIX Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.04.2017 (Совместная конференция с Международным научным центром)

IX Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 31.03.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVIII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.03.2017 (Совместная конференция с Международным научным центром)

МНПК "Экономика, финансы и управление в XXI веке: анализ тенденций и перспективы развития", 20–23.03.2017 (Совместная конференция с Финансово-экономическим научным советом)

VIII Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.02.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.02.2017 (Совместная конференция с Международным научным центром)

VIII Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.01.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.01.2017 (Совместная конференция с Международным научным центром)

ХV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2016 (Совместная конференция с Международным научным центром)

VIII Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 28.12.2016 (Совместная конференция с Финансово-экономическим научным советом)

VII Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 30.11.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2016 (Совместная конференция с Международным научным центром)

VII Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.10.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.10.2016 (Совместная конференция с Международным научным центром)

VII Международная научно-практическая конф. «Научный диспут: вопросы экономики и финансов», 30.09.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.09.2016 (Совместная конференция с Международным научным центром)

XI Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.08.2016 (Совместная конференция с Международным научным центром)

ІV Международная научно-практическая конф. "Экономика и управление в XXI веке: анализ тенденций и перспектив развития", 29.07.2016 (Совместная конференция с Финансово-экономическим научным советом)

X Международная научно-практическая конференция "Актуальные проблемы современной науки", 28.07.2016 (Совместная конференция с Международным научным центром)

VІ Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 30.06.2016 (Совместная конференция с Финансово-экономическим научным советом)

ІX Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.06.2016 (Совместная конференция с Международным научным центром)

VI Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 31.05.2016 (Совместная конференция с Финансово-экономическим научным советом)

VIIІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 30.05.2016 (Совместная конференция с Международным научным центром)

V Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 29.04.2016 (Совместная конференция с Финансово-экономическим научным советом)

VIІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 28.04.2016 (Совместная конференция с Международным научным центром)

VІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 31.03.2016 (Совместная конференция с Международным научным центром)

ІI Международная научно-практическая конф. "Экономика и управление в XXI веке: анализ тенденций и перспектив развития", 30.03.2016 (Совместная конференция с Финансово-экономическим научным советом)

V Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 21-24.03.2016 (Совместная конференция с Финансово-экономическим научным советом)

V Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 26.02.2016 (Совместная конференция с Финансово-экономическим научным советом)

II Международная научно-практическая конференция: "Научный диспут: актуальные вопросы медицины" 20.02.2016 (Совместная конференция с Международным научным центром)

ІV Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.12.2015 (Совместная конференция с Международным научным центром)

IV Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.12.2015 (Совместная конференция с Финансово-экономическим научным советом)

IV Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 30.11.2015 (Совместная конференция с Финансово-экономическим научным советом)

IV Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 29.10.2015 (Совместная конференция с Финансово-экономическим научным советом)

Международная научно-практическая конференция: "Научный диспут: актуальные вопросы медицины" 28.10.2015 (Совместная конференция с Международным научным центром)

III Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 30.09.2015 (Совместная конференция с Финансово-экономическим научным советом)

III Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.08.2015 (Совместная конференция с Финансово-экономическим научным советом)

ІІІ Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 30.06.2015 (Совместная конференция с Финансово-экономическим научным советом)

ІІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.06.2015 (Совместная конференция с Международным научным центром)

II Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.05.2015 (Совместная конференция с Финансово-экономическим научным советом)

Актуальные проблемы экономики и финансов, 29.04.2015 (Совместная конференция с Финансово-экономическим научным советом)

Научный диспут: вопросы экономики и финансов, 31.03.2015 (Совместная конференция с Финансово-экономическим научным советом)

Актуальные проблемы современной науки, 27.03.2015 (Совместная конференция с Международным научным центром)

Глобальные проблемы экономики и финансов, 27.02.2015 (Совместная конференция с финансово-экономическим научным советом)



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

Ключевые слова:  Обфускация, Деобфускация, Расшифровка, WEB-страницы, JavaScript, скриптовый вирус.


Отрасль науки: Технические науки
Скачать статью (pdf)

 

Технічні науки

УДК 004.735

Унгул Володимир Валерійович

студент

Національний технічний університет України  

«Київський політехнічний інститут»    

Унгул Владимир Валерьевич

студент

Национальный технический университет Украины

 «Киевский политехнический институт»    

Unhul Volodymyr V.     

Student

АНАЛІЗ ТА РОЗРОБКА МЕТОДІВ ДЕОБФУСКАЦІЇ СКРИПТІВ ДЛЯ ВИЯВЛЕННЯ ЗАГРОЗ ІНФОРМАЦІЙНОЇ СТІЙКОСТІ КОМП’ЮТЕРА

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

ANALYSIS AND DEVELOPMENT OF METHODS DEOBFUSKATSIYI SCRIPTS TO IDENTIFY THREATS TO INFORMATION COMPUTER SUSTAINABILITY

Анотація: В роботі досліджуються проблемні питання в захисті інформаційних систем та пропонуються методи усунення цих проблем. Метою є покращення систем захисту комп’ютерної інформації від скриптових вірусів, які потрапляють до комп’ютера з мережі інтернет, а саме при перегляді WEB-сторінок із вбудованим вірусним програмним забезпеченням. Описани принципи створення та побудовані алгоритми протидії обфусцированим скриптовим вірусам.

Ключові слова:  Обфускація, Деобфускація, Розшифровування, WEB-сторінки, JavaScript, скриптовий вірус.

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

Ключевые слова:  Обфускация, Деобфускация, Расшифровка, WEB-страницы, JavaScript, скриптовый вирус.

Summary : It analyzes the problems in protecting information systems and proposes methods eliminate these problems. To improve the systems of information protection of scripting viruses that enter your computer from the Internet, such as when watching WEB-page in-viral software. Describes the creation and counter the algorithm obfustsyrovanym scripting viruses.

Key words: Obfuskatsiya, Deobfuskatsiya, Decryption, WEB-page, JavaScript, script virus.

Вступ

З кожним днем зростає кількість інформаційних комп’ютерних систем, які потребують захисту, надійності в обробці й використанні даних, разом із ними зростає кількість різновидів вірусів та вірусного коду, які можуть негативно вплинути або взагалі внести критичні зміни в роботу будь-якої інформаційної системи. В процесі виконання наукового дослідження винайдені та представлені принципово нові рішення по захисту інформаційної системи від зашифрованих скриптових комп’ютерних вірусів.

1. АНАЛІЗ ТА ОГЛЯД ПРОБЛЕМАТИКИ ПРЕДМЕТНОЇ ОБЛАСТІ ДОСЛІДЖЕННЯ

1.1 Гармонізація понятійної бази

В зв’язку з тим, що проблеми протидії зашифрованим скриптовим вірусам є досить новою, в науково-практичних джерелах є деяка розбіжність в термінології та поняттях. Тому на першому етапі досліджень проведена гармонізація понятійної бази.

Гармонізація базувалась на наступних принципах:

- Використані поняття та терміни повинні відповідати загальновизнаним та не протирічити між собою.

- Використані поняття та терміни повинні відповідати меті дослідження.

В даній статті особлива увага приділяється обфускації програмного коду та веб-додатків написаних на скриптовій мові javascript. Обфускація – це приведення виконуваного програмного коду до виду, який зберігає його функціональність, але ускладнює аналіз, розуміння алгоритму роботи і модифікації при декомпіляції [1]. Іншими словами це заплутування коду. «Заплутування» коду може здійснюватися на рівні алгоритму, сирцевого тексту або асемблерного тексту. Існують спеціальні програми, що виробляють обфускацію, їх називають обфускаторами. Є деяка кількість шляхів обфускації, яка може реорганізовувати програмний код в автоматичному режимі або в ручному.

Цілі обфускації:

- Ускладнення декомпіляції та вивчення програм з метою виявлення функціональності;

- Ускладнення декомпіляції програм з метою запобігання обходу систем перевірки ліцензій;

- Порушення авторських прав програмістів і приховування авторства;

- Демонстрація неочевидних можливостей мови і кваліфікації програміста.

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

Деобфускація – це процес, приведення обфусцированого коду до виду, який дозволить вивчати та анлізувати його функціонал. В даний момент часу, не має систем, які б змогли проаналізувати будь-який обфусцирований код, але існують деобфускатори (програми, які надають змогу проаналізувати функціонал або привести код до зрозумілого виду), які «заточені» тільки під певний різновид обфускації. Метою дослідження є можливість аналізувати будь-який обфусцирований код, назважаючи, якими засобами та методами він був обфусцирован.

1.2 Методи шифрування (обфускації) скриптової мови JavaScript

Існує дуже велика кількість методів обфускації, яких із кожним днем стає дедалі більше. Ми спробували їх розділити на три категорії.

1.2.1 Обфускація мінімізаторами

Існують готові програмні засоби, які надають змогу в автоматичному режим зробити «зтискання» коду. Таким видом обфускації користуються в більшій мірі виробники програмного забезпечення. Код, який отримаємо на виході, можна зашифрувати ще одним методом, які будуть розглянуті пізніше в нашій роботі.

Серед загальновідомих мінімізаторів [2] можна виділити JS Packer, JSmin, YUI Compressor, Closure compiler та це далеко не повний їх список.

Написаний код на скриптовій мові JavaScipt виду:

function MyClass(){

    this.foo = function(argument1, argument2){

        var addedArgs = parseInt(argument1)+parseInt(argument2);

        return addedArgs;

    }

    var anonymousInnerFunction = function(){

        // do stuff here!

    }

}

За допомогою мінімізаторів приймає такий вигляд:

function MyClass(){this.foo=function(c,b){var d=parseInt(c)+parseInt(b);return d};var a=function(){}};

або такий:

var _0xd799=["\x66\x6F\x6F"];function MyClass(){this[_0xd799[0]]=function (_0xefcax2,_0xefcax3){var _0xefcax4=parseInt(_0xefcax2)+parseInt(_0xefcax3);return _0xefcax4;} ;var _0xefcax5=function (){} ;} ;

або такий:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,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}('4 0="3 5!";9 2(1){6(1+"\\7"+0)}2("8");',10,10,'a|msg|MsgBox|Hello|var|World|alert|n|OK|function'.split('|'),0,{})).

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

1.2.2 Методи Braifuck

Такий підхід перетворює код до невпізнання [3]. Навіть незрозуміло, що перед нами виконуваний JavaScript скрипт.

Мізерний скрипт alert(0) можна перетворити в такий вид:

([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])(+[]);

або в такий:

゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

де взагалі використовуються символи, яких немає навіть на розкладці клавіатури. Хоча з першого погляду все виглядає досить страшно та здебільшого до такого виду можна привести в автоматичному режимі. Існує деяка кількість Braifuck-подібних конверторів для JavaScript.

До даного виду обфускації також можна віднести написання коду на езотеричних мовах програмування таких як Whitespace, JAPH та інших.

1.2.3 Метод запечатування

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

Обфусцирований код буде складатися з двох частин: видима частина  (може використовуватися будь-який спосіб із вищеперерахованих для її обфускації) і прихована частина.

Реалізовується це таким чином: «Шкідливий код», який ми хочемо сховати, перетворюється на строку, яка складається зі знаків табуляції (біт 1) та пробілів (бит 0). Як результат, ми отримуємо в багато разів більше коду, ніж у нас було. Видима частина буде декодувати приховану частину та її виконувати: декодуватиме біти в числа, а числа перетворить в символ String.fromCharCode(), а далі виконає функцію eval. Приклад:

decodeAndEval(document.getElementById("evilCode").innerHTML);

<div id="evilCode">

</div>

До цього методу обфускації коду можна також віднести пакування скрипта JavaScript в CSS [4]. На сторінці користувача буде відображатися картинка, яка може бути навіть фоновою, але при виконанні коду нашкодить вашому комп’ютеру. Такий спосіб шифровки реалізовується таким чином: відбувається зтискання коду та з’являється можливість реалізації інтелектуальних систем відновлення зображень винятково на растровій мові. Вказуючи просторове положення такого зображення-коду, ми можемо формувати дуже інтересні структуровані по принципу нарізання (tilling) бібліотеки практично безграничного розміру, високо-оптимізовані по трафіку та часу доступу до конкретної ділянки коду (рис. 1.1).

Рисунок 1.1 Приклад запечатаного скрипта в зображення

1.2.4 Узагальнена структурна схема шляхів обфускації

Із вище продемонстрованих та описаних категорій обфускації скриптів можна побудувати узагальнену структурну схему шляхів обфускації, яка зображена на рис. 1.2.

Рисунок 1.2 Узагальнена структурна схема шляхів обфускаціїї

2.  РОЗРОБКА МЕТОДІВ ДЕОБФУСКАЦІЇ JAVASCRIPT

Аналіз літературних джерел не виявив завершеного алгоритму деобфускації зашифрованого коду JavaScript. Знайдено тільки характерні приклади деобфускації. Тому на основі ідеї розшифровування скриптів та деяких запропонованих шляхів аналізу обфусцированого коду запропонуємо деякі методи дуобфускації JavaScript.

2.1 Розшифровування JavaScript, який було обфуцировано за допомогою мінімізатора

  1. Визначаємо обфусцирований код JavaScript. Якщо ми хочемо дізнатися чи є на певній WEB-сторінці шкідливий код, нам треба її просканувати за допомогою інструментів .net fraimwork та виявити наявність JavaScript скриптів. При обфускації код може прийняти зовсім незрозумілий вигляд і втратити характерні ознаки та це не стане завадою для його коректного виконання на Вашому комп’ютері і як результат захований вірус може нанести чималу шкоду вашому електронному пристрою. Для визначення зашифрованого скрипта будемо використовувати типові приклади та результати роботи обфускаторів мінімізаторів. Маємо певний набір ключевих слів та функцій, які вказують на те, що деякий фрагмент або фрагменти сторінки – це обфусцирований JavaScript.
  2. Починаємо розбір зашифрованого коду. Завантажуємо підозрілий код у строкову змінну. Спочатку ініціалізуємо перший знайдений зашифрований фрагмент коду WEB-сторінки.
  3. Аналізуємо підозрілий скрипт. Оскільки ми визначили, що шифрування відбувалося методом мінімізаторів, то для таких випадків характерним є упорядковування коду. Додаємо символ нового рядка після кожної крапки з комою.
  4. Отримуємо імена функцій JavaScript. Для цього окремо скануємо кожний отриманий рядок. Об’явлені змінні в обфуцированому коді передаємо до функції alert(), для того щоб отримати реальні імена функцій JavaScript.
  5. Аналізуємо отриманий функціонал на безпечність використання. Результатом попередніх дій стало виявлення функцій, які при певному наборі шляхом аналізу можуть дати відповідь на питання чи зашкодить виконуючий скрипт роботі нашої комп’ютерної системи.
  6. Якщо на сторінці виявлено декілька зашифрованих скриптів, то результати першого просканованого коду зберігаємо у вихідний файл та переходимо знову до пункту 2, де розпочинаємо аналізування наступного підозрілого фрагменту.
  7. Формування висновку про безпечність посилання. Тільки після того, як будуть розшифровані всі підозрілі скрипти ми зможемо зробити висновок, наскільки є надійним певне посилання.

       Для даного методу деобфускації розроблено наступний алгоритм, який зображено на рис. 3.1.

2.2  Розшифровування JavaScript, який було обфуцировано за допомогою BraiFuck-подібного методу

  1. Визначаємо обфуцирований код JavaScript. Для того щоб визначити прихований JavaScript код BraiFuck-подібного вигляду треба використовувати xml-файл, який матиме в собі підбірку типових Braifuck-подібних скриптів та окремих символів.
  2. Розпочинаємо розбір зашифрованого коду. Завантажуємо підозрілий фрагмент у строкову змінну.
  3. Розшифровуємо код. Запускаємо цикл FOR по всій довжині вмісту змінної.
  4. За одну ітерацію оброблятимемо один символ.
  5. Дістаємо значення зашифрованого тексту-коду. Як усім відомо, повернути значення певного Braifuck-подібного зашифрованого скрипта просто, слід лише використати правильний деобфускатор, але для цього треба виконати дужи глибокий аналіз. Тому пропонуємо вміст скрипту отримати універсальним способом. Визначаємо ASCII-код символа:
  • Якщо код має значення між 36 і 61 (не включно), то додаємо до нього 25, а символ, відповідаючий результуючому коду, зберігаємо в нову змінну.
  • Якщо код має значення між 61 і 86 (не включно), то віднімаємо від нього 25, а символ, відповідаючий результучому коду, зберігаємо у ту ж таки нову змінну.
  1. Декодуємо. Після того, як ми перейшли від Braifuck-подібного вигляду до більш зрозумілого нашій системі розпізнавання вірусів виду, отримане треба декодувати. Для цього нам треба реалізувати виклик функції eval() для запуску результату декодування.
  2. Аналізуємо функционал на безпечність використання. Можемо мати один із двох результатів:

- Якщо результатом деобфускації є код, в якому ми можемо проаналізувати функціонал, тобто ключеві слова, які визивають деякі функції, то переходимо до оцінки безпечності такого коду.

- Якщо результатом деобфускації є код, в якому проаналізувати функціонал не вдається, то треба перейти до попереднього методу деобфускації JavaScript, який було розглянуто в 2.1. Такий підхід демонструє, що обфускація була проведена у декілька кроків, де спочатку скористалися методом мінімізації, а потім методом приведення коду до Braifuck-подібного вигляду.

Для даного методу деобфускації розроблено наступний алгоритм, який зображено на рис. 3.2.

2.3  Розшифровування JavaScript, який було обфусцировано за допомогою методу запечатування

  1. Визначаємо посилання на файл JavaScript. Для цього скануємо сторінку і шукаємо посилання на файли із розширенням *.js.
  2. Розпочинаємо розшифрування коду. Копіюємо вміст файлу в змінну. Після чого розпочинається процес сканування отриманого коду.
  3. Визначаємо чи можемо ми проаналізувати функціонал, який зберігається у файлі чи потрібно провести процес деобфускації.
  4. Визначаємо метод обфускації або напряму проводимо аналіз функціоналу. Якщо неможливо провести оцінку надійності коду -  значить він прихований, а тому можливо й небезпечний. Для цього треба використати методи розпізнавання обфусцированих скриптів із попередніх пунктів. У файлі може зберігатися обфусцирований код методом мінімізації або методом, який приводить до Braifuck-подібного вигляду. Тому визначемо який саме метод використовується та перейдемо до розшифровування використовуючи методику запропоновану у пунктах 2.1 та 2.2.
  5. Якщо на WEB-сторінці більше одного посилання на файл, то вони вистроюються в чергу і починаючи з пункту 2 проходять процес деобфускації.

     Для даного методу деобфускації розроблено наступний алгоритм, який зображено на рис. 3.3.

Рисунок 3.1 Алгоритм деобфускаціїї зашифрованих скриптів мінімізаторами

Рисунок 3.2 Алгоритм деобфускаціїї зашифрованих скриптів Braifuck-подібного виду

Рисунок 3.3 Алгоритм деобфускаціїї зашифрованих скриптів методом запечатування

Висновки

Представлені алгоритми та методи деобфускації скриптів рекомендовано використовувати в програмному забезпеченні інтегрованому із браузерами, для того щоб виявляти вірусну активність на WEB-ресурсах в режимі онлайн. Звісно дані алгоритми потребують деякої модифікації для більш результативної роботи при їх впровадженні, але представлена ідея класифікації обфусцированого коду по категоріях є досить новою і надає можливість розробити універсальні підходи до аналізування та розшифровування скриптів.

Література

1.Терейковський І. Нейронні мережі в засобах захисту комп’ютерної інформації /  І. Терейковський. - К. : ПоліграфКонсалтинг. - 2007. – 198 с.

2.“Badass JavaScript”: інтернет блог, стаття: “Badass js is back white some badass obfuscation” – посилання: http://badassjs.com/post/2929065287/obfuscation/

3.“Adamcecc”: інтернет блог - посилання: http://adamcecc.blogspot.com/

4.“Ajaxian”: інтернет сайт, стаття “Want to pack JS and CSS really well? Convert it to a PNG and unpack it via Canvas”, посилання: http://ajaxian.com/

5.Безруков Н. Н. Компьютерная вирусология / Н. Н. Безруков. -
К. Инкомбук, 1990. - 450 с.

6.Біленчук П.Д. Комп'ютерна злочинність / П. Д. Біленчук,
Б. В. Романюк. - К. : Атака, 2002. - 240 с.

7.Вилков А.С.  Информационная  безопасность  персональных  ЭВМ  и  мониторинг  компьютерных  сетей / А.С. Вилков. – М. :  МИНИТ  ФСБ  России, 2005. – 210 с.