Современная электронная библиотека ModernLib.Net

Секреты и ложь. Безопасность данных в цифровом мире

ModernLib.Net / Компьютеры / Шнайер Брюс / Секреты и ложь. Безопасность данных в цифровом мире - Чтение (стр. 13)
Автор: Шнайер Брюс
Жанры: Компьютеры,
Интернет

 

 


Первая – это «вызов/ответ». Знак – устройство идентификации – карманный калькулятор с цифровой клавиатурой и маленьким экраном. Когда пользователь хочет подключиться, он вызывает удаленный хост. Он отправляет этот вызов со своего знака. Знак подготавливает соответствующий запрос, который передает в компьютер, а тот переправляет его хосту. Хост производит аналогичные вычисления и, если результат соответствует ожидаемому, подтверждает подлинность.

Вторая технология основана на временной синхронизации. Знаком является аналогичный карманный калькулятор с одним экраном. На экране регулярно сменяются номера, обычно раз в минуту. Удаленный компьютер просит пользователя напечатать то, что показано на экране. Если ответ пользователя соответствует тому, что ожидает удаленный компьютер, он производит подтверждение подлинности. Таким образом работает адаптер SecurID[29].

Конечно, полная система может также включать пароль, знак вызова/ответа, для начала работы может даже потребовать дополнительно ввода пароля; и другие вспомогательные меры безопасности. Основная идея все-таки в том, что некое секретное вычисление происходит внутри электронного ключа, который подменить нельзя. Нападающий не станет притворяться, будто у него есть знак, потому что не знает, как рассчитывать ответы, основанные на вызовах, или не знает, как рассчитывать величины, основанные на временной синхронизации. Сделать это можно только одним путем – имея настоящий знак.

Это работает в большей или меньшей степени. Шифровальные техники, кодирование или хэширование обеспечивают безопасность. Удаленный компьютер знает, как провести расчеты, так что система безопасна в такой же степени, что и ключевой код главного хоста. Любой, кто перепроектирует знак, сможет выяснить, как произвести расчеты; таким образом, система безопасна ровно настолько, что и знаки (см. главу 14). Но это достаточно хорошо и, конечно, намного лучше, чем «голые» пароли. Проблемы безопасности возникают в сети и при подтверждении подлинности компьютера.

Напоследок обсудим еще один знак: записанный пароль. В сообществе, занимающемся проблемами безопасности, существует реакция коленного рефлекса на запись паролей, но если это сделано должным образом, то может значительно улучшить защиту. Кто-нибудь, кто записывает свой пароль, превращает то, что он знает (свой пароль), в то, что он имеет (клочок бумаги). Эта уловка позволяет ему использовать более длинные пароли, которые являются более надежными. Здесь есть все проблемы простого знака: он может быть скопирован или украден. Защита не будет работать, если Алиса написала свой пароль на желтом липком листочке, наклеенном на монитор ее компьютера. Для нее будет лучше положить свой пароль в бумажник – это надежнее. Возможно, лучшим решением будет иметь две части пароля: одну будет помнить Алиса, а другая будет записана на листочке, лежащем в ее бумажнике.

Есть системы с одноразовыми паролями. У пользователя находится список паролей, записанных и используемых однократно. Конечно, это хорошая система подтверждения подлинности – список паролей является знаком – до тех пор, пока список находится в безопасном месте.

Протоколы аутентификации

Протоколы аутентификации – это криптографические способы подтверждения подлинности личности Алисы через сеть. Основной протокол аутентификации достаточно прост.

1. Алиса набирает свое имя пользователя и пароль на компьютере-клиенте. Клиент отправляет эту информацию серверу.

2. Сервер ищет указанное имя пользователя в базе данных и отыскивает соответствующий пароль. Если он соответствует паролю, набранному Алисой, ей предоставляется доступ.

Проблема в том, что база данных паролей должна быть защищена. Решение в том, чтобы хранить не пароли, а хэш-функции паролей.

1. Алиса набирает свое имя пользователя и пароль на клиенте. Клиент отправляет эту информацию серверу.

2. Сервер хэширует набранный Алисой пароль.

3. Сервер ищет имя пользователя с именем Алиса в базе данных и отыскивает соответствующее хэш-значение. Если это хэш-значение соответствует хэш-значению пароля Алисы, ей предоставляется доступ.

