Техніка емуляції викликів WinAPI у застосунках Windows як метод протидії зворотної розробки

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык украинский
Дата добавления 24.04.2024
Размер файла 489,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Фізико-технічний інститут

Національний технічний університет України «Київський політехнічний інститут» ім. Ігора Сікорського

Техніка емуляції викликів WinAPI у застосунках Windows як метод протидії зворотної розробки

Рейценштейн Кирило,

здобувач вищої освіти

Анотація

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

Ключові слова: зворотний інжинірінг, обфускація, емуляція, Windows, API

Основна частина

З точки зору програмного забезпечення, зворотне проектування - це процес дослідження програми для отримання закритої інформації про те, як вона працює та які алгоритми використовує. Хоча реверс програмного забезпечення можна використовувати у законних цілях, зокрема для аналізу зловмисного програмного забезпечення або не задокументованого дослідження системи, зазвичай вважається, що хакери використовують його для незаконної діяльності. Тематика техніки протидії зворотної розробки набуває все зростаючої актуальності[1], причому ще не склалися канонічні її варіанти, хоча вже з ранніх етапів розробки технік протидії почались спроби їх узагальнення. Так, зокрема, у в роботі К. Колберга та його колег[2] були класифіковані методи заплутування коду за чотирма критеріями: обфускація даних, обфускація керування, обфускація трасування та запобіжні перетворення. В роботі[3] було запропоновано класифікацію методів заплутування коду, яка базується на тих методах, що використовуються в процесі створенні шкідливого програмного забезпечення. До них відносять: метод мертвого коду, реєстрація перерозподілу, реорганізація підпрограм, інструкція заміни, метод перестановки коду, метод об'єднання.

Однак для застосунків Windowsз нашого погляду найбільш перспективним є підхід використання емуляції викликів WinAPIзахисту програмного забезпечення від зловмисних атак[4].

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

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

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

Методи ускладнення налагодження.

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

Деякі методи ускладнення налагодження:

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

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

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

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

IsDebuggerPresent - це функція з WinAPI, яка дозволяє програмістам перевірити, чи запущена програма в режимі налагодження (debugmode).

Не є гарним рішенням, бо зловмисник має змогу перехопити цю функцію WinAPI, або змінити байт у просторі PEB.

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

Перевірка наявності налагоджувача в основній функції - не найкраща ідея, оскільки це перше місце, куди дивиться реверсер під час перегляду списку дизассемблера. Перевірки, реалізовані в головній функції, можна стерти інструкціями NOP, таким чином знявши захист. Якщо використовується бібліотека CRT, головний потік вже матиме певний стек викликів до передачі керування головній функції. Таким чином, хорошим місцем для виконання перевірки присутності налагоджувача є зворотний виклик TLS. Функція зворотного виклику буде викликана перед викликом точки входу виконуваного модуля.

CheckRemoteDebuggerPresent - це функція в WindowsAPI, яка дозволяє перевірити, чи є віддалений відлагоджувач (remotedebugger) підключеним до процесу. Ця функція приймає два параметри: ідентифікатор процесу і вказівник на змінну, в яку буде записано результат перевірки. Якщо віддалений відлагоджувач підключений до процесу, то функція повертає ненульове значення і записує 1 в змінну, яку передано в якості другого параметру. Якщо віддалений відлагоджувач не підключений, то функція повертає 0 і записує 0 в змінну.

NtQueryInformationProcess - це функція в WindowsAPI, яка дозволяє отримати інформацію про певний процес. Ця функція приймає три параметри: ідентифікатор процесу, тип запиту та вказівник на буфер, в який буде записано результат запиту. Тип запиту вказує, яку саме інформацію потрібно отримати про процес. Наприклад, можна отримати інформацію про кількість потоків, пам'ять, що використовується процесом, та інше. Ця функція є корисною для багатьох системних інструментів та утиліт, які працюють з процесами, таких як менеджер завдань (TaskManager), дебаггери, антивірусні програми та інші.

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

Перехоплення WinAPI.

Перехоплення WinAPI - це процес перехоплення викликів функцій WinAPI, що виконуються у процесі. Цей процес може бути використаний з різноманітною метою, таких як моніторинг системи, введення фільтрів для певних функцій, підмена функцій і т.д. Один з найбільш поширених способів перехоплення WinAPI - використання функції феймворка Detoursбібліотеки MicrosoftDetoursабо ж бібліотеки MinHook. Ці бібліотеки приблизно однакові за можливостями для перехоплення функцій, які використовуються в програмі, і для зміни їх поведінки. За допомогою перехоплення WinAPIможна відслідковувати виклики певних функцій, збирати статистику або замінювати функції на власні, що дозволяє робити додаткову обробку даних, отриманих з цих функцій. На Рис. 1 показана схема перехоплення за допомогою бібліотеки MicrosoftDetours[4].

Рис. 1 Перехоплення WinAPI

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

Розглянемо процес перехоплення функції MessageBoxз використанням MinHook.

Для перехоплення будь-якої функції WinAPIнеобхідно і достатньо знати три речі:

1. Назву функції;

2. Назву модуля, де знаходиться ця функція;

