Как работают антивирусы ?
Может быть Вы когда-нибудь захотите создать свой антивирус. Это было бы наилучшим
вариантом, т. к. Ваш собственный антивирус принесет Вам только вполне ожидаемые результаты - то что
Вы в нём реализуете, то и будет Вашей защитой от компьютерных вирусов.
Вся загвоздка в том, что задумать сделать антивирус легко, а вот сделать - трудно.
Попробуем всё-таки разобраться как можно подойти к созданию антивируса.
Для начала надо изучить как ведут себя основные типы вирусов и что должен уметь Ваш антивирус, чтобы
уметь обнаруживать угрозу и предупреждать о ней.
Основные типы вирусов
- вирусы, поражающие объекты - файловые, загрузочные, скриптовые, макровирусы, вирусы поражающие исходный код;
- файловые вирусы делятся по механизму заражения: паразитирующие, которые добавляют себя в исполнимый файл и перезаписывающие, которые невосстановимо портят зараженный файл, "спутники", которые идут отдельным файлом.
- по поражаемым операционным системам и платформам - DOS, Windows, Unix, Linux;
- технологии, применяемые вирусом (полиморфные, стеллс, руткит);
- по языку, на котором написан вирус ( ассемблер, высокоуровневый язык программирования, скриптовый язык );
- по дополнительной вредоносной функциональности ( бэкдор, кейлоггер, шпион, ботнет);
Как распространяются вирусы ?
Вирусы распространяются, копируя своё тело и обеспечивая его последующее исполнение: путём внедрения в исполняемый код других программ, подменой других программ на свой код, прописыванием в автозапуск и другое.
Вирусом или его носителем могут быть не только программы, содержащие машинный код, но и любая информация, содержащая автоматически исполняемые команды - например, пакетные файлы и документы MS Word, Excel, содержащие макросы. Кроме того, для проникновения на компьютер вирус может использовать уязвимости в популярном программном обеспечении ( например, Adobe Flash, Internet Explorer, Outlook ). При этом распространители внедряют его в обычные данные (картинки, тексты и т. д.) вместе с эксплоитом, использующим уязвимость.
Каналы распространения компьютерных вирусов
ДИСКЕТЫ. Самый распространенный канал заражения в 1980 - 1990-е годы. Сейчас практически отсутствует из-за появления более распространенных и эффективных каналов и отсутствия флоппи-дисководов на многих современных компьютерах.
ФЛЕШ-НАКОПИТЕЛИ. В настоящее время USB-флешки заменяют дискеты и повторяют их судьбу - большое количество вирусов распространяется через съёмные накопители, включая цифровые фотоаппараты, цифровые видеокамеры, портативные цифровые плееры, а с 2000-х годов всё большую роль играют и мобильные телефоны, особенно смартфоны (появились мобильные вирусы). Использование этого канала ранее было преимущественно обусловлено возможностью создания на накопителе специального файла autorun.inf, в котором можно указать программу, запускаемую Проводником Windows при открытии такого накопителя. В Windows 7 возможность автозапуска файлов с переносных носителей была отключена.
ЭЛЕКТРОННАЯ ПОЧТА. Обычно вирусы в письмах электронной почты маскируются под безобидные вложения: картинки, документы, музыку, ссылки на сайты. В некоторых письмах могут содержаться действительно только ссылки, то есть в самих письмах может и не быть вредоносного кода, но если открыть такую ссылку, то можно попасть на специально созданный веб-сайт, содержащий вирусный код. Многие почтовые вирусы, попав на компьютер пользователя, затем используют адресную книгу из установленных почтовых клиентов таких как Outlook для рассылки самого себя дальше.
СИСТЕМЫ ОБМЕНА МНГНОВЕННЫМИ СООБЩЕНИЯМИ. Здесь также распространена рассылка ссылок на якобы фото, музыку, либо программы, в действительности являющиеся вирусами, по ICQ и через другие программы мнгновенного обмена сообщениями.
ВЕБ-СТРАНИЦЫ. Возможно также заражение через страницы Интернета, ввиду наличия на страницах всемирной паутины различного "активного" содержимого: скриптов javascript, flash, Active-X компонентов.
В этом случае используются уязвимости программного обеспечения, установленного на компьютере пользователя, либо уязвимости в ПО владельцев сайта (что опаснее, так как заражению подвергаются добропорядочные сайты с большим потоком посетителей), а ничего не подозревающие пользователи, зайдя на такой сайт, рискуют заразить свой компьютер.
ИНТЕРНЕТ и ЛОКАЛЬНЫЕ СЕТИ (черви). Черви - вид вирусов, которые проникают на компьютер-жертву без участия пользователя. Черви используют так называемые "дыры" (уязвимости) в программном обеспечении операционных систем, чтобы проникнуть на компьютер. Уязвимости - это ошибки и недоработки в программном обеспечении, которые позволяют удаленно загрузить и выполнить машинный код, в результате чего вирус-червь попадает в операционную систему и, как правило, начинает действия по заражению других компьютеров через локальную сеть или Интернет. Злоумышленники используют зараженные компьютеры для рассылки спама или для DDos-атак.
Противодействие обнаружению
Во времена MS-DOS были распространены стелс-вирусы, перехватывающие прерывания для обращения к операционной системе. Вирус таким образом мог скрывать свои файлы из дерева каталогов или подставлять вместо зараженного файла исходную копию.
С широким распространением антивирусных сканеров, проверяющих перед запуском любой код на наличие сигнатур или выполнение подозрительных действий, этой технологии стало недостаточно. Сокрытие вируса из списка процессов или дерева каталогов для того, чтобы не привлекать лишнее внимание пользователя, является базовым приемом, однако для борьбы с антивирусами требуются более изощренные методы. Для противодействия сканированию на наличие сигнатур применяется шифрование кода и полиморфизм. Эти техники часто применяются вместе, поскольку для расшифрования зашифрованной части вируса необходимо оставлять расшифровщик незашифрованным, что позволяет обнаруживать его по сигнатуре. Поэтому для изменения расшифровщика применяют полиморфизм — модификацию последовательности команд, не изменяющую выполняемых действий. Это возможно благодаря весьма разнообразной и гибкой системе команд процессоров Intel, в которой одно и то же элементарное действие, например, сложение двух чисел, может быть выполнено несколькими последовательностями команд.
Также применяется перемешивание кода, когда отдельные команды случайным образом разупорядочиваются и соединяются безусловными переходами. Передовым фронтом вирусных технологий считается метаморфизм, который часто путают с полиморфизмом. Расшифровщик полиморфного вируса относительно прост, его функция — расшифровать основное тело вируса после внедрения, то есть после того, как его код будет проверен антивирусом и запущен. Он не содержит самого полиморфного движка, который находится в зашифрованной части вируса и генерирует расшифровщик. В отличие от этого, метаморфный вирус может вообще не применять шифрование, поскольку сам при каждой репликации переписывает весь свой код.
Профилактика и лечение
В настоящий момент существует множество антивирусных программ, используемых для предотвращения попадания вирусов в ПК. Однако нет гарантии, что они смогут справиться с новейшими разработками. Поэтому следует придерживаться некоторых мер предосторожности, в частности:
1. Не работать под привилегированными учётными записями без крайней необходимости.
2. Не запускать незнакомые программы из сомнительных источников.
3. Стараться блокировать возможность несанкционированного изменения системных файлов.
4. Отключать потенциально опасный функционал системы (например, autorun-носителей в MS Windows, сокрытие файлов, их расширений и пр.).
5. Не заходить на подозрительные сайты, обращать внимание на адрес в адресной строке обозревателя.
6. Пользоваться только доверенными дистрибутивами.
7. Постоянно делать резервные копии важных данных и иметь образ системы со всеми настройками для быстрого развёртывания.
8. Выполнять регулярные обновления часто используемых программ, особенно тех, которые обеспечивают безопасность системы.
Итак, Мы познакомились с основными типами компьютерных вирусов и методам профилактики, теперь рассмотрим какие бывают антивирусные программы.
Классификация антивирусных программ
По используемым технологиям антивирусной защиты:
Классические антивирусные продукты (продукты, применяющие только сигнатурный метод детектирования)
Продукты проактивной антивирусной защиты (продукты, применяющие только проактивные технологии антивирусной защиты);
Комбинированные продукты (продукты, применяющие как классические, сигнатурные методы защиты, так и проактивные)
По функционалу продуктов:
Антивирусные продукты (продукты, обеспечивающие только антивирусную защиту)
Комбинированные продукты (продукты, обеспечивающие не только защиту от вредоносных программ, но и фильтрацию спама, шифрование и резервное копирование данных и другие функции)
По целевым платформам:
Антивирусные продукты для ОС семейства Windows
Антивирусные продукты для ОС семейства *NIX (к данному семейству относятся ОС BSD, Linux, Mac OS X и др.)
Антивирусные продукты для мобильных платформ (Windows Mobile, Symbian, iOS, BlackBerry, Android, Windows Phone 7 и др.)
Антивирусные продукты для корпоративных пользователей можно также классифицировать по объектам защиты:
Антивирусные продукты для защиты рабочих станций
Антивирусные продукты для защиты файловых и терминальных серверов
Антивирусные продукты для защиты почтовых и Интернет-шлюзов
Антивирусные продукты для защиты серверов виртуализации
Лжеантивирусы
В 2009 началось активное распространение т.н. лжеантивирусов — программного обеспечения, не являющегося антивирусным (то есть не имеющего реального функционала для противодействия вредоносным программам), но выдающим себя за таковое. По сути, лжеантивирусы могут являться как программами для обмана пользователей и получения прибыли в виде платежей за «лечение системы от вирусов», так и обычным вредоносным программным обеспечением. В настоящий момент это распространение приостановлено.
Работа антивируса
Говоря о системах Майкрософт, следует знать, что обычно антивирус действует по схеме:
поиск в базе данных антивирусного ПО сигнатур вирусов
если найден инфицированный код в памяти (оперативной и/или постоянной), запускается процесс карантина, и процесс блокируется
зарегистрированная программа обычно удаляет вирус, незарегистрированная просит регистрации и оставляет систему уязвимой.
Базы антивирусов
Для использования антивирусов необходимы постоянные обновления так называемых баз антивирусов. Они представляют собой информацию о вирусах — как их найти и обезвредить. Поскольку вирусы пишут часто, то необходим постоянный мониторинг активности вирусов в сети.
Для этого существуют специальные сети, которые собирают соответствующую информацию. После сбора этой информации производится анализ вредоносности вируса, анализируется его код, поведение, и после этого устанавливаются способы борьбы с ним. Чаще всего вирусы запускаются вместе с операционной системой. В таком случае можно просто удалить строки запуска вируса из реестра, и на этом в простом случае процесс может закончиться.
Более сложные вирусы используют возможность заражения файлов. Например, известны случаи, как некие даже антивирусные программы, будучи зараженными, сами становились причиной заражения других чистых программ и файлов. Поэтому более современные антивирусы имеют возможность защиты своих файлов от изменения и проверяют их на целостность по специальному алгоритму. Таким образом, вирусы усложнились, как и усложнились способы борьбы с ними.
Сейчас можно увидеть вирусы, которые занимают уже не десятки килобайт, а сотни, а порой могут быть и размером в пару мегабайт. Обычно такие вирусы пишут на языках программирования более высокого уровня, поэтому их легче остановить.
Но по-прежнему существует угроза от вирусов, написанных на низкоуровневых машинных кодах наподобие ассемблера. Сложные вирусы заражают операционную систему, после чего она становится уязвимой и нерабочей.
ПОДВОДИМ ИТОГ
Написать свой собственный антивирус - сложно, по многим причинам. Кроме того, у нового антивируса не будет своей собственной антивирусной базы - её надо будет составлять, а на это потребуется время.
Однако не всё так печально. Было бы желание, добиться можно чего угодно. Главное - поставить задачу и приступить к её решению.
В следущих наших статьях мы рассмотрим с чего можно начать разработку собственного антивируса.
Удачи Вам !
Надеюсь описанная информация помогла Вам лучше защититься от компьютерных вирусов.
далее -
Разработка программ на c++, в том числе антивирусов