Уже лучше. Главная проблема со вторым протоколом в том, что пароли открыто посланы по сети. Кто-нибудь, рыскающий по сети, может собирать имена пользователей и пароли. Решение включает в себя хэширование пароля перед тем, как отослать его (более старые версии Windows NT делают это), но словарные нападения в состоянии справиться и с этим.

Так как словарные нападения стали более мощными, системы начали использовать прием, известный как «соление» (на самом деле они делали это и ранее, хороший пример предусмотрительности проектировщика). «Соль» – это известная случайная константа, хэшируемая вместе с паролем. Вследствие чего сделать словарные нападения сложней; вместо единственного хэш-значения для пароля «кот» могут быть 4096 различных вариантов для «кот» плюс 12 бит случайной «соли». Словари хэшированных паролей должны были бы быть в четыре раза «толще». Но способность произвести быстрые словарные нападения в реальном времени делает эту контрмеру устарелой; словари просто включают все возможные значения «соли».

Kerberos («Цербер») является более хитрым протоколом аутентификации. Здесь Алиса должна иметь долгосрочный ключ, используемый совместно с надежным сервером в сети, называемым Kerberos-сервером. Чтобы войти во взятый наугад сервер в сети – назовем его сервером Боба, – выполняется следующая процедура:

1. Алиса запрашивает разрешение у сервера Kerberos для входа на сервер Боба.

2. Сервер Kerberos проверяет, допускается ли Алиса на сервер Боба. (Примечание: серверу Kerberos не нужно знать, что Алиса – та, кем она себя назвала. Если это не она, протокол прервется на шаге 6.)

3. Сервер Kerberos высылает Алисе «билет», который она обязана отдать серверу Боба, и ключ к сеансу, который она может использовать, чтобы доказать Бобу, что она Алиса.

4. Алиса использует ключ к сеансу с сервера Kerberos для создания «удостоверения», которое она будет использовать, чтобы убедить Боба, что она Алиса.

5. Алиса посылает Бобу и билет, и удостоверение.

6. Боб проверяет. Если все подтверждается, он дает Алисе доступ. (Боб также имеет используемый совместно с сервером Kerberos долгосрочный ключ. Билет – это сообщение с сервера, зашифрованное в долгосрочном ключе Боба.)

Этот протокол защищен тем же способом, что и протоколы физических билетов. Сервер Kerberos печатает билеты. Он дает билеты Алисе, а она в свою очередь может предоставить их Бобу. Боб может утвердить билет, так как он знает, что Алиса получила его с сервера Kerberos.

И у этого протокола есть несколько приятных свойств. Долгосрочные ключи Алисы и Боба, которые похожи на пароли, никогда не посылались по сети. Отрицательная сторона в том, что системе для работы нужен сервер Kerberos. Сервер Kerberos является доверенной третьей стороной. Это может стать «узким местом» в системе в 9:00 утра, когда каждый пытается войти в свой компьютер.

Kerberos был изобретен Массачуссетским технологическим институтом в 1988 году и с того времени используется в мире UNIX. Kerberos является частью Windows 2000, но исполнение Microsoft отличается от стандартного и несовместимо с остальным миром Kerberos. Я могу только предполагать, что это было сделано намеренно по соображениям, связанным с рынком, но сделано таким образом, что ослабило защиту. Нельзя всего лишь изменить протокол безопасности и предполагать, что измененный протокол так же надежен.

Другие подтверждающие подлинность протоколы входа в систему используют открытые шифровальные ключи. IPsec и SSL, например, пользуются протоколами аутентификации с открытыми ключами. Некоторые системы прибегают к более простым, но тайным протоколам. Протокол, в котором звонящий с сотового телефона доказывает, что он может сделать телефонный звонок в этой частной сети, является одним из них.

Однократная регистрация

Вещь, которая изрядно раздражает пользователей в системе со строгими требованиями к безопасности, – это большое число паролей. Пользователь должен набирать один пароль для входа в свой компьютер, другой для входа в сеть, третий для входа на отдельный сервер в сети и т. д. Люди задают вопрос: не было бы лучше, если бы пользователь зарегистрировался один раз, с одним паролем, и затем мог бы управлять компьютерами как ему угодно, без использования других паролей?

Однократная регистрация – это решение пользовательской проблемы. К несчастью, она не очень хорошо работает. Во-первых, нетрудно увязнуть в болоте различных приложений и мер безопасности, которые плохо согласуются между собой. Это значит не просто ограничиться выбором определенного пароля для каждого – что плохая идея, – но учесть все проблемы множества взаимодействующего программного обеспечения. Во-вторых, дополнительный риск связан с тем, что возможная уязвимая точка является единственной. Есть разница между потерей одной кредитной карточки и целого бумажника.

