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

Тема 6. Компьютерные вирусы

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

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

Обязательным свойством компьютерного вируса является способность к размножению (самокопированию) и незаметному для пользователя внедрению в файлы, загрузочные секторы дисков и документы. Название «вирус» по отношению к компьютерным программам пришло из биологии именно по признаку способности к саморазмножению.

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

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

Разнообразны последствия действия вирусов; по величине вредных воздействий вирусы можно разделить на:

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

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

Троянские программы

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

Зомби

Шпионские программы

Эти программы, как правило, проникают на компьютер при помощи сетевых червей, троянских программ или под видом рекламы (adware).

Одной из разновидностей шпионских программ являются фишинг рассылки.

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

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

Мобильные вирусы

Мобильные вирусы – это компьютерные (программные) вирусы, разработанные злоумышленниками специально для распространения через мобильные устройства, такие как смартфоны и КПК. Чаще всего мобильные вирусы распространяются с помощью SMS и MMS сообщений, а также по каналу Bluetooth.

Наиболее известными и распространенными мобильными вирусами, в настоящее время являются: Cabir, Comwar, Brador, Viver и многие другие.

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

Вредоносные программы

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

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

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

При этом файловые вирусы не могут заразить файлы данных (например, файлы, содержащие изображение или звук).

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

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

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

Макровирусы. Макровирусы заражают файлы документов Word и электронных таблиц Excel. Макровирусы являются фактически макрокомандами (макросами), которые встраиваются в документ.

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

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

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

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

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

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

Особой разновидностью вирусов являются активные элементы (программы) на языках JavaScript или VBScript, которые могут выполнять разрушительные действия, то есть являться вирусами (скрипт-вирусами). Такие программы передаются по Всемирной паутине в процессе загрузки Web-страниц с серверов Интернета в браузер локального компьютера.

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

Источник

Вирусы. Вирусы? Вирусы! Часть 1

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

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

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

Итак, давным-давно, после того, как DOS пришел к людям, и у каждого программиста появилась своя маленькая вселенная, где адресное пространство было единым, а права на файлы были всегда rwx, появилась мысль о том, может ли программа копировать сама себя. «Конечно, может!», – сказал программист и написал код, который копирует собственный исполняемый файл. Следующая мысль была «а могут ли две программы объединиться в одну?». «Конечно, могут!», – сказал программист и написал первый инфектор. «Только вот зачем?» – подумал он, и это стало началом эпохи компьютерных вирусов. Как оказалось, гадить на компьютере и всячески пытаться избежать обнаружения очень весело, а создание вирусов является очень интересным с точки зрения системного программиста делом. Кроме того, появившиеся на рынке антивирусы предоставляли создателям вирусов серьёзный вызов их профессионализму.

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

Анатомия вируса

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

Основными частями кода вируса являются infector и payload. Infector – это код, который ищет подходящие для заражения файлы и внедряет в них вирус, стараясь максимально скрыть факт внедрения и при этом не повредить функционалу файла. Payload – это код, который выполняет собственно необходимые вирмейкеру действия, например, рассылает спам, DoS-ит кого-нибудь, или просто оставляет на машине текстовой файлик «Здесь был Виря». Нам совершенно непринципиально, что там внутри payload, главное, что вирмейкер всячески старается скрыть его содержимое.

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

Все эти варианты кода при определенных условиях можно просто скопировать в память и сделать 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) для работающего с методами защиты исполняемого кода – это настольные книжки.

Анатомия детектора

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

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

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

Сразу хочется просто взять пачку опкодов (68 2F 2F 73 68 68 2F 62 69 6E 8B DC B0 11 CD 80) и поискать эту байтовую строку в файле. Если нашли – попался, гад. Но, увы, оказывается эта же пачка байт встречается и в других файлах (ну мало ли кто вызывает командный интерпретатор), да еще и таких строк для поиска «стотыщ», если искать каждую, то никакая оптимизация не поможет. Единственный, быстрый и правильный способ проверить наличие такой строки в файле – это проверить ее существование по ФИКСИРОВАННОМУ смещению. Откуда его взять?

