Какие форматы вирусов есть

Обновлено: 19.04.2024

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

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

Несмотря на принятые во многих странах законы о борьбе с компьютерными преступлениями и разработку специальных программных средств защиты от вирусов, количество новых программных вирусов постоянно растет. Это требует от пользователя персонального компьютера знаний о природе вирусов, способах заражения вирусами и защиты от них [5].

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

Программа, внутри которой находится вирус, называется зараженной. С началом работы такой программы вирус получает доступ ко всей операционной системе. Вирус находит и заражает другие программы, а также выполняет какие-либо вредоносные действия. Например, портит файлы или таблицу размещения файлов на диске, занимает оперативную память и т.д. После того, как вирус выполнит свои действия, он передает управление той программе, в которой он находится, и она работает как обычно. Тем самым внешне работа зараженной программы выглядит так же, как и незараженной. Поэтому далеко не сразу пользователь узнаёт о присутствии вируса в машине [1].

К числу наиболее характерных признаков заражения компьютера вирусами относятся следующие:

В настоящее время известно более 50000 программных вирусов, которые классифицируют по следующим признакам:

Любой вирус, независимо от принадлежности к определенным классам, должен иметь три функциональных блока: блок заражения (распространения), блок маскировки и блок выполнения деструктивных действий. Разделение на функциональные блоки означает, что к определенному блоку относятся команды программы вируса, выполняющие одну из трех функций, независимо от места нахождения команд в теле вируса.

После передачи управления вирусу, как правило, выполняются определенные функции блока маскировки. Например, осуществляется расшифровка тела вируса. Затем вирус осуществляет функцию внедрения в незараженную среду обитания. Если вирусом должны выполняться деструктивные воздействия, то они выполняются либо безусловно, либо при выполнении определенных условий.

Завершает работу вируса всегда блок маскировки. При этом выполняются, например, следующие действия: шифрование вируса (если функция шифрования реализована), восстановление старой даты изменения файла, восстановление атрибутов файла, корректировка таблиц ОС и др.

Последней командой вируса выполняется команда перехода на выполнение зараженных файлов или на выполнение программ ОС.

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

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


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

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


Что такое вредоносное ПО?

Под вредоносной программой подразумевается любая программа, созданная для выполнения любого несанкционированного — и, как правило, вредоносного — действия на устройстве пользователя. Примеры вредоносных программ: Компьютерные вирусы

  • вирусы;
  • макровирусы для Word и Excel;
  • загрузочные вирусы;
  • скрипт-вирусы, включая batch-вирусы, заражающие оболочку ОС Windows, Java-приложения и т.д.;
  • клавиатурные шпионы;
  • программы для кражи паролей;
  • троянцы-бэкдоры;
  • crimeware — вредоносные программы, созданные для автоматизации совершения финансовых преступлений;
  • шпионские программы;
  • рекламные программы и другие типы вредоносных программ

Чем вирус отличается от червя?

Компьютерные вирусы это вредоносные программы, которые могут воспроизводить сами себя и заражать файл за файлом на компьютере, а также может распространяться с одного компьютера на другой.

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

Чем дольше вирус остается необнаруженным на компьютере, тем больше файлов он заразит.

Черви, как правило, считаются разновидностью компьютерных вирусов, но с некоторыми отличиями:

Червь – это вредоносная программа, которая многократно копирует сама себя, но не наносит прямого вреда безопасности.

Червь, однажды попавший на компьютер, будет искать способы распространения на другие компьютеры и носители.

Если вирус является фрагментом программного кода, добавляющимся к обычным файлам, червь – это самостоятельная программа.

Что такое троянская программа?

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

В отличие от вирусов и червей троянские программы не умеют распространяться самостоятельно.

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

Киберпреступники используют множество троянских программ разных типов, каждый из которых предназначен для выполнения особой вредоносной функции. Наиболее распространены:

  • Бэкдоры (в их состав часто входят программы-кейлоггеры);
  • троянские шпионские программы;
  • троянские программы для кражи паролей;
  • троянские прокси-серверы, которые преобразуют ваш компьютер в средство распространение спама.

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

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

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

Что такое клавиатурный шпион?

Клавиатурный шпион, или кейлоггер, — это программа, которая записывает все нажатия клавиш на клавиатуре зараженного компьютера.

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

Что такое фишинг?

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

Как правило, киберпреступники создают фальшивый сайт, который выглядит так же, как легальный, например официальный сайт банка.

При посещении фальшивого сайта, как правило, предлагается ввести конфиденциальные данные, например имя пользователя, пароль или PIN-код.

Что такое шпионская программа?

Шпионские программы предназначены для сбора данных и их отправки стороннему лицу без уведомления или согласия пользователя. Как правило, шпионские программы:

  • отслеживают, какие клавиши пользователь нажимает на клавиатуре;
  • собирают конфиденциальную информацию, такую как пароли, номера кредитных карт, номера PIN и т.д.;
  • собирают адреса электронной почты с компьютера пользователя;
  • запоминают наиболее посещаемые вами веб-страницы.

Кроме возможного ущерба при доступе киберпреступников к этому типу информации, шпионская программа также отрицательно влияет на производительность компьютера.

