Если проанализировать различия между исходным и сжатым или зашифрованным файлом (если используется качественный алгоритм преобразования файлов), то можно обнаружить изменение большого количества данных в файле. В начале главы автор приводил пример применения метода поиска различий для игры Heroes of Might and Magic II, хотя в то время уже продавалась игра Heroes of Might and Magic III. Дело в том, что, как кажется автору, в последней игре файлы сжимаются. Автор делает подобное предположение по следующим причинам. Во-первых, файл неразборчив (при просмотре файла не видно английских слов). Во-вторых, при сохранении игры каждый раз изменяется почти весь файл целиком, даже если между сохранением игры ничего не делается. В-третьих, с течением времени размер файла слегка изменяется. Поскольку размер сжатого файла зависит от его содержания, а размер зашифрованного файла имеет тенденцию оставаться постоянным при шифровании одинакового числа байт, то автор предполагает, что в данном случае используется сжатие вместо шифрования.
Сжать файл можно ограниченным числом способов. Широкодоступны библиотеки сжатия, и большинство людей не будут писать собственные программы сжатия данных. В худшем случае, с точки зрения затрат времени и усилий, можно воспользоваться отладчиком или средством трассировки программ для определения алгоритма работы программы сжатия.
В случае зашифрованных данных все сказанное выше остается в силе. За исключением того, что очень велики шансы написания разработчиком своей собственной программы «шифрования». Автор намеренно взял слово «шифрование» в кавычки, потому что большинство людей не сможет написать приличную программу шифрования (в том числе и автор). Поэтому, в случае применения собственной программы «шифрования», очень велики шансы, что ее взломают. Если же для шифрования файлов использованы настоящие криптографические алгоритмы, то и их можно расшифровать. Ведь программе требуется расшифровать зашифрованные файлы, поэтому нужно только узнать, как она это делает. Подробнее этот вопрос освещен в главе 6.
Резюме
Поиск различий осуществляется в результате сравнения программы, библиотеки или другого файла до и после некоторого события. Поиск различий может быть выполнен на уровне диска, файла или базы данных. В этой главе были рассмотрены методы поиска различий между двумя версиями одного и того же файла. Было показано, как с помощью метода различий получить детальную информацию о различиях между ними.
Поиск различий используется для определения места хранения паролей в приложениях или выяснения сути исправлений известных уязвимостей. Был рассмотрен пример патча в унифицированном формате различий и проанализирован его отчет.
Для выявления различий используются различные программные средства, например команда
Известны и другие инструментальные средства, например ActiveState Perl, FileMon и RegMon. На ActiveState Perl можно писать собственные программные средства. Утилиты операционной системы Microsoft Windows FileMon и RegMon контролируют доступ приложений к файлам и реестру Windows соответственно. Обе утилиты разработаны компанией Sysinternals.
В завершение были обсуждены возможные проблемы использования инструментария, описанного в главе. При создании систем безопасности следует учитывать возможность преодоления защиты на основе контрольных сумм и кэширования, если известно местоположение контрольных величин (контрольной суммы или кэш-величины) и метода их расчета. Было сказано несколько слов о проблемах сжатия и шифрования. Пояснено, почему нельзя найти место хранения контрольной суммы в зашифрованном или сжатом файле до тех пор, пока не будет обойден механизм защиты.
Конспект
Суть поиска различий
· Поиск различий – процесс сравнения исследуемых объектов до и после свершения событий.
· Поиск различий может использоваться для обнаружения изменения файла программным путем или выяснения сути исправления уязвимости.