Книга: Pro Вирусы
Назад: Глава 7. Кто пишет и распространяет вирусы?
Дальше: Глоссарий

Глава 8. Методы борьбы

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

Немного истории

Существует мнение, что первое приложение для выявления и удаления вредоносного ПО разработал в 1984 году американский программист Энди Хопкинс — речь идет об утилите CHK4BOMB, позволявшей сканировать исполняемые файлы в поисках характерных фрагментов кода и текстовых сообщений. Другая утилита того же автора, BOMBSQAD, могла перехватывать операции записи в файл и команду форматирования. В течение длительного времени этих двух утилит было вполне достаточно для обеспечения информационной безопасности, поскольку вредоносных программ существовало не так уж и много. Например, в 1985 году по американским электронным доскам объявлений (BBS) гулял текстовый файл «Грязная дюжина» (“The Dirty Dosen — An Unloaded Program Alert List”), представлявший собой составленный владельцем одной из BBS Томом Нельфом список опасных программ, которые пользователи загружали в файлообменники. Первоначально перечень включал всего лишь 12 вредоносных приложений, но он постоянно пополнялся. Ассортимент опасных программ ширился, и вскоре простого списка оказалось уже недостаточно для отражения все новых и новых угроз — пользователи понемногу осознали необходимость в постоянной антивирусной защите.

Спрос, как известно, рождает предложение, и первая резидентная антивирусная программа под названием DPROTECT, разработанная программистом и основателем американской софтверной компании GEE WIZ Sofware Company Ги Вонгом, появилась в начале 1985 года. Программа DPROTECT распространялась бесплатно, однако желающие могли сделать добровольное пожертвование в размере пяти долларов. Приложение не использовало в своей работе вирусные базы, содержащие сигнатуры вредоносных программ, а отслеживало активность запущенных программ, перехватывая обращения к файловой системе. Таким образом резидентный монитор DPROTECT позволял обезопасить защищаемый компьютер от деструктивных действий вирусов и троянцев, которые могли, например, отформатировать диск или испортить загрузочную запись.

Вторая половина 80-х годов ознаменовалась широкой экспансией на международном рынке персональных компьютеров семейства IBM PC и ростом популярности операционной системы MS-DOS. К этому же периоду относятся и первые масштабные вирусные эпидемии: летом 1986 года множество компьютеров оказались заражены стелс-вирусом Brain. Написанный студентом из Новой Зеландии вирус Stoned, получивший распространение в том же 1987 году, заражал загрузочную запись ПК и блокируя запуск ОС. От этой напасти пострадало несколько тысяч компьютеров по всему миру. А в пятницу, 13 мая 1988 года пользователи познакомились с вирусом Jerusalem, уничтожавшим приложения при попытке их запуска. Эта вредоносная программа вызвала настоящую пандемию, распространившись на территории не только США, но также Европы и Азии. Разумеется, отыскались толковые парни, очень быстро осознавшие, что на компьютерной безопасности можно неплохо заработать — одним из них оказался простой программист из Lockheed Corporation по имени Джон Макафи, выпустивший в 1988 году коммерческий продукт под названием McAfee VirusScan, а в 1989 году основавший компанию имени себя. Вскоре, почувствовав запах прибыли, подтянулись и другие игроки: в 1991 году состоялся релиз первой версии приложения под названием Norton AntiVirus.

Ну, а на отечественном рынке истинным первопроходцем стал Дмитрий Лозинский, разработавший в 1988 году, практически одновременно с Макафи, антивирусную программу-сканер Aidstest, использовавшую технологию сигнатурного поиска угроз. Приложение, дистрибуцией которого занималась компания «Диалог Наука», быстро завоевало заслуженную популярность у пользователей, на долгие годы став своего рода стандартом антивирусного ПО. Дмитрий Николаевич и по сей день вносит ощутимый вклад в борьбу с вирусными угрозами — в качестве одного из ведущих сотрудников компании «Доктор Веб». За минувшие годы мир изменился до неузнаваемости, появились троянцы для различных операционных систем и мобильных платформ, а разработка антивирусного ПО превратилась в целую индустрию. Однако идеи, впервые реализованные Энди Хопкинсом в далеком 1984 году, не утратили своей актуальности и по сей день.

Компоненты антивирусной программы

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

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

