Электронная библиотека » Коллектив Авторов » » онлайн чтение - страница 14


  • Текст добавлен: 9 ноября 2013, 23:45


Автор книги: Коллектив Авторов


Жанр: Зарубежная компьютерная литература, Зарубежная литература


сообщить о неприемлемом содержимом

Текущая страница: 14 (всего у книги 69 страниц) [доступный отрывок для чтения: 18 страниц]

Шрифт:
- 100% +
Другие инструментальные средства

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

Если хакер когда-либо занимался программированием, то наверняка он захочет воспользоваться каким-нибудь средством или языком программирования. Как и в случае редакторов, выбор средств программирования – дело очень личное и субъективное. Сгодится любой язык программирования с полным набором функций, который позволяет получить доступ к любым файлам или адресам памяти. Если злоумышленнику потребуется доступ к специальным файлам, например к реестру 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.

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

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

Другие инструментальные средства, которые могут оказаться чрезвычайно полезными при работе в 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 байт и запоминается вместе с файлом.

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

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

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

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

Даже не проводя анализа машинного кода или некоторых внешних признаков (например, сообщений программы о CRC32 ошибке), первые предположения об используемом алгоритме можно сделать, основываясь на количестве байт кэш-величины. Наиболее известный алгоритм подсчета контрольной суммы CRC32 вычисляет 32-битовую (четырехбайтовую) величину. Этот алгоритм подсчета контрольной суммы используется в ряде сетевых технологий. Примеры его программной реализации могут быть найдены повсеместно, только запустите поиск в Интернете. Например, подходящий пример может быть найден по адресу www.faqs.org/faqs/compression-faq/part1/section-26.html.

Алгоритмы MD4 и MD5 (MD – сокращения от Message Digest – профиль сообщения. Профиль сообщения – это короткая цифровая строка фиксированной длины, формируемая из более длинного сообщения с использованием специального алгоритма) генерируют 128-битовую (16-байтовую) величину, а алгоритм SHA (SHA – Secure Hash Algorithm – алгоритм аутентификации и проверки целостности информации) – 160-битовую (20-байтовую) величину.

Примечание

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

Проблемы сжатия и шифрования

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

Если проанализировать различия между исходным и сжатым или зашифрованным файлом (если используется качественный алгоритм преобразования файлов), то можно обнаружить изменение большого количества данных в файле. В начале главы автор приводил пример применения метода поиска различий для игры Heroes of Might and Magic II, хотя в то время уже продавалась игра Heroes of Might and Magic III. Дело в том, что, как кажется автору, в последней игре файлы сжимаются. Автор делает подобное предположение по следующим причинам. Во-первых, файл неразборчив (при просмотре файла не видно английских слов). Во-вторых, при сохранении игры каждый раз изменяется почти весь файл целиком, даже если между сохранением игры ничего не делается. В-третьих, с течением времени размер файла слегка изменяется. Поскольку размер сжатого файла зависит от его содержания, а размер зашифрованного файла имеет тенденцию оставаться постоянным при шифровании одинакового числа байт, то автор предполагает, что в данном случае используется сжатие вместо шифрования.

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

В случае зашифрованных данных все сказанное выше остается в силе. За исключением того, что очень велики шансы написания разработчиком своей собственной программы «шифрования». Автор намеренно взял слово «шифрование» в кавычки, потому что большинство людей не сможет написать приличную программу шифрования (в том числе и автор). Поэтому, в случае применения собственной программы «шифрования», очень велики шансы, что ее взломают. Если же для шифрования файлов использованы настоящие криптографические алгоритмы, то и их можно расшифровать. Ведь программе требуется расшифровать зашифрованные файлы, поэтому нужно только узнать, как она это делает. Подробнее этот вопрос освещен в главе 6.

Резюме

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

Поиск различий используется для определения места хранения паролей в приложениях или выяснения сути исправлений известных уязвимостей. Был рассмотрен пример патча в унифицированном формате различий и проанализирован его отчет.

Для выявления различий используются различные программные средства, например команда fc операционной системы Windows или команда diff системы UNIX. Следует обратить внимание на шестнадцатеричные редакторы, работающие на различных платформах. Например, на редактор Hackman для операционной системы Windows. Инструментальные средства мониторинга файловой системы работают с группой файлов, разделом или логическим диском. В этой главе был обсужден трудоемкий способ контроля файловых систем: копирования всей файловой системы и выполнения пофайлового сравнения. В результате исследования структуры файловой системы ext2, обсужденной в этой главе, было рассказано о средствах идентификации модифицированных файлов: команде ls системы UNIX, команде dir MS-DOS. Команда dir, используя атрибут «Архивный» файловой системы FAT, позволяет найти модифицированные файлы. Контрольные суммы могут использоваться для контроля файлов от разрушения и несанкционированного изменения путем вычисления контрольной суммы и последующего их сравнения. Обратите внимание на то, что некоторые программы типа root kits могут обходить контрольные суммы.

