54

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

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

5 ответов5

17

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

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

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

13

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

4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3

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

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

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

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

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .