Другие инструментальные средства, которые могут оказаться чрезвычайно полезными при работе в Windows, – это программы File Monitor (FileMon) и Registry Monitor (RegMon) компании Sysinternals. Если читатель работает с NT, то пусть он попробует программу HandleEx, которая предоставляет похожие возможности. Сайт компании находится по адресу www.sysinternals.com. На сайте много полезных утилит, большинство из которых свободно распространяются вместе с исходными текстами.
FileMon – программа, которая позволяет отслеживать обращение различных программ к файлам и их работу с файловой системой (чтение, запись, изменение атрибутов и т. д.), как это показано на рис. 5.13.
Рис. 5.13. Отчет программы FileMon
Применяя фильтрование, можно узнать о действиях выбранной для анализа программы, сократив объем выводимой информации. Обратите внимание, что при фильтрации во время чтения файла отображаются смещение и длина читаемых данных, что помогает определить их адрес в файле. Таким образом, программа FileMon предоставляет еще один способ сокращения списка просматриваемых файлов.
RegMon – другая программа компании Sysinternals. Как и следовало ожидать, она аналогична FileMon, но работает с реестром Windows, как это показано на рис. 5.14.
Рис. 5.14. Отчет программы RegMon
Во время подготовки этого примера автор слушал приложение Spinner с сайта spinner.com, который использует Real Audio для воспроизведения музыки. Во время своего выполнения Real Audio находится в состоянии «занято». В строчке с номером 472 можно увидеть работу протокола динамической конфигурации хоста DHCP (DHCP – Dynamic Host Configuration Protocol). Протокол динамической конфигурации хоста является сетевым стандартом, регламентирующим процесс присваивания сервером IP-адресов и другой конфигурационной информации машинам-клиентам. Программа RegMon особенно полезна для проверки подозрений о записи приложением чего-либо интересного где-нибудь в потаенном местечке реестра или при попытке определить действия Троянского коня. Программа также информирует при копировании и сравнении всего реестра в целом.
Можно назвать несколько схожих причин, по которым непосредственное редактирование двоичных файлов невозможно. Чтобы понять их, надо детально рассмотреть их происхождение. Суть их заключается в невозможности изменения части контролируемого файла до тех пор, пока не будут предприняты специальные меры.
Проблемы контрольных сумм и кэширования
Первое, с чем может столкнуться читатель, – это то, что вместе с файлом запоминается служебная информация: контрольная сумма или кэш-величина. В данном случае служебная информация предохраняет файл от несанкционированного изменения и представлена двоичными данными небольшой разрядности, которые описывают контролируемую часть файла. При поступлении запроса на чтение программа обрабатывает часть данных и получает контролирующую их величину. Обычно эта величина занимает от 4 до 20 байт и запоминается вместе с файлом.
При чтении файла программа читает данные вместе с их контрольными суммами / кэш-величинами. Если вновь вычисленные величины совпали со старыми, то программа предполагает, что файл корректен. В противном случае программа, скорее всего, сообщит об ошибке, выдав приблизительно следующее диагностическое сообщение: «Файл некорректен».
В некоторых случаях этот же самый механизм может быть применен разработчиком программного обеспечения для защиты своих данных. Во-первых, для обнаружения случайных повреждений файла данных. Некоторые приложения не смогут правильно обработать поврежденные данные. Во-вторых, как попытка предотвратить некоторые запрещенные действия со стороны пользователей приложения, начиная от попыток обмануть игру до изменения файлов паролей.
Конечно, этот метод защиты не отвечает всем требованиям безопасности. Все, что нужно сделать злоумышленнику, – это определить используемый алгоритм подсчета контрольной суммы, или алгоритм кэширования, и выполнить те же самые действия, что и программа. Местонахождение кэш-величины в файле не является тайной, поскольку, наблюдая за изменениями в файле при определении местонахождения изменяемых величин, всегда найдется одна или несколько последовательностей постоянно изменяющихся байт. Одна из них и является контрольной суммой.
Если исследователю неизвестен алгоритм вычисления контрольной суммы, то некоторые способы помогут ему определить его. Но, даже зная алгоритм вычисления контрольной суммы, потребуется дополнить выяснить, какая часть файла используется при подсчете контрольной суммы. Это можно узнать экспериментально. Если нет уверенности, какая именно часть файла используется для подсчета контрольной суммы, то измените в какой-либо части файла данные и попробуйте поработать с ним. Если в ответ получите сообщение о разрушении файла, то, вероятнее всего, эта часть файла используется для подсчета контрольной суммы.
Читать дальше
Конец ознакомительного отрывка
Купить книгу