Спроектированные еще десять-пятнадцать лет назад антивирусы отважно защищают пользователей от компьютерных вирусов. Только вот пользователям угрожают вовсе не вирусы.
Чтобы понять причины такого несовпадения и решить, что с этим делать, давайте вспомним, как развивалась индустрия защитного ПО. Первые вирусы появились в конце восьмидесятых, и название свое они получили от того, что распространялись путем самореплицирования своего тела в незараженные исполняемые или интерпретируемые файлы. Писали вирусы довольно профессиональные люди (ассемблер халатного подхода к кодированию не приемлет), причем цели их были далеки от меркантильных. Создатель вируса корпел ночами либо ради славы, либо потому, что ему нравился сам процесс написания и отладки довольно-таки сложных программ. Существовал даже негласный конкурс на самый маленький вирус для MS-DOS.
Примерно в то же время появились и первые антивирусные утилиты - относительно простенькие наборы инструментов для автоматического обнаружения и удаления (лечения) вирусов. Парадоксально, но появление и развитие антивирусов в какой-то мере спровоцировало следующий виток антивирусных технологий: вирусы начали прятаться, появились стелсы и полиморфы. Стелс - это вирусная технология перехвата системных вызовов так, чтобы антивирус полагал, что инфицированный файл вовсе не заражен. Полиморфы использовали другой подход - они изменяли собственное бинарное тело от заражения к заражению так, чтобы антивирусные компании, получив образец вируса, не могли бы на основе этого образца построить подходящую модель детектирования и лечения его в других файлах.
Но и стелсы, и полиморфы - это вчерашний день. В Сеть пришли простые люди. Простые люди с простыми деньгами. Люди, которые совершали покупки в интернет-магазинах и управляли банковскими счетами через глобальную сеть. А вслед за ними потянулись искатели быстрой и легкой наживы, благодаря которым понятие зловредного ПО (сокращенно - зловреды, на некоторых интернет-форумах по безопасности такие программы еще называют "зверьками") было существенно расширено. Сегодня под malware (от английского malicious software) понимают adware (ПО, показывающее пользователям рекламу), spyware (ПО, которое шпионит за пользователями), dialers (этот вымирающий класс программ пользуется обычным телефонным модемом для звонков на платные телефонные номера), rootkits (этот класс программ используется для сокрытия присутствия в системе зловредного программного обеспечения, вспоминаем стелс-вирусы!), backdoors (это программы для удаленного управления компьютером), trojans (этот класс программ выдает себя не за то, чем на самом деле является), ransomeware (шифруют данные пользователей и вымогают деньги за дешифровку), worms (черви, делятся на почтовые и сетевые по методу распространения). Все эти программы часто путают с вирусами, хотя к вирусам они не имеют никакого отношения, так как не могут самостоятельно инфицировать файлы.
Сегодняшняя индустрия зловредного ПО - это громадный, многомиллиардный бизнес. Основные методы получения денег на зловредном ПО - кража банковских данных, реквизитов кредитных карт, показ несанкционированной либо не соответствующей действительности рекламы, сдача в аренду сетей зараженных компьютеров для организации спамрассылок и атак на сайты.
Традиционные же вирусы встречаются в диком виде (то есть, на компьютерах пользователей) все реже и реже. Основная причина - нерентабельность: слишком высоки затраты на разработку (требуется высококвалифицированный программист, время которого стоит очень дорого) и отладку по сравнению с обычным зловредным ПО. Более того, теперь можно не разрабатывать зловредов самому, а купить генератор, ткнуть пару раз мышкой - и все готово! Бизнес, однако!
Во времена первых вирусов основным средством борьбы с ними был сигнатурный вирусный сканер. То есть, брался образец (sample) зараженного файла, создавалась сигнатура на основе уникальных последовательностей байтов вирусного кода нем, а по обратному восстановлению логики инфицирования - процедура лечения пораженных файлов. В дальнейшем, когда началась эра полиморфных вирусов, были созданы эвристические методы детектирования и лечения их, основанные на методах эмуляции кода и нечетких вердиктах (типичный пример такого нечеткого вердикта: "Возможно, вариант вируса XXX"). Стелсвирусы породили общие методы их детектирования на основе сравнения данных, полученных через сканирование высокого и низкого уровней и резидентные (постоянно находящиеся в памяти) антивирусные мониторы, проверяющие открываемые и запускаемые файлы на лету.
Сегодня
Сегодняшняя индустрия защиты от зловредного ПО представляет собой экстенсивное развитие технологий конца 80-х начала 90-х годов. Сигнатурные сканеры, эвристика, резидентные антивирусные мониторы. Конечно, общий уровень организации работ и качество реализации пользовательского интерфейса поднялись на небывалую высоту, но под капотом у них всё по-старому. И если еще в начале 2000 года эти методы работали относительно эффективно, то уже в 2007 году многим становится очевидно, что старые технологии борьбы больше не справляются с потоком зловредного ПО, захлестнувшим Интернет. Ибо бизнес диктует простое правило - деньги капают лишь до тех пор, пока твой зловред не начал детектироваться антивирусами. А значит, надо всеми силами предотвратить это!
Malware сегодня пишется так, чтобы обходить эвристические анализаторы антивирусов, а сигнатурные сканирующие модули обманываются путем модифицирования исполняемого кода (морфирование, перепаковка). Для усложнения получения антивирусными лабораториями образцов и усложнения процесса детектирования используются rootkit-технологии (аналог стелс-вирусов 90-х) для сокрытия своихпроцессов и модулей. Кроме того, пути распространения зловредного ПО претерпевают серьезные изменения. Если раньше это были постоянные массовые почтовые рассылки с прикрепленными программными модулями, то сейчас это массовые рассылки с ссылками на сайты, распространяющими инфекцию, взлом и внедрение подобных ссылок на легитимные страницы в Интернете, почтовые черви, самостоятельно модифицирующие свое тело от рассылки к рассылке для обхода антивирусов на почтовых серверах.
Счет в этой войне идет буквально на дни, если не на часы. Антивирус начал детектировать зловредный модуль на сайте, распространяющем заразу? Производитель зловреда в течение нескольких часов модифицирует его так, чтобы он больше не обнаруживался, и выкладывает обратно на сайт! Теперь вы понимаете, надеюсь, что стандартное тестирование антивирусных движков на качество обнаружения уже известных образцов зловредного ПО со стандартным 90-99% результатом с реальной ситуацией, с которой сталкивается пользователь при заражении, имеет мало общего? Ахиллесова пята современных антивирусных технологий - их реактивность. То есть, сначала зараза, а лишь потом - средства ее обнаружения и зачистки. Все то время, пока образец не попал в антивирусную лабораторию, идет инфицирование. Единственная надежда - на эвристик, но уровень его детектирования не дотягивает даже до 70%. Кроме того, ложные срабатывания становятся головной болью для производителей легитимного ПО (знаю по собственному опыту!) и обычных пользователей.
Так какие же технологии будут занимать умы пользователей в ближайшем будущем? Безусловно, это технологии, основанные на анализе поведения (так называемые HIPS) и белых списках. Рассмотрим каждую из них.
Исторически первая технология анализа поведения была основана на модели детекторов аномалий (на ней же базируются файрволлы) и имеет общее название classic HIPS. То есть, если приложение совершает потенциально опасное действие (запись в автозагрузку, например), защита выдает предупреждение об оном и просит пользователя принять решение (например, разрешить, запретить или внести в локальную базу правил как разрешенное). Для уменьшения количества подобных окон с вопросами обычно используется режим обучения (как и у файрволлов) либо онлайновая база знаний (community HIPS). Все подобные схемы имеют одну неразрешимую проблему: они перекладывают принятие решения на самого пользователя со всеми вытекающими. Такие защиты сложны в каждодневном использовании простым юзером и не получили сколь-нибудь массового распространения. Их ниша - суперпрофессиональные пользователи, считающие контроль синонимом слова "защита" (и наоборот). Примеры - почивший в бозе ProcessGuard, ProSecurity, SSM.
Следующее поколение защит основывается на модели "поведенческих сигнатур", имеет общее название blacklisting HIPS или expert HIPS и является невольным продолжением традиций антивирусных решений. То есть защита анализирует последовательность поведенческих шагов программ с шаблонами (сигнатурами) поведения известных зловредов и выносит вердикт. Защита практически не мешает обычной повседневной работе, но имеет типичные недостатки всех антивирусных решений - ложные срабатывания на легитимном ПО и несрабатывания на зловредном. Кроме того, подобные системы всё же перекладывают принятие окончательного решения на самого пользователя (не все из них, но ложные срабатывания тогда хуже контролируются) и предъявляют некоторые требования к его технической подготовленности. Типичные примеры - Kaspersky PDM, Norton Antibot, PC Tools Threatfire.
Завтра
Модель "белых списков" в мире безопасности не нова, например, компания Microsoft внедряет цифровые подписи в мир программного обеспечения довольно давно. Кроме того, есть несколько реализаций данной модели для систем HIPS, имеющих общее название whitelisting HIPS и основанных на контроле запускаемых приложений. То есть при запуске нового приложения, которого нет в белом списке разрешенных, выдается окно с предупреждением (обычно доступно несколько действий - "разрешить", "запретить", "добавить в список разрешенных"), как с возможностью уменьшения выдачи оных за счет проверки их цифровых подписей (например, Comodo Anti-virus, Comodo Firewall v3), так и без (например, Anti-Executable). Несколько компаний собирают цифровые отпечатки заведомо легитимных файлов в единую базу данных (например, Bit9). Недостатки подобных систем в том, что не все файлы можно подписать (скажем, cmd-скрипты, doc-файлы), а попытка создать базу всех легитимных исполняемых файлов в мире заведомо обречена на провал из-за гигантских размеров базы и необходимости обрабатывать громадный, постоянно растущий объем данных ежедневно (и, как следствие, обречена на провал попытка защитить пользователя от запуска вредоносных программ на сто процентов). Кроме того, скорость реакции whitelisting HIPS… такая же, как у антивирусов (но с другим знаком, конечно, - система не успевает за выходом "хорошего" ПО). Единственно правильное решение для применения идеологии "белого списка", которое я видел, - добавление данного элемента к уже существующим решениям в области защиты (например, упрощение анализа логов зараженных компьютеров с помощью программы AVZ и базы заведомо чистых элементов автозагрузки и системных библиотек).
Если все описанные выше поведенческие защиты были основаны на переработанных, но уже известных и апробированных моделях из мира PC security, то следующий класс продуктов безопасности пришел, скорее, из мира разработки ПО. Речь идет о системах, общее название которых - sandbox HIPS (Host Intrusion Prevention System), "песочница". В основе их построения - модель разделения всех приложений в системе на "доверенные" и "недоверенные" и предположение о том, что зловредное ПО проникает лишь через процессы, работающие с небезопасными сегментами Интернета и потенциально опасными файлами оттуда: то есть через браузеры, почтовые, IM-, IRC-, P2P- и мультимедиа-клиенты. Доверенные приложения (например, системные процессы) работают как обычно, недоверенные - ограничены в правах на потенциально опасные операции (например, установка драйвера). Никаких всплывающих окон с вопросами, перекладывающими принятие решения на пользователя, здесь нет, потенциально опасные действия недоверенных приложений просто блокируются согласно внутренним предустановленным правилам.
Максимум, что можно увидеть, - редкие короткие уведомительные сообщения (на самом деле, и такие системы могут заблокировать "хороший" софт, ошибочно отнеся его к "недоверенным", поскольку четких критериев разделения, увы, не существует. - Прим. ред.). Требования к технической подготовке пользователя практически отсутствуют. Также, ограниченно, можно безопасно устанавливать неизвестное, новое ПО как недоверенное для его пробы. Разделяют sandbox HIPS с виртуализацией файловой системы и реестра и без оных (или имеющих их в минимальном объеме). Те "песочницы", что имеют виртуализацию файловой системы и реестра, нуждаются в постоянной очистке контейнера виртуализации из соображений безопасности. Sandbox HIPS без виртуализации проще в повседневной эксплуатации.
Недостатки подобных систем - необходимость помнить, как именно будет запущен только что выкачанный из Интернета инсталлятор нового приложения. Типичные примеры - DefenseWall HIPS (без виртуализации), SandboxIE (с виртуализацией).
Если же мы вспомним Windows Vista UAC, то эта модель есть не самый удачный, с моей точки зрения, вариант смеси модели classical HIPS и sandbox HIPS. Так что же предложат нам антивирусные компании для защиты от зловредного ПО в ближайшие несколько лет? По моему личному мнению, это будет смесь из sandbox HIPS и элементов "белого списка". Дело в том, что основная проблема антивирусной индустрии - временной лаг между началом распространения новой модификации зловредного ПО и добавлением соответствующей сигнатуры в базу данных. Если заполнять его blacklisting HIPS, получится то же самое, что есть сейчас, только вид сбоку, поскольку данный вид также зависит от (да, поведенческих, но тем не менее!) сигнатур, да и зачастую будет забрасывать пользователя своими вердиктами с просьбой подтвердить их или опровергнуть. Если же это будут whitelisting HIPS, то постоянные всплывающие окна на неподписанных приложениях также сведут эффективность данной системы на нет. Только системы, построенные на основе sandbox HIPS, могут похвастаться отсутствием раздражающих окон с вопросами, отсутствием перекладывания ответственности за принятие окончательного решения на пользователя и очень высоким интегральным уровнем защиты, способной удерживать зловредное ПО внутри "недоверенной" зоны до тех пор, пока соответствующая сигнатура не будет добавлена в антивирусную базу.