|
|
Эволюция вирусов и антивирусов. Эпохи DoS и интернет.Более 20 лет компьютерные вирусы досаждают пользователям по всему миру, и более 20 лет антивирусные эксперты борются с ними. За это время антивирусные программы прошли путь от любительских до коммерческих пакетов, приносящих своим авторам миллионы долларов. Однако практически все основные анивирусные технологии были придуманы еще к середине 90-х годов, и последние 10 лет наблюдается лишь экстенсивное их развитие. Каким будет антивирус завтра? Какие технологии будут использоваться в антивирусе 2010? Что бы лучше понять, почему современные антивирусы такие какие они есть, и в каком направлении развивается мысль авторов и архитекторов антивирусов, полезно сделать краткий экскурс в прошлое и посмотреть какой путь прошли антивирусы. Антивирусы неразрывным образом связаны со своим антиподом вирусами. Исчезни, вдруг, по какой-либо причине вирусы, нужда в антивирусах бы отпала. Но, к счастью для разработчиков антивирусов, такая ситуация из ряда гипотетических и фантастических. Поэтому, чтобы лучше понять, этапы эволюционного развития антивирусных программ, необходимо рассматривать их совершенствование неотрывно от совершенствования самих вирусов. Преистория. Конец 80-х. Все первые вирусы были по современным меркам примитивными. Большинство вирусов начального периода заражала исполняемые файлы типа COM, чуть более сложные EXE файлы заражались реже. Причина этому наличие некоторых сложностей, с которыми большинство вирусописателей того периода не могли справиться (шифрование, полиморфизм или другие сложные алгоритмы). В ответ на появление первых вредоносных программ, которые были довольно примитивными, появилось множество таких же примитивных антивирусных программ. Поток новых вирусов был мизерным несколько вирусов в месяц, никаких сложностей с точки зрения программирования антивируса не было. Все антивирусы того периода отличались лишь алгоритмами обхода дерева каталога, и скорость работы антивируса зависела именно от этого, а не от работы антивирусного движка. Да и движка-то как такового не было. Был набор из нескольких десятков сигнатур, которые хранились в теле программы и процедура поиска этих сигнатур в файлах. Кстати, некоторые разработчики даже не утруждали себя шифрованием сигнатур, поэтому в то время были не редки случаи, когда один антивирус находил вирус в другом антивирусе. Кроме антивирусных сканеров ничего другого тогда не было. И не нужно было. Каменный век. Начало 90-х. В 1990 г. появилось новое поколение вирусов полиморфные вирусы. Хотя в то время такое слово и не использовалось. Первый представитель этого типа вредоносных программ, Chameleon (С1260, V2P1, V2P2 и V2P6), «эволюционировал»; из двух других ранее известных вирусов Vienna и Cascade. В отличие от Cascade, Chameleon изменял внешний вид как тела вируса, так и самого расшифровщика, ни оставляя ни одного постоянного байта. Антивирусные конференции того периода, были полны восторженных возгласов по поводу сложности и красоты кода. Параллельно разработчики антивирусов обсуждали, как теперь это можно ловить, потому что полиморфизм делал современные антивирусные программы малоэффективными. В Chameleon отсутствовал постоянный вирусный код, что делало разработку новых принципов антивирусной защиты приоритетной задачей. Разумеется, такие принципы не заставили себя долго ждать, и вскоре антивирусные эксперты изобрели специальные алгоритмические языки, способные распознать в зараженном файле даже полиморфный вирус. Появление первых сколько-нибудь сложных вирусов не смогли пережить многие примитивные антивирусы. Также росло и число вирусов. Параллельно с разработкой сканеров, шли и эксперименты с другими лекарствами. В начале 90-х были популярны программы вакцины (или вакцинаторы). Идею авторы таких программ подсмотрели в медицине. Нужно заметить, что на ранней стадии развития компьютерной вирусологии довольно много было заимствовано из медицины. Начиная от термина вирус и заканчивая методами лечения и борьбы. Только через несколько лет эксперты отошли от копирования медицинских терминов и методов, а тогда почти все проводили аналогии. Одной из аналогий были вакцины. Они работали по тому же принципу, что и медицинские вакцины делалась некая «прививка» и вирус больше не мог заражать «привитый» или вакцинированный файл. Поводом для разработки вакцин послужил тот факт, что все более-менее разумно написанные вирусы проверяли файл жертву на наличие своей копии, что бы избежать повторного заражения. Для этого обычно применялась некая метка, говорящая о том, что файл уже заражен. Например, знаменитый Иерусалимский вирус добавлял 5 байт к концу зараженного файла "MsDoS". Программы вакцинаторы делали то же самое. Казалось бы, гениальная идея сканеры больше не нужны. Но вирусописатели нашли и против этого убийственное оружие они не ставили метки, они просто искали свое тело в жертве и сравнивали все тело, байт в байт. Т.е. меткой становилось все тело вируса. Против этого вакцины были бессильны. Вторым аргументом, который добил вакцины, стало… количество вирусов. Вакцина против 10-ти или даже 100 вирусов это реально, а против 10000 уже нет. Эра полиморфиков. Смерть простых антивирусов. 1992-1995 годы. В 92-м появился первый генератор полиморфного кода MtE (Mutation Engine). Первая мысль, посетившая антивирусых экспертов «все, это конец. Теперь любой пионер сможет создать сложнейший вирус». Если раньше появлялся более-менее сложный полиморфный вирус раз в месяц, то после появления MtE таких вирусов стало несколько десятков и появлялись они чуть ли ни каждый день. 1992 г. стал переломным годом в эволюции антивирусных средств. Нужно было что-то такое, что помогло бы бороться с полиморфными вирусами. И выход был найден эмулятор кода. Полиморфные вирусы после расшифровки всегда одинаковы и нужно было придумать нечто, что смогло бы «снять» зашифрованную часть и позволило добраться до постоянного тела вируса. Такую операцию делали антивирусные эксперты при анализе вируса, но делали это при помощи отладчика. Некоторые авторы антивирусов так и поступили добавили возможности отладчика (трассировку исполняемого кода) в свои программы. Это, конечно, облегчило задачу, но вирусописатели довольно быстро научились ускользать из под отладчиков (а это, если честно, не сложно было сделать). Получилось, что авторы антивирусов добились обратного эффекта их программы сами способствовали запуску вирусов. Требовалось что-то другое и этим другим стал эмулятор. Первым антивирусом с эмулятором стал AVP (в 2000 году название программы изменено на Антивирус Касперского). Это сейчас без эмулятора не мыслим современный антивирус, а тогда использование эмулятора было супер новой идеей. Использование эмулятора позволяло обнаружить любой полиморфный вирус того периода. Появление большого количества полиморфных вирусов отразилось и на молодой антивирусной индустрии. Если до 92-го любой программист мог написать антивирус, который бы справлялся со всеми вирусами того периода, то после MtE таких программистов остались десятки т.к. задача написания эмулятора была не всем под силу. Конечно же, не только эмулятор использовался для обнаружения полиморфных вирусов. К другим инструментам, использовавшимся (и использующимся) для поиска полиморфных вирусов в начале 90-х, относятся криптоанализ и статистический анализ. Криптоанализ заключается в следующем: по известному базовому коду вируса и по известному зашифрованному коду (или по "подозрительному" коду, похожему на зашифрованное тело вируса) восстанавливаются ключи и алгоритм программы-расшифровщика. Затем этот алгоритм применяется к зашифрованному участку, результатом чего является расшифрованное тело вируса. При решении этой задачи приходится иметь дело с системой уравнений. Как правило, этот способ работает значительно быстрее и занимает гораздо меньше памяти, чем эмуляция инструкций вируса. Однако решение подобных систем часто является задачей высокой сложности. Причем основная проблема это математический анализ полученного уравнения или полученной системы уравнений. Т.е. требовалась очень серьезная математическая и криптографическая подготовка эксперта, который бы пользовался этим методом. Статистический анализ. Во время своей работы сканер анализирует частоту использования команд процессора, строит таблицу встречающихся команд процессора (опкодов) и на основе этой информации делает вывод о заражении файла вирусом. Данный метод эффективен для поиска некоторых полиморфных вирусов т.к. эти вирусы используют ограниченный набор команд в декрипторе, тогда как «чистые» файлы используют совершенно другие команды с другой частотой. Например, все программы для MS DOS часто используют прерывание 21h (опкод CDh 21h), однако в декрипторе полиморфных DOS-вирусов эта команда практически не встречается. Основной недостаток этого метода в том, что есть ряд сложных полиморфных вирусов, которые используют почти все команды процессора, и от копии к копии набор используемых команд сильно изменяется, т.е. по построенной таблице частот не представляется возможным обнаружить вирус. Справедливости ради, необходимо заметить, что и криптоанализ и статистический анализ применяется для обнаружения вредоносных программ и по сей день. В начале 90-х локальных сетей было мало, а про интернет вообще никто не говорил и, следовательно, все антивирусы были предназначены для персональных компьютеров. Вирусов становится все больше. Эвристический анализатор. На рубеже 1992-1993 гг. количество вирусов перевалило за 1000. И примерно в тоже время разработчики антивирусов задумались о том, как можно обнаруживать новые (неизвестные) вирусы. Первым антивирусом, который мог обнаруживать неизвестные вирусы стал Lie Detector Евгения Сусликова . Принцип работы LD был довольно просто каждый вирус во время своей работы должен совершить ряд действий найти файл жертву, открыть файл для записи, заразить ее (модифицировать), закрыть файл. Любое из этих действий можно сделать ограниченным количеством методов. Соответственно ограничен и набор команд процессора и сигнутур. Эти команды и искал LD. Затем происходит анализ найденных сигнатур и если найдено некоторое количество необходимых и достаточных «подозрительных команд», то принимается решение о том, что файл инфицирован. Большой плюс этого метода простота реализации и скорость работы, но при этом уровень обнаружения новых вредоносных программ довольно низок. Эвристические анализаторы, работающие на этом принципе, называют эвристиками первого поколения. Единственным недостатком LD была невозможность обнаруживать новые полиморфные вирусы. Естественным развитием было совмещение эвристического анализатора и эмулятора. Но добавление эмулятора дало еще одно преимущество перед эвристиками первого поколения возможность эмулирования не только процессора, но и операционной системы. Суть работы такого эвристика состоит в эмуляции исполнения программы и протоколировании всех «подозрительных» ее действий. На основе этого протокола принимается решение о возможном заражении программы вирусом. В отличии от эвристических анализаторов первого поколения, новые эвристики более требовательны к ресурсам компьютера, однако и уровень обнаружения у них метода значительно выше. Эвристические анализаторы в большинстве современных антивирусов являются эвристиками второго поколения. Казалось бы, эвристики второго поколения могут обнаружить все вредоносные программы, если бы удалось создать 100% эмулятор, но эта задача не реализуема (особенно, если учесть сложность современных операционных систем) и поэтому (но не только поэтому) эвристик не может достичь результата в 100%. А что если не эмулировать, а дать возможность исполняться программе в контролируемой среде? Ответом на этот вопрос стало появление поведенческих блокираторов. История поведенческих блокираторов насчитывает уже более 13 лет. Данный вид антивирусного программного обеспечения не был популярным долгое время, но с появлением новых видов ИТ-угроз о поведенческих блокираторах вновь вспомнили. Основная идея блокиратора анализ поведения программ и блокировка выполнения любых опасных действий. Теоретически, блокиратор может предотвратить распространение любого, как известного, так и неизвестного (написанного после блокиратора) вируса. Именно в этом направлении и движется сегодня большинство разработчиков антивирусного ПО. Примеров реализации данной технологии довольно много. В последнее время большинство систем предотвращения распространения почтовых червей по механизму являются поведенческими блокираторами. Как уже говорилось выше, первое поколение поведенческих блокираторов появилось еще в середине 90-х годов (в самый разгар эпохи DOS-вирусов). Принцип их работы был прост при обнаружении потенциально опасного действия задавался вопрос пользователю разрешить или запретить действие. Во многих случаях такой подход работал, но «подозрительные» действия производили и легитимные программы (вплоть до операционной системы) и если пользователь не обладал должной квалификацией, вопросы антивируса вызывали непонимание. С проникновением персональных компьютеров все глубже в повседневную жизнь снижался средний уровень квалификации пользователей и первые поведенческие блокираторы перестали быть востребованными рынком. Второе поколение поведенческих блокираторов отличает то, что они анализируют не отдельные действия, а последовательность действий, и уже на основании этого делается заключение о вредоносности той или иной программы. Это значительно сокращает количество запросов к пользователю и повышает надежность детектирования. Эволюция поведенческих блокираторов является хорошей иллюстрацией другого фактора, влияющего на эволюцию антивирусов квалификация пользователя. Если на заре эры персональных компьютеров, большинство пользователей были довольно опытными и худо-бедно разбирались в устройстве ПК (вспомните книги Фигурнова), то с увеличением количества компьютеров их средний уровень снижался. Аналогично менялась сложность и интерфейс антивирусных программ в сторону упрощения. И если поведенческие блокираторы сначала стали жертвой усложнения, а потом восстали из пепла, то вот ревизорам изменения диска не так повезло суперпопулярные вид антивирусного ПО 90-х сейчас практически никем не используется. Причина та же сложность и необходимость понимать природу происходящего в компьютере. Таким образом, к середине 90-х были придуманы и разработаны все основные технологии, которые применяются до сих пор. Вирусы умерли, да здравствуют вредоносные программы Windows 95, Office и макро вирусы. 95-й год для многих запомнится выходом Microsoft Windows 95 и появлению первого макро вируса для MS Word. Оба этих события повлияли на антивирусы, но в разной мере. С появлением Windows 95 программистам пришлось серьезно задуматься о многозадачности, фоновых проверках, синхронизации и других вопросах, которых ранее попросту не возникало. Развитая многозадачность операционной системы подтолкнула разработчиков к созданию таких антивирусов, которые бы проверяли файлы на лету (при обращении к ним) On-Access Scanner или мониторов. Конечно же, такие программы были и раньше до Windows 95, но MS DOS налагала существенные ограничения на функционал мониторов. Появление Windows 95 открыла новые горизонты и для вирусописателей, но к счастью для разработчиков антивирусов, они не торопились осваивать новую ОС и у разработчиков появилась небольшая фора. Второй фактор (появление макро вирусов) также повлиял на индустрию, но в гораздо меньшей степени разработка движков для работы с файлами MS Word (а в дальнейшем и с другими программами MS Office) показала кто из разработчиков антивирусов на самом деле является технологическим лидером. Эра интернет наступила как-то не заметно. Еще вчера электронная почта была у единиц, а сегодня уже в каждом втором доме есть ICQ, и подростки часами сидят в чатах. Интернет был самым серьезным фактором, изменившим антивирусную индустрию, да что там антивирусную индустрию, он изменил нашу жизнь. Что же касается вирусов, то интенет их просто убил. 21 век принес, пожалуй, самые большие изменения в индустрию антивирусов умер термин вирус. На смену пришло понятие вредоносная программа. Разумеется, эти изменения произошли не сразу, этому были явные предпосылки в конце 90-х интернет из игрушки для профи стал непременным атрибутом нашей жизни. В Сети люди знакомились, женились, влюблялись, делали покупки. В Сети люди просто жили. Постепенно в интенет появились деньги сначала это были аккаунты для доступа в Сеть, потом виртуальные деньги, а затем реальные (номера счетов, кредитных карточек), а раз где-то есть деньги, значит, найдутся люди, которые захотят эти деньги отобрать. Постепенно поменялась цель написание вирусов от простого хулиганства или самоутверждения цель сместилась в область финансов и как следствие классические вирусы, заражающие файлы, практически исчезли. Остались одни троянские программы в своих различных проявлениях. Все это решено было называть «вредоносными программами». Кроме этих программ появились еще и другие, которые при некоторых условиях могут нанести вред (например, открыть доступ к вашему компьютеру и данным злоумышленнику), передать персональные данные пользователя злоумышленнику или показывать непрошенную рекламу. Не смотря на то, что эти программы очень разные по своим действиям, их стали называть Spyware (шпионское программное обеспечение), что не совсем корректно. Более правильный термин (чаще используется специалистами) потенциально опасные программы или потенциально нежелательные программы (Potentially Unwanted Programs). Всему этому вредоносным программам, потенциально опасным программам, утилитам для финансовых махинаций противостоят все те же антивирусные программы, которые пора бы уже переименовать в антивредоносные, но люди привыкли к старому названию и по привычке называют их антивирусами. Интернет повлиял не только на вирусы, развитие сетей повлияло и на стратегию защиты. Стала доминировать эшелонированная защита с обязательной защитой периметра интернет-шлюзов и почтовых серверов. Постепенно акцент был смещен с защиты только рабочих станций именно на эти узлы защиты. Причина проста изменение приоритетов путей проникновения угроз на компьютеры. Сегодня основной источник заразы это протоколы интернета HTTP, FTP, SMTP и др., различные протоколы для систем мгновенного обмена сообщениями (ICQ, AOL IM, MSN Messenger), протоколы программ P2P и другие. Сменные носители, как средство переноса вредоносных программ отошли на второй план. Андрей Никишин |