Продукты с одноразовой регистрацией существуют, и в некоторых ситуациях они работают. Но они ни в коем случае не являются панацеей, как о том любят объявлять их продавцы.

Глава 10

Безопасность компьютеров в сети

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

Разрушительные программы

Самое первое, с чем большинство из нас сталкивается при первом знакомстве с проблемами компьютерной безопасности – это именно разрушительные программы, то есть программы, умышленно причиняющие неприятности. Даже в том случае, если компьютер не подключен к сети и доступ к нему имеется только у вас, вам не следует забывать о вирусах. Ведь вы не знаете точно, какие программы в данный конкретный момент выполняются вашим компьютером, и только можете надеяться, что выполняемые программы работают как надо. Запуская программы, в надежности которых вы не уверены, вы рискуете.

К разрушительным программам кроме вирусов относятся так называемые «троянские кони» и «черви». Они обычно состоят из двух частей: «полезной нагрузки» и механизма распространения. «Полезная нагрузка» – это та составляющая, которая, собственно, и вызывает сбои. Традиционно нагрузка была не очень разнообразна – прототипы вирусов выводили на экран какое-либо надоедливое сообщение, переформатировали жесткий диск компьютера жертвы либо не делали вообще ничего. Но в некоторых случаях нагрузка способна причинить и большие неприятности: изменить установки контроля доступа компьютера, украсть секретный ключ и отправить его по электронной почте и т. п. Результат таких действий может оказаться опасным, и я считаю, что следует ожидать появления более коварных нагрузок в ближайшие годы[30]. В этой книге для нас наибольший интерес будут представлять механизмы распространения, по которым мы и классифицируем разрушительные программы.

Компьютерные вирусы

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

В 1983 году студент Фред Коэн (Fred Cohen) написал первый компьютерный вирус. Он сделал это, только чтобы создать прецедент (удивительно, но большинство людей не верили, что это возможно). Многие скопировали этот вирус, большинство этих людей хотели просто досадить окружающим. В настоящее время насчитывают от 10 000 до 60 000 вирусов (в зависимости от критериев подсчета), большинство которых написаны для IBM-совместимых персональных компьютеров. По некоторым оценкам, которые мне встречались, ежедневно создаются шесть новых вирусов, но я считаю, что это – ложь и паникерство. Всего несколько сотен вирусов встречаются «в диком виде» (имеется в виду «на жестком диске у людей, не принимающих непосредственного участия в исследованиях компьютерных вирусов»), но те, которые встречаются, могут быть разрушительными.

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

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

Большинство файловых вирусов уже вышли из употребления. Изменения в устройстве компьютеров привели к тому, что вирусы потеряли способность запускаться; программное обеспечение часто требует обновления при установке новой операционной системы или нового процессора. Многие файловые вирусы вымерли после того, как в 1992 году была выпущена Windows 3.1; вирусы просто рушили эту операционную систему и в результате не могли распространяться.

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

Загрузочные вирусы могут мирно сосуществовать с Windows 3.1, но большинство из них не пережили появления Windows 95. Несовместимость при загрузке и появляющиеся на экране предупреждения сильно затруднили распространение вирусов. Были вирусы, созданные специально для Windows 95, но ни один из них не получил широкого распространения, поскольку никто уже не загружается с гибкого диска.

Последний класс вирусов – это макровирусы. Они написаны на языке сценариев и заражают не программы, а файлы данных. Во многих текстовых процессорах, электронных таблицах и программах, работающих с базами данных, используются специальные языки разработки сценариев. Такие сценарии (программы на макроязыке, или просто макросы) используются для автоматизации задач и хранятся вместе с данными. Первый макровирус для Microsoft Word – Concept – впервые обнаружили в «диком виде» в 1995 году; в текстовом редакторе Emacs такие вирусы существовали уже в 1992 году.

Макровирусы могут распространяться существенно быстрее других, поскольку люди гораздо чаще обмениваются данными, чем программами. А поскольку программное обеспечение электронной почты и передачи файлов делается все проще в обращении, эти вирусы станут распространяться еще быстрее. Бывают макровирусы, способные существовать в различных операционных средах: некоторые макровирусы для Microsoft Office могут заражать как компьютеры Windows, так и Macintosh.

