Кто такие программные вирусы

Обновлено: 19.04.2024


Какими бывают вирусы?

Worms или черви

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

Trojans или троянцы

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

Rootkits или маскировщики

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

Zombies или зомби

Spyware или шпионы

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


Adware или рекламные вирусы

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

Winlocks или блокировщики

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

Bootkits или загрузочные вирусы

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

Последние угрозы

Современные вирусы пишутся уже не только для ПК, но и для устройств под управлением Android, iOS и других мобильных ОС. Однако принцип их действия всё тот же, и в целом они укладываются в приведённую выше классификацию.

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

Также было организовано несколько кибератак на медицинские учреждения — одни злоумышленники пытались парализовать работу больниц, а другие (разработчики программы-вымогателя Maze) попытались заработать на шантаже, пообещав в случае невыполнения материальных требований слить данные о пациентах одного исследовательского центра в сеть. Денег вымогатели не получили, поэтому данные всех бывших пациентов были обнародованы.

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

Легенды со знаком минус

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

Одним из самых долгоиграющих вирусов, который распространяется до сих пор, является буткит Backdoor.Win32.Sinowal. Этот загрузочный вирус прописывается в систему и берёт управление ей на себя, причём на уровне секторов диска. Этот вирус похищает даже ключи шифрования и отправляет разработчику личные данные, а также данные от аккаунтов пользователей. Подсчитать точный ущерб от него пока не представляется возможным, однако учитывая, что несколько лет антивирусные программы были не в состоянии даже обнаружить этого вредителя (Backdoor.Win32.Sinowal был разработан в 2009 году), то потери пользователей могут исчисляться многими миллионами и даже миллиардами долларов.

Король электронного спама Festi, запущенный в 2009 году, ежедневно рассылал около 2,5 миллиардов имейлов с 250 тысяч айпи, то есть генерировал 25% всего мирового спама. Чтобы затруднить распознавание, разработчики снабдили свою вредоносную программку шифрованием, так что сигнатурный поиск антивирусными программами становится бесполезным и выручить может только глубокое сканирование. Распространяется этот вирус через установку платного кода (PPI), когда вебмастер получает деньги за то, что кто-то скачал файл с его сайта.

Настоящим кошмаром для банкиров стал вирус Carbanak, который в 2014 году нанёс ущерб российским, американским, швейцарским, голландским, японским и украинским банкам на общую сумму 1 миллиард долларов. Carbanak действовал медленно, но уверенно, сначала собирая данные рядовых сотрудников банков, к которым попадал через вложения в электронных письмах, а затем внедряясь в верха и выводя крупные суммы. От проникновения в систему банка до успешного вывода могло пройти от 2 до 4 месяцев.

Как не заразить свой компьютер вирусами?

Переходим к рубрике Капитана очевидность :)

Прежде всего нужно позаботиться о наличии надёжного файервола, антивирусной и антишпионской программ (последние более эффективны при обнаружении и удалении вирусов категорий Spyware и Adware). Также существуют встроенные антивирусные решения для браузеров, ну а о том, что антивирусник должен работать с защитой в режиме реального времени, говорить, думаем, излишне.

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

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

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


Безвредные вирусы — такое тоже бывает

Были в истории компьютерных вирусов и примеры забавных безвредных программ, которые технически являлись вирусами, но никакого ущерба пользователям при этом не наносили. Так, ещё в 1997 году был разработан вирус HPS, который был ориентирован на временное изменение графические bmp-файлов, которые могли отображаться в перевёрнутом или отражённом виде, что, правда, могло доставлять неудобства пользователям старых версий Windows, ведь они были построены с использованием как раз bmp-графики. Впрочем, никакого реального ущерба HPS не наносил, поэтому его с полным основанием можно назвать безвредным шуточным вирусом.

Червяк Welchia претендует на звание самого полезного в истории: эта появившаяся в 2003 году программка после автоматической загрузки через сеть проверяла наличие заражения ПК опасным сетевым червём (программа была написана для устранения червя Blaster w32.blaster.worm, другое название — LoveSan), удаляла его и также в авторежиме пыталась установить обновления для Windows, закрывающие сетевые уязвимости. После успешного выполнения всех этих действий Welchia… самоудалялся. Правда, с Welchia тоже не всё было гладко — дело в том, что после установки обновлений Windows червь отдавал команду на принудительную перезагрузку ПК. А если в это время пользователь работал над важным проектом и не успел сохранить файл? Кроме того, устраняя одни уязвимости, Welchia добавлял другие — например, оставлял открытыми некоторые порты, которые вполне могли использоваться затем для сетевых атак.



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

