Я хотел бы, чтобы это не было скрыто от вас.
Хотя и в таком случае я бы ничего не выиграл.
Гамлет
В данном тексте мы попытаемся определиться, насколько можно доверять фразам из
рекламных слоганов антивирусных корпораций. Объектом исследования будут
эвристические анализаторы двух известнейших антивирусов:
- AVP
- Dr.Web
Начнём с того, что мы обобщим всю известную нам информацию об
эвристических анализаторах. В рекламах антивирусных программных пакетов обычно сообщается
примерно следующее: "наш антивирус ловит не только известные вирусы, заложенные
в базу, но и неизвестные вирусы при помощи эвристического анализатора".
Это единственная информация, которую фирмы по разработке антивирусного
программного обеспечения нам сообщают. Всё остальное охраняется как зеница ока
и является ноу-хау каждой фирмы в отдельности.
Как же работает кодоанализатор? Обычно кодоанализатор работает в паре с
эмулятором. Как это выглядит в простейшем случае? Скажем, мы имеем полиморфный
вирус состоящий из зашифрованного тела и расшифровщика. Кодоэмулятор эмулирует
работу данного вируса по одной инструкции, после этого кодоанализатор
подсчитывает контрольную сумму и сверяет её с той, которая хранится в базе.
Эмуляция будет продолжаться до тех пор, пока необходимая для подсчёта
контрольной суммы часть вируса не будет расшифрована. Если сигнатура совпала
- значит вирус идентифицирован, можно начинать лечить.
После краткого обзора пора заняться делом. Я провёл не сложный эксперимент, для
кго повторения вам понадобиться:
- TASM 5.0
- Тривиальный вирус. На вирус накладывается условие: он не должен присутствовать в базах ни
dr.Web'a, ни AVP. Вирус для эксперимента вы сможете обнаружить на
просторах Интернет (к примеру vx.netlux.org). Или написать сами ... - dr.Web и AVP
Многие почему-то думают, что за написание вирусов предусмотрено уголовное
наказание, но это не так. Да, действительно статья существует, но могут посадить
за распространение вирусов, а не их написание. Всё, что находиться на вашем
компьютере это ваша частная информация и она охраняется законом.
После всех подготовок мы ассемблируем и линкуем вирус. После этого мы должны
проверить на нём оба наших антивирусных продукта.
У меня AVP даже не пискнул и объявил, что с файлом всё хорошо, можешь запускать
его на здоровье. Мной были проведено еще несколько экспериментов по модификации
вируса, но эвристик в AVP так и не проснулся. Из этого делаем вывод
- эвристики либо нет вообще, либо она в таком зачаточном
состоянии, что я даже не знаю что сказать ...
Движемся дальше, что же скажет нам наш dr.Web? А dr.Web сообщает -
"Возможно WIN EXE вирус" . Это меня конечно же не могло не обрадовать и
побудило на дальнейшие эксперименты. Я в порыве счастья и эйфории решил
проверить свою утилиту для шифрования кодовой секции программ
("Secure Code"). И как вы думаете, что я увидел ??? Всю ту же замечательную надпись -
"Возможно WIN EXE вирус". Это уже меня не сильно обрадовало, а кому понравиться,
когда его добропорядочную утилиту вирусом обзывают.
После 5 - 10 экспериментов с вирусом и моей утилитой я обнаружил, почему
утилита и вирус идентифицируются одинаково. Эвристика в dr.Web цеплялась за
следующие блоки инструкций:
...........................
cmp word ptr [esi],'ZM' ; Это EXE файл?
jne UnmapView
...........................
Как вы можете заметить это проверка на то, является ли файл *.exe - по
содержанию.
cmp word ptr [ebx],'EP' ; Это PE файл ?
jne UnmapView
А это проверка *.exe файла на принадлежность формату - Portable
Executable. Так же в вирусе эти инструкции
использовались для поиска в памяти kernel32.dll. Но данный эвристический подход оказался уязвим для простейшей модификации
данного кода. При замене описанных выше блоков на следующие:
push 'ZM' ;
pop edx ;
cmp word ptr [esi],dx ; Это EXE файл ?
Здесь была сделана простейшая модификация кода
(мутация) на синонимичный.
push 'EP' ;
pop eax ;
cmp word ptr [ebx],ax ; Это PE файл ?
Аналогичный приём был применён и в данном случае.
После данных модификаций подозрения были сняты, как с утилиты, так и с вируса.
В конце данного текста можно сделать выводы, запишем теперь все плюсы и минусы
обоих антиврусных продуктов:
Начнём с AVP:
(-) Эвристика в зачаточном состоянии
(+) Скорость работы (вполне может вытекать из минуса - недостаточная глубина эмуляции)
(+) Ложные срабатывания (практически нет, как и эвристики)
Перейдём к dr.Web'у:
(-) Скорость работы
(-) Ложные срабатывания (чаще всего вызваны - эвристическим кодоанализатором)
(+) Эвристика довольно развита
Исходя из результатов моего исследования можно сделать неутешительные выводы:
у AVP эвристика либо плохо работает, либо её нет. А вот у dr.Web'а эвристика
работает "чрезвычайно" хорошо, что даёт множество ложных срабатываний.
С этими двумя программами у меня появились две ассоциации - слепой и параноик.
В заключение нужно добавить, каждый выбирает тот продукт, который ему больше
подходит. Хочется верить, что автор данным текстом развеял ту веру в "святых"
разработчиков антивирусных продуктов. Ведь антивирус это такая же программа как и любая другая, и в ней так же
присутствуют ошибки. Программ без ошибок не бывает.