“Компьютерные вирусы — это первая вполне удачная попытка создать жизнь”.
Е. Касперский
Стоит компьютеру слегка захандрить, проявить необычную задумчивость, отказаться выполнять стандартные программы, как юзеры начинают пугаться, опасаться и нервно почесывать в затылке. Нет чтобы поговорить по душам, ласково погладить монитор, налить в системный блок чая с малиной — сразу зовут компьютерного доктора из соседнего подъезда или, хуже того, сами хватаются за отвертку. И вот, когда по всему полу разбросаны внутренности железного
|
Многолетнее участие в подобных сценах (и в качестве юзера, и в качестве доктора, и в качестве друга младшей сестры) убедило меня только в одном: чем громче говорит объясняющий, тем меньше его версия походит на правду. Тема эта очень сложна, запутанна и противоречива. Известные всему миру специалисты затрудняются даже дать точное определение вирусам! Что уж говорить о простых пользователях...
И все же, понимая все предстоящие сложности, мы решили дать вам собственное объяснение (естественно, самое правильное!). На протяжении нескольких журнальных номеров вы познакомитесь с образом жизни компьютерных паразитов. Будете свидетелями возникновения инфекции, ее распространения, пороетесь вместе с нами во внутренностях особо опасных вирусных элементов.
И сегодня будет рассказ о “древнейшей” истории компьютерных вирусов, от Рождества Христова и до момента, когда враг, наконец, был назван собственным именем.
Небольшая настройка
История происхождения компьютерных вирусов запутанна. Чтобы настроить вас на нужный лад, сразу предупреждаю: мы считаем компьютерные вирусы рукотворными аналогами биологических (т.е. живых). В нашей “истории компьютерных вирусов” будут постоянно проводиться параллели и перпендикуляры между вирусами обычными и компьютерными. Не удивляйтесь.
Под такое своеобразное изложение придется дать собственное определение предмета:
Компьютерный вирус — это программная модель простейшего живого организма, развивающаяся в определенной среде с главной целью произвести на свет максимально возможное количество потомков и заполнить ими все доступное “жизненное” пространство.
|
Наш костер в тумане светит
Начнем... со средних веков! Да-да. Именно это смутное время породило первых желающих создать живое из неживого и первые документальные подтверждения подобным опытам. А как же, ведь у экспериментаторов на руках был подлинный руководящий документ — Библия, где черным по белому объяснялось, каким образом человека лепили из глины... Поскольку в успехе описанного никто не сомневался, находились горячие головы, желающие повторить этот опыт. Вероятно, из чисто спортивного интереса...
|
|
— Избавь меня от этого, — недовольно пробормотал монах.
— Но ведь это величайшее открытие! В результате манипуляций из обычных компонентов должно получиться совершенно новое живое существо — гомункулус! По виду оно напоминает маленького человека. Существо будет плодиться и размножаться! Оно будет ЖИТЬ! Чем мои опыты хуже ваших поисков философского камня, отец Леонардус?!!
Монах молчал. Инквизитор подал знак, и костер запылал с четырех сторон. Толпа радостно охнула. Языки пламени пробежались по ногам осужденного. Вспыхнули волосы. Еретик наконец уловил, что время пить “Пепси” для него никогда не наступит, и дико закричал. Руки рванулись из пут, раздирая в кровь кожу. Тело забилось в отчаянных конвульсиях.
|
— Он так и не понял... — покачал головой инквизитор. — Философский камень очень полезная вещь. Благодаря ему можно превращать свинец в золото на благо всем нам. А он захотел изготовить ЖИВОЕ, то есть стать подобным БОГУ! А это никак не возможно...
— Да, — задумчиво согласился отец Леонардус. — Еще неизвестно, что натворили бы эти гомункулусы, разбежавшись по округе!
То ли на земном шаре отсутствуют подходящие сорта глины, то ли несовершенны были используемые технологии, но факт остается фактом: за весь отчетный период алхимикам не удалось произвести на свет ни одного даже дохленького человечка.
Трудами инквизиторов количество “горячих голов” регулярно сокращалось, и к началу 20-го столетия никто из серьезных ученых не помышлял об “изготовлении жизни вручную”. Их внимание переключилось на более безопасные темы по изучению окружающего мира. Именно благодаря этому человечество впервые узнало о биологических вирусах.
Вначале было слово
|
Курил Дмитрий Иванович или нет, этого уже никто не помнит. Но по каким-то причинам его заинтересовала мозаичная болезнь листьев табака. От этой заразы они покрывались светлыми пятнами. Больные растения заражали здоровые. А поскольку в то время считалось, что инфекционные болезни происходят от вредных бактерий, Ивановский решил задержать возбудителя. Причем буквально, с помощью тонкого специального фильтра, не пропускающего бактерий. Не тут-то было:
|
Это сейчас все очевидно, а тогда научному миру потребовалось несколько лет, чтобы принять результаты опытов. Шутка ли, существа, сравнимые по величине с крупными молекулами! И все же было доказано существование подобных возбудителей для других болезней — ящура, бешенства, желтой лихорадки... Препараты, приготовленные из зараженных тканей, несли в себе смертельный недуг, хотя ничем существенно (по химическому составу) не отличались от здоровых и были очищены от всевозможных бактерий.
Хотя никто не видел врага в лицо (их невозможно увидеть в простой световой микроскоп), в 1899 году нидерландский микробиолог Мартин Бейеринк назвал эти организмы вирусами. Сие слово означало в переводе с латыни “яд”. Насколько он был не прав, поняли гораздо позже. Впрочем, слово прозвучало, а вирусам было абсолютно все равно, кто и как их назвал.
|
Все, кто попытается найти связь в происхождении компьютерных вирусов и органических (до 1953 года), потерпят фиаско. Реальных связей просто не может быть, поскольку именно в этом году в международном научном журнале была напечатана статья Джеймса Уотсона и Френсиса Крика о строении ДНК (дезоксирибонуклеиновой кислоты). Как оказалось, молекулы ДНК содержат в себе кодированную информацию по строительству всех белков, из которых строятся тела всех живых организмов. Алфавит кода состоит всего лишь из четырех букв. “Слово” должно содержать только 3 буквы. Получается, что весь “словарный” запас ДНК может содержать только 64 трехбуквенных слова. В словаре используются только двадцать слов (они обозначают один из типов аминокислот). Из этих значимых слов формируется конечный продукт — “фразы” (различные белки организма).
Например, имеем 4 буквы: К, А, М, О. Тогда молекула ДНК могла бы выглядеть так: МАК, АЛО, ЛАМ, ОЛА, КОК... и так далее.
В каждой фразе-белке около 300 слов. В одной молекуле ДНК может быть записана информация о великом множестве белков. Не похожих друг на друга фраз получается огромное количество (в организме высокоразвитых животных — до 50 тыс. различных белков).
Пока одни ученые разбирались с информационным кодом, другие штурмовали строение вирусов. В 1956 году Стенли удалось разделить органический вирус на белок и нуклеиновую кислоту. Позже исследователь Френкель-Конрат установил, что выделенная из вирусов нуклеиновая кислота (кусок кода, устроенного так же, как приведенная выше модель ДНК) способна сама по себе вызывать заболевание. Значит, болезни бешенства, детского паралича, чумы, оспы и многих других были “прописаны” именно там! Но механизм действия вирусов все еще оставался загадкой.
Возвращение гомункулуса
В 50-е годы, когда биологи разбирали органические вирусы на части и не знали еще, зачем они нужны, компьютеры уже были. Только назывались предки современных PC — ЭВМ (электронно-вычислительные машины), занимали большую площадь (несколько этажей здания) и обладали скромными
|
Мыслители, взбудораженные таким положением вещей, подняли головы и начали смотреть куда попало. Их взор опять обратился к давней запретной теме — моделированию жизни. О человечках никто уже не мечтал. Им хотелось понять, можно ли изготовить модель организма, которая будет развиваться без помощи со стороны создателей — сама по себе. Атаку начали не химики с биологами, а инженеры, физики и кибернетики, поскольку именно в их руках появился самый мощный со времен Архимеда рычаг для переворотов — ЭВМ. Гомункулус получил новое вполне научное название — “самодостаточный самовоспроизводящийся механизм”.
В 1959 году в журнале Scientific American появилась статья Л. Пенроуза о самовоспроизводящихся механизмах. Она была не первой в своем роде. Но два попутных факта сыграли в истории особую роль. Во-первых, в статье кроме описания забавных механических конструкций была приведена математическая двухмерная модель “почти живого” механизма-автомата. Во-вторых, в этом научном журнале печатались передовые материалы по разным направлениям, в том числе по кибернетике, биологии, физике...
Как-то раз, покончив с любимым разделом по кибернетике из журнала Scientific American, некий господин Шталь решил ознакомиться с новостями из других областей науки и техники. Его страшно заинтересовала чисто теоретическая статья Пенроуза. Почему? Да потому что он имел прямой доступ к “рычагу”, поскольку являлся оператором ЭВМ IBM 650. А любая вычислительная машина обладает чудной особенностью — она позволяет проверить работоспособность модели без необходимости строить реальный прототип из настоящих материалов.
Cейчас модели самолетов, автомобилей, кораблей и ракет первоначально обрабатываются на компьютере. Это сохраняет массу сил, времени и средств. Вот и господин Шталь был избавлен от необходимости строить механизмы Пенроуза по-настоящему. Он мог просто запрограммировать сам процесс и посмотреть на результат. Чем он увлеченно и занялся. Через несколько месяцев описанное в статье было им здорово модернизировано. Жизнь запрограммированного гомункулуса (а вовсе никакого не вируса) должна была протекать в постоянных поисках пищи. Кушало существо исключительно ненулевые слова (состоящие из единичек). Если в течение некоторого количества ходов подходящая пища не попадалась, виртуальный гомункулус умирал от голода. Но если удавалось наполнить “желудок” определенным количеством съеденных слов, приходила пора размножения. Сам процесс протекал без половых излишеств, простым делением. Зато предусматривалась возможность мутаций. Правда, мутации были не совсем настоящие, случайные, а спланированные заранее. В одном случае могли появляться особи, которые были способны пожирать себе подобных (заниматься каннибализмом). В другом — мутанты теряли способность к размножению (становились бесплодными).
|
Сильно волнуясь, Шталь вложил последнюю перфокарту (программы тогда набирались прокалыванием дырочек на листах плотного картона, величиной с почтовый конверт) в приемник. И — свершилось! Существо обнаружило себя и немедленно приступило к первой части своего жизненного цикла — поиску пищи. Однако не успели затихнуть крики “УРА” (или “ВАУ”?), как произошло страшное... Гомункулус начал размножаться. И надо же такому случиться, что в первом же потомке сработали обе мутации сразу! Вероятность такого поворота событий была настолько низкой, что даже не принималась создателем в расчет... Но это произошло. На свет появился бесплодный голодный каннибал, который сразу сожрал папу (или маму?) и немедленно помер от голода, не оставив потомства.
Стоимость эксперимента была такой запредельной, что повторять попытку не стали. Да, в общем-то, и ни к чему. Первый факт рукотворного существа история науки зафиксировала.
Эволюция “Дарвина”
Эксперимент Шталя не остался незамеченным. Наиболее известным продолжением по созданию саморазвивающихся организмов (все еще не вирусов!) была широко известная игра Darwin. Во многих учебниках и прочих книжках именно она обозначена первой подобной программой. Конечно, это не так, поскольку игра
|
Особенность игры в том, что в ней моделировалось поведение целой популяции гомункулусов в жестких условиях борьбы за существование с другими “расами”. Смысл игры: несколько видов вели борьбу между собой за право захватить всю выделенную под игру память (этот участок памяти назывался ареной). При этом все остальные расы безжалостно уничтожались. Каждый из организмов, получив ход, выбирал один из трех возможных вариантов действий: изучить ближайшие ячейки памяти в поисках “чужого”, уничтожить обнаруженный организм другого вида, размножить себя на свободную ячейку памяти. Выигрывал тот, чьи существа уничтожали соперников без остатка.
Вторая особенность игры относится вовсе не к процессу битвы за выживание... Дело в том, что при первой публикации (до этого сведения передавались “из уст в уста”) во втором номере журнала Computer Recreations за 1972 год прозвучало СЛОВО: “...Before decent search strategies evolved this simple hard-shelled “VIRUS” actually won a few rounds”. Тем не менее вирусами ни по идеологическим, ни по практическим соображениям эти организмы не были. Само слово применялось только к “расе” Макилроя, и имелся в виду маленький размер его “особей” (они занимали всего лишь 15 ячеек памяти).
Игре была уготована долгая жизнь. Энтузиасты неоднократно переписывали код для новых операционных систем. В нее продолжают играть и сегодня! Желающие могут присоединиться к сообществу “дарвинистов” на сайте www.corewars.org. У игры сменилось название, теперь она называется Core War, и, естественно, она обзавелась свеженькой оболочкой. Неизменной осталась суть — борьба нескольких видов рукотворных существ за выживание.
Сама идея “гомункулусов” (программ, имитирующих сложные жизненные циклы и не сосредоточенных только на размножении) чуть было не умерла в следующем десятилетии, когда появились настоящие компьютерные вирусы. Но все-таки дожила до наших дней и успешно применяется... в компьютерных играх! Конечно, это в первую очередь Creatures, конечно, это The Sims, конечно, это множество RTS, в которых NPC живут своей жизнью — рождаются, питаются, что-то делают и даже умирают по своей воле, без участия игрока.
|
К моменту публикации описания игры Darwin (через 10 лет после выхода) в изучении органических вирусов произошел значительный прорыв. После изобретения электронного микроскопа “невидимых” врагов человечества можно было рассмотреть детально (насколько позволяло тогдашнее увеличение агрегата). Знаменитая “Биология” профессора Гарвардского университета К. Вилли выпуска 1968 года пестрела четкими снимками различных биологических вирусов в самых выгодных ракурсах... Но в то же время возобновился давний спор — можно ли считать вирусы живыми организмами? Основания для этого были. Ведь многим биологам удалось получить... кристаллическую форму вирусов! Они выделяли носитель информации (нуклеиновую кислоту) и превращали его в кристаллы. Этот блестящий “порошок” мог лежать в сейфах годами и при этом сохранял способность вызывать болезнь! Попав в организм, кристаллы заражали клетки и порождали новые вирусы, как ни в чем не бывало... Представьте себе, как трудно было биологам. Это все равно что объявить живыми кристаллы соли или сахара. Они изворачивались, как могли. Тот же Вилли сказал по этому поводу знаменитую фразу: “Если честно признаться самим себе, что нам, в сущности, надо решить вопрос не о том, ЯВЛЯЮТСЯ рассматриваемые формы (вирусы) живыми или неживыми, а лишь о том, НАЗЫВАТЬ ли их живыми или неживыми, то проблема покажется значительно менее важной”.
Биологов можно понять: их основополагающий принцип “живое рождается от живого” наглядно приказал “долго жить”. Если вирусы —живые организмы, то приходилось признать, что живое может успешно превращаться в мертвый камень и из
|
Программисты вряд ли бы увидели в этом проблему. С их точки зрения все выглядело бы очень просто. Если написана какая-то программа, скомпилирована и проверена на работоспособность, то что мешает записать ее код (а как вы помните, нуклеиновая кислота содержит код органического вируса), например, на листе бумаги? Строки будут те же, но “работать” вне компьютера они не будут. Данные, сохраненные на жестком диске и записанные на бумаге, согласитесь, две большие разницы. После этого код может пролежать в сейфе сколько угодно. Достаточно достать его оттуда, ввести в компьютер с соответствующей операционкой (иными словами, поместить в подходящую среду), нажать кнопку Build, и вуаля — программа заработала вновь!
Все это хорошо, да только встает вопрос... Если кристаллизованный вирус всего лишь кусок кода в неживом материале, то чем, по сути, отличаются от него данные на жестком диске?!
|
К 70-м годам механизм “работы” органических вирусов был более-менее изучен (на примере бактериофагов — вирусов, поражающих бактерии). Научные журналы публиковали много популярных статей по этим вопросам. Оказалось, что вирус прикрепляется к внешней оболочке клетки, разрушает ферментом ее оболочку и вводит внутрь свой код в виде ДНК (или РНК). Дальше начинается самое интересное. Кусок кода вируса намного короче, чем код ДНК атакованной клетки или бактерии (там всего пара десятков “команд”). Этот коротенький кусок вирусной ДНК “пристраивается” к местной. Клетка в цикле пошагово выполняет все команды, записанные в ее ДНК и, наткнувшись на код вируса, добросовестно его воспроизводит. В результате начинается массовое производство вируса! Через 30 минут после заражения клетка разрушается, и из нее высыпают сотни новых вирусов, готовых к заражению новых клеток. Просто и убийственно эффективно!
|
1970 год — в одной из первых компьютерных сетей (APRAnet) обнаружен вирус Creeper. Помимо собственного размножения он выводил на экран пораженной машины надпись: “I'M THE CREEPER ... CATCH ME IF YOU CAN”. Был ли он первым вообще? Сомневаюсь. Он был первым массовым, то есть по философии вирусов — удачным.
1974 год — на многие ЭВМ попала программа “Кролик” (Rabbit), у которой с кроликами было единственное сходство — способность плодить свои копии сотнями, независимо от времени суток.
1981 год — первые персональные компьютеры (Apple II) подхватили заразу по имени ELK CLONER. Помимо забавного нескладного стишка, которым вирус обнаруживал себя, он имел еще одну революционную особенность. Тело прописывалось в загрузочный сектор дискет (они использовались на первых компьютерах вместо жесткого диска). Это был первый известный бутовый вирус.
|
IT WILL MODIFY RAM, TOO
SEND IN THE CLONER!
Определение...
А что же специалисты? Специалисты на десять лет (все 70-е) дружной толпой залегли в спячку, ушли в бессрочный декретный отпуск, отправились медитировать в Индию, а может, спасать тюленей на Аляске — в общем, занимались чем-то другим вместо прямых обязанностей. Созрели только к 80-ым, когда компьютерные вирусы полезли, как черви после дождя.
|
Забавно, но в этой книге дана рекомендация для правильного построения вирусов: “Ключевыми процессами жизни (биологических) вирусов являются лишь воспроизводство и мутация... Эти взаимосвязи в той же форме следует установить и для самовоспроизводящихся программ”.
Заметьте, компьютерные вирусы уже существуют, а их все еще стыдливо называют мудреными словами! Рассуждают, заигрывают, но никак не могут сделать последний шаг и признать нечто рукотворное подобным живому.
Конец такой несправедливости положил Фред Коэн из Университета Южной Калифорнии. Свою книгу “Компьютерные вирусы, теория и эксперименты” (1983-84 годы) он начал так:
“Мы определяем компьютерный вирус как программу, которая может “инфицировать” другую, внедряя в нее свою копию. Инфекция может распространяться через ЭВМ или сеть... Каждая инфицированная программа может вести себя как вирус, благодаря чему инфекция распространяется”.
Все! СЛОВО публично сказано. Компьютерные вирусы тоже названы наконец вирусами. Создатели инфекций могли начиная с этого момента считать себя подобными локальному Богу. Костер инквизиции им не светил. Разве что за голову отдельно взятого и особо “успешного” вирусописателя назначали иногда награду в десятки тысяч долларов. Да полиция всего мира объявляла вендетту...
Как бы то ни было, но “древняя” история компьютерных вирусов на этом заканчивается и начинается самая что ни на есть “новейшая”.
Кен Томпсон (Ken Thompson) на вручении в 1983 году премии имени Тьюринга (Американской ассоциации компьютерной техники) закончил свою речь следующими словами: “Нельзя доверять программам, написанным не вами самими... Никакие исследования не защитят вас от использования ненадежного кода. По мере того как уровень языка, на котором написана программа, снижается, находить ошибки становится все труднее и труднее... А хорошо продуманную ошибку в микрокоде найти практически невозможно”. |
* * *
Пройдя горнило очистительного костра в темном средневековье, проследив путь революционных научных открытий прошлого века, вы теперь знаете наверняка, что ничего хорошего от ученых ждать не приходится. Как только они открывают что-то полезное (речь не о пиве в бутылках!), тут же находится способ использовать это хорошее во вред. В следующий раз мы расскажем о восточных мудростях в “новейшей” истории компьютерных вирусов, которые гласят:
— Каждый хакер должен: сломать защиту, “вырастить” вирус и подсадить его юзерам.
— Каждый антихакер должен: построить защиту, “убить” вирус и “посадить” хакера.
О том, кого, где и за что ловили с начала 80-х и до наших дней, мы с вами и поговорим в одном из ближайших выпусков “Антихакера”.