Большинство систем заражаются вирусами из-за ошибок в программах, уязвимости операционных систем и плохой защиты. По данным AV-Test, независимой организации, занимающейся анализом и оценкой антивирусного и защитного программного обеспечения, каждый день обнаруживается около 560 000 новых вредоносных программ.

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

1. Вирус загрузочного сектора


Примеры: Form, Disk Killer, Stone virus, Polyboot.B
Может поражать: Любой файл после попадания в основную память

Вирус Boot Sector заражает главную загрузочную запись (MBR) устройства хранения данных. Любой носитель, независимо от того, является он загрузочным или нет, может вызвать этот вирус. Эти вирусы внедряют свой код в таблицу разделов жесткого диска. После перезагрузки компьютера он попадает в основную память.

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

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

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

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

2. Вирус прямого действия

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

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

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

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

3. Вирус перезаписи

Примеры: Grog.377, Grog.202/456, Way, Loveletter.
Может поражать: Любой файл

Вирусы перезаписи очень опасны. Они поражают широкий спектр операционных систем, включая Windows, DOS, Macintosh и Linux. Они просто удаляют данные (частично или полностью) и заменяют оригинальный код своим собственным.

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

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

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

Защита: Единственный способ избавиться от этого вируса - удалить все зараженные файлы, поэтому лучше постоянно обновлять свою антивирусную программу, особенно если вы используете Windows.

4. Скрипт-вирусы

Примеры: DDoS, JS.fornight

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

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

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

Вирусы веб-скриптов в основном нацелены на сайты социальных сетей. Некоторые из них достаточно мощны, чтобы рассылать спам по электронной почте и инициировать опасные атаки, такие как DDoS-атаки, чтобы сделать сервер неотзывчивым или до предела медленным.

Их можно разделить на две группы:

  • Постоянные вирусы веб-скриптов: могут выдавать себя за пользователя и наносить большой ущерб.
  • Непостоянный вирус веб-скриптинга: атакует пользователя незаметно. Он работает в фоновом режиме и остается навсегда скрытым для пользователя.

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

5. Каталоговый вирус

Пример: Dir-2
Может поражать: Всю программу в каталоге.

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

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

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

Защита: Установите антивирус, чтобы переместить ошибочно перемещенные файлы.

6. Полиморфный вирус

Примеры: Whale, Simile, SMEG engine, UPolyX.
Может поражать: Любой файл

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

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

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

Защита: Установите современные антивирусные инструменты, оснащенные новейшими технологиями безопасности (такими как алгоритмы машинного обучения и аналитика на основе поведения) для обнаружения угроз

7. Резидентный вирус памяти

Примеры: Randex, Meve, CMJ
Может влиять на: Текущие файлы на компьютере, а также файлы, которые копируются или переименовываются.

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

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

Существует два типа вирусов, живущих в памяти:

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

Защита: Сильные антивирусные инструменты могут удалить вирус из памяти. Они могут поставляться в виде патча для ОС или обновления существующего антивирусного программного обеспечения.

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

8. Макровирус


Примеры: Bablas, Concept и вирус Melissa
Может поражать: файлы .mdb, .PPS, .Doc, .XLs.

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

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

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

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

9. Вирус-компаньон

Примеры: Stator, Terrax.1096
Может поражать: Все файлы .exe

В большинстве случаев вирусы-компаньоны требуют вмешательства человека для дальнейшего заражения машины. После появления Windows XP, которая больше не использует интерфейс MS-DOS, у таких вирусов стало меньше путей для распространения.

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

10. Многосторонний вирус

Примеры: Ghostball, Invader.
Может повлиять на: файлы и загрузочный сектор.

Многосторонний вирус заражает и распространяется разными способами в зависимости от операционной системы. Обычно он остается в памяти и заражает жесткий диск.

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

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

Защита: Очищайте загрузочный сектор и весь диск перед сохранением новых данных. Не открывайте вложения из ненадежных интернет-источников и установите надежный и проверенный антивирусный инструмент.

11. FAT-вирус

Пример: Вирус ссылок
Может поражать: Любой файл

FAT расшифровывается как file allocation table, это раздел диска, который используется для хранения информации, такой как расположение всех файлов, общий объем памяти, доступное пространство, использованное пространство и т.д.

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

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

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

Защита: Избегайте загрузки файлов из ненадежных источников, особенно тех, которые определены браузером или поисковой системой как "атакующие/небезопасные сайты". Используйте надежное антивирусное программное обеспечение.

Другие вредоносные программы, которые не являются вирусами, но не менее опасны

12. Троянский конь

Примеры: ProRat, ZeroAccess, Beast, Netbus, Zeus

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

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

Защита: Избегайте открытия неизвестных файлов (особенно с расширениями .exe, .bat и .vbs), атакованных по электронной почте. Используйте надежное антивирусное программное обеспечение высокого класса и регулярно обновляйте его.

