Выбрать главу

Помимо функции размножения вирус может обладать (и обычно обладает) и дополнительной функциональностью: уничтожение и воровство данных, шпионаж за пользователем и т.п. Однако ключевым фактором, позволяющим отнести программу к вирусным, является именно способность к самостоятельному заражению других машин. Программа, способная лишь уничтожать данные, но не умеющая размножаться, вирусом уже не является.

Вирусная атака в фантастике обычно напрямую связана со взломом системы. С той только разницей, что при взломе доступную информацию пытаются использовать в своих интересах, а вирус стремится ее уничтожить (говорят, есть книги, авторы которых используют вирусов для воровства паролей, но мне они не попадались). В фильмах обычно изображаются впечатляющие эффекты, сопровождающие действие вредоносных программ — стирающиеся на экране строчки, красочные видеоролики с психоделичным содержанием, разрастающиеся на экране черные пятна… При этом любой очкарик с улицы может за считанные минуты прямо с клавиатуры ввести самый убойный вирус (тип компьютера значения не имеет), после чего плохим (или хорошим) парням придет полный крантец из-за внезапно отказавшего охлаждения ядерного реактора, отключения вентиляции или сбоя сортирной сантехники.

В чем неправда здесь?

Разумеется, трудно отрицать разрушительный потенциал вирусов. Непрекращающиеся эпидемии разнообразной заразы уже не вызывают даже скучающего интереса — ну, вирус и вирус, эка невидаль… Однако не стоит забывать, что сегодня сложилась уникальная ситуация: масса… хм, неспециалистов оказалась вброшенной в штормовые воды интенсивно развивающейся отрасли техники. Еще пятнадцать лет назад личный компьютер являлся большой экзотикой даже в благополучных странах — примерно так же, как сегодня вертолет. Представьте себе, что сейчас каждому желающему, от десятилетнего пацана до семидесятилетнего профессора, выдадут по персональному вертолету с краткой инструкцией: двигатель заводится так-то, рулить так-то. Представили? Теперь попытайтесь вообразить себе доходы похоронных контор в течение ближайшего месяца. С течением времени естественный отбор выкосит самых неумелых вертолетчиков, на вертолеты худо-бедно поставят автопилоты, а там и новое поколение подрастет, которое газ с тормозом не перепутает уже на уровне безусловных рефлексов. И снизится уровень катастроф до приемлемого уровня.

То же и с компьютерами, только с поправкой на не слишком фатальные последствия проникновения вируса. От него никто не умирает, разве что от инфаркта из-за безвременно погибшей диссертации за неделю перед защитой (реальный, между прочим, случай из жизни — не инфаркт, а погибшая диссертация). Поэтому процесс компьютеризации окажется чуть более долгим, чем вертолетизации. Но к тому времени, в котором действуют герои киберпанка, он совершенно точно завершится, а потому запустить вирус куда угодно на шармака не выйдет.

Кроме того, «настоящие хакеры» не опускаются до взлома персоналок простых людей. Следуя воле авторов, их «вирусы» проникают в сложнейшие системы, часто в системы искусственного разума, используя те же принципы, что и на персоналках. Вероятно, все понимают, что перочинным ножиком можно ради кошелька зарезать старушку в темном переулке, а вот на танк с ним выходить не стоит. Провести простейшие параллели с компьютерной отраслью почему-то мало кто удосуживается.

Особенно меня умиляют эпизоды, в которых хакеры с клавиатуры за считанные минуты (если не секунды) вводят в незнакомую систему вирусы прямо с клавиатуры. Дело в том, что современные компьютеры не понимают ничего, кроме двоичной системы счисления: последовательности нулей и единиц. Для удобства (весьма сомнительного) человека возможна запись этих последовательностей в шестнадцатеричной системе счисления, которая по удобству (точнее, привычности) использования весьма далека от десятеричной. Простейший вирус, способный существовать в простейшей операционной системе типа DOS, насчитывает полторы-две сотни таких цифр. Но время этих вирусов давно прошло. Размеры современных вирусов — тысячи, если не сотни тысяч, шестнадцатеричных цифр. И вы будет убеждать меня, что найдется человек, способный запомнить на память код хотя бы простенького вируса? Не говоря уж про то, чтобы помнить все возможные команды и в уме проводить двоичные вычисления? Особенно с учетом того, что ошибка в одной цифре сделает программу неработоспособной?

