Почему ошибаются антивирусы

Почему на внешне безобидные программы ругаются антивирусы? Стоит ли доверять на 100% антивирусным программам? Как определяются новые вредоносные программы? Что делать, если происходят ложные срабатывания антивируса? На эти и другие вопросы вы найдёте ответ в данной статье.

  1. Раньше деревья были выше и пиво вкуснее…
  2. Наши дни
  3. Свято место пусто не бывает
  4. Коммунизм почему-то всё равно не наступил
  5. Эвристические технологии
  6. Вопрос доверия к разработчику
  7. Доверяй, но проверяй
  8. А что говорят другие антивирусы?
  9. Антивирусы против систем защиты программ
  10. Как сказать разработчику антивируса, что файл не заражен вирусом?
  11. Итог

Раньше деревья были выше и пиво вкуснее…


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

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

Нужно было загрузить с "чистой" дискеты (это означало, что загрузочный сектор диска не содержал BOOT-вирусов) и запустить какой-нибудь антивирусный сканер: AidsTest или Dr.WEB. И после этого запускать сканирование или лечение. Обычно, программа-сканер работала достаточно быстро даже на маломощных компьютерах и, как правило, при нахождении вирусов даже "лечила" программу, которая была инфицирована вредоносным кодом.

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

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

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


Наши дни


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

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

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

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

Апологеты Linux могут тут злорадно улыбнуться, дескать, это в ваших Windows такое творится, у нас же вирусов вообще нет. Не хочу разводить холивары (Holy Wars), но могу возразить:

  1. Windows можно настроить правильным образом. Но тогда перестают работать либо работают плохо огромное количество программ, которые были разработаны для более старых версий Windows. И эти программы работают, так как Microsoft старается выдерживать совместимость с большинством старого ПО.
  2. Распространённость системы Windows в десятки, если не в сотни раз выше, чем Linux. Соответственно, и вредоносного ПО для неё создаётся больше всего. Потому что это массовая операционная система. Писать компьютерный вирус, который будет поражать 2% компьютеров, смысла не имеет.

Свято место пусто не бывает


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

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

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

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


Коммунизм почему-то всё равно не наступил


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

Что такое обновления антивирусных баз?

Если говорить простым языком — это новые способы определения новых компьютерных вирусов. То есть, злой и нехороший программист Василий Пупкин взял и написал новый вирус. И нашёл способ запустить его в Интернет, заражая компьютеры других пользователей. Самое интересное то, что этот вирус не найдёт ни один, даже самый крутой и дорогой антивирус!

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

Абсолютно новые вирусы плохо определяют либо не определяют вообще все антивирусы

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

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

Таких гарантий просто не существует.

Ситуация патовая, впрочем, разработчики антивирусов её стараются решать.


Эвристические технологии


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

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

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

Пользователи же, в силу природной лени, недостаточной компьютерной грамотности, незнания основ английского языка (нужное подчеркнуть) - видят только красную табличку антивируса, в которой он сомневается, что ему делать, и просит пользователя принять (за него!) соломоново решение. Ответственность антивирус на себя брать не хочет. Мало ли, а вдруг — промах? (вероятность же). И, не читая, отправляют программу на расстрел. Антивирус же сказал, что это вирус! (а диалоговых окон мы не читаем, мы "Ок" нажимать обучены).

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

В худшем случае — софт просто удаляют, бесконечно доверяя антивирусу.

Доходит до курьёзов. Мы разрабатываем корпоративный мессенджер MyChat для безопасной связи сотрудников самых разных компаний через Интернет. Распространяем его бесплатную версию. Берём новую версию и упаковываем главный исполняемый файл mcclient.exe известным упаковщиком UPX. Для экономии размера. Антивирусы немедленно "сходят с ума", крича и потенциально вредоносном программном коде. Распаковываем обратно — всё прекрасно, все антивирусы молчат, как рыбы.


Вопрос доверия к разработчику


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

Однако, программисты, которые писали эту программу, могли вложить в неё не только полезные функции, но и вредоносные. Любые. Функции для воровства личных данных, уничтожения важных документов, получения паролей и так далее, насколько хватит фантазии.
Формально — да. На самом деле — конечно нет. Почему? Да потому что если будет зафиксирован факт деструктивных действий или воровства личных данных — доверие к разработчику программы у людей пропадёт. Его программу удалят и о данном инциденте узнает весь мир. Благо, Интернет распространён очень сильно.

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


Доверяй, но проверяй


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

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

Если в дистрибутиве изменился хотя бы один байт — контрольная сумма будет другая.

Итак, если у вас есть хоть малейшие сомнения по поводу идентичности дистрибутивов — сравните контрольные суммы, это лучший способ.

 

А что говорят другие антивирусы?


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

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

К счастью, устанавливать и покупать все известные антивирусы нет нужды. Любой файл, размером до 20 мегабайт, можно проверить через Интернет, используя бесплатный сервис www.virustotal.com Сайт проверяет любые файлы большим количеством антивирусов, используя самые последние обновления сигнатурных баз.

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

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

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


Антивирусы против систем защиты программ


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

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

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

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

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

В идеале, если система защиты достаточно хороша, анализ её отладчиком становится невозможен. И тут мы получаем ситуацию, когда антивирус, не в силах одолеть систему защиты, просто детектирует разработчика этой защиты и пишет, скажем "ThemidaPacked". И всё. Умываем руки. Формально, там может быть и полезный и вредоносный код, но антивирус этого определить не может. То есть, встаёт опять вопрос доверия к разработчику программы.

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

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

А значит, защищать коммерческое ПО серьёзной системой защиты, чтобы никто не узнал, что внутри есть вирус — бессмысленно.


Как сказать разработчику антивируса, что файл не заражен вирусом?


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

 

Если у вас есть ещё адреса производителей антивирусного ПО или какие-то из вышеперечисленных адресов недействительны — пожалуйста, напишите на Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , мы постараемся исправить это.


Итог


Итак, обобщив вышесказанное в свете коммерческого программного обеспечения, стоит сказать, что:

  1. Используйте последние версии программного обеспечения.
  2. Не следует удалять нужную программу только из-за того, что эвристик антивируса решил, что там может быть вирус. Включите голову и проанализируйте ситуацию.
  3. Если вы уверены, что в используемом программном обеспечении нет вирусов, но антивирус упорно не желает этого признавать, поставьте программу в исключения. Благо, практически все антивирусы позволяют это делать.
  4. Ну и, наконец, напишите компании-разработчику антивируса о факте ложного срабатывания. Укажите все подробности, приложите копии экранов. Этим вы не только поможете себе лично, но, возможно, и другим людям, у которых тот же антивирус, точно так же по ошибке посчитал нужную программу — вредоносной.
Служба поддержки