13. Червь


Пример: Code red, ILOVEYOU, Morris, Nimda, Sober, WANK.

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

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

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

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

14. Логические бомбы

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

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

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

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

Часто задаваемые вопросы

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

Кто создал первый вирус для ПК?

В 1986 году Амджад Фарук Алви и Басит Фарук Алви написали вирус для загрузочного сектора под названием "Brain", чтобы предотвратить несанкционированное копирование созданного ими программного обеспечения. 'Brain' считается первым компьютерным вирусом для IBM PC и совместимых компьютеров.

Первым вирусом, специально нацеленным на Microsoft Windows, был WinVir. Он был обнаружен в 1992 году. Вирус не содержал никаких вызовов Windows API. Вместо этого он использовал API DOS.

Какая самая дорогая кибератака всех времен?

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

В 2004 году почти четвертая часть всех электронных писем была заражена MyDoom. Ущерб от этого вируса составил более 38 миллиардов.

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

Так что же такой вирус?

компьютерные вирусы

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

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

1. Антивирус — защита от всех вирусов

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

2. Вирусы распространяются с любыми файлами

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

3. Если вы заразились вирусом — ПК под серьезной угрозой

Это тоже не так. Большинство вирусов вообще ничего не делают. Им достаточно того, что они просто заражают программы. Но в любом случае, обратить на это внимание стоит: по крайней мере, проверить весь компьютер антивирусом с последней базой. Если заразились одним — то почему не могли вторым?!

4. Не пользоваться почтой — гарантия безопасности

Боюсь, это не поможет. Бывает такое, что по почте вам приходят письма с незнакомых адресов. Лучше всего просто не открывать их, сразу удаляя и очищая корзину. Обычно вирус идет в письме в качестве вложения, запустив которое, ваш ПК будет заражен. Защитится достаточно легко: не открывать письма от незнакомцев… Так же не лишним будет настроить антиспам-фильтры.

5. Если вы скопировали зараженный файл — вы заразились

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

Виды компьютерных вирусов

Самые первые вирусы (история)

История эта началась примерно в 60-70 годах в некоторых лабораториях США. На ЭВМ, помимо обычных программ, были еще и те, которые работали сами по себе, никем не управляемые. И все бы ничего, если бы они сильно не нагружали ЭВМ и не расходовали ресурсы попусту.

Brain-virus

В 1985 году появился первый опасный (и главное быстро распространяемый) компьютерный вирус Brain. Хотя, написан он был из благих намерений — наказать пиратов, незаконно копирующих программы. Вирус срабатывал только на нелегальных копиях софта.

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

Программные вирусы

Вслед за вирусами, прикреплявшимися в тело программы, стали появляться новые виды — в виде отдельной программы. Но, основная сложность в том, как заставить пользователя запустить такую зловредную программу? Оказывается, очень просто! Достаточно назвать ее какой-нибудь ломалкой для программы и выложить в сеть. Многие просто скачают, и несмотря на все предупреждения антивируса (если такой имеется) — все равно запустят…

virus почта

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

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

Основная борьба с такими вирусами: регулярное обновление ОС Windows, установка антивируса. Так же отказаться от запуска любых программ, полученных из сомнительных источников.

Макровирусы

Многие пользователи, наверное, и не подозревают, что кроме исполняемых файлов exe или com, вполне реальную угрозу могут нести и обычные файлы из Microsoft Word или Excel. Как такое возможно? Просто в эти редакторы в свое время был встроен язык программирования VBA, для того, чтобы можно было дописывать макросы в качестве дополнения к документам. Тем самым, если заменить их на свой макрос — вполне может получиться вирус…

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

Скриптовые вирусы

Макровирусы, как определенный вид, входят в группу скриптовых вирусов. Суть здесь в том, что не только Microsoft Office использует в своих продуктах скрипты, но и другие программные пакеты их содержат. Например, Media Player, Internet Explorer.

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

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

Локальный диск (C)_2013-11-16_20-25-39

Параметры папок_2013-11-16_20-25-54

Параметры папок_2013-11-16_20-25-59

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

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

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

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

Чтобы не стать жертвой троянов, во-первых, не качайте никаких файлов, вроде взлом интернета, взлом каких то программ и т.д. Во-вторых, помимо антивируса, понадобиться еще специальная программа, например: The Cleaner, Trojan Remover, AntiViral Toolkit Pro и др. В-третьих, не лишним будет установка фаервола (программа, контролирующая доступ в интернет других приложений), с ручной настройкой, где все подозрительные и неизвестные процессы будут блокироваться вами. Если троянская программа не получит выхода в сеть — пол дела уже сделано, по крайней мере, ваши пароли никуда не уплывут…

Подводя итог, хочется сказать, что все принятые меры и рекомендации будут бесполезны, если пользователь сам из любопытства будет запускать файлы, отключать антивирусные программы и пр. Парадокс в том и состоит, что заражение вирусами происходит в 90% случаев по вине самого владельца ПК. Ну а чтобы не стать жертвой тех 10% — достаточно иногда производить резервное сохранение файлов. Тогда можно быть уверенным практически на все 100, что все будет ОК!


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

Определение вируса по Коэну

В своей книге 1985 года и диссертации 1986 года Коэн дал уже строгое определение вируса, в котором сконцентрировался на его единственном свойстве — рекурсивной репликации. Определение было дано только для абстрактной модели, основанной на машине Тьюринга (заметим, что реальный компьютер обычно имеет меньшую предсказуемость, чем его идеальная модель). Никакие другие свойства, кроме рекурсивной репликации, в модели Коэна не рассматриваются. То есть это хорошая модель частного случая рекурсивно воспроизводимых алгоритмов, но плохая модель реальных компьютерных вирусов — особенно с учетом наблюдаемого многообразия их типов и необязательности строгой рекурсии для распространения.

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

Но для машины Тьюринга (как доказал в 1936 году ее автор) невозможно предсказать будущее. Для произвольного кода непредсказуем результат его выполнения, т.е. последовательность состояний машинной ленты (памяти) на неограниченное число тактов вперед. Единственный способ выяснить, чем закончится выполнение этого кода — проверить на практике. Иными словами, чтобы выяснить, является ли изучаемый код вирусом, его надо запустить и посмотреть, что будет. С учетом неизвестности результата, в реальной системе это небезопасно. Кроме того, время ожидания выполнения кода может оказаться сколь угодно большим (бесконечным). А без информации о том, к чему приведет запуск кода, нельзя судить о том, является ли он вирусом.

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

Кроме неутешительного вывода о невозможности надежного распознавания вирусов в своей модели, Коэн доказал следующее:
a) к произвольному коду всегда можно подобрать такую машину, которая интерпретирует его как вирус; например, для какой-то машины вирусом будет код из одного байта — 42;
b) некоторые машины любой код интерпретируют как вирус;
c) некоторые машины никакой код не интерпретируют как вирус.

Определение вируса по Адлеману

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

Определение вируса по нарушению кода

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

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

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

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

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

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

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

Какое из определений вируса лучше?

Сравните подходы, используемые в различных моделях и определениях вируса.

Вирус — это:
a) соответствующая определенным критериям функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект;
b) любая функция, отображающая эталонный, незараженный объект на отличающийся от него зараженный объект.

Для распознавания вируса в проверяемом объекте нужно:
a) провести полное аналитическое или алгоритмическое изучение свойств и поведения системы, состоящей из проверяемого объекта и машины (среды);
b) определить местоположение проверяемого объекта в машине (среде).

Определение вируса основано на:
a) свойстве рекурсивной репликации;
b) методе сравнения образца с эталоном.

Более того: в реальном вирусе может не содержаться даже этой информации — в буквальном смысле! Вместо нее вирус, например, может включать в себя сколь угодно сложный криптоалгоритм, а ключом к этому алгоритму может служить произвольная комбинация объектов среды, способная появиться в ней в неопределенном будущем. Это означает, что до некоторого неизвестного момента, до выполнения средой некоторого неизвестного при анализе условия принципиальное отсутствие в коде вируса каких-либо связей с понятиями как репликации, так и рекурсии можно гарантировать с точностью математического доказательства. Но даже в этом случае вирус, слившийся в свойствах со средой и образовавший с ее элементами сложную, распределенную в пространстве и времени систему, сохраняет возможность размножения кода.

Таким образом, в современных больших информационных системах формализация и поиск признаков рекурсивной репликации в отдельных объектах представляются бесполезными даже с теоретической точки зрения. А рассматривать каждый объект в совокупности со всей средой — невозможно. Если в качестве входных данных для анализа единичного объекта требуется подстановка в абстрактную формулу полной информации о состоянии практически бесконечной (из-за огромного размера и перманентной изменчивости) среды — значит, выбран тупиковый путь. Ранее мы уже показали, что Интернет является единой автопрограммируемой средой, единой вычислительной системой, события в которой могут менять код в отдельно взятом системном блоке. Поэтому все эти события должны учитываться в формальном определении вируса, если оно основано на свойствах кода — как в абстрактной модели, так и на практике. И то, и другое исключено.

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

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

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

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

P.S. Конечно, возможны и другие определения, кроме приведенных в статье. Их можно поискать в Сети или создать самостоятельно. Главное, что надо при этом помнить: по нормам формальной логики грамотное определение должно позволять, как минимум, определить искомый объект в ряду других :)


Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного 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 всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.

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

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

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