Как стать автором
Обновить

Комментарии 43

да. лично я слабо представлял, как работает антивирус
а что понимается под «список вирусов, которым мы доверяем (также не наносят вреда системе)»?
kms, trainer наверное
Есть Whitelist, а есть TrsutedBlackList. Это имелось ввиду. Первый белый список пользователя, а второй список доверительных инфекций, которые также false-positive, но задаются компанией разработчиком.
то есть всякие тесты вроде EICAR или сюда входит и всякое разное ПО вроде кейгенов, трейнеров, кряков и прочего?
Вы не правильно понимаете назначение EICAR. На файлы EICAR любой антивирус должен ругаться, но при этом файл не содержит зловредного функционала! Это просто пустышка.
Пользователю часто надо понять как ругается на антивирус в целях настройки антивирусного решения.
Говоря о листах nrcpp говорит о способе благодаря которому пользователь может сказать, что файл чистый! К примеру вы скачали кейген и хотите воспользоваться, но антивирус удаляет. Вопрос: как быть? Ответ: Перенести ответственность за действия файла на самого пользователя!
может быть я неправильно выразился, но мне лично был интересен вопрос как в этот список попадают те или иные программы. вопрос не к вам, а автору топика, но…
к примеру, есть некая программа которая ведёт себя вирусоподобно — ставится втихаря не всегда очевидно для пользователя, добавляет панельку в IE, прописывается в куче мест, висит в памяти несколькими процессами, которые мониторят друг друга на наличие, меняет обратно настройки изменённые пользователем и т.д. Антивирус видя такое непотребство выносит вердикт — казнить, но поскольку программа идёт именитого разработчика, и в общем то вирусом по сути не является, то её заранее вносят в белый список, давя тем самым справедливое возмущение антивируса по этому поводу на корю. проще говоря — есть ли у антивирусов «предоплаченые» места в белом листе?
> мне лично был интересен вопрос как в этот список попадают те или иные программы.
Касательно белого списка — он определяется пользователем. Так реализовано у нас. Например вы знаете, что кейгены и кряки — это точно не вирусы у вас. Выделяете их в окне обнаружений, и добавляете самостоятельно.
Если это доверительный черный список — в нем хранятся сигнатуры файлов, которые не являются вирусами, но случайны образом выявляемые как зловреды. Такой список поставляется из каробки, и задается производителем. Наиболее вероятно, что сигнатура в базе и в черном списке совпадает. Или если это обнаружение по шаблону, то частично совпадает. Это может быть системный файл, или любая другая программа, случайным образом попавшая в базу сигнатур…
По поводу «предоплаченных» мест в белом листе, то тут скорее антивирусная компания должна мониторить, какие из известных программ не наказывать. False positive к тому же mail.ru или yandex.bar, может стоит места в рейтинге vb100. Поэтому эти продукты, не рассматриваются как зловреды.
>>«предоплаченные»
Такого в антивирусной индустрии не приветствуется и смысла в этом нет никакого. Если файл ведет себя как вирус, то возможны ситуации по детектированию и следовательно удалению:
1) Спросить пользователя, если выбран «интерактивный» режим
2) Файл уже детектед и пришло письмо от производителя этого файла. к примеру этот файл в составе какого-либо продукта какой-нить компании. В этом письме компания четко обосновывает что и для чего делает этот файл и почему его не следует детектить. Если аверы принимают решение, что обоснование корректное, то файл заносят в white-list или же дают «щадящее» название.
Ну, объяснил так объяснил! Список вирусов, которым мы доверяем — это список доверительных инфекций. Спасибо! Стало яснее :)
Статья капитанская. Говоришь — сканер изнутри, на самом же деле написал обзор основных функций среднестатистической авирской поделки.
А что бы вы хотели? Фрагменты кода?
Код ни к чему, но желательно больше технических сведений. Особенно интересна работа эмулятора. Я так понимаю, эмулятор умеет лишь небольшое подмножество API, так что ничего не стоит написать код, с которым эмулятор не справится. Как оно поведёт себя в таком случае? Или вирь начнёт обнаруживаться только когда авиры подрпавят эмулятор?
Спасибо за дельные замечания. Учту. Статья вводная, опыта у меня всего год, как доберусь до внутренностей эмулятора — отпишу).
По ссылке тема удалена(
Вы точно пишете сами антивирус? По-моему всем известно что многие форумы не показывают свои темы не зарегистрированным на их ресурсе личностям. Другими словами вам надо зарегистрироваться и после этого войти на этот форум.
Все что Вы изложили уже давно известно и давным давно описано. К примеру статика в статье от 2003 года, про эмуляторы статья от 2004 года и даже статья об уязвимостях в эмулях. Более того то что Вы пытались описать обзор, который уже был написан в статьи от 2004. Да там некоторых деталей не указано. Но Вам можно было упростить себе задачу сославшись на известное и дописать то чего нету в других источниках.

Ваши ошибки, на мой взгляд, может и ошибаюсь:
1) Говорить термином «exe-шник» не стоит. Это может натолкнуть новичка на мысль что анализируется только файл с расширением "*.exe", а это не так!
2) Вы забыли указать о доп. действиях с анализируемым файлом. К примеру современные антивирусы после распаковки и вынесения вердикта по файлу, также выдирают все возможные строки среди которых ищут url-ссылки, а по ссылкам скачать и снова проанализить, как вывод если файл чист а по ссылке зловред, значит это вирус и шлем файл экспертам почему мы его не детектим. Также в файле ищутся другие возможные исполнимые файлы, к примеру в ресурса или оверлее.
С долей копипаста в виде внезапных переносов строк после знаков препинания
Согласен, статья бесполезная, куча воды ни о чем. Весь текст о том, что трава зеленая.
1) Сигнатуры бывают основаны не только на хешах. Часто за сигнатуру берутся определенные байты (или маски) с определёнными смещениями. Например: B8DCFB5E00???B8*B201
Кроме статических, есть поведенческие сигнатуры — обычно, наборы вызовов определенных API с определёнными параметрами.

