Я хотел бы, чтобы это не было скрыто от вас.
Хотя и в таком случае я бы ничего не выиграл.
Гамлет

 

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

  • 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’а эвристика
работает «чрезвычайно» хорошо, что даёт множество ложных срабатываний.
С этими двумя программами у меня появились две ассоциации — слепой и параноик.

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

Теги:

Оставить мнение

Check Also

FPGA. Создаем хардверный счетчик в Xilinx Vivado, чтобы освоить инструменты разработки ПЛИС

Если ты хочешь превратить код в микросхему, используя FPGA, то эта статья поможет тебе осв…