Макровирусы – это будущее компьютерных вирусов. Все вирусы, которые быстро распространяются по Интернету, – это макровирусы. Лучшие из вирусов используют психологические приемы, побуждающие пользователя установить, запустить или размножить их.

Антивирусное программное обеспечение – это более выгодный бизнес, чем написание вирусов. (Я полагаю, это очевидно: за вирусы никто денег не платит.) Большинство антивирусных программ сканируют файлы, выискивая вирусы. В программах есть база данных, содержащая «отпечатки пальцев» вирусов – фрагменты кода, про которые известно, что они являются частью вирусов. Когда программа находит такой же отпечаток, она получает информацию, что файл заражен, и, чтобы «дезинфицировать» его, удаляет вирусный код. Метод сканирования «отпечатков» работает только после того, как компания, создавшая антивирусную программу, выделила вирус в лаборатории и включила в список новый отпечаток. Поэтому усовершенствование антивирусного программного обеспечения – бойкий бизнес.

Все вирусы, которые встречались до сих пор, были направлены против крупных вычислительных машин, а не против периферийных или встроенных систем. Однако можно написать вирус на языке PostScript. Он мог бы распространяться от документа к документу. Он мог бы воздействовать на принтеры. Можно создать вирус, заражающий сотовые телефоны и распространяющийся по сотовой сети. Нам уже встречался вирус, специализирующийся на устройствах WebTV. Можно создать вирус, заражающий практически любую компьютерную систему. Если его еще нет, то только потому, что люди, которые обладают необходимыми знаниями и не отягощены строгой моралью, до сих пор не удосужились его создать.

Чтобы обнаружить ранее не известные вирусы, полиморфные вирусы (видоизменяющиеся при каждом инфицировании) и зашифрованные вирусы (скрывающие свои «отпечатки» при помощи криптографии), некоторые антивирусные программы тестируют компьютерную систему, выискивая подозрительное поведение. (Обычные программы поиска вирусов довольно глупы – чтобы их обмануть, иногда достаточно просто изменить какую-нибудь мелочь.) Такие программы работают довольно хорошо, однако они перекладывают на пользователя бремя принятия решения: вирус это или ложная тревога?

«Лекарства» от вирусов не существует. Математически доказано, что всегда можно написать вирус, который не сможет нейтрализовать ни одна из существующих антивирусных программ. (Даже модель Белла-Лападулы не предохраняет от вирусных атак.) Я не буду вдаваться в подробности, но основная идея в том, что если создатель вируса знает, что именно ищет антивирусная программа, он всегда имеет шанс разработать свой вирус, незаметный для нее. Конечно, после этого программисты, борющиеся с вирусами, могут усовершенствовать свою программу, которая будет определять уже и новый вирус.

Черви

Червями называют те разрушительные программы, которые специализируются на компьютерах, подключенных к сети. Это самовоспроизводящиеся программы, которые, в отличие от вирусов, не прячутся в других программах. Они существуют самостоятельно, блуждают по компьютерным сетям, причиняя повреждения.

Роберт Т. Моррис (Robert T. Morris) «выпустил» самого известного червя в 1988 году. Это был интернет-червь, который вывел из строя более 6000 компьютеров: 10% всех серверов Интернета. Червь появлялся на одной машине. Затем он предпринимал попытку проникнуть по сети в другие машины, используя несколько основных приемов. Когда это удавалось, червь засылал на новый компьютер копию своего кода. А затем эта копия повторяла весь процесс, пытаясь проникнуть в очередную машину. Обычно черви работают именно так. Тот червь мог бы причинить более крупные неприятности, если бы не счастливая ошибка. Изначально не планировалось, что 6000 зараженных компьютеров будут выведены из строя; червь должен был заразить их тайно, не привлекая всеобщего внимания. Ошибка в программе червя вызвала повреждение зараженных компьютеров. В главе 13 я более подробно расскажу о том, как работал тот червь и в чем конкретно заключалась ошибка.

Еще один червь известен под названием Pretty Park. Эта программа, функционирующая в среде Windows, приходит по электронной почте как вложение в сообщение. Если вы запускаете эту программу, она рассылает свои копии всем адресатам вашей записной книги в Outlook Express. Кроме того, она пытается подсоединиться к серверу IRC (Internet relay chat)[31] и отправить сообщения участникам чата. Автор червя может к тому же использовать это соединение, чтобы получать информацию из вашего компьютера. ILOVEYOU и все его варианты по сути своей – тоже черви.