2) Упакованные файлы распаковываются эмулятором. Без него антивирус практически бессилен.

Изложено очень поверхностно. Я ожидал увидеть хотя бы фрагменты исходного кода.
Фрагментов же много, например чего?
Эмулятор. Защита юзермодных процессов из ядра. Поиск нетривиальных руткитов и механизмы, позволяющие нормально устанавливать ваш продукт на заражённую машину и т.д.
>>2) Упакованные файлы распаковываются эмулятором. Без него антивирус практически бессилен.
Не только. Статические распаковщики тоже весьма популярны. Эмулятор может слишком долго анпачить, выход из этого только один: бенчмарки и только потом решение как нужно распаковывать.
> зашифрованные exe-пакером
Помоему пакеры ниразу не шифруют, а кодируют информацию. Это разные вещи
На хабре и md5 шифрует. И это печально.
&gt Также слабым местом хэш-скана является скорость проверки.

В каком же простите месте? Самым слабым местом всегда является скорость считывания с диска, а посчитать мд5 хеш (хотя что-то слабо верится что именно по хешу сравнение, а не по шаблонам) и найти в списке сигнатур (пусть даже среди нескольких миллионов) хеш-поиском (да хоть бинарным) — вопрос нескольких долей миллисекунды.
В сравнении с эвристическим поиском. Это и подразумевалось, считывание + сравнение.
Прощу прощения за дотошность, но в ряде случаев: сканирующий движок != сканер.
Например, в продуктах Dr.Web сканер (как GUI, так и консольная версия) используют при сканировании антивирусный движок, также как его используют другие компоненты Dr.Web — файловый монитор, веб-монитор и др.
> Для локализации выявления вредоноса, хэш может вычисляться только для exe-файлов на основе PE-заголовка.

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

Не понял. Считаем хэш файла и ищем егов базе? А смысл?

Или для каждого файла делаем «окно» совпадающее по длине с сигнатурами и проходим этим окном по файлу? Грубо говоря окно 1 Кбайт, файл 1 Мегабайт — вычисляем ~1 млн. хэшей и ищем в базе среди вирусов с сигнатурой в 1 Кбайт, потом также для сигнатур всех остальных длин. То есть каждый (почти) байт мегабайтного файла хэшируется порядка миллиард раз если считать что разных по длине сигнатур порядка тысячи?
Да, да, мне тоже очень интересно! Каким образом хеш поможет найти вирус? При условии что вирусы разной длины и могут находиться в различных секциях файла? Или от каждого файла все же считается 5 млн хешей для каждого вируса в отдельности для соответствующей этому уникальному вирусу области?
На практике это реализовано так: определяем что файл exe-шник. Первые два байта — 'MZ'. Далее считываем его PE-секции, и из последней вычисляется MD5-хэш, который уникален. А в базе сигнатур уже хранятся хэши этих самих вирусов. Если файл не зашифрован, вирус не полиморфен итд., то хэши совпадают с высокой долей вероятности.
То есть вирусы просто дописывают свое тело к концу файла, если в подробности не вдаваться? Как-то недальновидно по-моему.
К концу PE-секции исполняемого файла. У разных авиров по разному вычисляется хэш. Другое дело, что сейчас более популярно заражение через хак плагинов браузера, таких как Flash, Java, QuickTime. Только если они не выполняются в песочнице, и та может тоже содержать уязвимости.
Ну суть в том, что именно дописываются, а не вырезают кусок и не вставляют себя на его место (возможно дописывая кусок в конец, чтоб раньше времени себя не демаскировать неработающей программой).
Да, послебний вопрос интересен (алгоритм выбора куска для хэша). Так, в принципе, о многом догадывался, а то чего не понимал так и не написано. По сути тема требует подробного раскрытия, можно и без кода но описание алгоритма требует большей детализации.
>>Да, послебний вопрос интересен (алгоритм выбора куска для хэша).
Поищите: «AVPBase_parser.rar», по оригинальнойссылке от автора, файл уже недоступен. Более того не прошло и года как выкладывали сорцы Каспера! ;)
Ответил выше. MD5-хэш вычисляется из PE-секции.
Такой вид сканирования позволяет определить вид атаки с высокой долей вероятности, без ложных срабатываний

Достаточно погуглить fasm virus false positive чтобы обнаружить множество примеров «отсутствия» ложных срабатываний сигнатурного сканирования. У моего друга, так вообще все скомпилированные fasm'ом программы определяются как вирусы. А уж случаев когда сигнатуру просто ставят на распространенный пакер не перечесть.
«Обычно сигнатурой антивируса является MD5-хэш (16 байт) сгенерированный на основе тела известного вируса.» — позапрошлый век.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации