Отчет о сравнительном анализе модулей обработки макро-вирусов в AVP и DrWeb =========================================================================== В отчет включены листинги совпадений кодов антивируса AVP for DOS, специализированной утилиты AVP MacroKiller, антивируса DrWeb и хронология появления версий этих программ. Антивирусы AVP и DrWeb являются коммерческими продуктами, однако у них существуют бесплатные и/или условно-бесплатные версии, доступные на Web-узлах и станциях BBS. Утилита AVP MacroKiller являлась бесплатной программой (в настоящее время новые версии AVP MacroKiller не выпускаются). Поскольку версии AVP Macro Killer и DrWeb поставляются в упакованном виде, то по этой причине перед началом анализа необходимо распаковать указанные программы одной из утилит распаковки выполняемых файлов. В данном случае использовалась утилита UNP версии 4.10. Базы данных AVP поставляются также в упакованном виде. Распаковать их возможно только при помощи специальной утилиты (данная утилита входит в набор специальных технологических программ "Лаборатории Касперского" и не распространяется). В обоих случаях поиск приводимых в листингах кодов возможно обнаружить в системной памяти в момент работы AVP for DOS, AVP Macro Killer и DrWeb. Для этого достаточно воспользоваться любой программой, позволяющей просмотреть содержимое системной памяти (например, AVPUTIL 2.2). Поскольку алгоритмы обработки форматов Microsoft Office являются коммерческой тайной фирм-разработчиков, то в листингах приведены только очень короткие участки совпадений кодов AVP и DrWeb - примерно 5% от полного объема совпадений. Анализ кодов и дизассемблирование проводилось при помощи интерактивного дизассемблера IDA версии 3.7 (http://www.datarescue.com). Совпадения кода и структур данных --------------------------------- Как видно из листингов, код DrWeb почти на 100% повторяет код соответствующих процедур AVP. Частичные несовпадения вызваны "ручной" оптимизацией некоторых участков ассемблерного кода. Например, команда SUB Reg,Reg иногда заменялась на ее аналог XOR Reg,Reg. Также аккуратно "вырезано" большинство команд NOP, которые вставляют компиляторы языков высокого уровня для выравнивания кода на четную границу. Некоторые короткие процедуры вычислений были вынесены в отдельные подпрограммы, команды 386-го процессора (AVP MacroKiller) были заменены на аналогичные процессора 8086. Несколько блоков кода было удалены из библиотеки AVP по непонятным причинам - видимо, авторы DrWeb не смогли разобраться в их назначении. При анализе кодов DrWeb складывается впечатление, что его авторы дизассемблировали код AVP и получили ассемблерный листинг, который затем был заново откомпилирован. Доказательством этого являются несовпадения следующего рода: команды LEA, генерируемые компилятором C, в кодах DrWeb оказались замененными на аналогичные (но более короткие) команды MOV. Подобную оптимизацию проводит, например, компилятор ассемблера TASM в режиме Smart. Доказательством "неродного" происхождения обработчика макро-вирусов в кодах DrWeb является так же то, что в нем присутствуют невызываемые процедуры, являющиеся частью обработчимка макро-вирусов AVP. Видимо, авторы DrWeb не заметили присутствия этих процедур. Совершенно непонятен тот факт, что в DrWeb версий от 3.19 до 3.26 присутствует _два_ обработчика макро-вирусов AVP - один из них взят из AVP MacroKiller, а другой - из ядра AVP 3.0. В версии DrWeb 3.27 так же присутствуют два обработчика - один из предыдущих версий, другой - из апдейта AVP от 30 октября 1997. При этом DrWeb для поиска макро-вирусов вызывает _оба_ обработчика. Также было замечено то, что в ранних версиях DrWeb код AVP был обработан "творчески" - смещения переменных в сегменте данных совпадают с AVP только частично. В версии DrWeb 3.27 смещения переменных и структур в сегменте данных полностью совпадают с AVP. Хронология появления версий антивирусных программ ------------------------------------------------- На первом этапе (август 1995 - весна/лето 1996) для поиска макро-вирусов в различных антивирусах использовались "полумеры" - линейный поиск кодов по всему содержимому документов или частичная обработка структур данных OLE2. Данные способы не являлись достаточными, поскольку 1) не гарантировал детектирования вирусов во всех зараженных документах по причине фрагментации блоков данных внутри файлов-документов, либо 2) при проверке больших по размеру документов требовали значительных временных затрат. В первой половине 1996 года ряд антивирусных фирм (DrSolomon, AVP, McAfee в хронологическом порядке) реализовали корректную обработку файлов-документов. Были реализованы алгоритмы, позволяющие проводить разбор внутренних структур данных в документах MS Word. При помощи этих алгоритмов качество обнаружения и лечения макро-вирусов было значительно улучшено. Анализ кодов AVP и DrWeb показал, что появление процедур обработки макро-вирусов происходило в следующем порядке: 12 апреля 1996 - версия DrWeb 3.11. Используются процедуры обработки макро-вирусов. Однако эти процедуры работают корректно только при очень ограниченных условиях. В большинстве случаев данные процедуры неспособны корректно детектировать макро-вирусы. 22 мая 1996 - версия AVP MacroKiller 1.0. Использует корректные способы обработки форматов MS Word и детектирования макро-вирусов. На этот момент в DrWeb подобные алгоритмы отсутствуют. 1 июня 1996 - версия AVP MacroKiller 1.1 (исправлены некоторые ошибки). На этот момент в DrWeb подобные алгоритмы отсутствуют. 18 июня 1996 - версия DrWeb 3.12. Библиотека корректной обработки макро-вирусов не обнаружена. 31 июля 1996 - версия DrWeb 3.13. В архиве "Лаборатории Касперского" отсуствует и не проанализирована. 6 августа 1996 - версия DrWeb 3.14. Первоначальный "родной" обработчик макро-вирусов заменен на частично переработанный код AVP MacroKiller 1.1 (см. листинги) анализ последующих версий DrWeb до 3.18 не проводился. 30 октября 1997 - апдейт AVP - AVP9710. Добавлена динамическая расшифровка запароленных документов Word. За два дня до этого (28 октября) выпущена версия DrWeb 3.26. В данной версии DrWeb аналогичные функции отсутвуют. 25 декабря 1997 - версия DrWeb 3.27. Добавлена динамическая расшифровка запароленных документов Word, код и расположение данных в которой практически полностью совпадают с аналогичными процедурами в AVP (см. листинги) 27 февраля 1998 - апдейт AVP - AVP9802. Добавлена обработка форматов Excel4. В DrWeb аналогичные функции отсутвуют. 9 апреля 1998 - апдейт AVP - AVP9803. Добавлена обработка форматов Microsoft Access. В DrWeb аналогичные функции отсутвуют. С нетерпением ждем появления новых версий DrWeb. Листинги -------- В приводимых листингах приведены только очень короткие участки совпадений кодов AVP и DrWeb (примерно 5% от полного объема), поскольку алгоритмы обработки форматов Microsoft Office являются коммерческой тайной фирм-разработчиков. В листингах AVP используются "настоящие" имена процедур и переменных - такие же, как и в исходных текстах обработчика макро-вирусов AVP. Для удобства анализа те же имена используются и в листингах DrWeb. Имя файла Номер версии Дата выхода версии AVPMK11.LST AVP Macro Killer 1.1 1 июня 1996 DRWEB314.LST DrWeb 3.14 6 августа 1996 AVP1097.LST AVP Update 97.10 30 октября 1997 DRWEB327.LST DrWeb 3.27 25 декабря 1997