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

Конечно, это всего лишь метафора. Фрагмент программного кода не больше похож на настоящий вирус, чем человек на робота. И тем не менее это одна из тех редких метафор, значение которой становится со временем все менее метафорическим и все более буквальным.

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

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

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

НОВЫЕ УГРОЗЫ

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

Этого метода большая часть отрасли придерживается до сих пор. Как говорит Ричард Якобс, президент Sophos, «проверка сигнатур вирусов до сих пор является наилучшим способом защиты системы от вирусов».

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

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

Melissa и ее потомки демонстрируют чрезвычайную точность метафоры: особо вирулентные штаммы склонны к быстрой мутации, и поэтому по своей природе они более устойчивы к традиционным противоядиям.

Все бы ничего, но все большее число опасных инфекций оказывается смертельным. Целая колония новых вирусов занимается уничтожением файлов. Например, Explorer.zip немедленно уничтожает все файлы с документами, как только их находит.

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

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

Конечно, поставщики антивирусных средств могут использовать Internet для распространения противоядий к новым вирусам, но, поскольку вирусы сами используют Internet для распространения, они всегда имеют определенный гандикап.

БЫСТРОЕ РАСПОЗНАВАНИЕ

Ответ, по словам Кэри Наченберга, ведущего специалиста в Symantec AntiVirus Research Center, должен состоять «в более быстром распространении лекарства против нового вируса, чем распространяется сам вирус».

Чтобы это было хоть в какой-то мере возможно, каждый новый вирус необходимо обнаружить как можно быстрее (а некоторые вирусы намеренно долго себя не проявляют, чтобы у них было достаточно времени на распространение). Проблема в том, что нет никакого четкого способа определить априори, что при выполнении данная программа проявит вирусоподобное поведение (см. врезку «Это безвредный код?»).

Так как же Symantec собирается распространять лекарство, не зная болезни? Ответ дает наука эвристика. Эвристический подход состоит в попытке предложить, может быть, далекое от оптимального, но быстрое решение для чрезвычайно сложных (или даже неразрешимых) проблем на основе все более и более достоверных предположений.

«Основная идея состоит в том, что эвристика вначале рассматривает поведение программы, а затем сопоставляет его с характерным для злонамеренной атаки, наподобие «троянского коня», — говорит Наченберг. — Установить модель поведения и принять решение относительно него можно с помощью нескольких механизмов. Вероятно, наиболее сложная часть всей процедуры: как выявить и определить все возможные действия программы?» Наиболее распространенными, по словам Наченберга, являются два подхода: сканирование и эмуляция.

Подход со сканированием предполагает поиск «поведенческих штампов», например наиболее типичных низкоуровневых способов открытия файлов. Или процедура сканирования обычного исполняемого файла просматривает все места, где программа открывает другой файл и определяет, какого рода файлы она открывает и что в них записывает.

Второй метод определения поведения — эмуляция. Такой подход, по словам Наченберга, несколько сложнее: «Программа пропускается через эмулятор Windows или макроэмулятор Macintosh или Word с целью посмотреть, что программа будет делать». Однако этот метод ставит ряд вопросов, потому что в этом случае многое зависит от причуд вирусов. Например, если вирус запрограммирован на форматирование вашего жесткого диска 15 января в 9 часов утра, а при эмуляции этого вируса на симуляторе дата установлена на 14 января, то вирус никогда не проявит свои намерения.

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

Недостаток эвристического подхода состоит как раз в его эвристичности. Всегда остается вероятность, что чрезвычайно подозрительный файл в действительности совершенно безобиден. Однако Наченберг вполне удовлетворен долей точных попаданий последнего эвристического механизма Symantec под названием Bloodhound. Он позволяет обнаружить до 80% неизвестных вирусов выполняемых файлов и до 90% неизвестных макровирусов.

СВОЕВРЕМЕННЫЙ ОТВЕТ

Помимо Symantec другим признанным лидером в борьбе против вирусов является McAfee и ее родительская компания Network Associates. Если в противодействии макровирусам у Symantec доминирует эвристическая риторика, то Network Associates подкрепляет своей технологией распространения программного обеспечения заявление о том, что McAfee является лидером антивирусного рынка.

Арсенал Network Associates состоит из трех инструментов: Enterprise SecureCast — для рассылки обновлений вирусов корпоративным администраторам, Net Tools Distribution — для перемещения пакетов с обновлениями вдоль корпоративных магистралей до уровня клиентов, и AutoUpdate — для тех, кому требуется решение с опросом клиентов.

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

КАК ЖЕ СПРАВИТЬСЯ?

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

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

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

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

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

«Сегодня мы располагаем подобной системой для макровирусов, т. е. вирусов Word for Windows и Excel, но ей пока требуется два часа, чтобы сделать то, что я описал. Если предоставленный вирус нам никогда ранее не встречался, то в среднем в течение двух часов мы предоставим вам набор определений для противодействия новому вирусу — и все это исключительно посредством компьютера. Мы собираемся перейти на полностью автоматическую систему».

И действительно, к концу первой четверти 2000 года Symantec собирается представить систему с автоматическим циклом выявления большинства типов вирусов менее чем за 45 минут.

ПУТЬ К ЗДОРОВЬЮ

Что же остается на вашу долю при такой сверхскорой автоматической помощи? Конечно, немало. Для начала, как говорит Якобс из Sophos, вы должны знать, что ожидать от помощи, к которой вы собираетесь прибегнуть, — в особенности если вирус не удастся сразу классифицировать как таковой.

