Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СКТЭ Занятие 6

.docx
Скачиваний:
42
Добавлен:
21.03.2016
Размер:
173.04 Кб
Скачать

Лекция 4. Основы исследования программ, трассировка и обнаружение признаков модификации программ

1.1. Программно – техническая экспертиза

Одним из видов СКТЭ является программно-техническая экспертиза. Объектами этой экспертизы являются системные и прикладные программы. В зависимости от конкретных программ экспертизы могут быть отнесены к нескольким подвидам.

Подвиды системного программного обеспечения: операционная система; вспомогательные программы – утилиты; средства разработки и отладки программ; служебная системная информация.

Подвиды прикладного программного обеспечения: приложения общего назначения (текстовые и графические редакторы, системы управления базами данных, электронные таблицы, редакторы презентаций и т.д.); приложения специального назначения (для решения задач в определенной области науки, техники, экономики и т.д.).

В зависимости от предмета (вопросов) экспертизы, исследование программы может производиться разными методами и с использование различного программного обеспечения.

Если исследуемая программ незнакома эксперту, он может изучить ее работу, запустив ее. Должны быть соблюдены принципы экспертизы, в результате ее исследуемая программа не должна быть изменена. Поэтому нужно или производить исследование копии программы, или обеспечить невозможность программы производить какие-либо изменения в оригинальном источнике.

Здесь нужно учитывать, что работа программы или ее копии может затрагивать состояние каких-либо системных файлов, например, в Windows – реестра.

Для многих программ, прикладных и системных, которые разработаны с помощью стандартных средств, есть возможность получить справку о ней самой. Так же предварительную справку можно получить в Интернете, в том числе – на сайте производителя программного обеспечения.

Иногда вопросы исследования связаны с состоянием программы: ее работоспособностью при определенных входных данных, наличие в программе модификаций, результатом чего ее поведение стало отличаться от первоначального. Если есть предположение, что такая модификация произведена вредоносной программой, то можно воспользоваться антивирусным сканером. В других случаях возможно изучить поведение программы в критических точках с помощью отладчика.

2.1. Знакомство с программой

Прикладные программы источниками информации о себе имеют:

Пункт меню «О программе». В нем можно получить ряд полезных сведений о работающей программе, например, о ее версии, сборке, компании-производителе.

Разделы помощи, которые дают более подробную информацию, начиная с назначения, функций и возможностей программы. Справка может быть вызвана стандартными клавишами (F1 или другими) или из пункта меню работающей программы. Как правило, файл справки может быть просмотрен без запуска самой программы, он обычно хранится в одной папке с программой и имеет тип, с которым могут работать системные программы. Например, в Windows, начиная с XP, для файлов справки поддерживается формат сжатых данных chm. Это, наряду с изучением файлов в текстовых форматах в комплекте программы, является самым безопасным способом получения о ней значительной части сведений.

2.2. Трассировка программы

Изучение действий программ возможно с помощью отладчика. Основные возможности, которые он для этого предоставляет, это остановка в произвольном месте выполнения программы, обследование состояния ее памяти в этот момент и пошаговое выполнение программы, то есть такое, когда за раз выполняется одна инструкция процессора.

Как правило, при этом отладчик показывает состояние регистров, флагов, стека процессора, цепочки вызовов программ к данной точке, оперативной памяти, которая интересна в данный момент пользователю, и той, которая в ближайших командах менялась и в ближайших последующих будет меняться.

2.3. Цели модификации программ

Большинство лицензионных программ имеют защиту, то есть программный код, который производит проверку действительности используемого программного обеспечения, выполнения пользователем активации и т.д.

В случае желания использования нелицензионных копий программы, ее программный код изменяется нарушителем. С этой целью он, используя средства трассировки, проводит изучение средств защиты, последовательно обнаруживает все такие коды и вносит в них вручную изменения. При этом учитывается и возможность контроля программы своего кода в памяти, коды, которые предположительно проводят контрольное суммирование, подключают процесс к Интернету для проверки регистрации по базам, тоже нарушителем отключаются.

2.4. Техника и инструмент модификации программ

Изменения могут быть внесены в файл программы вручную или с помощью специальных программ. Самой популярным инструментом для взлома программного обеспечения сегодня является SoftICE

SoftICE – это программа-отладчик режима ядра для Microsoft Windows. Программа разработана для управления процессами на низком уровне Windows, причем таким образом, чтобы операционная система не распознавала работу отладчика. В отличие от прикладного отладчика, SoftICE способен приостановить все операции в Windows, что очень важно, например, для отладки драйверов.

