Kaspersky Lab. |
55 |
Educational Programs Department |
Глава 3. Технологии детектирования вредоносного ПО
Антивирус (антивирусная программа) − программный пакет, предназначенный для эффективной защиты, перехвата и удаления из операционной системы компьютера максимального количества вредоносных (или потенциально вредоносных) про-
грамм.
В настоящее время большинство ведущих антивирусных программ сочетает в
себе функции постоянной защиты (антивирусный монитор) и функции защиты по требованию пользователя (антивирусный сканер).
Постоянная антивирусная защита запускается автоматически при старте операционной системы и работает в качестве фонового системного процесса, проверяя
на вредоносность совершаемые другими программами действия. Постоянная антивирусная защита проверяет не только файлы на различных носителях информации,
но и оперативную память компьютера. Основная задача постоянной антивирусной
защиты компьютера − обеспечивать максимальную безопасность при минимальном замедлении работы проверяемых на вредоносные действия программ.
Защита по требованию запускается самим пользователем и, как правило, за-
ключается в полном или выборочном сканировании присутствующих на жестких и
сетевых дисках компьютера файлов. Защита по требованию производит однократную проверку оперативной памяти компьютера. В большинстве случаев антивирусные сканеры гораздо более требовательны к ресурсам компьютера, нежели посто-
янная антивирусная защита.
Восновные задачи антивируса входят:
•препятствование проникновению вредоносного (или потенциально нежелательного) ПО в компьютерную систему;
•обнаружение наличия вредоносного или потенциально нежелательного ПО в компьютерной системе.;
•удаление вредоносного или потенциально нежелательного ПО из компьютер-
ной системы без нанесения повреждений другим объектам системы;
•восстановление зараженных (модифицированных) вредоносными программа-
ми файлов;
•минимизация ущерба от действий вирусов.
http://www.kaspersky.ru/
http://academy.kaspersky.com/
http://www.securelist.com/
56 |
Kaspersky Lab. |
Educational Programs Department |
|
|
|
Развитие антивирусных технологий
Первые антивирусы
В 1984 году Энди Хопкинсом (Andy Hopkins) были созданы самые первые антивирусные программы с названиями CHK4BOMB и BOCHK4BOMB. Программа CHK4BOMB производила сканирование текста модуля загрузки для обнаружения подозрительных участков и текстовых сообщений в коде. Программа BOCHK4BOMB
осуществляла перехват записи и форматирования, выполняемых через BIOS. Нежелательную операцию можно было как запретить, так и разрешить.
Первый антивирус в современном понимании этого термина, то есть рези-
дентный, «защищающий» от вирусных атак, появился в 1985 году. Программа DRPROTECT создана усилиями Джи Вонг (Gee Wong). Разработка блокировала все операции (запись, форматирование), выполняемые через BIOS. В случае выявления
такой операции программа требовала перезагрузки системы.
Антивирусные программы до начала 1990-х годов представляли собой, по сути, набор из нескольких десятков сигнатур (образцов вирусного кода), которые
хранились в теле программы. Предполагалась также процедура поиска этих сигна-
тур в файлах. Причем зачастую эти сигнатуры разработчики даже не шифровали. Получалось так, что один антивирус легко мог «найти вирус» в другом.
Вначале антивирусные программы осуществляли только проверку по требованию. Число новых вирусов росло медленно, а скорость их распространения по се-
годняшним меркам была весьма низкой. Поэтому антивирусной программе в те вре-
мена достаточно было регулярно проводить проверку системы и удалять вредоносные программы, попавшие в офисные или домашние компьютеры. Для этих целей как нельзя лучше подходила чистая системная дискета: загрузка с нее обеспечивала
отсутствие в памяти вирусов, которые могли бы помешать проверке и очистке диска.
Большинство антивирусных программ обновлялось раз в квартал. Некоторые
антивирусные разработчики предлагали ежемесячные обновления, но это не считалось необходимым, и те, кому требовалась усиленная защита, платили за более вы-
сокую частоту обновлений дополнительные деньги. Обновления поставлялись на
физических носителях, то есть на тех же гибких дисках.
Сигнатурное детектирование
Итак, на первых порах развития антивирусных технологий они сводились к сигнатурному методу детектирования − методу работы антивирусов и систем обнаружения вторжений, при котором программа, просматривая файл или пакет, обра-
щается к словарю с известными вирусами, составленному авторами программы.
http://www.kaspersky.ru/
http://academy.kaspersky.com/
http://www.securelist.com/
Kaspersky Lab. |
57 |
Educational Programs Department |
Сигнатура (от англ. signature − подпись) может иметь сколь угодно разное представление.
Это могут быть: куски кода, контрольные суммы, метаданные (время создания, размер).
В результате работы детектора, основанного на сигнатурах, в самом простом варианте антивирус открывает все файлы на чтение и вычисляет их хеш, после чего
сравнивает его с базой данных сигнатур. Иногда сравниваются только заголовки исполняемых файлов, иногда просто ищется определенная строка в тексте-коде. Иногда используется совокупность различных сигнатур.
Достоинства сигнатурного метода:
•высокая точность обнаружения − уникальность сигнатур (или их совокупностей) позволяет выделять вредоносные программы на фоне другого про-
граммного обеспечения;
•малая доля ложных срабатываний.
Недостатки:
•отсутствие способности выявления нового вредоносного ПО;
•беззащитность перед полиморфизмом и шифрованием;
•необходимость регулярного обновления баз данных сигнатур;
•ручная разработка сигнатур.
Одним из способов, который был разработан вирусописателями для затруднения сигнатурного детектирования, является обфускация.
Обфускация – совокупность приемов запутывания исходного кода программы, имеющих целью максимально затруднить его чтение и анализ, но полностью сохра-
нить функциональность.
Наиболее характерно для обфускации разбавление основного кода информационным «мусором», с целью затруднить анализ кода программы.
Примеры простейшей обфускации: разбавление кода нейтральными (не изменя-
ющими функционал программы) операторами; снижение его наглядности посред-
ством использования чрезмерного количества безусловных (либо маскирующихся
под условные безусловных) переходов.
Рост числа угроз и развитие методов их обнаружения
Однако к концу 1990 года число вирусов было уже достаточно значительным.
Оказавшись перед лицом этой проблемы, разработчики антивирусов стали внедрять
защиту, работающую в реальном времени. Это означало создание резидентных про-
http://www.kaspersky.ru/
http://academy.kaspersky.com/
http://www.securelist.com/
58 |
Kaspersky Lab. |
Educational Programs Department |
|
|
|
грамм (TSR – Terminate and Stay Resident), которые вели мониторинг системы, т.е. перехватывали операции доступа к диску и файлам для проверки их на наличие из-
вестных вирусов.
В 1992 году появилась программа MtE – генератор полиморфного кода, которым мог воспользоваться не только опытный, но и любой начинающий программист. Полиморфные вирусы стали появляться каждый день, а всевозможные дополнительные способы борьбы, такие как усложнение алгоритмических языков сверки ко-
да, – перестали работать.
Растущая угроза со стороны полиморфных вирусов заставила антивирусных разработчиков дополнить сигнатурный анализ другими методами, которые позволяли сканеру «просвечивать» слой (или слои) шифрования. Эти методы включали технологии редуцированной маски, криптографического и статистического анализа, а
также эмуляции кода. Эмуляция кода также использовалась для более эффективного эвристического обнаружения, поскольку делала возможным динамический анализ кода.
Эмуляторы − модули, которые осуществляют исполнение программного кода в изолированной среде для последующего анализа его поведения.
Первой антивирусной программой с эмулятором кода стала программа Евге-
ния Касперского AVP (Antiviral Toolkit Pro − прототип антивируса Касперского).
Логическим продолжением технологии эмуляции стала концепция «песочни-
цы». При запуске анализируемой программы в «песочнице» программе предостав-
ляется уже жестко контролируемый набор ресурсов. При этом доступ к сети, возможность сообщаться с главной операционной системой или считывать информацию с устройств ввода обычно либо частично эмулируют, либо сильно ограничивают.
Кроме использования метода эмуляции, разработчики начали искать пути
проактивного обнаружения вирусов с помощью эвристического анализа. Антивирус-
ные компании постоянно изучали технологии, используемые при создании вредоносных программ, и применяли полученный опыт при составлении списка подозри-
тельных характеристик, каждая из которых имела свой весовой коэффициент. Ска-
нер анализировал код на наличие этих характеристик и, если суммарный коэффици-
ент превышал заранее установленный порог, делал вывод о том, что файл, возмож-
но, заражен вирусом.
Первые поведенческие блокираторы
Альтернативным решением проблемы резкого увеличения числа компьютерных угроз стал поведенческий анализ. В то время как традиционные антивирусные
http://www.kaspersky.ru/
http://academy.kaspersky.com/
http://www.securelist.com/
Kaspersky Lab. |
59 |
Educational Programs Department |
сканеры хранили сигнатуры вредоносных программ в базах данных и при сканировании сверяли код с имеющимися в базах сигнатурами, поведенческий блокиратор
определял, является ли программа вредоносной, исходя из ее поведения в системе. Если программа выполняла действия, не разрешенные правилами, определенными заранее, то выполнение этой программы блокировалось.
Основным преимуществом поведенческого блокиратора, по мнению его сторонников, является его способность отличать «хорошие» программы от «плохих»
без помощи профессионального вирусного аналитика. Проблема в том, что существует некая промежуточная зона между явно вредоносными и допустимыми действиями. Кроме того, одни и те же действия могут быть вредоносными в программе, предназначенной для нанесения ущерба, и полезными в легитимном ПО. Например, низкоуровневая запись данных, используемая вирусом, червем или троянцем для
того, чтобы стереть информацию с жесткого диска, совершенно легитимно применяется операционной системой. Как поведенческий блокиратор, установленный на файловом сервере, узнает, законно пользователь изменяет или удаляет документ, или это результат действий вредоносной программы?
Тем не менее поведенческий анализ получил свое дальнейшее развитие: в некоторых современных решениях по защите от информационных угроз он используется в сочетании с другими методами поиска, обезвреживания и удаления вредо-
носного кода.
Решения для почтовых серверов и шлюзов
С появлением макровирусов в 1995 году и с изменением общей картины угроз изменились и решения, направленные на защиту корпоративных сетей. До эпохи макровирусов антивирусное ПО было ориентировано на настольные компьютеры и, в меньшей степени, на файловые серверы. С появлением макровирусов начался процесс расширения антивирусной защиты сетей − теперь она должна была охватывать также почтовые серверы и интернет-шлюзы. Поскольку электронная почта служила основным механизмом распространения вирусов, проверка почтовых сообщений стала эффективным способом защиты рабочих станций. Однако это не отменяло необходимости установки на рабочие станции и файловые серверы антивирусных приложений, которые оставались важнейшим оружием в борьбе против вирусов.
Но их следовало интегрировать в расширенные, многоуровневые, глубоко эшелони-
рованные решения.
Одновременно разработчики антивирусов продолжали развивать возможности проактивной защиты, особенно в области generic-обнаружения, т.е. обнаружения и удаления группы угроз с помощью одной сигнатуры. В основе generic-обнаружения
лежит тот факт, что наиболее «успешные» угрозы часто копируются подражателями или видоизменяются авторами, совершенствующими свои творения. В результате появляется множество (десятки, а то и сотни) вирусов, червей или троянцев, каждый
http://www.kaspersky.ru/
http://academy.kaspersky.com/
http://www.securelist.com/