«Что касается выявления сигнатур, то все крупнейшие игроки на рынке квалифицированно справляются с этой работой, — говорит Якобс. — Вопрос в том, как быстро поступит помощь, когда обнаружится нечто не виданное прежде или когда вам потребуется руководство для ликвидации последствий вирусной атаки? Множество людей пренебрегают этим вопросом».

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

Как знать, какое предположение верно? Если реакция на неверное предположение предусматривает взаимодействие с поставщиком антивирусных средств, то каковы гарантии своевременности реакции? Если ответ автоматизирован, как в случае «цифровой иммунной системы» Symantec, то в какой мере подходит для вас автоматическая процедура с отсылкой файлов и их блокированием до самого извещения о возможной вирусной атаке?

Насколько быстро должны распространяться файлы с новыми сигнатурами? Чья контрольная панель управления наилучшим образом согласуется с имеющимся административным программным обеспечением? Будете ли вы использовать уже имеющийся инструментарий для распространения программного обеспечения?

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

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

Роберт Ричардсон — постоянный автор Network Magazine. С ним можно связаться по адресу: http://www.smallofficetech.com.


Мастера маскировки

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

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

В этот момент первые несколько байтов вируса дешифруют остальную его часть, после чего вирус делает то грязное дело, для которого он был предназначен.

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

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

Это подводит нас к последней уловке злоумышленников — полиморфизму. Полиморфный вирус действует как шифруемый вирус, но меняет процедуру шифрования каждый раз при очередном инфицировании (см. Рисунок «Последняя угроза»). Первые полиморфные вирусы Tequila и Maltese Amoeba появились в 1991 г. Все бы ничего, но в 1992 году автор, известный под псевдонимом Dark Avenger, написал своего рода комплект «Сделай сам» для мутационного механизма, который он сделал частью вируса Maltese Amoeba.

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

Доля полиморфных вирусов во всем бестиарии (приблизительно 8000 известных вирусов) не превышает нескольких единиц, но их число с середины 90-х непрерывно растет.

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


Ресурсы Internet

Ссылки на различные антивирусные ресурсы имеются на https://www.comparitech.com/antivirus/computer-virus-resources/ .

Координационный центр CERT публикует информацию о вирусах и уязвимостяях на http://www.cert.org/.

Популярные статьи об эвристических методах анализа можно найти на http://www.symantec.com/avcenter.


Это безвредный код?

Возможно, вы думаете: «Конечно, трудно быть на 100% уверенным, что программа не была инфицирована, но сказать, что это невозможно, было бы неверно. С увеличением быстродействия и возможностей компьютеров применение, пусть достаточно сложных, правил для определения факта наличия вируса должно позволить выявить все случаи вирусоподобного поведения программ просто посредством просмотра их исполнимого кода, не так ли?»

Ответ, однако, отрицательный. Ни одна программа не в состоянии определить посредством одного лишь просмотра возможность вирусоподобного поведения другой. Это не вопрос сложности, это невозможно принципиально.

В качестве подтверждения мы рассмотрим классическое математическое доказательство невозможности для одной программы определить факт, что выполнение другой программы когда-либо остановится или будет продолжаться бесконечно. Две проблемы (что программа остановится и что программа содержит вирус) оказываются двумя сторонами одной задачи, а именно — принципиальной возможности одной программы «решить» что-нибудь относительно другой путем просмотра.

Примем, что для данного ввода все компьютерные программы будут либо выполняться бесконечно, либо в какой-то момент остановятся.

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

В самом деле, это слабое звено всего доказательства невозможности однозначно установить факт наличия вируса посредством просмотра программы. Доказательство опирается на тезис, что любые вычисления могут быть выполнены с помощью весьма простого гипотетического компьютера, машины Тюринга. (Если вам интересны подробности о машине Тюринга и о том, что она делает, то вы можете сделать паузу и заглянуть на весьма познавательный сервер математика Алана Тюринга http://www.turing.org.uk/turing/.)

Весьма любопытно, что Алан Тюринг придумал эту машину в 1935 году, за десять лет до того, как появились первые электронные компьютеры. Как бы то ни было, давайте примем в качестве допущения тезис Черча-Тюринга (так он называется): любые вычисления могут быть произведены на машине Тюринга.

В случае машины Тюринга все программы либо останавливаются, либо нет.

Теперь мы приступаем к самой неприятной части. Мы будем предполагать для целей доказательства, что для некоей программы вводом является машинный код других программ. Эта гипотетическая программа Halt-Checker должна будет определять, будет ли другая программа выполняться вечно или, в конце концов, остановится.

Теперь дальше. Представим, что некая «вмещающая» программа под названием Dark-Halter берет вывод Halt-Checker в качестве своего ввода. Если Halt-Checker сообщает, что программа остановится, то, как только Dark-Halter получит эту информацию, программа переходит на бесконечный цикл. Если Halt-Checker утверждает, что программа зацикливается, то Dark-Halter останавливается.

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

Подумайте об этом несколько минут, нарисуйте схему на манжетах, и вы увидите, что здесь-то и таится проблема. Чтобы этот трюк сработал, Dark-Halter должен быть программой, останавливающейся, только если она не будет останавливаться, и не останавливающейся, только если она останавливается. Под холодным душем логики вся эта путаница решается просто: исходное допущение о возможности создания Halt-Checker было неверно.

Если эти циклические программы заменить на Infector-Finder и Dark-Infector, то мы придем к тому же самому противоречию. Конечно, Dark-Halter и Dark-Infector — искусственные примеры. Поведение многих типов программ вполне предсказуемо при условии, что диапазон того, что мы ищем, достаточно ограничен — именно так работает эвристический подход.