Выбрать главу

Вопрос: Законны ли с юридической точки зрения декомпиляция и другие методы реинжиниринга? Ответ: В Соединенных Штатах реинжиниринг скоро может стать противозаконным. В Акте авторского права цифрового тысячелетия (Dig^l Millennium Copyright Act) содержатся меры по предотвращению обхода обманным путем технологических мер управления доступом к работам, защищенным авторским правом. Исходный текст программы может быть защищен авторским правом, поэтому в этом случае реинжиниринг текста, защищенного авторским правом, противозаконен.

Вопрос: Какие инструментальные средства могут быть полезны при экспертизе сложных исходных текстов программ? Ответ: Такие инструментальные средства, как SCCS и CVS, могут облегчить экспертизу исходного текста программы. Кроме того, применение интегрированных сред разработки (IDEs – Integrated Development Environmen) может облегчить экспертизу исходного текста.

Вопрос: Где можно узнать правила разработки защищенного программного обеспечения? Ответ: Для этой цели подойдут ресурс Интернета «Часто задаваемые вопросы по разработке защищенного программного обеспечения в среде UNIX (Secure UNIX Programming FAQ)» по адресу www.whitefang.com/sup/secure-faq.html или список адресатов secprog, поддерживаемый Оливером Фридричсом (OliverFriedrichs).

Вопрос: Где можно достать утилиту strace для моей платформы? Ответ: Утилита strace – инструментальное средство Linux. Наилучший выбор для платформы Windows, обладающий аналогичными функциональными возможностями, – IDO Pro. Truss реализует ту же самую функцию на платформе Solaris. Дополнительную информацию можно найти в документации производителя.

Вопрос: Откуда можно загрузить исходные тексты приведенных в главе примеров? Ответ: Исходные тексты доступны по адресу www.syngress.com/solutions.

Глава 5 Поиск различий

В этой главе обсуждаются следующие темы:

Суть поиска различий

Исследование инсрументария поиска различий

Поиск неисправностей

· Резюме

· Конспект

· Часто задаваемые вопросы

Введение

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

Суть поиска различий

Команда diff присутствует во многих современных операционных системах семейства UNIX и им подобных. Впервые она появилась в дистрибутиве UNIX компании AT&T, и в настоящее время эксплуатируются различные ее версии. Слово diff – сокращение от английского слова difference (различие) – означает составление списка различий двух файлов.

Таким образом, слово диффинг может быть определено как применение команды diff (или подобной программы) для сравнения двух файлов. Сравнивая файлы, можно выявить внесенные изменения в новую версию программы по сравнению с предыдущей, определить различия двоичных файлов, претендующих на эквивалентность, или отследить влияние изменений файла данных на работу программы.

Изучите исходный текст программы, приведенный на рис. 5.1.

Рис. 5.1. Исходный текст scpybufo.c

Уже говорилось о сопутствующей этой программе ошибке переполнения буфера. (Эта программа была рассмотрена в главе 4 в секции, посвященной переполнению буфера.) Просмотрите исходный текст программы, представленный на рис. 5.2.

Рис. 5.2. Исходный текст sncpyfix.c

Применяя команду diff операционной системы UNIX, можно точно определить место и суть различий между двумя программами (см. рис. 5.3).

Рис. 5.3. Результаты сравнения файлов scpybufo.c и sncpyfix.c командой diff

Из протокола работы команды видно, что относящиеся к файлу scpybufo.c данные отмечены символом <, а к файлу sncpyfix.c – символом >. Команда нашла первое отличие в заголовке этих файлов.