Что такое drive-by загрузка?

При drive-by загрузке заражение компьютера происходит при посещении веб-сайта, содержащего вредоносный код.

Киберпреступники ведут в интернете поиск уязвимых серверов, которые можно взломать. Когда уязвимый сервер найден, киберпреступники могут разместить свой вредоносный код на веб-страницах сервера.

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

Что такое руткит?

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

Очень часто руткиты используются в качестве прикрытия действий троянской программы.

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

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

Что такое Adware?

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

Рекламные программы часто встраиваются в бесплатные или в условно-бесплатные программы.

При загрузке бесплатной или условно-бесплатной программы в систему без уведомления или согласия пользователя может быть установлена рекламная программа.

В некоторых случаях рекламная программа скрытым образом загружается с веб-сайта и устанавливается на компьютере пользователя троянцем.

Если у вас установлена не последняя версия веб-браузера, хакеры могут воспользоваться его уязвимостями, используя специальные инструменты (Browser Hijackers), которые могут загрузить рекламную программу на компьютер.

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

Они также могут перенаправлять результаты поиска в интернете на платные и порнографические веб-сайты.

Что такое ботнет?

Ботнет — это сеть компьютеров, контролируемых киберпреступниками с помощью троянской или другой вредоносной программы.

Хакеры добиваются этого несколькими способами, например, отправляют серверу такое количество запросов, которые он не в состоянии обработать.

Работа сервера будет замедлена, веб-страницы будут открываться намного дольше, и сервер может совсем выйти из строя, в результате чего все веб-сайты на сервере будут недоступны.

Как правило, киберпреступник взламывает главный компьютер и все зомби-компьютеры, используя уязвимость в приложениях для установки троянской программы или другого компонента вредоносного кода.

Статьи и ссылки по теме:

Продукты:

Вредоносное ПО вирусы и другие угрозы в Интернете -- Часто задаваемые вопросы

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

Избранные статьи

content/ru-ru/images/repository/isc/2021/lower_ping_image1_1081095182_670x377px_300dpi.jpg

Как снизить пинг и оптимизировать скорость онлайн-игр

content/ru-ru/images/repository/isc/2021/incognito_mode_image1_1130460088_670x377px_300dpi.jpg

Режим инкогнито и режим конфиденциального просмотра: что это такое и как ими пользоваться?

Как очистить кеш и удалить файлы cookie в различных браузерах

content/ru-ru/images/repository/isc/2021/internet-laws-1.jpg

Что представляют собой отдельные законы об интернете и безопасности данных?

content/ru-ru/images/repository/isc/2021/cyber-hygiene-habits-1.jpg

Соблюдение кибергигиены поможет обеспечить безопасность в сети

Продукты для дома

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

Бесплатные утилиты

Наши бесплатные утилиты помогают обеспечить защиту ваших устройств на базе Windows, Mac и Android.

Связаться с нами

Наша главная цель - обеспечить вашу безопасность. Мы всегда готовы ответить на ваши вопросы и оказать техническую поддержку.

О компании

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

Пробные версии

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

Сувенирный портал Lab Shop

Рассказываем, в каких файлах злоумышленники чаще всего прячут вирусы — и как себя правильно вести, чтобы не заразиться.

Спамеры ежедневно рассылают многие миллионы писем. Львиную долю составляет банальная реклама — назойливая, но в основном безвредная. Но иногда к письмам прикрепляют вредоносные файлы.

Чтобы заинтересовать получателя и заставить его открыть опасный файл, его обычно маскируют подо что-нибудь интересное, полезное или важное — рабочий документ, какое-нибудь невероятно выгодное предложение, поздравительную открытку с подарком от имени известной компании и так далее.

1. ZIP- и RAR-архивы

2. Документы Microsoft Office

Также среди киберпреступников популярны файлы Microsoft Office, особенно документы Word (.doc, .docx), электронные таблицы Excel (.xls, .xlsx, .xlsm), а также презентации и шаблоны. Эти файлы могут содержать встроенные макросы — небольшие программы, которые выполняются прямо внутри файла. Злоумышленники использовали их, например, как скрипты для скачки зловредов.

3. Файлы PDF

Если про опасность макросов в документах Microsoft Office многие уже знают, то от файлов PDF подвоха часто не ожидают. Тем не менее, в них тоже можно спрятать вредоносный код: формат позволяет создавать и выполнять скрипты JavaScript.

4. Образы дисков ISO и IMG

Файлы ISO и IMG по сравнению с предыдущими типами вложений используются не очень часто, но в последнее время злоумышленники все больше обращают на них внимание. Такие файлы — образы диска — представляют собой фактически виртуальную копию CD, DVD или других дисков.

С помощью подобных вложений злоумышленники доставляли жертвам, например, троян Agent Tesla, специализирующийся на краже учетных данных. Внутри образа диска находился вредоносный исполняемый файл, который запускался при открытии и устанавливал на устройство шпионскую программу. Любопытно, что в некоторых случаях преступники использовали, видимо, для верности, сразу два вложения — ISO и DOC.

Как себя вести с потенциально опасными вложениями

