| Оглавление Назад Вперед |
5.5. Принцип полезности и троянские программы
Так что же такое «компьютерный вирус»? Автор настоящей работы не берёт на себя смелость дать хоть какое-нибудь определение этого термина. Известно лишь, что возможным прародителем современных компьютерных вирусов явилась однобайтовая команда языка Ассемблер MOVSB[1]. Команда эта выполняет единственную функцию – пересылает байт информации из одного участка компьютерной памяти в другой. При определённых значениях в регистрах процессора эта команда может перенести саму себя в такое место памяти, которое снова будет выполнено процессором. Дальнейшие развитие этого эффекта привело к появлению самораспространяющихся программных механизмов (СМ). СМ стали самостоятельно подготавливать такие ситуации, при которых они гарантированно были бы скопированы и копия СМ гарантированно была бы исполнена. Под самокопированием следует понимать стремление уменьшить влияние пользователя на процесс создание дубликата СМ. Так появились самые старые представители компьютерных вирусов – черви. Самый знаменитый из них был создан и запущен в компьютерную сеть 2-го ноября 1988 года аспирантом Корнеллского университета по имени Роберт Таппан Моррис [17]. В дальнейшем СМ стали осваивать другие объекты для самораспространения (загрузочные сектора, программы, драйвера, документы с макрокомандами и др.) и заботиться о том, чтобы как можно дольше оставаться в инфицированной ими системе. Для этого они стараются не конфликтовать с программным обеспечением и устройствами компьютера; скрывают своё присутствие, например, за счёт манипуляции функциями операционной системы; шифруют собственное тело и включают в свой код приёмы, мешающие их исследованию с помощью штатных отладочных средств. Классификации компьютерных вирусов основываются на различных свойствах вирусов. Существуют разделения вирусов в зависимости от среды обитания (файловые вирусы, почтовые черви, архивные черви, загрузочные вирусы, резидентные вирусы, макровирусы и др.). Существуют разделения вирусов в зависимости от второстепенных признаков (шифрованные, полиморфные, невидимки и др.). При осваивании вирусами новых сред обитания, появились и новые классы вирусов (Win32-вирусы, Linux-вирусы, Script-черви и др.), в том числе и «многоплатформенные» вирусы. Всех их объединяет только одно – стремление к самокопированию. Все остальные функции (полиморфизм, невидимость, визуальные эффекты, звуковые эффекты, наличие троянских компонент в коде, текстовые сообщения в коде, реакции на события таймера и др.) являются второстепенными и не характеризуют вирусы в качестве СМ. Второстепенными функциями могут вполне обладать абсолютно любые программы. Например, никто не мешает создать графический редактор, который бы при исполнении становился невидимым, в 17:00 проигрывал бы мелодию, а его работающая копия в оперативной памяти менялась бы от запуска к запуску (была бы полиморфной). Кроме того, вирусы, несущие в себе деструктивные функции, составляют всего несколько процентов от общего количества СМ.
Таким образом, компьютерный вирус является обычной безвредной программой, служащей хорошим стимулом для своего автора к изучению тонкостей работы операционной системы и устройств компьютера, а также возможностью померяться интеллектом с разработчиками антивирусных программ (своего рода шахматная партия). Хорошо сделанные вирусы содержат в себе результаты изучения их авторами программного обеспечения и устройств компьютера, реализованные идеи и алгоритмы, концепции освоения новых объектов для обитания, способы оптимизации кода и многое другое, представляющее собой красоту программистской мысли и ценность как литературное произведение для посвященных людей. Поэтому такие вирусы часто становятся предметом коллекционирования (вид электронного нумизмата или филателизма) и обмена. Это всё ещё раз подчёркивает, что запрет на создание и распространение компьютерных вирусов не имеет под собой основания. Боязнь перед компьютерными вирусами, вероятно, вызвана только невежеством простых пользователей и отсутствием разъяснительной работы со стороны вирмейкеров (вероятно из-за страха быть осужденными по статье 273 УК РФ). Кроме того, не последнюю роль играет спекуляция термином «компьютерный вирус» средствами массовой информации и антивирусными компаниями. Всё это приводит к ещё большему невежеству пользователей и угрозе компьютерной безопасности (человек всегда останется самым слабым звеном в любой системе защиты, а неграмотный человек все усилия по защите сведёт к нулевому результату), а также необоснованному наказанию программистов, реализующих свои права на творчество, образование, создание архивов (коллекций) и др.
Отдельным вопросом следует рассмотреть лишь троянские компоненты кода. Эти компоненты не относятся к СМ по определению (не обладают свойством делать свои дубликаты). Автор настоящей работы не берётся судить, но возможно родоначальником современных троянских компонент были обычные ошибки в операционной системе MSDOS и сервисные программы, выполняющие штатные действия по форматированию дисков (первые троянские программы на персональных компьютерах имитировали ошибки операционной системы и работу программы FORMAT.COM), санкционированному блокированию устройств компьютера (закрытие дисководов для невозможности несанкционированного копирования информации) и др., а также пресловутые «логические бомбы», встраиваемые нечистоплотными программистами в свои программы. Развиваясь, такие компоненты стали сами содержать все необходимые функции для уничтожения информации, блокированию устройств компьютера, воровству информации и др., а также стали появляться не просто компоненты, а целые программы, предназначенные исключительно для совершения преступлений. Однако в большинстве своём эти компоненты и программы не представляют собой ничего необычного. Для выполнения своих разрушительных функций они используют штатные средства операционной среды, других программ и языков программирования, которые (штатные средства) известны каждому программисту. В данном случае было бы неправильно карать программистов только за использование всех этих средств (эти средства используются также для разработки вполне полезных программ), но следует карать за использование этих средств для нанесения вреда.
В одной и той же программе могут находиться разные подпрограммы, выполняющие разные функции: «полезные», «бесполезные» и «вредные». Функции, выполняемые конкретной подпрограммой, могут быть отнесены в любую из этих категорий в зависимости от ситуации. Так, например, «полезные» действия, могут оказаться «вредными». Однако практически у каждой программы можно выделить главную (основную) функцию (речь не идёт о конкретной подпрограмме). Например, главная функция операционной системы – обеспечить выполнение компьютером заложенных в пользовательские программы операций, главная функция вируса – саморазмножение, главная функция троянской программы – нанесение вреда, главная функция текстового редактора – редактирование текстовых файлов, главная функция музыкальной программы – воспроизведение музыкальных композиций. Автору кажется наиболее правильным выделять основную функцию каждой рассматриваемой программы для того, чтобы можно было правильно отнести её к тому или иному классу программ. Технология и критерии выделения главной функции программы являются отдельным большим вопросом, выходящим за рамки настоящей работы. Однако не следует путать понятие «главная функция» с понятием «использование программы». Так, например, существуют программы двойного назначения (twinware – англ.), главная функция которых может быть применена как на пользу, так и во вред компьютерному сообществу. Ярким примером таких программ являются сканеры открытых портов или сканеры сетевых уязвимостей.
[1]Питер Абель. Ассемблер и программирование для IBM PC (http://www.moshkow.pp.ru/CTOTOR/IBMPC/abel.txt)
| Оглавление Назад Вперед |