- Десять способов обнаружения вредоносного ПО
- Базовый список процессов — большое подспорье
- Все просто: нет уязвимостей — нет вирусов
- Просто, но не всегда
- Активные антивирусы и антишпионы
- В заключение
- Как антивирусы определяют вирусы, вредоносное ПО, шпионские программы, трояны?
- Методы обнаружения вредоносного ПО
- Какие угрозы обнаруживаются антивирусами
- Черви (Worms)
- Трояны (Trojan)
- Руткиты (Rootkit)
- Spyware, Adware, Ransomware
- Технологии обнаружения вредоносного кода. Эволюция
- 1. Введение
- 2.Модель системы защиты от вредоносных программ
- Диаграмма. Суммарная схема технологий обнаружения вредоносного кода
- 2.1 Технический компонент
- 2.1.1 Считывание файлов
- 2.1.2 Эмуляция
- 2.1.3 Виртуализация: «песочница»
- 2.1.4 Мониторинг системных событий
- 2.1.5 Поиск системных аномалий
- 2.1.6 Забавная метафора
- 2.2 Аналитический компонент
- 2.2.1 Простое сравнение
- 2.2.2 Сложное сравнение
- 2.2.3 Экспертная система
- 3. Реальные названия технологий — что к чему
- 4. Плюсы и минусы способов обнаружения вредоносного кода
- 5. Как выбрать систему несигнатурной защиты?
Десять способов обнаружения вредоносного ПО
Для вычисления действий вредоносной программы в системе и предупреждения возможных заражений можно воспользоваться разными приемами. Это сверка текущей картины процессов с базовым списком — отличный способ обнаружения непрошеных гостей; сканеры уязвимостей для профилаки и предотвращения будущих заражений, эвристические средства защиты от атак и вирусов «нулевого дня» и т.д. В данной статье представлен набор программ и утилит, позволяющих повысить уровень безопасности компьютера и обнаружить вредоносное ПО.
Базовый список процессов — большое подспорье
Чтобы определить, какие процессы следует устранить, необходимо четко себе представлять, какие процессы в системе запущены. Лучший, на мой взгляд, способ обнаружения непрошеных гостей — сверка текущей картины процессов с базовым списком. Ниже описаны три приложения, позволяющие составить такой список.
1. Microsoft Process Explorer (ранее принадлежал Sysinternals)
Microsoft Process Explorer позволяет с легкостью определить, какие в системе запущены процессы и какие функции они выполняют. Что самое замечательное, с помощью Process Explorer можно создать список процессов, запущенных при нормальном функционировании системы, а когда компьютер начнет «хулиганить», сравнить текущую картину процессов с этим списком. Выявленные различия помогут в поиске вредоносного ПО.
2. HiJackThis от Trend Micro
HiJackThis — это своего рода расширенная версия Process Explorer, которая для неподготовленного пользователя выглядит пугающе. Запуск HiJackThis до заражения системы также позволяет составить базовый список процессов для диагностики.
Если составлять базовый список уже поздно — ничего страшного. На некоторых сайтах доступны онлайн-приложения, способные автоматически проанализировать лог HiJackThis и выявить потенциальные конфликты. Я пользуюсь HiJackThis.de Security и NetworkTechs.com. Ну а тем, кто предпочитает советы экспертов, я бы порекомендовал форум, посвященный HiJackThis, на сайте WindowSecurity.com.
3: GetSystemInfo от «Лаборатории Касперского»
«Лаборатория Касперского» предлагает утилиту GetSystemInfo, аналогичную HiJackThis. К тому же, на сайте компании доступен онлайн-парсер, способный выявлять подозрительные несоответствия в логах утилиты.
GetSystemInfo, как и другие сканеры, помогает отслеживать, что происходит в системе и обнаруживать вредоносное ПО.
Будьте осторожны: завершение процессов в соответствии с результатами сканирования — задача не для рядовых пользователей. Она требует глубоких знаний о принципах функционирования операционной системы или хотя бы тщательного сравнения базового списка процессов с текущим. Теперь давайте поговорим о сканерах уязвимостей.
Все просто: нет уязвимостей — нет вирусов
В категорию антивирусного и антишпионского ПО входят любые приложения, позволяющие бороться со вредоносными программами, как путем защиты в режиме реального времени, так и посредством обнаружения и удаления существующих заражений. С другой стороны, сканеры уязвимостей выявляют уязвимости в профилактическом режиме и тем самым не позволяют вирусам и шпионам проникать в систему. Куда проще регулярно обновлять приложения, чем постоянно бороться с вирусами.
4. Microsoft Baseline Security Analyzer
Microsoft Baseline Security Analyzer (MBSA) — это сканер уязвимостей, выявляющий небезопасные настройки и недостающие обновления для всех установленных продуктов Microsoft. Это один из лучших способов убедить руководство в необходимости использовать сканер уязвимости. Когда решение поставляется OEM-поставщиком, оно производит впечатление более доступного и надежного.
5. Сканеры Secunia
Сканеры Secunia обладают тем же функциями, что MBSA, однако проверяют не только продукты Microsoft, но и сотни приложений от сторонних поставщиков, что намного удобнее.
Все сканеры Secunia, клиентские и онлайновые, помогают на интуитивном уровне выявить неполадки и устранить их. В результатах сканирования обычно приводятся ссылки на сайты, с которых можно загрузить недостающие обновления для приложений.
Просто, но не всегда
Помните, я сказал: «Все просто: нет уязвимостей — нет вирусов»? На самом деле все не так элементарно. Было бы, если б не было на свете таких неприятных явлений, как средства атаки и вирусы «нулевого дня» (zero-day exploits and zero-day viruses). Тут-то на сцену и выходят антивирусы, в особенности эвристические.
6. Антивирусные программы
В последнее время уважение к антивирусам в пользовательской среде почти пропало. Я тоже сильно расстраиваюсь, когда мой любимый антивирус пропускает вредоносный код, который с легкостью обнаруживают другие программы. Тем не менее, оставлять компьютер совсем без антивирусной защиты не стоит — это слишком рискованно. Я предпочитаю многоуровневый подход к безопасности.
Выбор антивируса зависит исключительно от личных предпочтений. Вопросы из серии «какой антивирус самый лучший» всегда провоцируют бурю эмоциональных откликов. В целом, большинство пользователей сходится во мнении, что для домашнего применения подходят бесплатные версии любых антивирусных продуктов. Лично я предпочитаю Avast и Comodo.
Активные антивирусы и антишпионы
Антивирусные и антишпионские программы следующего уровня не только выявляют, но и удаляют вредоносное программное обеспечение. Наверняка у многих возник вопрос: почему же не использовать их с самого начала? На самом деле, тут все тоже не так просто.
Сканеры обнаруживают вредоносное ПО с помощью файлов сигнатур и эвристических методов. Создатели вредоносных программ об этом прекрасно осведомлены и умеют модифицировать код с тем, чтобы аннулировать сигнатуры и обойти эвристику. Именно поэтому антивирусные и антишпионские сканеры до сих пор не являются панацеей. Может быть, когда-нибудь в светлом будущем.
И снова будьте осторожны: к выбору антивирусного сканера нужно подходить очень тщательно. Злоумышленники любят маскировать вредоносные программы под антивирусные и антишпионские сканеры типа antivirus 2009, рекламируя их как универсальное решение всех проблем. Перечисленные ниже решения рекомендованы заслуженными экспертами.
7. Malicious Software Removal Tool от Microsoft
Malicious Software Removal Tool (MSRT) — это прекрасное средство для борьбы с вредоносным ПО общего характера. Хотя бы потому, что оно в состоянии определить — принадлежит сканируемый код Microsoft или нет. Главные достоинства этой утилиты:
- автоматизация процесса сканирования и удаления вредоносных программ;
- регулярное обновление сигнатур с помощью Windows Update;
- средство создано OEM-поставщиком, а значит, выглядит более убедительно с точки зрения руководства.
SUPERAntiSpyware — это еще один сканер общего характера, способный обнаружить и удалить практически любую вредоносную программу. Я пользовался им неоднократно и нахожу его более чем адекватным решением.
По сведениям пользователей TechRepublic, SUPERAntiSpyware — единственная программа, способная полностью удалить вредоносный сканер antivirus 2009.
9. Anti-Malware от Malwarebyte
Anti-Malware от Malwarebyte (MBAM) — по моему опыту, самый эффективный из четырех перечисленных в этом разделе сканеров. Я узнал о нем от специалиста Arbor Networks, доктора Хосе Назарио (Jose Nazario) — эксперта мирового уровня по проблемам вредоносного ПО. Подробное описание программы приводится в моей статье «Антивирусные и антишпионские сканеры: MBAM — лучшее решение» (Malware scanners: MBAM is best of breed).
Тем не менее, даже MBAM не способен выявить абсолютно все вредоносные программы. Как я упоминал в той статье, приложение пропускает самые изощренные вирусы, в особенности руткиты. В таком случае я обращаюсь к следующему решению.
В статье «Руткиты: можно ли с ними бороться?» (Rootkits: Is removing them even possible?) я объяснял, почему так трудно обнаружить в системе руткит. GMER — одно из лучших решений для обнаружения и удаления руткитов, хотя бы потому, что так считает доктор Назарио.
В заключение
Использование описанных в этой статье решений и методов серьезно затрудняет жизнь разработчикам вредоносного ПО, особенно если вы:
- регулярно обновляете свое программное обеспечение;
- составили и сохранили список базовых процессов;
- регулярно сканируете систему на наличие вредоносных программ, потому что самые изощренные вирусы очень хорошо маскируются.
Источник
Как антивирусы определяют вирусы, вредоносное ПО, шпионские программы, трояны?
Антивирусная программа предназначена для обнаружения и обезвреживания угроз безопасности. Интересно, что в процессе эволюции антивирусы совершенствовали методы обнаружения: от определения вредоносов по сигнатурам до эвристического анализа и выявления подозрительного поведения.
Антивирусы делятся на сканеры и резидентные модули. Сканеры находят файлы на дисках, читают их и делают вывод об инфицировании вирусом. Резидентные антивирусы постоянно работают в оперативной памяти и проверяют каждый новый файл и программу на заражение вирусом. При таком подходе расходуются ресурсы компьютера: процессор и оперативная память. Именно из-за этого некоторые пользователи не любят антивирусы, не хотят собственноручно замедлять работу компьютера. Но работать без антивируса сегодня небезопасно, так можно делать только в случае полной уверенности в своих действиях и посещаемых ресурсах в интернете.
Методы обнаружения вредоносного ПО
В самом простом случае используется определение по сигнатурам. Сигнатура – это кусок кода вируса, который не изменяется. Базы данных антивирусов содержат именно сигнатуры известных вирусов. Простое сравнение программного кода по базе сигнатур 100% позволяет определить есть вирус или нет. Но и вирусы не стоят на месте, они используют полиморфные алгоритмы, с помощью которых сигнатура меняется. Также создаются новые вирусы, которые невозможно определить по имеющимся базам.
Следующим методом стал эвристический анализ, который более интеллектуально подходит к обнаружению угроз. Эвристический анализатор выявляет паттерны, т.е. закономерности поведения вирусов и таким образом может определить угрозу ещё до того, как станет известна её сигнатура. Так, например, под особым контролем программы, которые создают резидентные модули в памяти, напрямую обращаются к файловой системе или к загрузочным секторам, перехватывают программные и аппаратные прерывания, изменяют исполняемые (.exe) файлы.
Также, антивирусы научились определять потенциально-нежелательные программы (PUP). Это не совсем вирусы, но PUP устанавливаются «в довесок» к другой программе, часто без ведома пользователя. PUPs могут устанавливать дополнительные модули в систему, расширения для браузеров, нарушать конфиденциальность и безопасность, показывать рекламу, в будущем загружать реальные вирусы.
Какие угрозы обнаруживаются антивирусами
Наиболее часто встречающиеся угрозы — это вирусы, черви, трояны, руткиты, вымогатели, шпионское и рекламное ПО. В основном современные антивирусы многофункциональны и умеют обнаруживать все типы угроз. В последнее время набирает популярность антивирус «Total AV», отзывы о нем вы найдете по ссылке. Кроме обнаружения самих вирусов, в нём есть модуль брандмауэра, который закрывает дыры в сетевой безопасности, тем самым предотвращая проникновения зловредов на компьютер. Есть антивирусы, нацеленные на поиск определённых угроз, например Spyware (шпионское ПО), такие как Adaware или Emsisoft Emergency Kit.
Стоит отметить, что на самом деле вирус и вредоносная программа, это немного разные определения. Вредоносное ПО – это любой программный код, цель которого нанести вред или ущерб компьютеру, операционной системе или лично человеку, похитив конфиденциальные данные (пароли, данные кредитных карт, деньги с электронных кошельков). Вирус же способен самореплицироваться, т.е. самостоятельно распространяться, заражая другие программы и компьютеры. Пользователю нужно запустить вирус или инфицированную программу, чтобы он начал вредить.
Черви (Worms)
Червь, в отличии от вируса, существует самостоятельно, не заражая другие файлы. Для заражения червём не требуется запуск заражённой программы или посещение инфицированного сайта. Червь использует сетевые уязвимости и эксплоиты операционки Windows. Эксплоит (exploit) – это код, последовательность команд, которая использует обнаруженную хакером брешь в системе безопасности, например ошибку при переполнении буфера, которая позволяет выполнить любой код.
Поэтому червь пролазит в компьютер сам, и затем дальше ищет другие уязвимости в сетях, к которым подключён компьютер. Червь может выполнять любые злонамеренные действия: кража паролей, шифрование файлов, нарушение работы ОС, перезагружать компьютер и т.д.
Трояны (Trojan)
Трояны попадают в компьютер под видом безвредного ПО и не имеют свойства размножаться. Трояны часто попадают в компьютер под видом кейгена или патча для взлома платных программ. Патч делает полезную работу, и ничего не подозревающий пользователь получает «бонусом» трояна, который открывает бэкдор – службу для удалённого управления компьютером. С помощью бэкдора хакер может делать с компьютером что угодно: загружать другие программы, похищать личные данные, менять начальную страницу и настройки браузера, нарушать целостность системы и др.
Руткиты (Rootkit)
Название пошло из операционок Linux, где для входа в систему с правами администратора используется логин «root». Руткиты самые нежелательные гости в Windows. Руткиты:
- Получают доступ к ядру ОС
- Изменяют системные файлы
- Маскируются под системные процессы
- Загружаются до запуска операционной системы
- Работают в теневом режиме
Всё это осложняет обнаружение и удаление руткитов.
Spyware, Adware, Ransomware
Spyware – шпионские программы, которые следят за активностью пользователя в сети, запоминают нажатия клавиш, находят данные карт, кошельков, документы и передают их хакеру.
Adware – рекламное ПО, показывает рекламу в всплывающих окнах. Adware (ad, реклама) может долго оставаться незамеченным, внедряя рекламные баннеры на посещаемые сайты или заменяя имеющуюся рекламу на свою. Переход по рекламным ссылкам может повлечь заражение трояном или руткитом.
Ransomware – это вымогатели, которые шифруют личные и рабочие документы на дисках. Вымогатель требует выкуп за получение ключа расшифровки. Как правило, выкуп просят в биткоинах, но никакого ключа расшифровки не существует. Лечения от вымогателя не существует, данные теряются навсегда.
Следуйте правилам безопасности, работая за компьютером и в интернете, используйте антивирусное ПО, например Total AV.
Источник
Технологии обнаружения вредоносного кода. Эволюция
В этой статье освещаются различные способы идентификации вредоносного кода, функциональные и хронологические связи между ними, их технологические и прикладные особенности.
В этой статье освещаются различные способы идентификации вредоносного кода, функциональные и, отчасти, хронологические связи между ними, их технологические и прикладные особенности. С одной стороны, многие из описанных здесь технологий и принципов актуальны не только в антивирусах, но и в более широком контексте систем компьютерной безопасности. С другой, за пределами статьи остались многие важные, но более частные технологии антивирусной индустрии, такие как распаковка упакованных программ или потоковое сигнатурное детектирование.
1. Введение
Самая первая технология поиска вредоносных программ была основана на использовании сигнатур — участков кода, однозначно идентифицирующих ту или иную вредоносную программу. По мере того, как эволюционировали вирусы, усложнялись и развивались технологии их детектирования. Все эти продвинутые технологии — разные виды «эвристик» и «поведенческих анализаторов» — можно обобщенно назвать «несигнатурными».
Несмотря на то что название данной статьи апеллирует ко всему спектру технологий детектирования вредоносного кода, речь в ней пойдет преимущественно о несигнатурных технологиях — о сигнатурных сказать уже практически нечего ввиду их примитивности и однозначности. В то же время пользователи плохо ориентируются в несигнатурных технологиях. Что скрывается под названиями «эвристика», «проактивное детектирование», «поведенческое детектирование», «HIPS», как перечисленные технологии соотносятся друг с другом, каковы преимущества и недостатки каждой из них? Разобраться в этом — задача нашей статьи. Помимо прочего, данная статья, так же как и предыдущая — «Эволюция самозащиты вредоносных программ», имеет целью систематизировать и максимально объективно рассмотреть некоторые частные проблемы из области вредоносных программ и защиты от них. Статьи этого цикла рассчитаны на читателей, имеющих общее представление об антивирусных технологиях, но не являющихся специалистами в области защиты от вредоносных программ.
2.Модель системы защиты от вредоносных программ
Для начала рассмотрим, как работают технологии поиска вредоносного кода. Для этого я предлагаю использовать следующую модель.
В любой защитной технологии можно выделить два компонента: технический и аналитический. Эти компоненты не обязаны быть четко разграничены на уровне модулей или алгоритмов, но на функциональном уровне они различимы.
Технический компонент — это совокупность программных функций и алгоритмов, обеспечивающих аналитический компонент данными для анализа. В качестве таковых могут выступать, к примеру, байтовый код файла, текстовые строчки внутри файла, единичное действие программы в рамках операционной системы или целая цепочка таких действий.
Аналитический компонент — это система принятия решения. Это алгоритм, который анализирует имеющиеся в его распоряжении данные и выносит о них некое суждение. В соответствии с этим суждением антивирус (либо другое защитное ПО) предпринимает установленные его политикой безопасности действия: оповещает пользователя, запрашивает у него дальнейшие указания, помещает файл в карантин, блокирует несанкционированное действие программы и т.д.
Для примера рассмотрим классическую защиту от вредоносных программ, основанную на сигнатурном детектировании. В ней в качестве технического компонента выступает система получения информации о файловой системе, файлах и их цифровом содержимом, а в качестве аналитического — простая операция сравнения байтовых последовательностей. То есть, если говорить упрощенно, на входе у аналитического компонента — код файла, а на выходе — решение, является ли данный файл вредоносным.
В рамках описанной модели любая система защиты может быть представлена как «комплексное число» — как связка двух независимых объектов: технического и аналитического компонентов определенного типа. Анализируя технологии таким образом, легко увидеть их соотношение, их принципиальные плюсы и минусы. И, в частности, с помощью этой модели удобно разрешить путаницу в определениях технологий. Например, ниже будет показано, что «эвристика» как способ принятия решений — лишь разновидность аналитического компонента, а не самостоятельная технология. А HIPS (Host Intrusion Prevention System) — лишь разновидность технического компонента, способ сбора данных. Как следствие, данные термины, во-первых, формально не противоречат друг другу, а во-вторых, не полностью характеризуют технологию, в описании которой встречаются: говоря об эвристике, мы не уточняем, по каким именно данным производится эвристический анализ, а говоря о HIPS-системе — ничего не знаем о том, по какому принципу в ней выносится вердикт.
Более подробно эти технологии будут обсуждаться в соответствующих разделах, а пока рассмотрим сами принципы, на которых основана любая технология поиска вредоносного кода: технические — как способы сбора информации, и аналитические — как способы ее обработки.
Диаграмма. Суммарная схема технологий обнаружения вредоносного кода
2.1 Технический компонент
Техническая составляющая системы обнаружения вредоносных программ обеспечивает сбор данных, которые будут использоваться для анализа ситуации.
Вредоносная программа — это, с одной стороны, файл с определенным содержимым, с другой — совокупность действий, производимых в операционной системе, с третьей — совокупность конечных эффектов в операционной системе. Поэтому и идентификация программы может быть произведена на разных уровнях: по цепочкам байт, по действиям, по влиянию на операционную систему и т.д.
Обобщая, можно выделить следующие способы сбора данных для выявления вредоносных программ:
- Работа с файлом как с массивом байтов.
- Эмуляция 1 кода программы.
- Запуск программы в «песочнице» (sandbox 2 ) (а также использование близких по смыслу технологий виртуализации).
- Мониторинг системных событий.
- Поиск системных аномалий.
Способы перечислены в соответствии с повышением уровня абстракции при работе с кодом. Под уровнем абстракции в данном случае подразумевается то, под каким углом зрения рассматривается исполняемая программа: как первичный цифровой объект (набор байт), как поведение (более абстрактное следствие из набора байт) или как совокупность эффектов в операционной системе (более абстрактное следствие из поведения). Примерно по этому же вектору шло и развитие антивирусных технологий: работа с файлами, работа с событиями через файл, работа с файлом через события, работа с самой средой, — поэтому приведенный список естественным образом оказался выстроен и по хронологии.
Подчеркнем, что приведенные способы — не столько обособленные технологии, сколько условные этапы непрерывного процесса развития технологий сбора данных для обнаружения вредоносных программ. Технологии развиваются и переходят друг в друга более или менее постепенно; например, эмуляция может оказаться ближе к простой работе с файлом, если данная ее реализация лишь частично преобразует файл как набор байт, или же к «песочнице», если речь идет о полной виртуализации системных функций.
Рассмотрим эти способы подробно.
2.1.1 Считывание файлов
Самые первые из появившихся антивирусов основывались на анализе кода файлов как наборов байт. Впрочем, анализом это назвать сложно — речь идет о простом сравнении байтовой последовательности с известной сигнатурой. Но нас сейчас интересует техническая сторона описанной технологии, а именно: в процессе поиска вредоносных программ данные, передаваемые в компонент принятия решений, извлекаются из файлов и представляют собой определенным образом упорядоченные массивы байт.
Характерная особенность этого способа в том, что антивирус работает только с исходным байтовым кодом программы, не затрагивая ее поведение. Несмотря на то, что способ «архаический», он совершенно не устарел и так или иначе используется во всех современных антивирусах — но уже не как единственный и даже не как основной, а лишь как один из нескольких.
2.1.2 Эмуляция
Технология эмуляции является промежуточной ступенью между обработкой программы как набора байт и обработкой программы как определенной последовательности действий.
Эмулятор разбирает байтовый код программы на команды и каждую команду запускает в виртуальной копии компьютера. Это позволяет средству защиты наблюдать за поведением программы, не ставя под угрозу операционную систему и данные пользователя, что неизбежно произошло бы при исполнении программы в реальной среде.
Эмулятор является промежуточной ступенью абстрагирования при работе с программой. Поэтому характерную особенность эмулятора можно грубо сформулировать примерно так: эмулятор все еще работает с файлом, но анализируются уже, фактически, события. Эмуляторы используются во многих (возможно, во всех) крупных антивирусах, главным образом как дополнение к основному, более низкоуровневому файловому движку, либо как «страховка» для более высокоуровневых движков (таких как «песочница», системный мониторинг).
2.1.3 Виртуализация: «песочница»
Виртуализация в том ее виде, в котором она используется в «песочницах», представляет собой логическое продолжение эмуляции. А именно: «песочница» уже работает с исполняющейся в реальной среде программой, но все еще ее контролирует.
Суть такой виртуализации хорошо отражена в названии технологии — «песочница». В обычной жизни песочница — это некое огороженное пространство, в пределах которого ребенок может спокойно играть. Если провести аналогию и под реальным миром понимать операционную систему, а под шаловливым ребенком — вредоносную программу, то в роли ограждения будет выступать некий набор правил взаимодействия с операционной системой. Такими правилами может быть запрет на модификацию реестра ОС, ограничение работы с файловой системой посредством ее частичной эмуляции. Например, программе, запущенной в «песочнице», может быть «подсунута» виртуальная копия системного реестра — для того, чтобы изменения, вносимые программой в реестр, не могли повлиять на работу операционной системы. Таким образом могут виртуализироваться любые точки соприкосновения программы со средой: файловая система, реестр.
Грань между эмуляцией и виртуализацией тонка, но ощутима. Первая технология предоставляет среду для исполнения программы (и, таким образом, в процессе работы «содержит» программу и полностью управляет ею). Во втором случае в качестве среды уже выступает сама операционная система, а технология лишь контролирует взаимодействие между операционной системой и программой, в отличие от предыдущего случая находясь с последней на равных.
Таким образом, средство защиты, основанное на виртуализации описанного типа, работает уже не с файлом, но с поведением программы — однако все еще не с системой.
Механизм типа «песочница», так же как и эмулятор, не особенно активно используется в антивирусах — главным образом потому, что в программной реализации он требует значительного объема ресурсов. Антивирусы, имеющие в своем составе «песочницу», легко идентифицируются по существенной временной задержке между запуском программы и началом ее исполнения (либо — в случае успешной идентификации вредоносной программы — между ее запуском и уведомлением, полученным от антивируса, об ее успешном детектировании). Учитывая, что в настоящий момент проводятся активные исследования в области аппаратной виртуализации, ситуация вскоре может поменяться.
Пока что движок типа «песочница» используется лишь в нескольких антивирусах.
2.1.4 Мониторинг системных событий
Мониторинг системных событий является более «абстрактным» способом сбора информации для выявления вредоносных программ. Если эмулятор или «песочница» наблюдают за каждой программой в отдельности, то монитор наблюдает за всеми программами сразу посредством регистрации всех событий, происходящих в операционной системе и порожденных работающими программами.
Технически такой способ сбора информации реализуется посредством перехватов функций операционной системы. Таким образом, перехватив вызов некой системной функции, механизм-перехватчик получает информацию о том, что определенная программа совершает определенное действие в системе. На протяжении своей работы монитор собирает статистику таких действий и передает ее в аналитический компонент для обработки.
Этот технологический принцип наиболее активно развивается в настоящее время. Он используется в качестве одного из компонентов в нескольких крупных антивирусах, и в качестве основы — в отдельных утилитах, специализирующихся на мониторинге системы (их называют «HIPS-утилитами», «HIPS’ами» — это Prevx, CyberHawk и ряд других). Однако в свете того, что любую защиту можно обойти, данный способ поиска вредоносных программ представляется не самым перспективным, поскольку при запуске программы в реальной среде риск существенно снижает эффективность защиты.
2.1.5 Поиск системных аномалий
Это наиболее абстрактный способ сбора информации о предположительно зараженной системе. Я упоминаю его здесь в первую очередь как логическое продолжение и предел абстракции в приведенном списке технологий.
Данный метод основан на следующих положениях:
- операционная среда вместе со всеми выполняющимися в ней программами — это интегральная система;
- ей присуще некое «системное состояние»;
- если в среде исполняется вредоносный код, то состояние системы является «нездоровым» и отличается от состояния «здоровой» системы, в которой вредоносного кода нет.
Исходя из этих положений мы можем судить о состоянии системы (и, следовательно, о возможном присутствии в ней вредоносных программ), сравнивая его с эталоном (за эталон принимается «здоровое» состояние системы) или анализируя совокупность отдельных ее параметров.
Для эффективного обнаружения вредоносного кода методом анализа аномалий необходима достаточно сложная аналитическая система — наподобие экспертной системы или нейронной сети. Возникает много вопросов: как определить «здоровое состояние», чем оно отличается от «нездорового», какие дискретные параметры можно отслеживать и как их анализировать? По причине такой сложности в настоящее время этот способ разработан мало. Зачатки его можно обнаружить в некоторых антируткит-утилитах, где он реализован на уровне сравнения с определенным срезом системы, взятым за эталон (устаревшие утилиты PatchFinder, Kaspersky Inspector), либо отдельных ее параметров (GMER, Rootkit Unhooker).
2.1.6 Забавная метафора
Аналогию с ребенком, приведенную в разделе «Песочница», можно продолжить таким образом: эмулятор похож на няньку, которая непрерывно следит за ребенком, чтобы он не натворил лишнего, мониторинг системных событий — на воспитателя, надзирающего за целой группой детишек, поиск системных аномалий — на предоставление детям полной свободы, ограниченной лишь проверкой оценок в их дневнике. В таком случае байтовый анализ файла — это только планирование ребенка, точнее, поиск признаков шаловливости в характере предполагаемого родителя.
Технологии растут и развиваются.
2.2 Аналитический компонент
Сложность алгоритма принятия решений может быть совершенно любой. Очень условно можно разделить аналитические системы антивирусов на три категории, между которыми может быть множество промежуточных вариантов.
2.2.1 Простое сравнение
Вердикт выносится по результатам сравнения единственного объекта с имеющимся образцом. Результат сравнения бинарный («да» или «нет»). Пример: идентификация вредоносного кода по строго определенной последовательности байт. Другой пример, более высокоуровневый: идентификация подозрительного поведения программы по единственному совершенному ею действию (такому как запись в критичный раздел реестра или в папку автозагрузки).
2.2.2 Сложное сравнение
Вердикт выносится по результатам сравнения одного или нескольких объектов с соответствующими образцами. Шаблоны для сравнения могут быть гибкими, а результат сравнения — вероятностным. Пример: идентификация вредоносного кода по одной из нескольких байтовых сигнатур, каждая из которых задана нежестко (например, так, что отдельные байты не определены). Другой пример, более высокоуровневый: идентификация вредоносного кода по нескольким используемым им и вызываемым непоследовательно API-функциям с определенными параметрами.
2.2.3 Экспертная система
Вердикт выносится в результате тонкого анализа данных. Это может быть система, содержащая в себе зачатки искусственного интеллекта. Пример: идентификация вредоносного кода не по жестко заданному набору параметров, но по результатам многосторонней оценки всей совокупности параметров в целом, с присвоением каждому из событий веса «потенциальной вредоносности» и расчетом общего результата.
3. Реальные названия технологий — что к чему
Рассмотрим теперь, какие именно алгоритмы лежат в основе конкретных технологий поиска вредоносных программ.
Обычно производитель, разработав новую технологию, дает ей совершенно новое, уникальное имя (примеры: «Проактивная защита» в Kaspersky Antivirus, TruPrevent от Panda, DeepGuard от F-Secure). Это очень правильный подход, поскольку он позволяет избежать автоматического восприятия технологии в узких рамках некого термина-штампа. Тем не менее, использование штампов — таких как «эвристика», «эмуляция», «песочница», «поведенческий блокиратор» — неизбежно при любых попытках доступно и не вдаваясь в технические подробности охарактеризовать технологию.
Тут-то и начинается терминологическая путаница. За терминами жестко не закреплены значения (а в идеале термин должен быть однозначен, на тот он и термин). Один человек так понимает этот термин, другой — иначе. Вдобавок, значения, которые вкладывают в термины авторы так называемых «доступных описаний», часто очень существенно отличаются от значений, принятых в среде профессионалов. Иначе чем объяснить тот факт, что описание технологии на сайте производителя может изобиловать терминами, но при этом ничего не сообщать о сути технологии или сообщать нечто, не соответствующее ей.
Например, некоторые производители антивирусных систем характеризуют свои продукты как оснащенные HIPS, «проактивной технологией» или «несигнатурной технологией». Пользователь, который понимает термин HIPS как мониторинг системных событий и их анализ на наличие вредоносного кода, может оказаться обманутым. В действительности под этими характеристиками может скрываться все что угодно — например, движок типа «эмулятор», оснащенный аналитической системой типа «эвристика» (определение см. ниже). Еще чаще встречается ситуация, когда защита характеризуется как «эвристическая» без каких-либо уточнений.
Подчеркнем, что речь не идет об умышленном обмане пользователя производителем — вероятнее всего, составитель описания просто сам запутался в терминах. Речь идет лишь о том, что описание технологии, составленное для конечного пользователя, может не отражать ее суть, и что опираться на него при ответственном подходе к выбору защиты следует с осторожностью.
Рассмотрим наиболее распространенные термины в области антивирусных технологий (см. диаграмму).
Меньше всего разночтений у термина «сигнатурное детектирование»: так или иначе, с технической стороны оно подразумевает работу с байтовым кодом файлов, а с аналитической — примитивный способ обработки данных, обычно — простое сравнение. Это самая старая технология, но она же и наиболее надежная — поэтому, несмотря на большие производственные издержки, связанные с пополнением базы, активно используется по сей день во всех антивирусах.
Если в характеристике используется название технического компонента из приведенного выше списка — «эмулятор» или «песочница» — это также вызывает минимум толкований. При этом аналитический компонент такой технологии может быть представлен алгоритмом любой степени сложности, от простого сравнения до экспертной системы.
Термин «эвристика» уже немного туманен. По определению словаря Ожегова-Шведовой, «эвристика — совокупность исследовательских методов, способствующих обнаружению ранее неизвестного». Эвристика — это в первую очередь тип аналитического компонента защиты, а не определенная технология. Вне конкретной темы, в контексте решения задач, он приблизительно соответствует «нечеткому» способу решения нечетко поставленной задачи.
На заре антивирусных технологий, когда и был впервые задействован термин «эвристика», он подразумевал вполне определенную технологию — идентификацию вируса по нескольким гибко заданным байтовым шаблонам, т.е. систему из технического компонента типа «работа с файлами» и аналитического — «сложное сравнение». Сейчас термин «эвристика» обычно используется в более общем значении «технологии поиска неизвестных вредоносных программ». Иными словами, говоря об «эвристическом детектировании», производитель подразумевает некую систему защиты, аналитический компонент которой работает по принципу нечеткого поиска решения (что может соответствовать типу аналитического компонента «сложный анализ» или «экспертная система», см. диаграмму). При этом технологическая основа защиты, способ сбора информации для последующего анализа, может быть какой угодно — от работы с файлами до работы с событиями или состоянием операционной системы.
Еще меньше определенности с такими названиями, как «поведенческое детектирование», «проактивное детектирование». Они могут подразумевать широкий спектр технологий — от эвристики до мониторинга системных событий.
Термин HIPS используется в описаниях антивирусных технологий очень часто, и не всегда оправданно. Несмотря на то что расшифровка аббревиатуры (Host Intrusion Prevention System) никак не отражает суть технологии, применительно к антивирусной защите технология четко определена: HIPS — это защита, технически основанная на мониторинге системных событий. При этом аналитический компонент защиты может быть каким угодно — от пресечения единичных подозрительных событий до сложного анализа цепочек программных действий. Таким образом, под определением «HIPS» в описании антивируса может скрываться, например, примитивная защита нескольких ключей реестра, либо система уведомлений о попытках доступа к определенным директориям, либо более сложная система анализа поведения программ, либо какая-то другая технология, в основе которой лежит мониторинг системных событий.
4. Плюсы и минусы способов обнаружения вредоносного кода
Если рассматривать технологии защиты от вредоносных программ не по отдельности, а обобщенно, с точки зрения представленной модели, то вырисовывается следующая картина.
Технический компонент технологии отвечает в основном за такие ее характеристики, как нагрузка на систему (и как следствие — ее быстродействие), безопасность и защищенность.
Нагрузка на систему — это доля процессорного времени и оперативной памяти, непрерывно или периодически задействованных в обеспечении защиты и ограничивающих быстродействие системы. Эмуляция выполняется медленно, вне зависимости от реализации: на каждую проэмулированную инструкцию приходится несколько инструкций искусственной среды. То же можно сказать и про виртуализацию. Мониторинг системных событий также безусловно равномерно тормозит всю систему, но степень этой нагрузки зависит от реализации. В случае с файловым детектированием и поиском системных аномалий степень нагрузки всецело зависит от реализации.
Под «безопасностью» подразумевается степень риска, которому подвергается операционная система и данные пользователя в процессе идентификации потенциально вредоносного кода. Такой риск существует всегда, когда вредоносный код исполняется реально, в операционной системе. Для систем мониторинга событий такое реальное исполнение кода архитектурно обусловлено, в то время как эмуляция и файловое сканирование могут обнаружить вредоносный код еще до того, как он начал исполняться.
Защищенность. Этот параметр отражает уязвимость технологии, то, насколько вредоносный код может затруднить процесс идентификации себя. Противостоять файловому детектированию очень легко: достаточно хорошо упаковать файл, либо сделать его полиморфным, либо воспользоваться руткит-технологией для сокрытия файла. Противостоять эмуляции немного сложнее, но также возможно — для этого используются многочисленные трюки 3 , встроенные в код вредоносной программы. Но скрыться от системного мониторинга программе уже сложно — по той причине, что практически невозможно скрыть поведение.
Подводя итог: в среднем, чем менее абстрактна защита, тем она безопаснее, но и тем проще ее обойти.
Аналитический аспект технологии отвечает за такие характеристики, как проактивность (и зависящую от нее необходимую частоту обновления антивируса), процент ложных срабатываний и нагрузка на пользователя.
Под проактивностью подразумевается способность технологии обнаруживать новые, еще не попадавшие в руки специалистов вредоносные программы. К примеру, простейший тип анализа («простое сравнение») соответствует наиболее далеким от проактивности технологиям, таким как сигнатурное детектирование: при помощи таких технологий могут быть обнаружены лишь известные вредоносные программы. По мере возрастания сложности аналитической системы, возрастает и ее проактивность. С проактивностью непосредственно связана и такая характеристика защитной системы, как необходимая частота обновлений. Например, базы сигнатур нужно часто обновлять, в то время как более сложные эвристические системы остаются адекватными текущей ситуации более длительный срок, а экспертные аналитические системы могут успешно функционировать без обновлений месяцами.
Процент ложных срабатываний так же непосредственно связан со сложностью технологии анализа. Если вредоносный код идентифицируется жестко заданной сигнатурой или последовательностью действий — при условии достаточной длины сигнатуры (байтовой, поведенческой или какой-то еще), такая идентификация однозначна: сигнатура идентифицирует только определенную вредоносную программу и не подходит для других. Но чем больше «жертв» старается захватить идентификационный алгоритм, тем более нечетким он становится, вследствие чего способен захватить больше безвредных программ.
Под нагрузкой на пользователя подразумевается степень его участия в формировании политики защиты — правил, исключений, белых и черных списков — и участия в процессе вынесения вердикта — подтверждение или опровержение «подозрений» аналитической системы. Нагрузка на пользователя зависит от реализации, но общее правило таково, что чем дальше анализ от примитивного сравнения, тем больше случается ложных срабатываний — которые нужно как-то корректировать. Для этого и необходимо участие пользователя.
Подводя итог: чем сложнее аналитическая система, тем она могущественнее, но и тем выше процент ложных срабатываний. Последние компенсируются взаимодействием с пользователем.
Теперь, если рассмотреть какую-либо технологию через призму этой модели, легко теоретически оценить ее преимущества и недостатки. Возьмем, например, эмулятор со сложным аналитическим компонентом. Это защита очень безопасная (поскольку не требуется запуск проверяемого файла), но «пропускающая» некоторый процент вредоносных программ вследствие использования в них антиэмуляционных трюков, либо вследствие неизбежных недоработок в реализации самого эмулятора. Такая защита обладает высоким потенциалом и будет при грамотной реализации качественно идентифицировать большой процент неизвестных вредоносных программ, но неизбежно медленно.
5. Как выбрать систему несигнатурной защиты?
В настоящий момент большинство решений в области компьютерной безопасности реализуются как комплекс нескольких технологий. В классических антивирусах сигнатурное детектирование обычно используется в связке с той или иной реализацией мониторинга системных событий, эмулятора, песочницы. Как сориентироваться в спецификациях и выбрать систему защиты от вредоносного кода, оптимально отвечающую потребностям конкретного пользователя?
Прежде всего, следует помнить, что не существует ни универсального, ни «самого лучшего» решения. У каждой технологии есть свои плюсы и минусы. Например, мониторинг событий в системе постоянно занимает процессорное время, но его труднее всего обмануть; процессу эмуляции можно помешать использованием в коде определенных команд, зато при ее использовании обнаружение вредоносного кода выполняется в упреждающем режиме, система остается незатронута. Другой пример: простые правила принятия решений требуют от пользователя слишком активного участия в процессе, порождая много вопросов к пользователю, а сложные и «тихие» чреваты ложными срабатываниями. Выбор технологии — это выбор золотой середины с учетом конкретных потребностей и обстоятельств.
Например, тому, кто работает в уязвимых условиях («непропатченная» система, отсутствие запретов на использование расширений браузера, скриптов и т.п.), сильно беспокоится за свою безопасность и имеет достаточно ресурсов, больше всего подойдет система типа «песочница», с качественным аналитическим компонентом. Такая система обеспечивает максимум безопасности, но в сегодняшней реализации задействует много оперативной памяти и процессорного времени — что может проявляться в «торможении» ОС. Специалисту, желающему контролировать критичные системные события, и заодно оградить себя от неизвестных вредоносных программ, подойдет система мониторинга реального времени. Такая система равномерно, но не существенно загружает операционную систему и требует специального участия в создании правил и исключений. А пользователю, который ограничен в ресурсах либо не хочет загружать свою машину постоянным мониторингом, а разум — созданием правил, подойдет более простая эвристика. В конце концов, за качество детектирования неизвестных вредоносных программ отвечает не какая-то одна составляющая защитной системы, а вся система в целом; более простой технологический способ можно компенсировать более умелым принятием решений.
Системы несигнатурного обнаружения ранее неизвестного кода распадаются на две категории. Первая — это самостоятельные HIPS-системы, такие как уже приведенные в качестве примера Prevx или Cyberhawk. Вторая — крупные антивирусы, эволюционировавшие в поиске большей эффективности до несигнатурных технологий. Преимущества той или иной категории очевидны: узкая специализация, в рамках которой можно неограниченно совершенствовать качество, — в первом случае, и значительный опыт разносторонней борьбы с вредоносными программами — во втором.
В выборе того или иного продукта рекомендуется руководствоваться в первую очередь результатами независимых тестов, а также отзывами пользователей, которым вы доверяете.
1 Эмуляция — имитация работы одной системы средствами другой без потери функциональных возможностей и искажений результатов. Эмуляция выполняется программными и/или аппаратными средствами.
2 «Песочница» (англ. «sandbox») — среда для безопасного исполнения программ, построенная на частичном или полном ограничении или эмуляции ресурсов операционной системы (также см. статью в «Википедии»).
3 Приемы против эмуляции основаны на том, что на некоторые команды эмулятор реагирует иначе, чем процессор. Это позволяет вредоносной программе детектировать эмуляцию и совершать определенные действия — например, завершиться или выполняться по альтернативному алгоритму.
Автор: Алиса Шевченко
Ведущий эксперт «Лаборатории Касперского»
Источник