1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /158, 1996 г./ | Бонус | Поиск  

Разборки

Хорошо забытое – новое?

 


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

В письме Алексея Иванова из Челябинска были описаны предлагаемые автором новые принципы разработки интеллектуальных антивирусных программ (большая часть письма при публикации опущена). Редакция обратилась к профессиональным охотникам за вирусами из АО "ДиалогНаука" с просьбой оценить и прокомментировать эти предложения.

 

Принципы разработки интеллектуального антивируса

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

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

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

1. Определяем истинный адрес обработчика прерывания 21Н (через это прерывание MS-DOS выполняет операции с файлами, памятью, экраном и т.д.).

2. Используя истинный адрес обработчика прерывания 21Н, создаем файл-ловушку.

3. Используя текущий адрес обработчика прерывания 21Н, производим над файлом-ловушкой операции, при вызове которых находящийся в оперативной памяти файловый вирус произвел бы заражение файла (к таким операциям относятся: открытие или закрытие файла, получение или установка атрибутов, а также времени и даты последней модификации файла и т.д.).

4. Используя истинный адрес обработчика прерывания 21 Н, анализируем файл-ловушку на предмет изменений.

5. Если в файле-ловушке обнаружены изменения, значит, в оперативной памяти компьютера находится активный файлово-резидентный вирус.

У только что приведенного способа есть очень большое преимущество перед алгоритмом эвристического анализа кода. Этот метод позволяет быстрее и более детально проанализировать алгоритм вируса.

Для удаления вируса из оперативной памяти компьютера подойдет следующий алгоритм:

1. Определяем истинный адрес обработчика прерывания 21Н.

2. Используя истинный адрес обработчика прерывания 21Н, создаем файл-ловушку.

3. Устанавливаем новый обработчик прерывания 1Н, который будет выполнять следующие действия:

3.1. Сохранять в памяти все адреса обработчиков прерывания 21 Н.

3.2. При каждом своем вызове он будет:

3.2.1. Выключать трассировку.

3.2.2. Используя истинный адрес обработчика прерывания 21 Н, анализировать файл-ловушку на предмет изменений.

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

4. Используя текущий адрес обработчика прерывания 21 Н, производим над файлом-ловушкой операции, при вызове которых находящийся в оперативной памяти файловый вирус произвел бы заражение файла (к таким операциям относятся: открытие или закрытие файла, получение или установка атрибутов, а также времени и даты последней модификации файла и т.д.).

454021, Челябинск, а/я 18637, Алексей Иванов

 

Комментарий к "Принципам..."

Отметим прежде всего, что автор рассматривает только один очень узкий класс вирусов. На самом деле типов вирусов значительно больше, и предлагаемые алгоритмы никак не могут обнаружить, а тем более вылечить другие классы вирусов. Впрочем, рассматриваемый класс вирусов, работающих через прерывание DOS int 21h, также нельзя обрабатывать таким способом, поскольку ни в коем случае нельзя передавать управление вирусу.

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

Даже если определить истинный адрес обработчика int 21h, то обнаружить присутствие резидентного вируса по описанной технологии невозможно в следующих случаях:

1) Вирусы, внедряющиеся в обработчик прерывания DOS, используя технологию сплайсинга, т. е. если вирус не перехватил прерывание, а именно встроил часть своего кода внутрь обработчика.

2) Вирусы, маскирующиеся на уровне драйвера DOS. Например, вирусы семейства Dir.

3) Вирусы, перехватывающие int 13h и стелсирующиеся на уровне BIOS, например, широко распространенный вирус OneHalf.

4) Вирусы, маскирующиеся на уровне IDE-контроллера HD (винчестера).

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

Каким образом предполагается определять истинный адрес обработчика int 21h? Для этого нужно либо сканировать память и определять точку входа в обработчик int 21h по сигнатуре – а значит, нужна некоторая библиотека сигнатур для различных версий MS-DOS, PC-DOS, Novell-DOS и т.п., -либо трассировать до точки входа, но в этом случае существует опасность натолкнуться на антитрассировочную защиту вируса.

Алгоритм, предлагаемый для проверки файлов на диске, имеет много проблем, касающихся, например, анализа информации, собранной обработчиками прерываний (во-первых, она весьма велика по объему, а во-вторых, предполагается, что существуют вызовы и группы вызовов прерываний, присущие исключительно вирусам – а это неверно), он не гарантирует невозможности обхода вирусом установленных обработчиков, а манипулировать с диском вирус может и через порты (Mamonth.6000). Этот алгоритм создает реальную опасность потери контроля за ситуацией в результате работы противоотладочных средств вируса, а система после этого в лучшем случае повиснет. Вирусов, использующих антиотладочные приемы, достаточно много (например, тот же OneHalf, RDA.Fightern др.). Кроме того, имеется много проблем при проверке программ, работающих в защищенном режиме процессора.

Сама идея определения вируса при запуске программы не нова. Она была реализована (но совсем другими методами) в антивирусной программе Spider Игоря Данилова. Spider показал высокие результаты при тестировании – до 90% успешных определений вирусов в запускаемых программах. Антивирус Spider был отмечен на выставке "CeBit'93". Но данное направление оказалось тупиковым, и сейчас уже не поддерживается.

Михаил Колядко,

эксперт антивирусного

отдела АО "ДиалогНаука"


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /158, 1996 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru