;-------------[Сравнительный анализ эвристических анализаторов]----------------;

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

								         Гамлет

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

	- AVP

	- Dr.Web

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

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

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

После краткого обзора пора заняться делом.
Я провёл не сложный эксперимент для того, чтобы его повторить вам понадобиться:

	- TASM 5.0

	- Тривиальный вирус (*)

	- dr.Web и AVP

(*) - на вирус накладывается условие: он не должен присутствовать в базах ни
dr.Web'a, ни AVP. Вирус для эксперимента вы сможете обнаружить на
просторах Интернет(к примеру vx.netlux.org). Или написать сами ... 

Многие почему-то думают, что за написание вирусов предусмотрено уголовное
наказание, но это не так. Да, действительно статья существует, но могут посадить
за распространение вирусов, а не их написание. Всё что находиться на вашем
компьютере это ваша частная информация и она охраняется законом.

Да, после всех подготовок мы ассемблируем и линкуем вирус. После этого мы должны
проверить на нём оба наших антивирусных продукта.

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

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

;-------------------------------------------------------------[slon (2004)]----;