Лаба 2
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищённых систем связи
Дисциплина Комплексное обеспечение защиты информации объекта информатизации
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №2
Защита программ от изменения и просмотра
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студенты:
Принял:
ктн, Шемякин С.Н.
(уч. степень, уч. звание, Ф.И.О.) (подпись)
Оглавлени
Цель работы 3
Используемое программное обеспечение 3
Введение 3
Порядок выполнения работы 4
Цель работы 3
Используемое программное обеспечение 3
Введение 3
Порядок выполнения работы 4
Цель работы
Знакомство с системой защиты программного обеспечения Themida.
Используемое программное обеспечение
Hello.exe: будет в папке с лабораторной работой
Themida Demo: https://www.oreans.com/download.php
IDA Freeware: https://www.hexrays.com/products/ida/support/download_freeware/
x32dbg: https://x64dbg.com/#start
Sandboxie Classic: https://sandboxie-plus.com/downloads/
Введение
Изучение логики работы программы может выполняться в одном из двух режимов: статическом и динамическом. Сущность статического режима заключается в изучении исходного высокоуровневого или низкоуровневого кода программы.
Для получения листингов ассемблерного кода программы ее дизассемблируют, или же декомпилируют для получения высокоуровневого кода (С/С++, Java, C#, …).
Динамический режим изучения алгоритма программы предполагает выполнение трассировки (отладки) программы.
Под трассировкой программы понимается выполнение программы с использованием отладчика, что позволяет выполнять программу в пошаговом режиме, получать доступ к регистрам, областям памяти и производить остановку программы по определенным адресам.
В динамическом режиме изучение алгоритма работы программы осуществляется либо в процессе трассировки, либо по данным трассировки, которые записаны в запоминающем устройстве. Средства противодействия дизассемблированию не могут защитить программу от трассировки, и наоборот: программы, защищенные только от трассировки, могут быть дизассемблированы. Поэтому для защиты программ от изучения необходимо иметь средства противодействия как дизассемблированию, так и трассировке.
Одним из таких средств является продукт Theida от Oreans Technologies.
В данной лабораторной работе будет предложено использовать его демо-версию и будет рассмотрен следующий функционал:
Защита программы от ее запуска под отладчиком;
Защита программы от анализа вследствие ее дизассемблирования;
Защита от запуска программы в режиме песочницы;
Защита программы от запуска в виртуальной среде;
Настройка пользовательских диалоговых окон.
Порядок выполнения работы
Шаг 1. Настройка пользовательских диалоговых окон.
Запустить 32-х разрядную версию Themida.
В разделе “Options” выбрать вкладку “Customized dialogs”.
Изменить сообщение “Global Caption” на строку в следующем формате: [Группа]_[Студент1]_[Студент2]_...
Шаг 2. Защита ассемблерных инструкций программы от анализа.
В качестве защиты от анализа Themida предлагает виртуализацию выполнения кода с использованием собственных виртуальных машин. Список доступных публичных машин можно увидеть, нажав на вкладку “Virtual Machine”.
Каждая виртуальная машина представляет собой “скелет”, который при инициализации “обрастает” случайными наборами регистров, таблицами операционных кодов и прочим. Таким образом, если, используя одну виртуальную машину дважды упаковать одну и ту же программу, в результате дизассемблирования их ассемблерные инструкции будут отличаться.
В качестве средства дизассемблирования предлагается использовать бесплатное ПО IDA Freeware от Hex-Rays.
В Themida открыть вкладку “Application Information”.
В поле “Input Filename ” прописать путь к Hello.exe. Поле “Output Filename” оставить без изменений.
Во вкладке “Protection Options”, помимо опций, включенных по умолчанию, активировать “Anti-Sandbox”. Если лабораторная работа выполняется на виртуальной машине, следует активировать опцию “Allow execution under VMware/Virtual PC”.
На верхней панели инструментов нажать на “Protect” и дождаться сборки защищенного исполняемого файла.
Открыть IDA и, нажав кнопку “New”, выбрать для дизассемблирования незащищенную версию программы Hello.exe. Затем, не изменяя опций, нажать ОК. Просмотреть дизассемблированные функции в левом окне интерфейса.
Таким же образом просмотреть защищенную версию Hello.exe. Найти блок, в котором анализ дал сбой и занести скриншот этого блока в отчет.
Шаг 3. Модификация незащищенного исполняемого файла.
Требуется изменить выводимую строку в окне программы Hello.exe на такую же строку, как в шаге 1. То есть, вместо слова “World” будет выводиться группа и фамилии студентов. Для этого воспользуемся программой x32dbg.
Подобным образом, злоумышленник может, например, просмотреть и/или изменить вшитый в исполняемый файл серийный ключ.
Открыть x32dbg. На верхней панели нажать “Файл -> Открыть” и выбрать незащищенный Hello.exe, либо же просто перетащить программу в окно отладчика.
Нажав ПКМ в окне с дизассемблированными инструкциями, выбрать “Поиск в -> Все модули -> Ссылки на строки”.
В поле “Поиск”, находящимся в нижней части программы ввести слово “World”. Найдется единственное соответствие. Нажав по нему ПКМ, выбрать “Перейти к дизассемблированному коду”.
После перехода к инструкции, ссылающуюся на область памяти, хранящую строку “World”, щелкнуть по ней ПКМ и выбрать “Перейти к дизассемблированному коду -> hello.00403006”.
Используя клавишу Shift, выделить область памяти с 00403005 по 0040300A. Нажав ПКМ, выбрать “Двоичные операции -> Редактировать”.
В появившемся окне, в поле ASCII, заменить строку “World” на группу и фамилии студентов. При этом, в начале и конце строки обязательно должны остаться “пустые” символы, чье шестнадцатеричное представление - 00 (их видно в поле “Шестнадцатеричное”). Так как вводить их с клавиатуры может быть затруднительно, рекомендуется их не трогать. Нажать “OK”.
На верхней панели нажать “Файл –> Исправить файл…”. В появившемся окне нажать “Исправить файл”.
При выборе места сохранения, не забыть приписать к имени файла
расширение .exe.
Запустить сохраненный исполняемый файл. При запуске должно появиться окно с текстом, введенным в пункте 5. Добавить скриншот этого окна в отчет.
Шаг 4. Защита программы от запуска под отладчиком.
Открыть в отладчике защищенную версию Hello.exe.
Повторив пункты 1-3 предыдущего шага убедиться, что не удается найти строки “Hello” и “World”. Это связано с тем, что теперь они сжаты и, можно сказать, хранятся в зашифрованном виде.
На верхней панели инструментов нажать “Выполнить”. Процесс выполнения прекратится, дойдя до точки входа. Нажать “Выполнить” еще раз.
Занести в отчет скриншот окна, уведомляющего о невозможности запуска программы из-под отладчика.
Шаг 5. Защита от запуска в режиме песочницы.
Предлагается запустить защищенную версию программы Hello.exe в изолированной виртуальной среде. Для этого используем утилиту Sandboxie.
Установить Sandboxie. После этого иконка утилиты должна появиться в трее. Если этого не произошло, необходимо вручную включить службу, запустив приложение SbieCtrl, находящееся в корневой папке Sandboxie.
Открыть интерфейс Sanboxie, щелкнув по значку в трее. Перетащить защищенную версию Hello.exe в окно утилиты. Выбрать песочницу DefaultBox. Запустить программу, нажав “OK”.
Занести в отчет скриншот о невозможности запуска программы.
Санкт-Петербург
2022