Вирусы и как с ними бороться. Часть вторая

Статья прислана на конкурс Летний АвторRUN!


В первой части статьи Вирусы и как с ними бороться мы рассмотрели теоретические основы вирусостроения. Сегодня подбираемся ближе к практике.


Для чего нам нужен антивирус?

В первую очередь для того, чтобы своевременно обнаруживать и удалять вирусы и тому подобную заразу. Но для начала нам его нужно установить. Сразу оговоримся, что помимо вирусов как таковых существует еще целый ряд деструктивных сетевых действий, на борьбу с которыми рассчитан фаервол (он же брандмауэр), часто идущий в пакете с антивирусом в виде модуля расширения, который можно установить, а можно и отказаться от его установки, воспользовавшись услугами таких мэтров как Agnitum Outpost Firewall Pro - кстати, последний не уживается практически ни с какими сторонними разработками. Вообще роль брандмауэра в системе нельзя умалять, он закрывает неиспользуемые сетевые порты, "мониторит" их на предмет нецелевого использования, а также запрещает выход в сеть неугодным приложениям, отражает сканирование портов, DDoS атаки и выполняет еще массу различных и крайне необходимых мер безопасности, так что отнеситесь к нему с большим вниманием, а на штатное решение компании Microsoft особо полагаться не стоит. О фаерволах нужна отдельная статья, потому что они тоже делятся на классы и типы фильтрации сетевого трафика (динамическая и пакетная фильтрация), у которых, разумеется, тоже есть свои достоинства и недостатки.

Каждый производитель выпускает антивирусы для различных платформ, например существуют версии того же самого AVP как для различных Windows платформ, так и для Unix/Linux систем, MacOS. Уже многие компании начали выпуск антивирусных пакетов для мобильных устройств на базе SymbianOS, PalmOS и клоны Windows CE (WM, Pocket, Smartphone и т.п.). Многие юзеры, конечно, и не подозревают о том, что уже существуют вирусы и под эти платформы, а некоторые уже знают о них, получив через Bluetooth вирус Duts для WM 2002/2003 или Cabir для Symbian.

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


Где взять антивирус

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

В процессе установки разные антивирусы могут предлагать различные попутные настройки с обязательно установленной кнопкой в положение Recommended. Если вы не особо разбираетесь в работе антивируса, то лучше так и оставьте. Далее возможна ситуация, когда антивирус просканирует ОЗУ вашего кремниевого друга и удалит все вирусы из нее, после этого поступит предложение просканировать весь жесткий диск на предмет вирусов, до перезагрузки (если в памяти были найдены вирусы), не советую пренебрегать этим предложением. После сканирования перезагружаемся и если до этого в системе антивирус установлен не был, то наблюдаем более низкую скорость загрузки ОС, потерю нескольких десятков мегабайт ОЗУ, а если машина совсем уж слабенькая, то может наблюдаться и замедление работы — но поверьте, оно того стоит.


Как работает антивирус?

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

Начнем по порядку: с того, какие типы обнаружения вирусов существуют, а их всего три, это сигнатурный, эвристический и проактивный.


Сигнатурный метод обнаружения вирусов

Для начала давайте разберемся, что же такое сигнатура. Сигнатура - это участок кода вируса, который обнаружили антивирусные компании и добавили этот участок кода в базу сигнатур антивируса, и теперь во время сканирования антивирус будет проверять каждый файл на компьютере на наличие такой сигнатуры в коде (как бы прикладывая ее к телу файла). Если он ее отыщет, то она будет извлечена из тела файла, то есть файл окажется вылечен (этим занимаются фаги и полифаги). Многие пользователи не могут представить себе, как антивирус может вообще заглянуть в файл, и хотят посмотреть на примере участок кода (открою вам секрет: вирус не может заразить чисто текстовый файл таких форматов как txt, rtf или "чистый" html, и если вы посмотрите эти файлы с помощью HEX-редактора, то сразу поймете, почему). Итак, откроем файл adptif.dll из директории System32 программой ResHacker (она позволяет декомпилировать некоторые файлы для последующего анализа исходника).



