Основы работы антивирусного программного обеспечения. Часть 1

Основы работы антивирусного программного обеспечения. Часть 1

Оглавление:

  1. Системы защиты
  2. Основы антивирусного программного обеспечения
  3. Заключение и будущие написание практического антивирусного ПО на основе метода статистического анализа

Для кого предназначена эта статья?

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

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

- EDR: Цель системы EDR - защитить бизнес-пользователя от атак вредоносного ПО, посредством реагирования в режиме реального времени на любой тип событий, определяемых как вредоносные. Например, инженер по безопасности конкретной компании может определить в пределах EDR, пытается ли файл выполнить изменение в SQLServer.exe, он отправит предупреждение на приборную панель EDR.

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

- IDS/IPS: IDS и IPS обеспечивают безопасность на сетевом уровне, основываясь на общих сигнатурах, которые проверяют сетевые пакеты и ищут вредоносные шаблоны(сигнатуры) или вредоносный поток.

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

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

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

- Статический метод
- Динамический метод (включает метод песочницы)
- Эвристический метод
- Механизм распаковки

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

На рисунке показан процесс сканирования файлов с помощью статического метода:

Иллюстрация статического метода антивируса

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

Следующий рисунок демонстрирует процесс сканирования с помощью динамического метода:
Иллюстрация динамического метода антивируса

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

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

- Если процесс пытается взаимодействовать с процессом LSASS.exe, который содержит пользовательские хэши NTLM, билеты Kerberos и многое другое.

- Если процесс, не подписанный авторитетным поставщиком, пытается записать себя в постоянное местоположение

- Если процесс открывает прослушивающий порт и ожидает получения команд от командно-контрольного сервера (Command и управления (C2) сервера)

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

Следующий рисунок демонстрирует процесс сканирования с помощью эвристического метода:
Иллюстрация эвристического метода антивируса

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

Заключение
В данной статье рассмотрены основные части антивирусного средства, которые, собранные воедино, параллельно выполняют сканирование и анализ любого программного обеспечения, попадающего на устройство пользователя. Всегда стоит помнить, что нет идеального антивируса, способного защитить данные пользователей от утечки, шифрования, модификации, и ярким примером служит громкий скандал вокруг компании NSO Group, на которую, в свою очередь, компания Apple подала судебный иск, а это значит, что каждый обладатель смартфона должен очень внимательно скачивать файлы даже из Play Market, не говоря про сторонние ресурсы, ведь неизвестно, что будет с Вашими данными: украдут, сотрут, зашифруют, даже если Вы всё ещё думаете, что в цифровом мире «до вас точно никому нет дела».