на главную add bookmark :: set homepage
MENU
Главная
Каталог статей
Софт насущный
Книжная полочка
Wall'ный креатив
Гостевая книга
Форум сайта
Обмен ссылками
Поиск на сайте
UNDERWORD
Слово об удовольстиях
NEW
VISITS
Rambler's Top100
CONTENTS: главная » статьи » софт » книги » обои » ссылки » поиск

Поговорим немного об эвристическом анализе

 Автор: Климентьев К.

Все нижесказанное - плод авторских размышлений и догадок, оно может истине и не соответствовать :)

Под эвристическим анализом (греч. heurisco - искать, открывать) в вирусологии сейчас принято понимать комплекс методов, позволяющих произвести автоматическую оценку "вирусности" любой конкретной программы.

Вы, вероятно, сталкивались с интересным фактом - при работе некоторых антивирусов на экран выдаются предупреждающие сообщения типа: файл возможно заражен EXE.COM.CRYPT-вирусом. Это означает, что антивирус изучил код программы и пришел к выводу - этот код (или его часть) может принадлежать зловредному электронному микроорганизму. Это - результат произведенного антивирусом эвристического анализа.

Принцип действия подобных эвристических анализаторов, вероятнее всего, заключается в следующем: антивирус содержит в себе интереснейший механизм эмуляции работы процессора. Антивирус считывает код программы и начинает ее выполнять, но не по-настоящему, а "понарошку" :) Он делает вид, что выполняет процессорные команды, а на самом деле, анализируя их код, видоизменяет соответствующим образом значения своих внутренних образов регистров и ячеек оперативной памяти.

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

Если код программы зашифрован, то антивирус пошагово "раскрутит" его. И не помогут никакие ухищрения с Int1/Int3, обычно затрудняющие работу в "настоящих" отладчиках, ведь все это исполнение - понарошку !

Даже если вирус полиморфный, рано или поздно- после отработки всех его расшифровщиков- в памяти будет лежать его "ядро" - неизменяемый фрагмент, содержащий сигнатуру. Таким образом, к определению сигнатуры достаточно добавить всего один параметр - число шагов, после которых заведомо эта сигнатура появится в памяти.

Собственно эвристический анализ заключается в следующем в процессе пошагового выполнения антивирус "загибает пальцы":

- встретилось call Next - загнули большой палец;
- появилось pop si - загнули указательный, а если все-таки выполнился ret - просто разогнули большой;
- если sub si, 103h - загнули средний и т.п.

После окончания работы антивирус "считает фишки", и если их больше чем надо - раздается вопль: вероятен вирус! :-)

Конечно, это очень упрощенная схема. Но уже на ней видны основные недостатки современных эвристических анализаторов:

а) если гипотетический вирус в процессе своей работы взаимодействует с железом, то эмулятор процессора не сможет этого отловить, это для него - verboten!

б) "глубина" эвристического анализа не слишком велика, ибо приходится держать в памяти не только содержимое регистров, но и содержимоее (возможно больших) фрагментов ОЗУ, а также крайне сложно пытаться эмулировать работу "толстых" программ, написанных на языках высокого уровня.

Используют эвристический анализ многие современные антивирусы.

:: на начало ::
Windows Info Edition
 Поиск:     
Original idea, design: Daemon © 2003-2005 «Windows Info Edition»
Сайт создан в системе uCoz