Блог → Взаимодействие систем защиты с окружающей средой

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

Вирус помогает снимать систему защиты

Предположим, что система защиты диска включает загрузчик, записываемый вместо стандартного boot-сектора диска, и дополнительно к прежним функциям, обеспечивающий проверку пароля при обращении к диску. Boot-сектор может быть переформатирован так, чтобы не допускать простейших операций чтения или записи. Если произошло заражение диска загрузочным вирусом, то boot-сектор заменяется телом вируса. Загрузчик, размещавшийся ранее в boot-секторе, сохраняется в другом месте диска и становится доступным для чтения и записи. Теперь можно удалить проверку пароля.

Однако же, boot-сектор может оказаться "не по зубам вирусу" и тогда заражения не произойдет. Иногда при попытке заражения защищенных носителей появляются сообщения операционной системы, которые могут служить признаком наличия вируса. Как правило, современные вирусы не в состоянии заразить хорошо защищённый диск. Причины этого кроются, как правило, в следующем:
- вирус распространяется, как правило, с копиями незащищенных программ, и поэтому создателям вирусов нет нужды писать вирусы преодолевающие какую-нибудь сложную защиту;
- объём вируса невелик, в связи с чем затруднительна реализация алгоритмов преодоления сложных защит.

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

Вирус необратимо портит систему защиты

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

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

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

Система защиты оберегает вирус от антивирусных программ

Тут возможны два варианта (по числу типов вирусов):
- предположим, что диск, заражённый загрузочным вирусом, был обработан программой защиты таким образом, что запись в MBR и boot сектора стала затруднительна;
- предположим, что заражённый файл защищён от копирования так, что его тело в обычном состоянии преобразовано, а перед выполнением осуществляется обратное преобразование.

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

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

Рекомендации при разработке или выборе систем защиты:
- не применять приемы программирования, характерные для вирусов, и не использовать области памяти, обычно используемые вирусами;
- протестировать работу популярных антивирусных программ в защищенной среде или с защищенными программами;
- все сомнительные ситуации должны быть тщательно документированы.

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

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

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

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