Троянские кони

Троянские кони – это разрушительные фрагменты, которые встроены в какие-то «нормальные» программы, чтобы одурачить пользователя, который будет думать, что это нечто полезное. Помните, откуда появилось это название? Греки десять лет осаждали Трою, но она не сдавалась. То ли от отчаяния, то ли от скуки Одиссей приказал греческим воинам построить большого деревянного коня, внутри которого могли бы спрятаться несколько человек. Этот сюрприз греки оставили троянцам как признание поражения, а затем сделали вид, что уплывают. Троянцы привезли деревянного коня в город – все художники изображают коня стоящим на платформе с колесами, – несмотря на предсказание Кассандры о том, что это приведет к гибели Трои. Ночью греки вылезли из коня, открыли ворота и впустили внутрь остальную греческую армию. После этого греки истребили троянцев, варварски разграбили и сожгли город. (По крайней мере, Гомер все описал именно так. Никто не знает, правда это или нет. Даже сам город считали мифом, пока Генрих Шлиман не обнаружил Трою в конце XIX века.)

Аналогично, цифровой троянский конь – это код, преднамеренно помещенный в вашу систему, который маскируется под безвредную (или полезную) программу, но делает что-то неожиданное или нежелательное. (С формальной точки зрения код, который вы сознательно размещаете в вашей системе, – это троянский конь, а код, который вводит в вашу систему кто-то другой, называют логической бомбой). Программист вписывает такой код в крупное программное приложение, которое в результате может начать работать неправильно, если, например, программист будет исключен из платежной ведомости. Тимоти Ллойд (Timothy Lloyd), диспетчер сети в Omega Engineering, в 1996 году установил логическую бомбу, которая подорвала производственные мощности его бывших работодателей и обошлась им более чем в 12 миллионов долларов.

Троянским конем может быть программа, которая тайно устанавливается в вашем компьютере, следит за буфером клавиатуры до тех пор, пока не обнаружит нечто, напоминающее номер кредитной карты, – правильное количество цифр, совпадение контрольной суммы, – и посылает этот номер кому-нибудь при помощи TCP/IP. Это также и приложение Java, которое прерывает соединение вашего модема и соединяет вас с 900 номерами в Молдавии (такой троянский конь на самом деле существовал).

Атака троянского коня коварна и опасна, поскольку вы можете и не догадываться о его работе. Один из популярных троянских коней для Microsoft Windows называется Back Orifice. Если он имеется на вашем диске, удаленный пользователь может эффективно подсоединиться к вам через Интернет и хозяйничать в вашем компьютере. Он может загружать себе ваши файлы, а вам – свои, удалять файлы, запускать программы, изменять конфигурации, захватывать управление клавиатурой и мышью, видеть все, что отображается на экране сервера. Тот же удаленный пользователь может вести более разрушительную деятельность: перезагружать компьютер, показывать произвольные диалоговые окна, включать и отключать микрофон или камеру, перехватывать нажатия клавиш (и пароли). А кроме того, существует расширяемый язык, позволяющий писать модули. (Я все жду, что кто-нибудь распространит модуль, который будет автоматически выискивать и записывать закрытые ключи PGP или последовательности регистрации для Всемирной паутины.)

Кроме Back Orifice и других хакерских инструментов по принципу троянских коней могут работать многие программы удаленного администрирования. DIRT (Data Interception by Remote Transmission, перехват данных с помощью удаленной передачи) – это троянский конь, разработанный правительством США и находящийся в распоряжении полиции.

Это все грубо действующие троянские кони, но бывают и более коварные. Некоторые из них собирают и отсылают автору имена и пароли пользователей. Другие незаметно изменяют шифровальную программу так, что выбор ключей становится ограничен. (Мне встречались измененные таким образом версии PGP.) Вас могут заставить поверить во что угодно, подсунув на ваш компьютер фальшивый сертификат. (Эта идея использовалась для лабораторных демонстраций нападений на систему кодовых обозначений Microsoft.) Эти троянские кони не делают ничего такого, о чем вы могли бы легко догадаться, но они способны на многое, что никогда не придет вам в голову. Распределенные атаки, приводящие к отказу в обслуживании, осуществлявшиеся с помощью Интернета, используют троянских коней для заражения промежуточных компьютеров.

Наиболее сложный этап при подобных атаках – это помещение троянского коня на компьютер ничего не подозревающей жертвы. Один из вариантов – проникнуть в офис жертвы и установить троянца на нужный компьютер; в следующей главе мы обсудим некоторые способы защиты от атак такого рода. Можно убедить жертву собственными руками установить троянского коня; о манипулировании людьми мы поговорим в главе 17. Можно атаковать компьютер через Интернет – мы вернемся к этому в главе 11. И наконец, можно проникнуть в компьютер при помощи самих разрушительных программ, создавая вирусы.

Современные разрушительные программы

Для программного обеспечения, призванного причинять неприятности, 1999 год стал переломным. Различные типы – вирусы, черви и троянские кони – слились и перемешались. И стали в результате еще более опасными. Новизна состояла не в автоматической пересылке разрушительных программ по электронной почте – до этого были Christma exec в 1987 году (через систему электронной почты PROFS (Professional Office System, профессиональная офисная система)) и ShareFun в 1997 году, – но 1999 год стал первым годом, когда распространяющиеся по электронной почте «вредные» программы смогли заразить крупные зоны Интернета. Новые типы этих программ игнорировали средства корпоративной защиты и тонеллировали сквозь брандмауэры. Это действительно значительный шаг.

Вирус продолжает существовать, если он воспроизводится на новых компьютерах. До Интернета компьютеры сообщались в основном при помощи гибких дисков. Следовательно, большинство вирусов передавались при помощи дискет, и лишь изредка через электронные доски объявлений (bulletin board system, BBS).

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

Во-вторых, перенос программ при помощи дискет легко блокировать. Большинство антивирусных программ могут автоматически сканировать все гибкие диски. Опасные программы на входе блокируются. Электронная доска объявлений способна все же доставить некоторые проблемы, но большинство пользователей приучили себя к тому, что не следует загружать программы с ненадежных BBS. А кроме того, антивирусные программы могут автоматически сканировать новые файлы в поисках опасного кода.

И в-третьих, при таком способе распространения вирусов антивирусные программы справляются со своей задачей. Написать программу, блокирующую известные опасные программы, в общем, не сложно. Она будет работать по принципу сканирующего поиска кода, характерного для вируса (так называемых сигнатур). Найдя зараженный участок, программа автоматически удалит вирус и вернет все в нормальное состояние. Процедура удаления уникальна для каждого вируса, но разработать ее сравнительно нетрудно. Антивирусные программы включают десятки тысяч сигнатур, каждая из которых характерна для определенного вируса. Компании выпускают новые программы в тот же день, как узнают о новом вирусе. И при условии, что вирус распространяется медленно, такая защита работает. Ежемесячно происходит автоматическое обновление большинства антивирусных программ. До 1999 года такая защита была вполне удовлетворительна.

Все изменилось с распространением электронной почты. 1999 год принес нам макровирус Melissa для Microsoft Word и червя Worm.ExploreZip, a 2000 год – червя ILOVEYOU и массу его разновидностей, не говоря обо всем остальном. Разрушительные программы такого типа размножаются по электронной почте и используют ее особенности. Эти программы отправляют себя по почте людям, с которыми переписывается хозяин инфицированного компьютера, обманом заставляя получателей открыть или запустить их. В таком случае процесс распространения вирусов занимает не недели и не месяцы, а считанные секунды.

Антивирусные компании по мере возможности выпускают усовершенствованные версии программ, которые умеют ловить определенные вирусы, но если вирус может заразить 10 миллионов компьютеров в течение нескольких часов (так оценивают скорость распространения ILOVEYOU), то прежде, чем его удастся зафиксировать, он вызывает множество повреждений. А что если вирус постарается «спрятаться», чтобы его код не обнаружили в течение нескольких дней? Что, если червь нацелен на конкретную машину и удаляет свой код из всех компьютеров, у которых идентификатор пользователя не соответствует заданному? Сколько времени потребовалось бы на то, чтобы его обнаружить? Что, если этот червь отправляет по электронной почте в анонимный почтовый ящик копию регистрационного имени пользователя (в большинстве случаев содержащего пароль) и лишь затем самоуничтожается? Что, если такой код способен автоматически обновляться? Что, если он автоматически зашифровывает свои распространяющиеся копии при помощи системы PGP? А если он видоизменяется и ускользает от антивирусных программ? Или неделями прячется в системе? Даже минутные размышления на эту тему заставляют нас нарисовать себе довольно жуткую картину.


  • Страницы:
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35