В ленте за 26 сентября попалась статья с Хабра о советских ПЭВМ — шестая часть цикла, про импортные машины, попадавшие в руки энтузиастов. Среди них был болгарский «Правец 8Д»: клон Apple II, собранный на комбинате в родном селе генсека Живкова. Про советские мейнфреймы, ЕС ЭВМ и клоны IBM писали и раньше, а вот «Правец» — нет.
Дальше выяснилось, что Правец — это вход в сюжет, который я до сих пор обходил стороной. Тот же режим копирования, который дал Болгарии школу сильных инженеров, породил и крупнейшую волну компьютерных вирусов конца восьмидесятых. Их авторов там не судили, потому что законов о софте не существовало: заражение чужого компьютера не считалось преступлением, поскольку не считалось чужой собственностью.
И у этой волны есть главный герой, которого не нашли до сих пор. Его инструмент, вышедший в 1991-м, превратил написание полиморфных вирусов из ремесла в готовый продукт с документацией — а антивирусную индустрию заставил сменить метод работы целиком. Вот об этом и текст.
В 1967 году политбюро запустило первый пятилетний план по информатике. Логика была простая: не покупать железо на Западе, а производить своё — сняв копию. Возник комплекс ZIT (по-русски — «завод вычислительной техники»), объединявший академию и промышленность: университеты готовили выпускников, которые в специальных НИИ разбирали американские машины до уровня отдельных микросхем и команд, а заводы затем воспроизводили их из местного сырья. К 1972 году цикл заработал, и клоны пошли в страны СЭВ — до 180 мейнфреймов в год.
С микрокомпьютерами история вышла иначе. Сначала их сочли игрушками для детей и воспроизводить отказались, а спохватились только в середине семидесятых. Потом маленькая компания, пытавшаяся подняться в иерархии планов, вышла в министерство образования с предложением: закупить тысячи микромашин и поставить их в школы. Так с 1982 года начался «Правец» — машина, собранная из копийных узлов Apple IIe. Директор предприятия с гордостью вспоминал две вещи: что половину чипов 6502 его рабочие сумели выпустить сами, и что вторая половина закупалась легально в Сингапуре, а собственный чип при этом выходил вдвое дороже импортного — центральное планирование приходилось обходить.
На пике Болгария поставляла 40 процентов компьютеров всего восточного блока, электроника давала 8 миллиардов рублей (около $13,3 млрд) в год и 300 тысяч рабочих мест, а ИТ-сектор — до 14 процентов ВВП страны. Навык разбирать чужое и воспроизводить один в один был здесь не хобби, а профессией, полученной от государства.
В апреле 1988-го единственный болгарский компьютерный журнал «Компютър за Вас» напечатал перевод статьи из немецкого Chip — про компьютерные вирусы и способы их написания. Через несколько месяцев в страну приехали настоящие вирусы извне, и два человека принесли в редакцию заражённую дискету с собственным «антивирусом». Это оказался Vienna.
Затем вышел тот самый материал, который потом цитировали все. В январском номере за 1989 год 29-летний сотрудник Института технической кибернетики и робототехники Веселин Бончев опубликовал статью «Правда о компьютерных вирусах». Его тезис: страх перед вирусами превращается в «массовую психозу», а любой грамотный программист отличит заражённый файл с ходу — он больше по размеру, работает медленнее, играет мелодии, рисует ёлочки на экране. Он написал это, ещё ни разу вируса не видев, и позже признал ошибку: он не учёл секретаршу, которая использует машину как печатную машинку, и то, что компьютеры в Болгарии чаще всего были общими.
Первым доморощенным вирусом стал Old Yankee — тот, что инфицировал уже выполняемые файлы EXE и наигрывал «Янки Дудл». Его автор передал всем желающим исходный текст, быстро потерял интерес к теме и ушёл в обработку сигналов. Дальше появился автор, у которого было около пятидесяти версий собственных вирусов, и который специально следил за тем, чтобы ничего не разрушать: он сначала написал антивирус, потом вирус, обходящий этот антивирус, потом новый антивирус.
А весной 1989-го в первом варианте нового вируса появилась строка: «This program was written in the city of Sofia (C) 1988–89 Dark Avenger».
Механика этого вируса была неприятной сама по себе. Он заражал файл в момент, когда файл открывали или копировали — то есть достаточно было запустить антивирус, не загрузившись с чистого диска, чтобы заражённым оказалось всё. Ничего подобного до него в природе не водилось; сейчас такие называют fast infectors.
Разрушение оказалось хитрее. Каждый шестнадцатый запуск заражённой программы перезаписывал случайный сектор диска первыми 512 байтами тела вируса. Бончев объяснял, чем это хуже форматирования: удар незаметен, файлы и каталоги сыпятся постепенно, а когда пользователь наконец замечает пропажу, в резервных копиях уже лежат испорченные данные. В заражённых файлах оставалась метка — «Eddie lives… somewhere in time!», отсылка к талисману группы Iron Maiden.
Дальше — цифры, которые в сумме объясняют, почему в начале девяностых Болгария была именем нарицательным. Джон МакАфи, глава профильной ассоциации, оценивал: из шестидесяти звонков в неделю десять процентов — про болгарские вирусы, и 99 процентов из них — про Dark Avenger. Национальная ассоциация компьютерной безопасности в 1992-м насчитала 76 болгарских вирусов из 318, чьё происхождение вообще удалось установить. К 1991 году в природе бродило 160 задокументированных болгарских вирусов, а опрос шестисот крупных североамериканских компаний показал рост числа пережитых вспышек с 9 до 63 процентов за девять месяцев.
Зараза доходила до смешного. В октябре 1990-го вирус обнаружился в библиотеке Палаты общин в Вестминстере: часть файлов пропала, часть испортилась, а сканер ничего не нашёл — зато испорченные файлы заметно выросли в размере. Среди мусорных символов читалось одно слово: NOMENKLATURA. Голландский писатель Харри Мулиш поймал вирус на своём ноутбуке во время работы над романом, счёл это «благоприятным знаком от высших сил» и недолго думал о том, чтобы назвать сына Эдуардом — в честь вирусной строки.
До 1991 года полиморфный вирус был штучной работой: чтобы менять собственную подпись при каждом заражении, нужно было самому написать генератор шифрующих вставок и понимать, что делаешь. В 1991-м Dark Avenger выложил на болгарские BBS Mutation Engine — объектный модуль размером чуть больше двух килобайт, который линковался к любому вирусу.
К архиву прилагались инструкция по подключению, демонстрационный вирус Dedicated, генератор псевдослучайных чисел и телефонный номер для технической поддержки. По звонку, разумеется, никто не отвечал. Смысл модуля: вирус получал возможность шифровать своё тело каждый раз новым ключом и каждый раз новым способом. Документация к более позднему движку-подражателю формулировала лицензию коротко: «включать этот движок в вирусы разрешается».
Ответ индустрии оказался интереснее самого движка. В июне 1992 года исследовательская группа из Балтимора выпустила публичный отчёт: обычная сигнатура здесь не работает, потому что вариаций слишком много, и нужен алгоритмический метод — искать характерные конструкции расшифровщика. В отчёте приведена статистика генераций: около 93 процентов мутаций относятся к одному типу, полтора процента к другому, ещё 5,5 процента выходят открытым текстом, потому что машина случайно подставила нулевой ключ. Публично детектор дал стопроцентную попадаемость, но авторы прямо предупредили, что знают минимум два способа сделать движок непредсказуемым, и обсуждать их не станут. Тесты шли на 40-мегагерцевом 386-м и на машине 4,77 МГц с 30-мегабайтным диском; для набора образцов специально генерировали программы-приманки и заражали их.
Именно с этого места антивирусы перестали быть сборником строк для поиска и начали превращаться в анализаторы кода. Позже движок вошёл как минимум в 33 вируса, а сам приём — генератор мутаций в комплекте — стал отраслевым стандартом на годы.
Отдельная линия всей истории — отношения двух людей, которые друг друга не видели. Бончев разбирал код Dark Avenger в своём журнале и называл его небрежным, указывая на ошибки: весь остальной вирусный мир считал автора божеством, а болгарский антивирусный исследователь — самоучкой. Ответ пришёл в виде строки «Copyright (C) 1989 by Vesselin Bontchev», вшитой в тело вируса. Следующая версия, она же Eddie.2000, искала в файлах имя Бончева как признак работающего антивируса и в ответ на находку вешала машину.
Дальше пошли слухи, что Dark Avenger и Бончев — один человек, а второй — его «кукловод» из сети. Со стороны Бончева звучали публичные подначки, со стороны Dark Avenger — «ласка» вместо имени, и взаимная зависимость: одному нужен был противник для славы, другому — враг для репутации и заказов. Самое смешное в этой паре то, что имя ей дал именно Бончев: сам герой в переписке утверждал, что не пользовался псевдонимом до тех пор, пока его так не назвали, и что строка про Софию пришла из какой-то старой песни, а не из Iron Maiden, как решили журналисты.
Бончев пытался вычислить его всерьёз. Он прочитал лекцию в Софии с тезисом, что «Число зверя» и «Эдди» не могли быть написаны одним человеком — почерк разный — и ждал, что автор придёт возразить. Автор не пришёл, зато прислал письмо с разбором логики лекции и упрёком, что Бончев делает деньги на охоте за вирусописателями. Из письма исследователь собрал психологический профиль, отправил его семи бывшим студентам Софийского университета с вопросом, знают ли они такого человека, и все семь назвали одно и то же имя — молодого программиста из небольшой частной софтверной фирмы. Дальше он ничего не сделал. Публично объяснение звучало так: смысла нет, писать вирусы в Болгарии не противозаконно.
Американский исследователь Сара Гордон вышла на него иначе. Она попросила в форуме, чтобы вирус назвали её именем, — и получила демонстрационный вирус при движке с посвящением «Саре Гордон, которая хотела, чтобы вирус носил её имя». Через полгода переписки, ведшейся через посредников и на болгарском, она получила интервью: пять месяцев сообщений, из которых он имел право вычеркнуть любое неудобное место. Её вывод: это не Бончев, не маньяк и не «технопат», а человек, мало похожий на остальных вирусописателей.
В самой переписке он признаёт, что встроил разрушающий код в первый вирус и сожалеет об этом, объясняет это просто: не знал, что ещё в него положить, и хотел, чтобы люди избавлялись от заразы, а не жили с ней. Дальше начинаются места, которые невозможно свести. Про ответственность за чужие потери: «невинные пользователи пострадали бы куда меньше, если бы покупали софт, а не воровали его». Про антивирусы: они существуют, чтобы пользователи «опустошали свои кошельки». Про славу: ему нравилось видеть своё имя в журналах, а больше всего — обнаружить свои творения внутри западных антивирусных программ. И там же самое человеческое: «идея программы, которая путешествует сама и попадает туда, куда её автор никогда не попадёт. Американское правительство может запретить мне въезд, но не может запретить въезд моему вирусу».
При этом широко цитируемая фраза о том, что «разрушать данные — удовольствие», известна только со слов Бончева и не подтверждается ничем в интервью, где тот же человек говорит, что разрушать чужое неправильно. Я не знаю, что с этим расхождением делать: возможно, перед нами две разные маски одного автора, возможно — цитата вырвана из контекста общения, где его сначала обругали. Оставляю как есть.
Финал у истории сухой. К 1993 году Болгария перестала быть значимым источником новых вирусов, а уголовная ответственность за внесение вируса в компьютер появилась там только 13 сентября 2002 года — штраф до 3000 левов по новой статье 319d. Четырнадцать лет между первым «Эдди жив» и первым штрафом — и это, пожалуй, самый говорящий интервал во всём сюжете.
А дети «Правеца» разошлись в разные стороны. Одни, как автор вирусов, остались неизвестными; другие выстроили интернет-провайдеры и софтверные компании — основатель Telerik, начинавший с BASIC на «Правеце-8М» в девятилетнем возрасте, продал свою фирму за $262 млн. Софтверная отрасль сейчас даёт около 4,9 процента ВВП страны. В 1997-м репортёр, приехавший в Софию искать Dark Avenger, дошёл до той самой школьной комнаты № 28, где когда-то кипела вся эта жизнь: коридор был пуст, и четверо мальчиков гоняли по нему монету.
Dark Avenger не найден до сих пор.