Рассмотрим конкретную модель воздействия закладки для DOS. Закладка встраивается в цепочки прерывания int 21 для следующих функций и управляется следующими событиями

"Открыть файл". Закладка отфильтровывает нужные имена или указатели файлов.

"Считать из файла". Закладка выполняет прерывание по старому адресу, затем сохраняет считанный буфер в собственном (обычно скрытом) файле либо исправляет в буфере некоторые байты; кроме того, возможно влияние на результаты операции чтения (например, на число прочитанных байтов). Данные действия особенно опасны для программ подтверждения подлинности электронных документов ("электронная подпись"). При считывании приготовленного для подписи файла документа может произойти изменение имени автора, даты, времени, цифровых данных, заголовка назначения документа (например, изменена сумма платежа в платежных поручениях и др.).

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

Рассмотрим, например, процесс "электронного подписывания", реализованный в программе PGP. Программа считывает файл для вычисления хеш-функции блоками по 512 байт, причем завершением процесса чтения является считывание блока меньшей длины. Работа закладки основана на навязывании длины файла. Закладка позволяет считать только первый 512-байтовый блок и вычисляет подпись только на его основе. Такая же схема действует и при проверке подписи. Следовательно, остальная часть файла может быть произвольным образом искажена.

Интересный пример воздействия на конечный результат проверки цифровой подписи – закладка, обнаруженная в финансовой системе с применением электронной цифровой подписи (ЭЦП) "Блиц". Работа закладки заключается в изменении на экране и в файле-журнале слов "HE

ПОДТВЕРЖДАЕТСЯ" (при ошибочной подписи) на слово "ПОДТВЕРЖДАЕТСЯ". Активизирующим событием для искажения файла-журнала служила запись в него, а редактирование содержимого экрана выполнялось по таймерному прерыванию.

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

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

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

Способ изменения длины сообщения – предъявление программе ЭЦП электронного документа меньшей длины; следовательно, производится подпись только части документа.

Способ искажения программы ЭЦП, связанный с изменением исполняемого кода самой программы ЭЦП (изменение алгоритма хеширования и т.д.).

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

Тогда алгоритм действия закладки, может быть таким:

закладка загружается в память каким-либо образом;

закладка осуществляет перехват (редактирование цепочки) одного или нескольких прерываний:

а) прерывания (события) "запуск программ и загрузка оверлеев (библиотек)";

б) прерывания BIOS "считать сектор";

в) прерывание таймера;

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

а) проверка принадлежности запущенной программы или уже работающей (для таймерного прерывания) к интересующим программам;

б) определение сегмента, в который загружена программа;

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

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

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

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

2. Инициирование динамической ошибки – при выполнении некоторого процесса инициируется ошибочная ситуация из числа возможных ошибок данной операции. При этом заданное действие может не выполняться (в целях разрушительных воздействий — например, постоянно инициируется ситуация "модем занят", что приводит к блокированию приема или передачи) или же выполняться (т.е. реально ошибка не имеет места, а производится маскировка каких-либо действий закладки с тем, чтобы создать впечатление того, что они не произошли). Инициирование может быть более тонким, например в закладке против системы PGP достаточно выставить флаг переноса при прочтении второго блока (в примере он читается верно, но с нулевой длиной), чтобы достигнуть совершенно аналогичного эффекта "подделки" подписи.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: