Коллектив авторов - Защита от хакеров корпоративных сетей
[[email protected] /tmp]$ diff decode.c decode2.c
14a15
> #include <newinclude.h>
[[email protected] /tmp]$ diff decode2.c decode.c
15d14
< #include <newinclude.h>Указанные в аргументах два файла (decode2.c и decode.c) полностью совпадают, за исключением строки с оператором #include <newinclude.h>, добавленной к файлу decode2.c. В первом примере файл decode.c – первый аргумент команды diff, а decode2.c – второй. Протокол работы команды свидетельствует о том, что если во второй файл в 14-ю строчку добавить 15-ю строку из файла decode2.c #include <newinclude.h>, то далее файлы будут соответствовать друг другу. А если поменять аргументы местами, то для приведения файлов в соответствие надо будет удалить 15-ю строчку файла decode2.c (обратите внимание на буквы a в первом отчете и d во втором).
Результат выполнения команды называется выводом команды diff (diff- файлом), или файлом различий, и обладает тем свойством, что если есть diff-файл и один из исходных сравниваемых файлов, то второй файл можно восстановить. Именно поэтому для отправки небольшого количества изменений текстового файла, особенно исходных текстов программ, часто используется пересылка файла различий. При отправке по почте открытых исходных текстов исправлений уязвимостей программ отправитель не всегда пересылает файл различий, который позволяет исправить исходный текст программы. Программа, которая исправляет ошибки, используя файл различий, называется патчем (заплаткой).
В зависимости от версии diff в отчет команды, кроме выявленных различий, включается и другая информация, например для редактора ed или системы управления аудитом (RCS – Revision Control System). Для того чтобы ее можно было обработать, включаемая информация должна содержать регулярные выражения для выполнения некоторых операций, понимать файлы программ, написанных на языке С, и, как часть своего отчета, может выводить имя функции, в которой выявлены изменения.
Благодаря проекту Cygwin доступна Windows-версия команды diff (как и большинство других программ UNIX). В рамках этого проекта задуман перенос ряда программного инструментария GNU и других программ UNIX на платформу Windows. В той или иной форме продукты GNU выпускаются под защитой общедоступной лицензии GNU (GPL – GNU PublicLicense), в соответствии с которой продукт становится общедоступен. Дополнительные сведения (включая пакет, содержащий Windows-версию команды diff) могут быть найдены по адресу http://sourceware.cygnus.com/cygwin.
Компания Microsoft включила утилиту Windiff в состав инструментария ресурсов (resource kits) Windows NT и Windows 98. Это графическая версия команды diff, которая отображает изменения разными цветами и имеет графическое представление удаляемых или вставляемых строк.
Работа с шестнадцатеричными редакторами
Говоря о применении шестнадцатеричных редакторов, уже упоминалось о возможности изменения двоичных файлов. Шестнадцатеричный редактор – это программное средство, позволяющее пользователю получить непосредственный доступ к двоичному файлу в обход приложения, использующего этот файл. Говоря о двоичных файлах, имеются в виду и текстовые файлы. Конечно, большинство людей используют для редактирования текстовых файлов специальные программы, поскольку применение для этих целей шестнадцатеричных редакторов неудобно и, говоря образно, сродни самоубийству.
В общем случае шестнадцатеричный редактор не понимает формат редактируемых файлов. Некоторые шестнадцатеричные редакторы снабжены мощными возможностями поиска, преобразования цифрового представления чисел, вставки, удаления и др. Но на самом деле они работают с последовательностью байтов. Только пользователь шестнадцатеричного редактора определяет, какие байты следует изменить, как это ранее было продемонстрировано на примере игры.
Известно большое количество шестнадцатеричных редакторов, которые различаются ценой (от свободно распространяемых до коммерческих), качеством и функциональными возможностями. Для большинства людей выбор редактора определяется личными предпочтениями. Читателю следует попробовать несколько редакторов, пока он не найдет наиболее ему подходящий.
Далее кратко будут рассмотрены три шестнадцатеричных редактора: – Hackman, [N] Curses Hexedit и Hex Workshop. Их рассмотрение не охватывает все шестнадцатеричные редакторы. Просто они представляются автору наиболее интересными.
HackmanHackman – свободно распространяемый шестнадцатеричный редактор в среде Windows. У него ряд возможностей, включая функции поиска, удаления, вставки, дизассемблирования, шестнадцатеричный калькулятор и многое, многое другое. Как видно из рис. 5.9, графический интерфейс пользователя (GUI) несколько аскетичен.
Рис. 5.9. Интерфейс пользователя редактора HackmanВ конце рис. 5.9 показано, что редактор Hackman предоставляет интерфейс командной строки. На рисунке приведен пример шестнадцатеричного редактирования файла cmd.exe при помощи редактора Hackman. Hackman легок в использовании. Кроме основных функциональных возможностей, необходимых пользователю при работе с шестнадцатеричным редактором, он дополнительно предоставляет хорошо продуманный интерфейс пользователя. Благодаря недавним усилиям разработчиков он надежен и удобен для пользователя. Редактор можно найти по адресу www.technologismiki.com/hackman. [N] Curses Hexedit
[N] Curses Hexedit – другая свободно распространяемая программа (фактически ее можно рассматривать как более свободно распространяемую, поскольку она распространяется по общедоступной лицензии GPL). Поскольку программу можно получить по общедоступной лицензии, то ее исходные тексты общедоступны и разрешено их улучшать или адаптировать под нужды конкретного пользователя. Существуют версии редактора [N] Curses Hexedit для всех основных UNIX подобных операционных систем и DOS.
Если читатель думает, что интерфейс Hackman простой, то у этой программы, как видно из рис. 5.10, – явно спартанский.
Рис. 5.10. Интерфейс редактора [N] Curses Hexedit, DOS версияФункциональные возможности редактора обычные для этого класса программ. В редакторе реализована функция поиска, присутствует простой двоичный калькулятор, обычные команды просмотра и редактирования. Список команд представлен на рис. 5.11.
Рис. 5.11. Подсказка редактора [N] Curses Hexedit Help ScreenЕсли кому-то покажется, что в этом редакторе реализованы далеко не все функциональные возможности, то это компенсируется простотой, легкостью использования ресурса и поддержкой многочисленных платформ. Согласно журналу изменений, текущая версия редактора – 0.9.7 от 8 августа 1999 года. Из этого не следует, что проект свернут и не имеет будущего. Скорее всего, редактор полностью удовлетворяет требованиям своих разработчиков. Возможно, если автор решит добавить что-либо или будет найдена ошибка в редакторе, то будет выпущена очередная версия программы. Также возможно, что если читатель усовершенствует редактор и сообщит об этом разработчикам, то они включат его добавления в новый официальный выпуск.
[N] Curses Hexedit можно получить по адресу http://ccwf.cc.utexas.edu/~apoc/programs/c/hexedit.
Hex WorkshopВ заключение рассмотрим коммерческую версию шестнадцатеричного редактора Hex Workshop компании Breakpoint Software. Это относительно недорогой пакет (на момент написания книги он стоил $49.95) для платформы Windows. Бесплатно предоставляется 30-дневный испытательный срок использования программы. В редакторе реализован приятный интерфейс с полным набором функций. Интерфейс приведен на рис. 5.12.
Рис. 5.12. Интерфейс пользователя Hex редактора WorkshopВ состав Hex Workshop включены арифметические функции, конвертер системы счисления, калькулятор, калькулятор контрольной суммы и многие другие возможности. Если руки читателя привыкли к стандартным клавишам управления операционной системы Windows (например, по нажатии CTRL-F инициируется диалоговое окно поиска), то, вероятно, он почувствует себя в родных стенах.
Если читатель – пользователь Windows, тратящий много времени на редактирование двоичных файлов, то, возможно, он захотел бы поближе познакомиться с пакетом. Hex Workshop может быть найден по адресу www.bpsoft.com.
Использование инструментария мониторинга файловой системы
Инструментальные средства мониторинга файловой системы – третий класс инструментальных средств, рассмотренных в этой главе. Они отличаются от инструментария работы с отдельными файлами тем, что работают с такими группами файлов, как раздел, логический диск или директория. В соответствии со своим предназначением в инструментальных средствах мониторинга файловой системы реализован более широкий диапазон функциональных возможностей. В некоторых случаях будут рассмотрены полезные побочные эффекты.
Перед началом работы следует определиться, какой именно файл представляет интерес для исследования. Иногда он может быть определен при помощи метода проб и ошибок, иногда – на основе тех или иных предположений. Но в любом случае желательно иметь средства, которые бы облегчили этот процесс.