Нет, разумеется, существуют средства, позволяющие людям программировать компьютеры с куда большим комфортом, но эти средства встречаются чрезвычайно редко — в основном на компьютерах разработчиков. Вероятность того, что программа-компилятор (с C или другого высокоуровневого языка программирования) попадется на первом попавшемся бухгалтерском компьютере, стремится к нулю. Кроме того, во многих современных операционных системах существуют встроенные языки программирования высокого уровня (например JavaScript, Java, а в последнее время даже и новомодный .NET framework), позволяющие создавать довольно сложные скрипты (минипрограммы). Однако с помощью таких языков написать саморазмножающийся вирус невозможно. И если уж злоумышленник сумел проникнуть на чужую машины с целью уничтожения данных, ему гораздо проще будет стереть их руками. Впрочем, для надежности нужно не стирать файлы (зачастую их можно с легкостью восстановить), а вытащить накопитель информации из корпуса и несколько раз хорошенько приложиться к нему кувалдой. Вот тут уже с гарантией…

Но и это не все. В даже в не слишком современных системах на больших компьютерах, а сегодня — и на персоналках, существует понятие ограничения прав пользователя (уже упоминавшее выше). И если у пользователя вдруг хватит прав, чтобы запустить в систему вируса, ему, опять-таки, окажется куда проще стереть все, что потребуется, вручную. Исключения из этого правила бывают (например нетривиальная уязвимость конкретной системы, позволяющая незаконно повысить уровень привилегий), но они настолько редки, что вероятность случайно наткнуться на них (тем более — возможность заранее подготовиться к ним) практически отсутствует.

Еще одна хорошо известная профессиональным программистам аксиома: если сложная программа заработала с первого раза, значит, она содержит как минимум одну принципиальную ошибку. Процесс отладки занимает четыре пятых времени программистской работы. А вирус, особенно на ходу придуманный из головы — весьма нетривиальная программа.

Наконец, никогда нельзя забывать о том, что у разных типов компьютеров существенно различаются не только наборы команд, но и внутренняя архитектура, а следовательно — и логика программирования. Вирус, работающий на персоналке, является бессмысленным набором двоичного мусора на SunFire или IBM AS-400. Чтобы уметь в любой момент времени сваять вирус для произвольной (человеческой) компьютерной системы, хакер должен помнить и свободно оперировать таким количеством информации, какое не в состоянии удержать человеческая память (а если в состоянии — то такой человек найдет себе куда лучшее применение, чем криминальная деятельность). Если же речь идет о компьютерах инопланетян, работающих по неизвестным принципам в неизвестных системах команд, то остается лишь пожать плечами. У земного программиста столько же шансов написать для него вирус, сколько у спустившегося с пальмы папуаса — убедить палату пэров Великобритании коллективно покончить жизнь самоубийством.

Желающих ознакомиться с большим количество ляпов такого такого рода отправляю на «Бред Сивой Кобылы» — раздел юмора на посвященном проблемам безопасности сайте bugtraq.

Неудачливый хакер — мертвый хакер. Причем мертвый из-за того, что компьютерная защита дистанционно сожгла ему мозги. Знаете, как все просто: специальный сигнал — и собственный «нейрошунт» (или эквивалентное устройство) кипятит бедолаге мозги. И это в лучшем случае — некоторые авторы со вкусом расписывают, как серое вещество парня (девушек в роли неудачливой жертвы я не встречал — еще один типичный штамп) вперемешку с осколками черепа разлетается по всей комнате.