Pull to refresh

Легенды вирусостроения: начало войны

Reading time3 min
Views9.4K
image

Конец восьмидесятых годов стал удивительным временем для страны Советов. Накопившееся и нарастающее недовольство выливается в ублюдочную «перестройку». В телевизоре — позорный вывод советских войск из Афганистана, в магазинах — опустевшие полки и продуктовые карточки. «Звезда по имени Солнце» и «Хочу перемен» звучат из каждого утюга. Тем временем в недрах ГВЦ Госплана СССР Дмитрий Николаевич Лозинский обнаруживает на одной из вычислительных машин причину ее необычного поведения, которой оказалась необычная программка. Утилита для обезвреживания была написана за один вечер и названа в честь тест-системы на СПИД, о которой примерно в это же время любили упоминать по радио, как о великом достижении медицины.

Вирус представлял собой простую программу, код которой не подвергался никакой дополнительной обработке и легко обнаруживался с помощью специализированных программных средств. В то время еще не существовало никакой единой системы наименования вредоносных программ. Впрочем в этом отношении сегодня почти ничего не изменилось, антивирусные конторы никак не могут договориться между собой, и один и тот же вирусный «штамм» может называться в разных антивирусных пакетах по-разному. „Vienna.648“ получила имя в честь места первичного обнаружения и размера — 648 байт.

Первыми примерно в одно и тоже время обнаружили вирус Франц Свобода и Ральф Бергер, хотя доподлинно неизвестно, кто из них это сделал первым, поскольку каждый из них говорил о том, что получил вирус от другого. Программка так и осталась бы знаменита своим первым появлением в СССР и только. Но Ральф Бергер, опубликовав исходный код в своей книге (ISBN 1557550433), открыл ларец Пандоры. Любой программист мог изменить исходный код для создания на его базе подобной программы. Лавина «форков» обрушилась на мир машин. Порой среди них встречались отпетые «мерзавцы» типа Ghostballs и Chameleon. Некоторые потомки этого вируса еще встречаются в «естественной» среде обитания (за многие годы начинающие программисты и школяры наделали более 60 вариантов этой заразы, скорей всего это число можно смело умножить на 10, и то я не уверен, что это все).

„Vienna.648“ — типичный файловый нерезидентный вирус, после получения управления заражающий файлы, чаще всего в момент запуска зараженного носителя. Характерным свойством нерезидентов является их короткий жизненный цикл, включающий запуск, поиск и заражение своих жертв. Существует несколько распространенных алгоритмов поиска нерезидентами возможных жертв. Как многие другие старинные вирусы, был написан на ассемблере и поражал исполняемые COM-файлы (COM-программы обычно являются небольшими приложениями, системными утилитами или небольшими резидентными программами).

Наш сегодняшний «герой» самым первым стал использовать метод поиска по «тропе», достаточно эффективный алгоритм поиска, своего рода «ноу-хау» не требующий полного обхода всех каталогов диска. В MS-DOS был предусмотрен механизм, создающий список предопределенных каталогов, чаще всего прописываемых в системном пакетном файле AUTOEXEC.BAT. Эти списки попадали в системное окружение и становились доступны для всех программ. Каталоги, содержащиеся в строке «PATH» («тропа»), всегда содержали исполняемые файлы. После запуска и нахождения вирусом строки, начинающейся с «тропы», вирус отделял каталоги символом «;» и добавлял маску поиска COM-файлов, после чего происходило заражение и передача управления.

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

Учитывая простоту программы и безызвестность её создателя по нынешний день, можно предположить её создание «пробой пера», либо экспериментом, слегка вышедшим из-под контроля. Столь явная простота в совокупности с легко обнаруживаемыми сигнатурами говорят в пользу этой гипотезы, но окончательно её не доказывают. Несмотря на кажущуюся тривиальность, не стоит забывать, что „Vienna.648“ стал также первым вирусом, который был обнаружен и уничтожен антивирусной программой.

Существует версия, что автором программы является Бергер, хотя он отрицал свою причастность к этому. Как бы то ни было, маятник новой цифровой войны запустил именно он. Так началось противостояние вирусов и антивирусных программ…
Tags:
Hubs:
Total votes 34: ↑12 and ↓22-10
Comments30

Articles