Известны и другие инструментальные средства, например ActiveState Perl, FileMon и RegMon. На ActiveState Perl можно писать собственные программные средства. Утилиты операционной системы Microsoft Windows FileMon и RegMon контролируют доступ приложений к файлам и реестру Windows соответственно. Обе утилиты разработаны компанией Sysinternals.

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

Конспект
Суть поиска различий

· Поиск различий – процесс сравнения исследуемых объектов до и после свершения событий.

· Поиск различий может использоваться для обнаружения изменения файла программным путем или выяснения сути исправления уязвимости.

· Команда diff может быть применена для исследования содержимого директории путем сравнения входящих в нее файлов.

· Исследование методом поиска различий может быть применено к исходным текстам программ и двоичным файлам.

Исследование инструментария поиска различий

· В состав большинства операционных систем UNIX включена команда поиска различий diff. Для этих же целей в состав операционной системы Microsoft включена команда fc.

· При отправке по почте открытых исходных текстов исправлений уязвимостей программ отправитель не всегда пересылает файл различий (diff-файл), который позволил бы исправить исходный текст программы и установить исправленную версию программы.

· Шестнадцатеричный редактор позволяет редактировать двоичные файлы непосредственно, минуя приложение. Шестнадцатеричные редакторы доступны на многих платформах, например редактор Hackman для Windows или hexedit для UNIX.

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

· В состав утилит мониторинга операционной системы Windows входят утилиты RegMon и FileMon.

Поиск неисправностей

· Для защиты файлов применяются вычисление контрольных сумм, кэширование, сжатие и шифрование.

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

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

Часто задаваемые вопросы

Вопрос: Существует ли команда dif для операционной системы Windows?

Ответ: Да. Она может быть получена из дистрибутива Cygwin, распространяемого Cygnus Solutions.


Вопрос: Всегда ли нужен протокол различий исправлений выявленных уязвимостей?

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


Вопрос: Существует ли версия grep с возможностью рекурсивного построения отчета?

Ответ: Да. Версии grep фонда открытых программных средств (Free Software Foundation), поддерживающие флаг рекурсии (-r), доступны по адресу www.gnu.org.


Вопрос: Что, если я захочу для создания своих собственных программных средств использовать язык С вместо Perl?

Ответ: У вас будет больше возможностей. В состав большинства открыто распространяемых UNIX-подобных операционных систем входит компилятор с языка С. Для операционной системы Windows можно порекомендовать DJGPP, который можно найти по адресу www.delorie.com/djgpp.


Вопрос: Где можно найти другие свободно распространяемые утилиты?

Ответ: Sourceforge.net имеет большое хранилище открытых программных средств. Кроме того, Freshmeat.net предоставляет машину поиска свободно доступного программного обеспечения.

Глава 6
Криптография

В этой главе обсуждаются следующие темы:

Концепции криптографии

Стандарты алгоритмов шифрования

«Грубая сила»

Неверное использование алгоритмов шифрования

Любительская криптография

· Резюме

· Конспект

· Часто задаваемые вопросы

Введение

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

В главе будет бегло рассмотрена история криптографии и изучены популярные криптографические алгоритмы, включая улучшенный стандарт шифрования AES, недавно принятый США для защиты важной информации на правительственном уровне. Будут рассмотрены причины широкого использования криптографии с открытым ключом и обмена ключами, а также вопросы их использования на практике. Будет показана теоретическая уязвимость практически всех криптографических алгоритмов к атаке «грубой силы» (атаки в лоб).

Попутно с рассмотрением возможностей криптографической защиты будет рассмотрено восстановление зашифрованных сообщений на примере взлома паролей и атак «злоумышленник посередине» (man-in-the-middle-type attacks). Также будут рассмотрены атаки, позволяющие разрушить систему защиты, основанную на плохой реализации криптостойких алгоритмов. В заключение будет показан способ легкого взлома устаревших криптографических алгоритмов.

Концепции криптографии

Что означает слово крипто ? Оно происходит от греческого слова «криптос» – скрытый. Поэтому целью криптографии является скрытие сути информации от посторонних лиц таким образом, чтобы с ней мог ознакомиться только тот, кому она предназначена. В терминах криптографии скрытие информации называется шифрованием, а ее чтение – расшифрованием, или дешифрованием. Словарь Merriam-Webster's Collegiate Dictionary определяет шифр как «метод преобразования текста для скрытия его значения». Информация, которая подлежит скрытию, называется открытым (незашифрованным) текстом (plaintext), а зашифрованные данные – зашифрованным текстом (ciphertext). Зашифрованное сообщение можно передавать, не опасаясь, что его сможет прочитать кто-либо, кроме получателя. А тот, кому оно предназначено, всегда сможет расшифровать его.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Следующая
  • 4.6 Оценок: 5

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации