ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.12.2021
Просмотров: 103
Скачиваний: 1
Міністерство освіти і науки, молоді та спорту України
Вінницький національний технічний університет
Кафедра АІМ
Методичні вказівки до виконання лабораторних робіт
з дисципліни: “Захист програмного забезпечення”
для студентів спеціальності 6.170103 «Управління інформаційною безпекою»
Викладач: ас. Карпінець В.В.
Лабораторна робота № 1
Основні засоби та порядок статичного дослідження. Дослідженння роботи програм-моніторів
Мета роботи
Ознайомитись на практиці з основними засобами попереднього аналізу роботи захищеного ПЗ, що використовується зламниками систем захисту для статичного долідження програм. Дослідити роботу програм-моніторів файлів, звернень до реєстру, до портів, моніторів процесів і задач.
Теоретичні відомості
1 Порядок статичного дослідження роботи СЗПЗ
Для ефективного дослідження (зламу) програмного забезпечення необхідно перш за все зібрати всі необхідну і вичерпну інформацію про роботу програмного забезпечення, середовище в якому воно виконується, які глобальні системні змінні та параметри воно використовує або активно модифікує, які файли та папки використовує. Крім того, необхідно визначити, чи здійснює дане програмне забезпечення програмні прив’язки та які динамічні бібліотеки використовує.
Для вирішення всіх цих питань спробуємо записати наближений алгоритм, який охопить найпоширеніший та найскладніший випадок несанкціонованого дослідження, що його використовує зловмисник для зняття захисту з програми.
-
Перш за все необхідно запустити програмне забезпечення, спостерігати за його роботою, обмеженнями під час роботи та тими особливостями ПЗ, які виникають під час його роботи. Це можуть бути підозрілі рядки, масиви символів, діалогові вікна для введення реєстраційної інформації тощо.
-
Далі необхідно відслідкувати звернення програми до системного реєстру та власних файлів настройок. Інколи буває можливо лише змінити або виділити певні записи з реєстру чи файлу для зняття всіх обмежень у роботі програми.
-
Тепер слід відслідкувати звернення програми до файлів, каталогів – до ресурсів файлової системи.
-
Проаналізувати виконувані файли та динамічні бібліотеки на предмет запакування виконуваних файлів, їх шифрування тощо.
-
Тепер можна приступити безпосередньо до дизасемблювання:
-
в залежності від тих типів захисті або функцій, що використовувались для програмної реалізації системи захисту програмного забезпечення, локалізувати місця коду, де відбувається виклик необхідних нам функцій або з’являються необхідні рядки;
-
знайти місця умовного або безумовного переходу за інструкціями;
-
визначити зміщення цих інструкцій відносно початку файлу та провести заміну відповідних інструкцій або команд на необхідні для ефективного зняття захисту з програмного забезпечення;
-
знаючи зміщення, можна досить просто написати звичайну просту програму для запису даних у бінарний файл.
2 Моніторінг зверень до системного реєстра
Прикладом такої програми може слугувати програма Regmon. Ця програма перехополює звернення будь-якої іншої програми до системного реєстра, виводячи при цьому повну та докладну інформацію про ключі, до яких здійснювалось звернення (рис.1.1).
Рисунок 1.1 – Загальний вигляд вікна програми RegMon
Головне вікно програми представлено у вигляді таблиці з полями:
-
процес (Process) – відображає назву процесу або додатку, що виконує звернення до системного реєстру;
-
запит (Request) – показує ту дію, яка виконується з ключем реєстру;
-
шлях (Path) – повний шлях до потрібного ключа;
-
результат (Result) – результат операції (виконано чи не виконано).
Програма також дозволяє фільтрувати повідомлення за певним конкретним процесом (рис.2).
Рисунок 2 – Вигляд вікна фільтру програми RegMon
Знаючи про звернення програми до системного реєстру можна встановити саме той режим роботи додатку, який необхідний зламнику, або взагалі позбутись всіх обмежень.
3 Моніторінг звернень до файлів та каталогів
Важливою є інформація про завернення захищуваної програми до файлів, оскільки це дає майже необмежені можливості для контролю та управління програмою, що зламується. Наприклад, навіть під час свого виконання програма здійснює зчитування команд з власного бінарного файлу до оперативної пам’яті, вже не кажучи про інші приховані файли (файли настройок, файли ключів), або коли з певного файлу читається лише його необхідна частина.
Для вирішення таких задач дослідникам (зламникам) допомагає програма FileMon. Інтерфейс програми FileMon майже такий самий, як і у програми моніторінгу звернень до реєстру (рис.3).
Рисунок 3 – Загальний вигляд вікна програми FileMon
У головному вікні програми розташована таблиця, поля якої містять таку інформацію:
-
поле request – файл відкрито (OPEN) або закрито (CLOSE), виконується читання (READ) або запис (WRITE), отримання інформації про об’єкт (QUERY INFORMATION) або встановлення інформації для об’єкту (SET INFORMATION), папка (DIRECTORY) і т.д.
-
поле Result може мітити такі записи: SUCCESS (операція успішна), ERROR (помилка), FILE NOT FOUND (файл не знайдено), NO SUCH FILE IN DIRECTOY (немає такого файлу в заданій папці) і т.д.;
-
поле Time – час виконання певної дії;
-
поле Patch – шлях до файла, з яким відбувається певна дія.
Крім того, повідомлення можна також відфільтрувати за певними параметрами та критеріями.
4 Перегляд інформації про процеси, потоки і пам’ять
Останнім часом з'явилася безліч програм, що зламують навісні захисти методом зняття з пам'яті. Принцип тут дуже простий. Після того, як захист відпрацював і дав "добро" на виконання, в пам'яті знаходиться початкова програма в такому ж вигляді, неначе її запустили звичайним способом, без усіляких захистів. Якщо у цей момент вміст оперативного запам’ятовуючого пристрою (ОЗП) записати на диск, то з отриманого dump'а можна витягнути первинну програму. У кращому випадку в результаті виходить працездатний EXE-файл, практично ідентичний первинній програмі.
Інформація про завантажені до оперативної пам’яті процеси, потоки, їх дампи пам’яті, завантажені модулі, дочірні та батьківські процеси та різна системна інформація також є важливою для того, щоб зрозуміти, яким чином здійснюється захист.
Вказану інформацію зручно переглядати за допомогою програми Process Explorer (рис.4). Дана програма дозволяє переглянути достить багато параметрів різних процесів починаючи від їх приорітету, робочої області та закінчуючи пошук строк в дампі пам’яті, що є досить зручною функцією. Можна продивитись в реальному часі використання процесом системних ресурсів.
Рисунок 4 – Загальний вигляд вікна ProccesExplorer