На рисунке видна сигнатура, которую я специально добавил в тело "диллки" из существующего вируса под названием Email-Worm.Win32.Happy (из легендарного вируса!), примерно так и работает антивирус, декомпилируя файл и ища в нем сигнатуры вирусов (на самом деле, конечно же, код длинней, но и на сохраненные изменения в этом файле моя "Панда" отреагировала незамедлительно).

Многих также интересовал вопрос, как же все таки тело вируса попадает в антивирусные лаборатории, и я постараюсь на него ответить. Ну, во-первых, у каждой компании есть специальный робот, который называется Honeypots (липучка), сканирующий Интернет в поисках вирусов посредством эвристического анализа и проактивных методов (о которых чуть ниже), также вирусы присылают "зараженные" пользователи, чей антивирус с помощью эвристического анализатора обнаружил вирус и поместил его в карантин (специальная директория, в которую помещается инфицированный файл до тех пор, пока антивирусная компания не выпустит сигнатуру с кодом этого вируса и антивирус не сможет "выкусить" этот участок вредоносного кода фагом, тем самым, вылечив файл, а до тех пор придется выкусить пользователю :) Файлы из этой директории не могут быть запущены на выполнение).

В некоторых случаях сигнатуры новых вирусов отправляют друг другу и компании антивирусного ПО. Да-да, это не шутка. Несмотря на маркетинговую политику, такое происходит, это поведал один руководитель крупной российской антивирусной компании в онлайн-интервью. А вообще в антивирусные компании ежедневно поступают из всех помянутых источников 200-300 свеженьких образцов различных "зверушек", написанных как профи, так и не очень опытными вирусописателями, некоторым образцам так и не суждено заразить ни одной машины, а некоторым, таким как Win95.CIH (он же "Чернобыль"), Sasser, NetSky, MyDom удается произвести настоящий шум.

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



Иногда в неделю добавляется сигнатур объемом в 350-400 кб, и после того как сигнатуры добавлены, файлы, находившиеся в карантине, будут вылечены (т.е. если вирусы, которыми они заражены, найдутся в базе).

Также иногда возникает спор на тему того, что у одного антивируса в базе 75 000 известных вирусов, а у другого их аж 125 000, и последний, как правило, в глазах несведущих пользователей выглядит привлекательней. Но тут тоже есть рекламная хитрость, дело в том, что у одного вируса может быть несколько мутаций (небольшое изменение кода вследствие модификации вредоносного кода), так вот, некоторые компании считают группу мутаций одного вируса (которая может достигать десятка) одним вирусом, другие считают каждую мутацию отдельным вирусом. Сигнатурный метод очень хорош тем, что в случае, когда вирус известен антивирусной компании и его сигнатура занесена в базы, он будет найден наверняка, на все 100%.

У сигнатурного метода обнаружения есть и слабые места, а именно: при увеличении файла(ов) сигнатур увеличиваются и требования к ресурсам компьютера, а еще такой метод поиска и обнаружения способен отыскать только те вирусы, которые заранее известны и не более того. Новые вирусы пишутся просто с бешеной скоростью, а на то, чтобы обнаружить новый вирус и добавить в базы, нужно время. Если учитывать, что на написание нового вируса у профи может уйти всего 15-20 минут, а на распространение и заражение сотен компьютеров в сети и того менее - 20-30 секунд (!), то станет понятно, что динамичным и надежным такой метод назвать трудно.


Эвристический метод обнаружения вирусов

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

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

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

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


Проактивный метод обнаружения вирусов (или поведенческий)

Этот метод обнаружения впервые появился в продукте "Антивирус Касперского 6.0" и произвел в некотором роде переворот в антивирусном ПО.



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

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


Полифаги и фаги

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

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

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

Также во время установки антивируса в систему он интегрируется в почтовые программы, такие как Outlook Express, Eudora, The Bat! и т.д.



Это очень важный аспект, поскольку во время получения почты нужно прямое сканирование трафика из протоколов POP3, SMTP, NNTP, IMAP и тому подобных, потому что многим типам червей, распространяющихся через эти протоколы, совершенно не нужно запуска, им главное попасть на ваш компьютер, дальше сработает механизм. Учтите это! Вам же не хочется, чтобы какой-нибудь червь с трояном отправили на все ваши адреса из почтовой программы ругательные письма. Представляете, что будет с вашим лицом через пару дней, когда до вас доберутся обиженные адресаты? :)

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



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



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

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