Сигнатурное детектирование

Современные антивирусные программы используют несколько различных методик обнаружения вредоносных программ в различных сочетаниях. Основная из них — это сигнатурное детектирование угроз.

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

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

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

Поведенческий анализ

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

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

Одним из вариантов поведенческого анализа является, в частности, технология Origin TracingTM, активно применяемая компанией «Доктор Веб» в некоторых программных решениях, например в Антивирусе Dr.Web для Android. В рамках данной технологии для каждого образца вредоносной программы создается специальная запись, описывающая поведение троянца в инфицированной системе. Если приложение, запустившись на устройстве, действует в соответствии с этим шаблоном, оно признается вредоносным. Такой подход позволяет, во-первых, заметно сократить объем вирусных баз (поскольку одной записью в этом случае детектируется целое семейство вредоносных программ), а во-вторых, успешно определять еще неизвестные аналитикам угрозы: если поведение приложения укладывается в эталонную модель, оно будет обезврежено вне зависимости от того, попадал раньше этот образец в вирусную лабораторию на анализ или нет. Нужно отметить, что в мобильной операционной системе Android, где у вредоносных программ (в отличие от Windows) не так много свободы действий, этот метод работает весьма эффективно. Все угрозы с префиксом «origin», детектируемые на смартфонах и планшетах Антивирусом Dr.Web для Android, обезвреживаются при помощи технологии Origin TracingTM.

Эвристический анализ

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

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

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

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

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

Проактивная защита (HIPS)

Проактивную антивирусную защиту, HIPS (Host-based Intrusion Prevention System, англ. «система предотвращения вторжений»), также можно отнести к разновидности антивирусной защиты на основе поведенческого анализа. Антивирус следит за запущенными приложениями и информируют пользователя о тех или иных действиях приложения. Решение о том, позволить или запретить программе выполнять какое-либо действие, принимает пользователь. Это — классический вариант реализации HIPS. Существует еще так называемый экспертный вариант, при котором антивирус самостоятельно блокирует действия тех или иных приложений на основе набора заложенных в него правил и разрешений. Пользователь может при необходимости добавить какую-либо программу в список исключений, разрешив ей выполнение тех или иных действий в защищаемой системе.

Методики противодействия антивирусам

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

Переупаковка

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

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

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

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

Обфускация

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

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

Антиотладка

Большинство современных вредоносных программ оснащено различными мощными механизмами антиотладки, препятствующими их исследованию. Ряд вирусов и троянцев в момент начала работы проверяют, не пытаются ли их запустить в изолированной среде («песочнице»), под отладчиком или в виртуальной машине. Осуществляется это разными методами, например попытками получить имена работающих процессов (и их сравнением с заданным списком), поиском характерных строк в заголовках открытых окон и т. д. Если вредоносное приложение определяет попытку запуска в виртуальной среде или под отладчиком, оно завершает свою работу.

Аналогично многие троянцы и вирусы ищут среди установленных или запущенных программ приложения популярных антивирусов и пытаются завершить их, а если это не получается, прекращают свою работу. Бывают и более интересные варианты: так, троянец, известный под именем Trojan.VkBase.73, менял параметры загрузки Windows, устанавливал в системе специальную службу, которая при перезагрузке системы в безопасном режиме удаляла установленные на компьютере антивирусы. Затем троянец размещал в области уведомлений Панели задач значок соответствующего антивирусного приложения, которое было ранее им удалено. Таким образом, пользователь даже не догадывался, что его компьютер больше не имеет антивирусной защиты. После успешного удаления средств информационной защиты на экран выводилось сообщение на русском или английском языке (в зависимости от версии антивирусного ПО) следующего содержания: «Внимание! Антивирус [название антивируса] работает в режиме усиленной защиты. Это временная мера, необходимая для моментального реагирования на угрозы со стороны вирусных программ. От вас не требуется никаких действий». Данное сообщение демонстрировалось, чтобы пользователь не проявлял беспокойство, обнаружив, что значок антивирусной программы в Области уведомлений Панели задач Windows более не реагирует на щелчки мышью.

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

Как защититься?

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

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

Соблюдение этих несложных правил позволит вам защитить ваше устройство от большинства современных угроз.

Назад: Глава 7. Кто пишет и распространяет вирусы?
Дальше: Глоссарий