Само собой, отправлять в спам все письма с вложенными архивами или файлами в формате DOCX или PDF — слишком радикальный метод защиты. Чтобы не попасться на удочку мошенников, достаточно помнить несколько простых правил.


Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…

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

Мы будем говорить о вирусах, живущих в исполняемых файлах форматов PE и ELF, то есть о вирусах, тело которых представляет собой исполняемый код для платформы x86. Кроме того, пусть наш вирус не будет уничтожать исходный файл, полностью сохраняя его работоспособность и корректно инфицируя любой подходящий исполняемый файл. Да, ломать гораздо проще, но мы же договорились говорить о правильных вирусах, да? Чтобы материал был актуальным, я не буду тратить время на рассмотрение инфекторов старого формата COM, хотя именно на нем были обкатаны первые продвинутые техники работы с исполняемым кодом.

Начнём со свойств кода вируса. Чтобы код удобней было внедрять, разделять код и данные не хочется, поэтому обычно используется интеграция данных прямо в исполняемый код. Ну, например, так:


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

  • Куда положить вирус? Необходимо найти достаточно места, чтобы вирус туда поместился, записать его туда, по возможности не разломав файл и так, чтобы в области, в которой вирус окажется, было разрешено исполнение кода.
  • Как передать управление на вирус? Просто положить вирус в файл недостаточно, надо еще совершить переход на его тело, а после завершения его работы вернуть управление программе-жертве. Или в другом порядке, но, в любом случае, мы же договорились не ломать ничего, да?

Исполняемый файл (PE или ELF) состоит из заголовка и набора секций. Секции – это выровненные (см. ниже) буферы с кодом или данными. При запуске файла секции копируются в память и под них выделяется память, причем совсем необязательно того объёма, который они занимали на диске. Заголовок содержит разметку секций, и сообщает загрузчику, как расположены секции в файле, когда он лежит на диске, и каким образом необходимо расположить их в памяти перед тем, как передать управление коду внутри файла. Для нас интересны три ключевых параметра для каждой секции, это psize, vsize, и flags. Psize (physical size) представляет собой размер секции на диске. Vsize (virtual size) – размер секции в памяти после загрузки файла. Flags – атрибуты секции (rwx). Psize и Vsize могут существенно различаться, например, если программист объявил в программе массив в миллион элементов, но собирается заполнять его в процессе исполнения, компилятор не увеличит psize (на диске содержимое массива хранить до запуска не нужно), а вот vsize увеличит на миллион чего-то там (в runtime для массива должно быть выделено достаточно памяти).

Флаги (атрибуты доступа) будут присвоены страницам памяти, в которые секция будет отображена. Например, секция с исполняемым кодом будет иметь атрибуты r_x (read, execute), а секция данных атрибуты rw_ (read,write). Процессор, попытавшись исполнить код на странице без флага исполнения, сгенерирует исключение, то же касается попытки записи на страницу без атрибута w, поэтому, размещая код вируса, вирмейкер должен учитывать атрибуты страниц памяти, в которых будет располагаться код вируса. Стандартные секции неинициализированных данных (например, область стека программы) до недавнего времени имели атрибуты rwx (read, write, execute), что позволяло копировать код прямо в стек и исполнять его там. Сейчас это считается немодным и небезопасным, и в последних операционных системах область стека предназначена только для данных. Разумеется, программа может и сама изменить атрибуты страницы памяти в runtime, но это усложняет реализацию.

Также, в заголовке лежит Entry Point — адрес первой инструкции, с которой начинается исполнение файла.

Необходимо упомянуть и о таком важном для вирмейкеров свойстве исполняемых файлов, как выравнивание. Для того чтобы файл оптимально читался с диска и отображался в память, секции в исполняемых файлах выровнены по границам, кратным степеням двойки, а свободное место, оставшееся от выравнивания (padding) заполнено чем-нибудь на усмотрение компилятора. Например, логично выравнивать секции по размеру страницы памяти – тогда ее удобно целиком копировать в память и назначать атрибуты. Даже вспоминать не буду про все эти выравнивания, везде, где лежит мало-мальски стандартный кусок данных или кода, его выравнивают (любой программист знает, что в километре ровно 1024 метра). Ну а описание стандартов Portable Executable (PE) и Executable Linux Format (ELF) для работающего с методами защиты исполняемого кода – это настольные книжки.

  • поставить указатель точно на начало какой-нибудь инструкции (просто так взять рандомное место в исполняемой секции и начать дизассемблирование с него нельзя, один и тот же байт может быть и опкодом инструкции, и данными)
  • определить длину инструкции (для архитектуры x86 инструкции имеют разные длины)
  • переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
  • повторять, пока не решим остановиться
  1. Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
  2. Читаем свой код (код тела вируса).
  3. Берем несколько первых инструкций из файла-жертвы.
  4. Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
  5. Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
  6. Создаем новую секцию, записываем туда код вируса и правим заголовок.
  7. На место этих первых инструкций кладем переход на код вируса.

Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.

Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:

  • сокрытие кода самого вируса;
  • сокрытие его точки входа.

Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.

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

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

Читайте также: