Чтение онлайн

на главную

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

[root@rh /tmp]$ diff decode.c decode2.c

14a15

> #include <newinclude.h>

[root@rh /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. Их рассмотрение не охватывает все шестнадцатеричные редакторы. Просто они представляются автору наиболее интересными.

Hackman

Hackman – свободно распространяемый шестнадцатеричный редактор в среде 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.

Использование инструментария мониторинга файловой системы

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

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

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

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

Трудоемкий способ: ручное сравнение

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

Очевидно, что так можно сделать, но на это уйдет больше времени и труда, чем если бы читатель поступил по-другому. Хотя в отдельных случаях ручное сравнение – лучший способ исследования. Например, при исследовании реестра Windows (Windows Registry – иерархическая база данных, хранящая информацию о конфигурации компьютера и об аппаратном и программном обеспечении; организована в структуру поддеревьев с ключами и подключами) может получиться так, что на исследуемой машине не окажется инструментальных средств контроля нужной части реестра. В то же время утилита Regedit почти всегда доступна. Она позволяет экспортировать реестр Windows в текстовый файл. В других случаях, при необходимости отбора нескольких файлов среди ряда дополнительных, поиск различий на всем диске может оказаться предпочтительным для первоначальной локализации файла, представляющего интерес. Иногда метод грубой силы может оказаться привлекательнее тонких методов исследования, особенно если на их подготовку потребуется дополнительное время.

Сравнение атрибутов файла

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

Ниже представлен уместный фрагмент кода файла ext2_fs.h инсталляции Red Hat 6.2 Linux:

/*

* Structure of an inode on the disk

*/

struct ext2_inode {

__u16 i_mode; /* File mode */

__u16 i_uid; /* Owner Uid */

__u32 i_size; /* Size in bytes */

__u32 i_atime; /* Access time */

__u32 i_ctime; /* Creation time */

__u32 i_mtime; /* Modification time */

__u32 i_dtime; /* Deletion Time */

__u16 i_gid; /* Group Id */

__u16 i_links_count; /* Links count */

__u32 i_blocks; /* Blocks count */

__u32 i_flags; /* File flags */

В большинстве UNIX-систем атрибуты файла описаны похожим способом. В их состав входят владелец, размер, несколько полей времени и даты, группа, счетчик связей этого файла, число используемых блоков диска и флаги файла (стандартные разрешения чтения, записи и выполнения файлов). Какие атрибуты интересны для нас? В большинстве случаев это один из атрибутов времени и размер файла. Любой из них может быть определен переадресовыванием вывода команды ls – al в файл до и после наступления анализируемого события с последующим сравнением двух файлов, как это показано в следующем примере:

[elliptic@ellipse]$ diff /tmp/before /tmp/after

2,3c2,3

< drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:55 .

< drwxrwxrwt 9 root root 1024 Jun 16 01:55 ..

> drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:56 .

> drwxrwxrwt 9 root root 1024 Jun 16 01:56 ..

97c97

< -rw-r—r– 1 ryan ryan 31533 Jun 16 01:55 fs.h

> -rw-r—r– 1 ryan ryan 31541 Jun 16 01:56 fs.h

Из примера видно, что файл fs.h изменился. Этот способ сравнения содержимого директории обнаруживает изменение любого атрибута файла. Быстрый способ простого отслеживания изменения атрибута времени заключается в использовании команды ls – al, показанной в следующем примере. Команда ls – al в примере соединена программным каналом с командой more:

[elliptic@ellipse]$ ls -alt | more

total 2224

drwxrwxrwt 9 root root 1024 Jun 16 01:56 ..

drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:56 .

– rw-r—r– 1 ryan ryan 31541 Jun 16 01:56 fs.h

– rw-r—r– 1 ryan ryan 7295 Jun 16 01:55 a.out.h

– rw-r—r– 1 ryan ryan 2589 Jun 16 01:55 acct.h

– rw-r—r– 1 ryan ryan 4620 Jun 16 01:55 adfs_fs.h

…и т. д. Файлы, модифицированные последними, выводятся первыми. В DOS/Windows команда dir /o: d позволяет отсортировать список выводимых файлов по дате, как это показано в следующем примере:

C:\date>dir /o:d

Volume in drive C has no label

Volume Serial Number is 3C3B-11E3

Directory of C:\date

HEX-EDIT EXE 58,592 03-14-95 9:51p Hex-edit.exe

HEXEDI~1 GZ 165,110 06-05-00 11:44p hexedit-0_9_7_tar.gz

HEXEDIT EXE 158,208 06-06-00 12:04a hexedit.exe

. <DIR> 06-16-00 12:18a .

.. <DIR> 06-16-00 12:18a ..

3 file(s) 381,910 bytes

2 dir(s) 10,238.03 MB free

В этом случае последние модифицированные файлы помещены в конец отчета. Использование атрибута «Архивный» Расскажем о небольшой уловке, доступной пользователям DOS/Windows. Таблица размещения файлов (FAT – file allocation table) содержит атрибут файла «Архивный». Первоначально атрибут предназначался для определения факта изменения файла после последнего резервного копирования. В случае модификации файла этот атрибут свидетельствовал о необходимости создания очередной архивной копии файла. Конечно, после модификации файлов этим атрибутом можно воспользоваться для собственных целей. Посмотрите на пример просмотра директории с помощью команды attrib:

C:\date>attrib

A HEX-EDIT.EXE C:\date\Hex-edit.exe

A HEXEDIT.EXE C:\date\hexedit.exe

A HEXEDI~1.GZ C:\date\hexedit-0_9_7_tar.gz

Обратите внимание на символ A в начале каждой строки. Он свидетельствует об установке атрибута «Архивный» и указывает на необходимость резервного копирования файла, к которому относится этот атрибут. Если повторно использовать команду attrib для очистки атрибута «Архивный», то получим следующее:

C:\date>attrib -a *.*

C:\date>attrib

HEX-EDIT.EXE C:\date\Hex-edit.exe

HEXEDIT.EXE C:\date\hexedit.exe

HEXEDI~1.GZ C:\date\hexedit-0_9_7_tar.gz

Поделиться:
Популярные книги

Лорд Системы 12

Токсик Саша
12. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 12

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Нефилим

Демиров Леонид
4. Мания крафта
Фантастика:
фэнтези
боевая фантастика
рпг
7.64
рейтинг книги
Нефилим

Девятое правило дворянина

Герда Александр
9. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Девятое правило дворянина

Странник

Седой Василий
4. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Странник

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Счастливый торт Шарлотты

Гринерс Эва
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Счастливый торт Шарлотты

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Огни Аль-Тура. Завоеванная

Макушева Магда
4. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Огни Аль-Тура. Завоеванная

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3