3. Адресу функції у необхідному процесі.

Для отримання адреси функції достатньо використати такі WinAPIфункції: GetProcAddressта GetModuleHandle.

Перший аргумент функції GetProcAddress - це адреса необхідної DLL, другий аргумент - це назва функції, яку шукають, тобто отримаємо такий виклик - GetProcAddress (GetModuleHandleA(«user32.dll»), «MessageBoxA»).Результатом такого виклику буде адреса необхідної функції. Все що залишилось це використати необхідну функцію в бібліотеці MinHookдля її перехоплення.

Позаяк ми маємо всі необхідні дані можна написати демонстративний код з використанням бібліотеки MinHook: intmain()

{ // not hooked

MessageBoxA (NULL, «I Love KPI!», «Information», MBJCONINFORMATION);

 //

 // getting msg box address

auto msg_box_addr = GetProcAddress (GetModuleHandleA(«user32.dll»), «MessageBoxA»);

 //

 // initializing minhook MH_Initialize();

 //

 // hooking

MH_CreateHook (msg_box_addr, MessageBoxA_hooked,

(LPVOID*)&msg_box_addr_org);

 //

 // enabling hooks MH_EnableHook (MH_ALL_HOOKS);

 //

 // calling the same function

MessageBoxA (NULL, «I Love KPI!», «Information», MBJCONINFORMATION);

 //

getchar(); returntrue;

}

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

Як висновок, використання прямих викликів WinAPIє дуже простою мішенню для зловмисника, бо перехоплення WinAPIне є дуже складним для хакера.

Техніка емуляції викликів WinAPI (на прикладі функції MessageBox).

При використнні x64dbgбуло проаналізовано як MessageBoxAпереходить з простору користувача до надання сигналу ядру системи Windows: функція MessageBoxAробить стрибок до функції MessageBoxTimeoutA, яка конвертує вхідні дані с ASCIIу UNICODEта викликає MessageBoxTimeoutW, потім функція нарешті викликає функцію ZwRaiseHardErrorз ntdll.dll, яка містить у собі інструкції з використанням syscallдля запиту до простору ядра системи Windows.

Отже стає зрозуміло що фінальною функцією у цьому ланцюжку є функція ZwRaiseHardError, яка подає сигнал ядру системи використовуючи інструкцію

International scientific journal «Grail of Science» | №27 (May, 2023)

syscall. Для емуляції функції MessageBoxAнам потрібно знайти документацію для функції ZwRaiseHardError.

extern «C» NTSTATUS NTAPI ZwRaiseHardError (LONG ErrorStatus, ULONG NumberOfParameters, ULONG UnicodeStringParameterMask,

PULONG_PTRParameters, ULONGValidResponseOptions, PULONGResponse); При реалізації емуляції WinAPIфункції MessageBoxAбув створений новий проект, в який було під'єднано залежність від MASMдля можливості використати asmінструкцій у коді.

Був імплементований код для виклику емулюваної функції:

code

ZwRaiseHardError proc

push 0x173

push rcx

pop rcx

pop rax

syscall

ret

ZwRaiseHardError endp End

Рис. 2 Результат виконання застосунку з емульованою функцією

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

Рис. 3 Вигляд виклику функції MessageBoxAнапряму

Рис. 4 Вигляд виклику емульованої функції MessageBoxA

алгоритм мутація віртуалізація програмний

Рис. 5 Системний виклик функції ZwRaiseHardError

При тестуванні було отримано одинакові результати, тобто земульований виклик WINAPIмав таку ж саму поведінку функції як і прямий виклик WinAPI.

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

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

Список використаних джерел

[1] Zhang, B. (2021) Research Summary of Anti-debugging Technology. In Journal of Physics Conference Series 1744 (4):042186

[2] Collberg, C.S., Thomborson, C.D., & Low, D. (1997). A Taxonomy of Obfuscating Transformations.

[3] You, I., & Yim, K. (2010). Malware Obfuscation Techniques: A Brief Survey. 2010 International Conference on Broadband, Wireless Computing, Communication and Applications, 297-300.

[4] Jesse, C., Rabek, R., Khazan, Lewandowski, S., Cunningham, R. (2003). Detection of Injected Dynamically Generated, and Obfuscated Malicious Code, In Proceedings of the 2003 ACM Workshop on Rapid Malcode. International scientific journal «Grail of Science» | №27 (May, 2023)

Размещено на Allbest.ru

...

Подобные документы

  • Дослідження логічних схем, їх побудови і емуляції роботи в різних програмних засобах, призначених для цього. Electronics Workbench 5 – розробка фірми Interactive Image Technologies, її можливості. Рівні бази Multisim. Ключові особливості Proteus.

    курсовая работа [2,0 M], добавлен 23.08.2014

  • Виконання ОС в апаратній віртуальній машині під управлінням системної програми – монітора віртуальних машин, значення технології візуалізації в процесі. Прозоре обслуговування системних викликів, продуктивність. Точка обслуговування системного виклику.

    контрольная работа [287,3 K], добавлен 20.05.2010

  • Значення операційної системи - програми, яка завантажується при включенні комп'ютера. Компоненти Windows, передача параметрів у мові С++. Системні ресурси та принципи їх роботи. Розробка алгоритму програми емуляції роботи командного процесора ОС.

    курсовая работа [37,5 K], добавлен 18.06.2010

  • Дослідження внутрішньої структури операційної системи Windows. Архітектура NT і структура ядра. Методи перехоплення функцій у режимі ядра та режимі користувача. Поняття драйверу. Пакети вводу-виводу. Оцінка стабільності та безпеки системи Windows.

    курсовая работа [239,3 K], добавлен 02.01.2014

  • Коректне використання операторів та конструкцій, побудова ефективних алгоритмів для розв'язку типових задач. Розробка алгоритмів та програми для створення бази даних телефонних номерів. Використання засобів розробки програмного забезпечення мовою Java.

    курсовая работа [1,0 M], добавлен 25.01.2016

  • Основи розробки додатків Windows. Параметри функції WinMain. Запуск процесу, використання для цього вибраних на диску файлів. Відслідковування кожного з процесів (його статус, назву, час життя), діяльності користувача. Опис алгоритму роботи програми.

    курсовая работа [202,6 K], добавлен 14.05.2015

  • Метод Якобі є узагальненням симплекса-методу лінійного програмування. Він використовується для дослідження чутливості оптимального значення функції до змін у правих частинах обмежень. Умови існування екстремумів функцій при відсутності обмежень.

    курсовая работа [326,6 K], добавлен 09.01.2009

  • Загальна характеристика підприємства швейної фабрики "Галія". Програмне забезпечення підприємства. Робота в операційній системі Windows. Офісна техніка. Використання Internet на підприємстві. Основні проблеми, пропозиції та перспективи на майбутнє.

    отчет по практике [238,3 K], добавлен 30.11.2007

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

    курсовая работа [50,0 K], добавлен 18.05.2014

  • Економічна інформація, її види та властивості. Апаратне і програмне забезпечення ПК. Програмне забезпечення стаціонарних комп’ютерів. Комп’ютерні мережі, загальна характеристика глобальної мережі Інтернет. Напрямки використання комп’ютерної техніки.

    контрольная работа [28,0 K], добавлен 06.10.2011

  • Системне та прикладне програмне забезпечення ПК. Файлові менеджери. Системи автоматизованого проектування, управління базами даних. Текстові та табличні процесори. Операційна система WINDOWS XP. Робота з довідковою інформацією. Графічний редактор Paint.

    контрольная работа [54,2 K], добавлен 24.11.2008

  • Роль комп'ютерної техніки в різних сферах сучасного суспільства, необхідність його комп’ютеризації. Поняття про програмне забезпечення, складові, коротка характеристика його основних типів. Опис, призначення і можливості електронних таблиць MS Excel.

    реферат [2,3 M], добавлен 10.10.2009

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

    презентация [945,0 K], добавлен 01.04.2013

  • Загальні факти про комп’ютерні ігри. Розгляд основ розробки програмного (джерельного) коду, контенту (малюнки, моделі, музика) та ігрових механік гри "Три стакани". Правила використанням засобів WinAPI. Створення математичної моделі алгоритму програми.

    курсовая работа [405,6 K], добавлен 09.06.2015

  • Особливості використання інформаційних систем у фінансово-економічних установах, використоване програмне забезпечення. Основи роботи з базами даних Acces та програмою бухгалтерського обліку 1С. Правила переходу від програми 1С Бухгалтерія 6.0 до 1С 7.7.

    контрольная работа [17,4 K], добавлен 05.02.2009

  • Аварійне відновлення операційної системи Windows XP. Способи резервного копіювання та відновлення даних. Їх характеристика та рекомендації по використанню. Реалізація планування в Linux. Умови виклику процедури планування. Встановлення віртуальної машини.

    контрольная работа [3,6 M], добавлен 28.12.2016

  • Історія та технологія виробництва мікропроцесорів, їх види, їх програмне забезпечення та способи використання. Розрядність головної шини як головного чинника при проектуванні системної платні і систем пам'яті. Архітектура корпуса і гнізда мікропроцесорів.

    контрольная работа [29,5 K], добавлен 21.10.2009

  • Використання графічного методу і симплекс-методу при вирішенні задач лінейного програмування. Сутність двоякого симплекс-методу і М-методу, приклади використання. Аналіз методу динамичного програмування. Специфіка вирішення матричної, антагоністичної гри.

    контрольная работа [1,1 M], добавлен 02.07.2011

  • Неекспортовані символи ядра. Оптимальний підхід до реалізації пошуку символів у ядрі. Виконання, підміна, додавання та приховання системних викликів. Завантаження модуля ядра із програмного коду та з коду іншого модуля. Робота з UNIX-сигналами.

    курсовая работа [84,0 K], добавлен 23.05.2013

  • Офісна техніка: комунікаційна, копіювально-множильна, багатофункціональні пристрої, шредери, ламінатори. Програмне забезпечення для сканування інформації і обробки документів ABBYY FineReader і Microsoft Word 2007. Охорона праці і техніка безпеки.

    курсовая работа [36,1 K], добавлен 20.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.