Ура, вот наш первый антивирус. Он достаточно крут, так как при помощи достаточно полной базы сигнатур, нормально подобранных флагов и хорошей оптимизации этот детектор способен очень быстро ловить 95% всяких зараз (подавляющее большинство современного malware это просто исполняемые файлы, без всякой способности к мутации). Далее начинается игра «кто быстрее обновит базы сигнатур» и «кому раньше пришлют новый экземпляр какой-нибудь гадости».

Сбор и каталогизация этой «гадости» является задачей весьма нетривиальной, но совершенно необходимой для качественного тестирования детектора. Сбор эталонной базы исполняемых файлов задача непростая: попробуйте найти все экземпляры зараженных файлов (для сложных случаев в нескольких экземплярах), каталогизировать их, перемешать с «чистыми» файлами и регулярно гонять по ним детектор с целью выявления ошибок детектирования. Такая база собирается годами, и является очень ценным активом антивирусных компаний. Возможно, я ошибаюсь, и её реально достать (всякие сервисы online-проверок на вирусы вполне в состоянии предоставить некоторый её аналог), но, когда я занимался этим вопросом, ничего похожего достать было нельзя (по крайней мере, под Linux).

Эвристический анализатор

Межвидовое взаимодействие и эволюция

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

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

Параллельно с развитием вирусных движков и противостоящих им детекторов активно развивались коммерческие защиты исполняемых файлов. Появилось огромное количество небольших коммерческих программ, и разработчикам нужны были движки, позволяющие взять EXE-файл и «завернуть» его в некоторый «конверт», который умеет защищенным образом генерировать валидный серийный номер. А кто у нас умеет скрывать исполняемый код, и внедрять его в исполняемые файлы без потери работоспособности? Правильно, те самые разработчики из «смежной области». Поэтому написание хорошего полиморфного вируса и навесной защиты исполняемого файла – это очень похожие задачи, с использованием одних и тех же алгоритмов и инструментов. Так же схожи и процесс анализа вирусов и создания сигнатур и взлом коммерческого ПО. В обоих случаях надо добраться до истинного кода и либо создать сигнатуру, либо достать из него алгоритм генерации серийного номера.

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

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

Источник

Компьютерные вирусы и вредоносное ПО: факты и часто задаваемые вопросы

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

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

Краткий обзор

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

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

1. Вирусы

2. Черви

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

3. Рекламное ПО

4. Шпионское ПО

5. Программы-вымогатели

Программы-вымогатели заражают ваш компьютер, затем шифруют конфиденциальные данные, например, личные документы или фотографии, и требуют выкуп за их расшифровку. Если вы отказываетесь платить, данные удаляются. Некоторые типы программ-вымогателей могут полностью заблокировать доступ к вашему компьютеру. Они могут выдавать свои действия за работу правоохранительных органов и обвинить вас в каких-либо противоправных поступках. В июне 2015 года в Центр приёма жалоб на мошенничество в Интернете при ФБР обратились пользователи, сообщившие о финансовых потерях на общую сумму 18 000 000 долларов в результате деятельности вируса-вымогателя CryptoWall.

6. Боты

7. Руткиты

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

8. Троянские программы

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

9. Баги

Мифы и факты

Существует ряд распространенных мифов, связанных с компьютерными вирусами:

Между тем, рост количества устройств взаимодействующих друг с другом в Интернете Вещей (IoT), открывает дополнительные интересные возможности: что если зараженный автомобиль съедет с дороги, или зараженная «умная» печь продолжит нагреваться, пока не случится превышение нормальной нагрузки? Вредоносного ПО будущего может сделать такой физический ущерб реальностью.

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

Tweet: Как правило, вредоносное ПО не оставляет следов, и ваша система не будет показывать каких-либо признаков заражения. Твитни это!

Стандартные методы заражения

Итак, как же происходит заражение компьютерными вирусами или вредоносными программами? Существует несколько стандартных способов. Это ссылки на вредоносные сайты в электронной почте или сообщениях в социальных сетях, посещение зараженного сайта (известного как drive-by загрузка) и использование зараженного USB-накопителя на вашем компьютере. Уязвимости операционной системы и приложений позволяют злоумышленникам устанавливать вредоносное ПО на компьютеры. Поэтому для снижения риска заражения очень важно устанавливать обновления для систем безопасности, как только они становятся доступными.

Признаки заражения

Другие полезные статьи и ссылки по теме «Компьютерные вирусы и вредоносное ПО»

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *