- •Компьютерные преступления методические указания к выполнению практических занятий по учебной дисциплине
- •090301 «Компьютерная безопасность»
- •2.1.1 Классификации механизмов защиты программного обеспечения (по)
- •2.1.2 Исследование программы Denoiser
- •2.1.3 Физические и виртуальные адреса
- •2.1.3 Вопросы для самоконтроля
- •2.2.1 Восстановление с помощью fsck
- •2.2.3 Вопросы для самоконтроля
- •2.3 Практическая работа №3: «Изучение работы Snort - свободной сетевой системы предотвращения вторжений (ips)»
- •2.3.1 Общие положения
- •2.3.2 Установка Snort (Windows xp)
- •2.3.3 Режим снифера
- •2.3.4 Режим регистратора пакетов
- •2.3.5 Режим обнаружения сетевых вторжений
- •2.3.6 Создание собственных правил Snort
- •2.3.7 Написание контекстных правил (подключение препроцессоров)
- •2.3.8 Подключение препроцессора Portscan
- •2.3.9 Вопросы для самоконтроля
- •2.4 Практическая работа №4 «Анализ антивирусного программного обеспечения»
- •2.4.1 Общие положения
- •2.4.2 Классификация антивирусных продуктов
- •2.4.3 Выполнение практической работы
- •2.4.4 Вопросы для самоконтроля
- •2.5 Практическая работа № 5: «Стеганография. Использование программ скрытого шифрования»
- •2.5.1 Основные понятия и определения стеганографии
- •2.5.2 Методы, технологии, алгоритмы
- •2.5.3. Практическая реализация
- •2.5.3.1 Работа с s-Tools
- •2.5.4 Программа ImageSpyer
- •1. Общие положения 1
- •1.1 Цель и задачи практических занятий 1
- •2.3.1 Общие положения 21
- •2.4.1 Общие положения 37
- •Компьютерные преступления методические указания к выполнению практических занятий по учебной дисциплине
- •090301 «Компьютерная безопасность»
- •394026 Воронеж, Московский просп., 14
2.1.2 Исследование программы Denoiser
Это Shareware программа, поэтому рассмотрим более детально алгоритм регистрации ПО такого рода (допустим, нам нужно зарегистрировать программу X_PROG):
Получение регистрационного номера:
Пользователь перечисляет сумму разработчикам, и сообщает некоторые данные: например, свой ник (для удобства пусть это будет «USER_NICKNAME»)
Разработчики используют специальный алгоритм (скажем ALG) , для преобразования «USER_NACKNAME» в ключевую информацию, необходимую для корректной работы X_PROG.
Полученный ключ (пусть это будет «VALID_KEY») отправляется пользователю.
Регистрация программы:
Пользователь запускает X_PROG. Она пытается прочитать сохраненные данные регистрации (при этом пусть данные о пользователе хранятся в переменной REG_NAME, а ключ регистрации в S_N)
Если сохраненных данных нет, то выполнить пункт 6
Программа, используя тот же самый алгоритм ALG, что и разработчики, преобразует REG_NAME в ключ REG_KEY.
REG_KEY сверяется c ключом S_N.
Если они совпадают, то для программы это означает, что программа уже зарегистрирована и происходит скачок на пункт 11.
Программа показывает окно регистрации и просит пользователя ее зарегистрировать.
Пользователь в поле регистрации REG_NAME вводит «USER_NICKNAME», а в поле S_N – полученный им ключ «X_KEY».
Происходит то же самое что и в пункте 3.
REG_KEY сверяется c ключом S_N. Если они совпадают, то регистрация успешно закончена. Программа сохраняет данные регистрации, чтобы каждый раз не запрашивать данные пользователя. Затем выполняется пункт скачок на пункт 11
Программа работает в демонстрационном режиме (ограниченная версия).
Программа работает в полном режиме. Пользователь радуется.
Наша испытуемая программа Denoiser.exe не будет работать в полном режиме, пока она не будет авторизована – при этом, после запуска, программа явно требует регистрационный код. Авторы данного произведения допустили одну небольшую оплошность – при вводе некорректного S/N(serial number) программа выдает сообщении “Wrong registration code”. Оплошность - это потому, что разработчики практически «нарисовали стрелку», указывающую на защитный механизм! То есть, если мы найдем программный код, который выводит сообщение на экран, то окажемся прямо в хвосте защиты[5].
Теперь можно приступать к исследованию. Для удобства сохраните копию оригинального файла «Denoiser.exe», например, скопировав его в другую папку.
QView - это редактор файлов, который представляет собой простой дизассемблер с полной поддержкой команд микропроцессора семейства i386. При нажатии комбинации ALT+F на экране появится окно для загрузки файла в редактор (см. рисунок 1) Найдите и откройте Denoiser.exe.
Рис. 1. Окно для загрузки файла в редактор
В любом случае проверим. Откроем «DLL_REG.DLL» в редакторе, опять нажмем F7 и введем «Wrong reg». Нашли! Строка располагается по адресу 0001B368. Теперь встает вопрос – как искать код который выводит эту строку на экран. Скорее всего (это можно определить по виду окна) - это стандартная функция Windows – MessageBox, которая принимает следующие параметры:
int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);
то есть – hWnd – идентификатор окна, который нам абсолютно не интересен, lpText – адрес выводимого текста (как раз нашего сообщения), lpCaption – адрес строки заголовка, uType – стиль сообщения (используется для показа дополнительных кнопок, а так же иконок – «Ошибка», «Информация», «Предупреждение» и так далее..). Если эту функцию представить в виде машинных команд, то она будет выглядеть следующим образом:
PUSH uType
PUSH lpCaption
PUSH lpText
PUSH hWnd
CALL MessageBoxA
То есть в программе будет присутствовать команда “PUSH XXXXXXXX” – где «иксы» - это шестнадцатеричное представление адреса строки. Адрес, который мы нашли – это физический адрес, поэтому для нас не подходит. Вся проблема в том, что после загрузки программы в память происходит «настройка адресов» - то есть преобразование физических в виртуальные, посредством специальной таблицы.