Защита от хакеров корпоративных сетей
Шрифт:
Если исследователю неизвестен алгоритм вычисления контрольной суммы, то некоторые способы помогут ему определить его. Но, даже зная алгоритм вычисления контрольной суммы, потребуется дополнить выяснить, какая часть файла используется при подсчете контрольной суммы. Это можно узнать экспериментально. Если нет уверенности, какая именно часть файла используется для подсчета контрольной суммы, то измените в какой-либо части файла данные и попробуйте поработать с ним. Если в ответ получите сообщение о разрушении файла, то, вероятнее всего, эта часть файла используется для подсчета контрольной суммы.
Даже не проводя анализа машинного кода или некоторых внешних признаков (например, сообщений программы о CRC32 ошибке), первые предположения об используемом алгоритме
Алгоритмы 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. Дело в том, что, как кажется автору, в последней игре файлы сжимаются. Автор делает подобное предположение по следующим причинам. Во-первых, файл неразборчив (при просмотре файла не видно английских слов). Во-вторых, при сохранении игры каждый раз изменяется почти весь файл целиком, даже если между сохранением игры ничего не делается. В-третьих, с течением времени размер файла слегка изменяется. Поскольку размер сжатого файла зависит от его содержания, а размер зашифрованного файла имеет тенденцию оставаться постоянным при шифровании одинакового числа байт, то автор предполагает, что в данном случае используется сжатие вместо шифрования.
Сжать файл можно ограниченным числом способов. Широкодоступны библиотеки сжатия, и большинство людей не будут писать собственные программы сжатия данных. В худшем случае, с точки зрения затрат времени и усилий, можно воспользоваться отладчиком или средством трассировки программ для определения алгоритма работы программы сжатия.
В случае зашифрованных данных все сказанное выше остается в силе. За исключением того, что очень велики шансы написания разработчиком своей собственной программы «шифрования». Автор намеренно взял слово «шифрование» в кавычки, потому что большинство людей не сможет написать приличную программу шифрования (в том числе и автор). Поэтому, в случае применения собственной программы «шифрования», очень велики шансы, что ее взломают. Если же для шифрования файлов использованы настоящие криптографические алгоритмы, то и их можно расшифровать. Ведь программе требуется расшифровать зашифрованные файлы, поэтому нужно только узнать, как она это делает. Подробнее этот вопрос освещен
Резюме
Поиск различий осуществляется в результате сравнения программы, библиотеки или другого файла до и после некоторого события. Поиск различий может быть выполнен на уровне диска, файла или базы данных. В этой главе были рассмотрены методы поиска различий между двумя версиями одного и того же файла. Было показано, как с помощью метода различий получить детальную информацию о различиях между ними.
Поиск различий используется для определения места хранения паролей в приложениях или выяснения сути исправлений известных уязвимостей. Был рассмотрен пример патча в унифицированном формате различий и проанализирован его отчет.
Для выявления различий используются различные программные средства, например команда 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-файл), который позволил бы исправить исходный текст программы и установить исправленную версию программы.