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

54

Так что я недавно думал о вирусах и удивлялся, как именно сохраняются антивирусы? Если учесть, что кто-то, кто программировал несколько недель, мог взломать что-то, делающее неприятные, неприятные вещи с чьим-то ПК, одно только количество сделало бы простой список запрещающих хэшей, так как же это делают антивирусы? Контролируют ли они активность процессов и имеют ли правило 3 ударов для выполнения вирусоподобных действий? И если так, что мешает ему запускать совершенно безобидные вещи (например, я перемещаю файлы в \ system32)?

Я немного погуглил, но обычные места не особо помогли, и я не смог найти здесь дупла, поэтому подумал, что было бы неплохо спросить :)

Phoshi
источник
4
@ Джо, нет необходимости добавлять тег Windows. Антивирус работает практически одинаково в любой ОС. Кроме того, способ работы AV не субъективен.
Алекс
ой. Извините, я думал, что это может быть на окнах и субъективно. Я понимаю, что
Джо
6
Они приходят предустановленными, когда вы покупаете ноутбук, и продолжаете стонать в течение 60 дней, что вы должны зарегистрировать / оплатить их, пока вы, наконец, не вытащите их из своей системы. Как правило, их диалоговые окна являются модальными и самыми верхними, поэтому они могут эффективно блокировать вас от каких-либо действий, и они никогда не предлагают простой способ удаления.
Даниэль Даранас
поднять +1 за очень хороший вопрос
dag729
AV эвристика сложна, но не сможет обнаружить новые угрозы (или умные варианты существующих угроз). Эвристика часто дает ложные срабатывания на совершенно безобидном программном обеспечении / коде. Программное обеспечение AV полезно, но часто является опорой, давая пользователям ложное чувство безопасности. Я протестировал много известных вирусов на ( virustotal.com/en ), а топовые имена, такие как Symantec, McAfee и AVG, ничего не обнаруживают (хотя Kaspersky в целом работает хорошо). Лучше знать свою систему, смотреть, что вы делаете ... и иметь резервную копию!
AlainD

Ответы:

17

Эта статья 2002 года рассказывает о создании антивирусного движка.

В статье будут описаны основные идеи, концепции, компоненты и подходы, связанные с разработкой антивирусной программы с нуля с точки зрения разработчика / разработчика программного обеспечения. Он будет сосредоточен на основных элементах антивирусного ядра (далее - антивирусное ядро) и исключит такие аспекты, как графический пользовательский интерфейс, мониторы реального времени, драйверы файловой системы и плагины для некоторых прикладных программ, таких как Microsoft Exchange или Майкрософт офис. Хотя AV-движки, работающие / сканирующие для отдельных платформ (таких как Palm OS или EPOC / Symbian OS), могут быть спроектированы одинаково, эта статья будет сфокусирована на разработке многоплатформенных механизмов сканирования, которые намного сложнее.

Есть также статья об эвристических методах обнаружения инфекций. Это также интересное чтение.

Алекс
источник
+1 за эту статью по эвристике - очень интересно :)
Phoshi 20.10.09
Это то, что действительно стоит прочитать. Эвристики часть имеет важное значение :)
Алекс
У меня появилось новое уважение к антивирусам после прочтения этого, довольно умного материала!
Phoshi
Это невероятно сложные приложения. К сожалению, они превратили их в то, что многие люди, в том числе и я, терпеть не могут. Пользовательские, небрежные, не интуитивно понятные интерфейсы, функции, добавленные просто для того, чтобы добавить еще один пункт в список функций, раздутый. Это вещи, которые превратили их в кошмары. Вещи вращаются, хотя; лучший пример хорошего AV-решения - MSE.
Алекс
Это был материал по эвристике, который помог, извини Джо: P Хороший ответ, независимо от того :) :) @alex; Увы, я должен согласиться, но понимание сложностей ниже заставляет меня больше сочувствовать. Это сложная штука, и не было бы достаточно смысла, чтобы заинтересовать потенциального клиента, когда "Настраиваемый цветной графический интерфейс!" может :(
Фоши
13

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

Hirvox
источник
4

Из Как работает антивирус? (AntivirusWorld):

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

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

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

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

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

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

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

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

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

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

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

Проблемы, вызывающие озабоченность

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

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

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

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

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

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

(Мне нравится эта статья, и я просто копирую и вставляю из AntivirusWorld.)

Джо
источник
Спасибо :) Что касается словарного подхода, значит ли это, что если я скопирую код известного вируса и вставлю его в свое приложение, он будет обнаружен, но если я напишу что-то подобное, придется подождать подозрительного поведения? (Гипотетически, конечно)
Фоши
ДА .. это будет
Джо
Это имеет смысл, если вы не можете остановить создание вирусов, тогда остановка существующего кода - это очень хорошо (и, учитывая бесконечное количество времени, остановит все возможные вирусы - неплохо: P)
Phoshi
Вот что такое подпись. Часть вредоносного машинного кода, которая является общей для нескольких вирусов.
Алекс
Если AV сравнивает файл со словарем, скажем, 10 000 известных вирусов, то почему это так быстро? Почему каждый файл сканируется за миллисекунды ...
LantisGaius,
3

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

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

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

ИМХО, разумно относиться к вирусам как к части всей программной экосистемы, а не как к внешним злым «инопланетянам».

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

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

Однако вирусы MOST работают аналогичным образом, что позволяет вирус-сканеру различать их. Много разных вирусов используют одну и ту же уязвимость!

http://en.wikipedia.org/wiki/List_of_computer_viruses

ямка
источник