Оценить:
 Рейтинг: 0

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

Год написания книги
2005
<< 1 ... 16 17 18 19 20 21 22 23 24 >>
На страницу:
20 из 24
Настройки чтения
Размер шрифта
Высота строк
Поля

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 (http://www.bpsoft.com/).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом случае последние модифицированные файлы помещены в конец отчета.

Использование атрибута «Архивный»

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

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

Теперь если изменить один или два файла из группы, то их атрибут «Архивный» будет установлен снова, как это показано на следующем примере:

Из примера видно, что у файла HEX-EDIT.EXE после его изменения опять установлен атрибут «Архивный». Хорошей возможностью команды attrib является переключатель /s, который позволяет обработать файл с указанными именами в текущей директории и во всех ее поддиректориях. После этого можно воспользоваться командой dir /a: a (вывод файлов с указанным атрибутом a — файлы для архивирования) для просмотра измененных файлов.

Исследование контрольных сумм и кэш-значений

Одна из центральных проблем обеспечения безопасности заключается в определении факта изменения файла. Можно ли при этом доверять атрибутам файлов? Атрибуты файлов можно фальсифицировать. Довольно несложно установить нужные значения атрибутов файлов: размер файла, дата и время последней модификации. Большинство приложений это не делает, но иногда вирусы, Троянские кони или программы типа rootkit могут изменять их для скрытия своего присутствия. Противостоять этому позволяют алгоритмы подсчета контрольных сумм и криптографического кэширования.

Алгоритмы подсчета контрольных сумм, например алгоритмы контроля с помощью циклического избыточного кода CRC (CRC – cyclical redundancy check), легко фальсифицируются, если злоумышленник или его программа знает используемый для контроля файлов алгоритм. Поэтому вместо контрольных сумм рекомендуется использовать криптографически стойкие алгоритмы кэширования. Важная особенность алгоритмов кэширования состоит в том, что возможность получения для двух различных кэшируемых файлов одной и той же величины кэш-значения ничтожно мала. Практически невозможно подменить один файл другим с той же самой величиной кэш-значения. Величина кэш-значения – это обычно 128-битовое или 160-битовое двоичное число, для хранения которого требуется значительно меньше места, чем для кэшируемого файла.

Алгоритмы кэширования позволяют определить модификацию файла, несмотря на все попытки скрыть это. Для каждого контролируемого файла вычисляется величина кэш-значения до и после некоторого события. Если эти две величины различаются, то файлы были изменены, несмотря на то что атрибуты файлов остались прежними.

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

Примеры подобной технологии можно найти на сайте rootkit.com в разделе «EXE Redirection» («Переадресация выполнимых файлов»). Этот сайт посвящен разработке открытых исходных текстов программ типа root kit для NT.

Другие инструментальные средства

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

Если хакер когда-либо занимался программированием, то наверняка он захочет воспользоваться каким-нибудь средством или языком программирования. Как и в случае редакторов, выбор средств программирования – дело очень личное и субъективное. Сгодится любой язык программирования с полным набором функций, который позволяет получить доступ к любым файлам или адресам памяти. Если злоумышленнику потребуется доступ к специальным файлам, например к реестру Windows (Windows Registry), ему потребуется язык программирования, который предоставляет средства работы с ними. В случае реестра Windows это может быть компилятор языка C с соответствующими библиотеками, предоставляющими программный интерфейс приложения API (API – application programming interface), ActiveState Perl for Windows и, возможно, многие, многие другие. Те, кто заинтригован, могут найти ActiveState Perl for Windows в Интернете по адресу www.activestate.com/Products/ActivePerl/index.html (http://www.activestate.com/Products/ActivePerl/index.html).

Программа Game Wizard 32 была создана во время господства DOS на рынке компьютерных игр. Эта программа предоставляет игрокам ряд дополнительных возможностей, но сейчас будет рассказано только об одной из них, относящейся к теме обсуждения. Эта программа обладает возможностью поиска различий для игр. Это резидентная программа, постоянно присутствующая в оперативной памяти после ее запуска. После старта Game Wizard 32 можно начинать игру. В процессе игры игрок записывает на свой счет некоторые величины (набранные очки, золотой запас, запас энергии и т. д.), изменяя параметры игры. В результате будет составлен список найденных параметров игры (list of matches). Затем, после изменения параметров игры, можно еще раз просмотреть список, найти различия, отредактировать их и возобновить игру с новыми параметрами.

В настоящее время большинство игроков называет подобные игры тренерами или редакторами памяти. Принцип их работы аналогичен рассмотренному ранее принципу работы с файлами. Широкий диапазон программ этого класса может быть найден по адресу http://gamesdomain.telepac.pt/directd/pc/dos/tools/gwiz32.html (http://gamesdomain.telepac.pt/directd/pc/dos/tools/gwiz32.html).

Другие инструментальные средства, которые могут оказаться чрезвычайно полезными при работе в Windows, – это программы File Monitor (FileMon) и Registry Monitor (RegMon) компании Sysinternals. Если читатель работает с NT, то пусть он попробует программу HandleEx, которая предоставляет похожие возможности. Сайт компании находится по адресу www.sysinternals.com (http://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 байт и запоминается вместе с файлом.

При чтении файла программа читает данные вместе с их контрольными суммами / кэш-величинами. Если вновь вычисленные величины совпали со старыми, то программа предполагает, что файл корректен. В противном случае программа, скорее всего, сообщит об ошибке, выдав приблизительно следующее диагностическое сообщение: «Файл некорректен».

В некоторых случаях этот же самый механизм может быть применен разработчиком программного обеспечения для защиты своих данных. Во-первых, для обнаружения случайных повреждений файла данных. Некоторые приложения не смогут правильно обработать поврежденные данные. Во-вторых, как попытка предотвратить некоторые запрещенные действия со стороны пользователей приложения, начиная от попыток обмануть игру до изменения файлов паролей.
<< 1 ... 16 17 18 19 20 21 22 23 24 >>
На страницу:
20 из 24