В "ТМ" № 12 за 1991 г. было упомянуто, что для ДВК пока не существует компьютерных вирусов. А спустя месяц редакция получила из Брянска анонимное письмо-опровержение с текстом (на ассемблере, кстати, с ошибками) вируса KWC версии 1.0 для этого типа профессиональных компьютеров. Но если в ДВК вирусы еще редки, как музейные экспонаты, то на IBM они стали чуть ли не ширпотребом.
Для отечественных компьютерных вирусов наступил период интенсивного размножения. Речь идет о программах, способных к самовоспроизводству без согласия пользователя ("ТМ" № 2 за 1989 г. и № 11 за 1990 г.). Их создают хакеры - компьютерные хулиганы. Среди таковых немало толковых студентов и свежеиспеченных выпускников вузов, чьи способности явно превышают потребности нынешнего производства. Размножению же вирусов благоприятствует повальная компьютеризация (самых элементарных процессов) вкупе с вопиющей компьютерной же безграмотностью. А также нежелание тратиться на программный продукт, который куда легче просто украсть. Вот и… обмениваются, разнося по сохранявшей девственность стране машинную инфекцию.
Например, созданный предположительно студентом Белорусского государственного университета в отместку профессорам и преподавателям, вирус ДИР моментально заразил все компьютеры в Минске. А после проведенного там межреспубликанского семинара "Ранница" (по программному обеспечению в инженерной геологии) начал расползаться и по другим городам. Не испугало его даже грозное имя КГБ - большинство московских машин этого ведомства осенью 1991 года переболело ДИРом, программой паразитом, меняющей файловую структуру магнитных носителей. (Кстати, в № 11 за 1990 г. мы сообщали, в частности, что в Китае борьбой с заражением компьютеров занимается госбезопасность. Обещали направить запрос и в наши соответствующие органы, а потом познакомить читателей с письмом оттуда. Видимо, напрасно бывший КГБ проигнорировал нашу просьбу - впрочем, проникновение вируса в "святая святых" само по себе служит ответом.)
Или другой отечественный вирус "Послание Лозинскому", с выходными данными: "Новосибирск, ноябрь 1990 г.", который через каждые полчаса выводит на экран быстроисчезающие наглые угрозы известному вирусологу (не медику, а "лекарю" компьютеров) Дмитрию Лозинскому, хотя и не получил широкого распространения, но все же наделал много шуму в московских околокомпьютерных кругах.
Среди пользователей ходят кошмарные слухи о программах-убийцах, насквозь прожигающих монитор или разрывающих на куски винчестер (якобы подбором резонансных частот). В первый из этих вирусов, честно говоря, не верится, а второй - правда, не столь агрессивный - и впрямь существует. Предположительно, он тоже новосибирского происхождения и, помимо саморазмножения, занимается тем, что переключает типы винчестера на манер установочной программы SETUP. А это действительно опасно - ведь система, пытаясь управлять несуществующими головками и мнимыми магнитными дорожками, теряет контроль за реальными и может напрочь их испортить.
Вирусы бывают файловые (прицепляющиеся к файлам), бутовые (залезающие в ВООТ-сектор диска, где расположена системная область) и сетевые. Впрочем, последние известны лишь за рубежом, поскольку глобальных компьютерных сетей у нас пока не существует. Любой вирус состоит из двух блоков: первый обеспечивает "размножение" и "мимикрию" (на инкубационный период), второй - "блок активного проявления" - выполняет то, ради чего он. вирус, собственно, и создавался (приносить неприятности, и, как правило, крупные). В отличие от первого "активное проявление" начинает работать только при определенных условиях (несколько циклов заражений или заданное хакером время) - и тут ждите сюрпризов…
Большинство файловых вирусов, независимо от специализации и зловредности, работают по одной из четырех схем.
Первая. Вирус-"родитель", запущенный с зараженной программы, пристраивает собственную копию в конец первой попавшейся (в "джунглях" оперативной памяти или на винчестере) полезной и пока "чистой" программы (например, игры), а на ее начало накладывает команду перехода на только что родившееся "дитя", стертые стартовые байты заражаемой жертвы сохраняет в специально отведенном у новой копии месте (чтобы не потерять их и тем самым заранее не обнаружиться) - вот и весь цикл. Стоит теперь запустить больную игру - и первым получит управление прицепившийся сзади паразит (с помощью команды перехода), который повторит процесс размножения, найдя свеженькую жертву, выполнит предписываемые перемещенными командами действия и затем (в инкубационный период) передаст управление своей жертве - программе-вирусоносителю. Пользователь ничего и не заметит - запустил игру, игра и пошла, а на ничтожную заминку при старте внимания никто не обратит.
Так работают болгарские вирусы "Янки Дудль" - CE-2890R, играющий в 17.00 (по часам компьютера) известную одноименную мелодию, "Черный мститель" - СЕ1813R, уничтожающий через 16 копирований содержимое одного сектора винчестера, и многие другие (здесь и далее применяется классификация Н.Н.Безрукова: С - заражение СОМ-файлов; Е - заражение ЕХЕ-файлов; число - размер вируса в байтах; R - резидентность, то есть способность управлять компьютером даже после того, как запустившая его программа, отработав, покинула оперативную память). Исправить положение несложно. Для этого нужно найти и переместить обратно затертые команды начала, а затем отрезать от программы инородную часть.
По второй схеме самокопирование происходит на свободный участок, а в служебные таблицы вводится информация о том, что файл начинается именно там. (Система MS DOS позволяет хранить на дисках программы в "разрезанном" состоянии, "склеивая" их в оперативной памяти по записям в каталоге.) Так действует израильский вирус "Черная пятница" (CE-1813R), названный так потому, что по пятницам, приходящимся на 13-е число, уничтожает все содержимое винчестера. В этом случае достаточно найти истинное начало файла и внести соответствующую запись в служебные таблицы.
Малораспространенная третья схема реализована в "Лехайском вирусе" (C-346R), который через четыре цикла саморазмножения обнуляет 32 сектора винчестера, - он располагается в середине программы, на участке, зарезервированном под цифровые данные пользователя, но до работы пока свободном. Не все программы имеют такую структуру, поэтому у хакеров подобный прием не пользуется почетом.
И наконец, четвертая схема - вирус переписывает начало программы-жертвы, равное своему объему, в ее конец, а на освободившемся участке размещает собственное "дитя". Так поступает С-529 - во всем остальном, кстати, чистейший плагиат с "Черной пятницы" (подумать только, и вирусы воруют!). Для ликвидации достаточно проделать то же самое в обратном порядке.
В борьбе с вирусами распространено два подхода: лечение и профилактика.
Основной метод лечения заключается в поиске антивирусной программой знакомых специалисту комбинаций байтов, характеризующих определенную инфекцию и запрограммированное ее удаление. Для профилактики же используются программы, которые контролируют размеры файлов на винчестере и перехватывают команды записи, постоянно запрашивая у оператора подтверждение - действительно ли он хочет что-то записать, или это старается вирус.
В обоих случаях эффективность далека от 100%. Например, версия лечебной программы Д.Лозинского Aidstest, рассчитанная на 315 "творческих находок" хакеров, не заметит 316-ю, А во втором случае не всегда понятно, кто хочет сделать запись: вирус или запущенная оператором программа, поскольку в ходе любой работы на компьютере что-то постоянно сбрасывается на магнитный носитель, чтобы освободить оперативную память.
Вот если бы формализовать интеллектуальный труд вирусолога по анализу структуры и повадок новых штаммов, созданию лечебных процедур, а затем описать все это алгоритмическим языком, заодно включив и элементы профилактики! Тогда компьютер научился бы самостоятельно предотвращать или лечить любую заразу.
Разумеется, задача трудная, но кое-какие подходы уже определились. Например, в известном антивирусными разработками СП "Диалог" (в котором работает и Д.Лозинский) пытаются реализовать эти принципы в виде системной защиты AVSP (Anti Virus System Protect). Пока рано говорить о передаче компьютеру полного анализа обстановки. Интеллектуальную часть должен взять на себя очень грамотный оператор или, что еще лучше, программист-профессионал. Но согласитесь, найти таких все же проще, чем системщика, специализирующегося на вирусах. А программа AVSP выполнит рутинную работу: сравнит больной и здоровый файлы, выделит инородные команды, предложит варианты лечения (выбор которого сделает оператор). Пожалуй, самое главное - способность программы к самообучению. Достаточно показать ей, по каким критериям искать новый вирус и как справиться с ним (действия оператора запоминаются),- и все остальные файлы компьютер проверит автоматически, а больные излечит.
Конечно, новая разработка имеет недостатки. Представьте, что оператор ошибся при манипуляциях (ведь с помощью AVSP в недра любой программы может "залезть" каждый, считающий себя "специалистом"), а антивирус растиражирует ошибку на весь винчестер (вместо одного будет испорчено большинство файлов). К тому же пока не все типы вирусов можно удалить с ее помощью - поиск и ликвидация бутовых инфекций основаны на иных принципах. Но сам подход к задаче выглядит перспективнее, ведь при появлении нового штамма единственное, что могут пообещать другие, скажем, тот же Д.Лозинский, это лишь попытаться изготовить соответствующее "лекарство".
Может быть, не только в "Диалоге" думают над аналогичными задачами. Было бы неплохо для общей пользы обменяться идеями. Интересно узнать и мнение противоположной стороны - хакеров. А пока работа над универсальной защитой продолжается, воспользуйтесь самым радикальным советом, годным на все случаи жизни: "Чтобы защититься от заразы - избегайте случайных связей".
(c) Техника молодежи N 01 за 1993 г.