Недостатком программы является ее зависимость от версии ОС. Поддержка программы завершилась с 11 июля 2007 года, соответственно все новые, выпущенные после этого времени ОС Windows могут не поддерживать работу программы.

Среди коммерческих современных программ в качестве подобного инструмента исследования и исправления выделяется PE Explorer.

PE Explorer – программа для просмотра, редактирования и анализа внутреннего устройства исполняемых файлов, таких как EXE, DLL, ActiveX (.OCX) и других. Набор различных инструментов, объединенные общим интерфейсом, позволит заглянуть внутрь любой программы. С помощью PE Explorer можно исследовать как собственные программы и библиотеки, так и приложения от сторонних разработчиков, к чьим исходным текстам нет доступа. В состав PE Explorer входят редакторы ресурсов и секций, просмотр списка импортируемых из DLL функций и их синтаксиса, дизассемблер, сканер зависимостей, распаковщик UPX и другие утилиты. PE Explorer позволяет анализировать, редактировать или оптимизировать проблемные файлы (пример – изучение устройства вредоносных программ), переводить интерфейсы на другие языки, распаковывать и восстанавливать сжатые файлы, изучать дизайн и алгоритмы, используемые в программах. Программа подойдет для выполнения экспресс-анализа EXE файлов, для сбора информации об исполняемом файле и отображения её в понятном и структурированном виде.

В части изменений программа позволяет проверить интеграцию исследуемой программы (не было ли ранее изменений), модифицировать значение точки входа в программу (она будет начинаться другим кодом), свойств файлов, вычислять и корректировать контрольные суммы файла. Любые изменения, которые вносились в программу, можно сохранить в виде другой программы.

Для простой ручной правки двоичных данных и программ используются шестнадцатеричные редакторы. От популярной современной программы HIEW часто используют ее последнюю некоммерческую версию HIEW 6.01. Она позволяет просматривать и изменять файлы в шестнадцатеричном виде и в виде ассемблерного кода.

Рис. 1. Просмотр данных файла в виде ассемблерного кода

Рис. 2. Замена ассемблерных команд редактором

Рис. 3. Результат внесенных изменений

На Рис. 1 - Рис. 3 показаны процесс и результат внесения изменений в программу. Чаще всего изменения касаются команд условных переходов. Для того, чтобы избежать каких-либо действий программы в случае, например, неправильного ввода пароля (а он будет введен неправильно), нужно, чтобы программа изменила порядок действий. Например, неправильный пароль начала считать как правильный.

Мнемоника команд переходов обычно строится так: указывается буква, означающая команду, например «j» – jump (прыжок), и дополняется условие: «e» – equal (равно), «ne» – not equal (не равно), «l» – lower (меньше) и т.д.

Рис. 4. Фрагменты оригинала и исправленной программы

2259: 08FC or ah,bh ; Проверка условия

225B: 7503 jne 2260 ; Прыжок на 2260, если не равно

225D: 89F9 mov cx,di ; Действия, которые будут

225F: 41 inc cx ; пропущены

2260: …

2259: 08FC or ah,bh ; Проверка условия

225B: 7403 je 2260 ; Прыжок на 2260, если равно

225D: 89F9 mov cx,di ; Действия, которые будут

225F: 41 inc cx ; пропущены

2260: …

На Рис. 4 выделены оригинальная команда перехода и измененная. Действия команд противоположны. Если различия при экспертизе обнаруживаются такого типа, это почти однозначно говорит о внесенных изменениях с целью изменения логики программы.

2.5. Инструменты трассировки Ollydbg

Из некоммерческих программ-отладчиков для исследования, отладки и изменения на сегодняшний день наибольшее распространение имеет программа Ollydbg. Она удобна тем, что при небольших размерах (1,5 Мб) имеет графический пользовательский интерфейс и большое количество функций. Диапазон возможностей виден в странице настройки программы (Рис. 5).

Рис. 5. Возможности настройки программы Ollydbg

Состав информации, которую дает программа при отладке программ, совпадает с тем, который включают и другие отладчики. Например, на (Рис. 6) показана панель CPU, в которой отображены текущий фрагмент программы (выделена текущая команда), состояние регистров, флагов, стека процессора.

Рис. 6. Вид окна CPU при отладки программы в Ollydbg

Наряду с этим, программа выполняет анализ фрагмента текста, показывает предполагаемые циклы, в комментариях – где это возможно – указывает регистр, используемый в качестве счетчика цикла.

В процессе отладки все изменения, которые произошли с отображаемыми данными за последний шаг, показываются красным цветом.

Рис. 7. Возможности изменения ассемблерных команд в Ollydbg