- •Классификация именований вирусов по «Доктор Веб»
- •2.1. Файловые вирусы
- •2.1.1. Overwriting-вирусы
- •2.1.2. Parasitic-вирусы
- •2.1.3. Companion-вирусы
- •2.1.4. Link-вирусы
- •2.1.5. Файловые черви
- •2.1.7. Алгоритм работы файлового вируса
- •2.1.8. Особые случаи
- •2. 2. Загрузочные вирусы
- •2.3 Макровирусы
- •2.3.1. Word-, Excel-, Office 97-вирусы
- •2.3.2. Алгоритм работы Word-макровирусов
- •2.3.3. Алгоритм работы Excel-макровирусов
- •2.3.4. AmiPro-вирусы
- •2.4. Сетевые вирусы
- •2.5. Прочие вредные программы
- •2.5.1. "Троянские кони" (логические бомбы)
- •2.5.2. Intended-вирусы
- •2.5.3. Конструкторы вирусов
- •2.5.4. Полиморфные генераторы
- •2.6. Резидентные вирусы
- •2.6.2. Загрузочные вирусы
- •2.6.3. Windows-вирусы
- •2.6.4. Макровирусы
- •2.7. "Стелс"-вирусы
- •2.7.1. Загрузочные вирусы
- •2.7.2. Файловые вирусы
- •2.7.3. Макровирусы
- •2.8. Полиморфик-вирусы
- •2.8.1. Полиморфные расшифровщики
- •2.8.2. Уровни полиморфизма
- •2.8.3. Изменение выполняемого кода
- •Глава 3 Методы обнаружения и удаления компьютерных вирусов
- •3.1 Профилактика заражения компьютера
- •3.2. Откуда берутся вирусы
- •3.2.1. Глобальные сети — электронная почта
- •3.2.2. Электронные конференции, файл-серверы ftp и bbs
- •3.2.3. Локальные сети
- •3.2.4. Пиратское программное обеспечение
- •3.2.5. Персональные компьютеры общего пользования
- •3.2.6. Ремонтные службы
- •3.3. Основные правила защиты
- •3.4.2. Типы антивирусов
- •3.4.3. Антивирусные программы, наиболее известные в России
- •3.4.4. Методика использования антивирусных программ
- •3.5. Обнаружение неизвестного вируса
- •3.6. Обнаружение загрузочного вируса
- •3.7. Обнаружение файлового вируса
- •3.8. Обнаружение макровируса
- •3.9. Обнаружение резидентного вируса
- •3.9.2. Windows-вирусы
- •3.10. Анализ алгоритма вируса
- •3.11. Восстановление пораженных объектов
- •3.11.1. Восстановление файлов-документов и таблиц
- •3.11.2. Восстановление загрузочных секторов
- •3.11.3. Восстановление файлов
- •3.11.4. Дезактивация оперативной памяти
2.7.2. Файловые вирусы
Большинство файловых "стелс"-вирусов использует те же приемы, что приведены выше: они либо перехватывают DOS-вызовы обращения к файлам (INT 21h), либо временно лечат файл при его открытии и заражают при закрытии. Так же как и для загрузочных вирусов, существуют файловые вирусы, использующие для своих "стелс"-функций перехват прерываний более низкого уровня — вызовы драйверов DOS, INT 25h и даже INT 13h.
Полноценные файловые "стелс"-вирусы, использующие первый способ скрытия своего кода, в большинстве своем достаточно громоздки, поскольку им приходится перехватывать большое количество DOS-функций работы с файлами: открытие-закрытие, чтение-запись, поиск, запуск, переименование и т. д., причем необходимо поддерживать оба варианта некоторых вызовов (FCB/ASCII), а с появлением Windows 95/NT необходимо также обрабатывать третий вариант — функции работы с длинными именами файлов.
Некоторые вирусы используют часть функций полноценного "стелс"-ви-руса. Чаще всего они перехватывают функции DOS FindFirst и FindNext (INT 21h, AH=llh, 12h, 4Eh, 4Fh) и уменьшают размер зараженных файлов. Такой вирус невозможно определить по изменению размеров файлов, если, конечно, он резидентно находится в памяти. Программы, которые не обращаются к указанным функциям DOS (например, Norton'oBCKHe утилиты), а напрямую используют содержимое секторов, хранящих каталог, показывают правильную длину зараженных файлов.
2.7.3. Макровирусы
Реализация "стеле"-алгоритмов в макровирусах является, наверное, наиболее простой задачей — достаточно всего лишь запретить вызов меню File/Templates или Tools/Macro. Достигается это либо удалением этих пунктов меню из списка, либо их подменой на макросы FileTemplates и ToolsMacro.
Частично "стелс"-вирусами можно назвать небольшую группу макровирусов, которые хранят свой основной код не в самом макросе, а в других областях документа — в его переменных или в Auto-text.
2.8. Полиморфик-вирусы
Полиморфик-вирусами являются те, обнаружение которых невозможно (или крайне затруднительно) осуществить при помощи так называемых вирусных масок — участков постоянного кода, специфичных для конкретного вируса. Достигается это двумя основными способами — шифрованием основного кода вируса с непостоянным ключом и случайным набором команд расшифровщика или изменением самого выполняемого кода вируса. Существуют также другие, достаточно экзотические примеры полиморфизма — DOS-вирус Bomber, например, не зашифрован, однако последовательность команд, которая передает управление коду вируса, является полностью полиморфной.
Полиморфизм различной степени сложности встречается в вирусах всех типов — от загрузочных и файловых DOS-вирусов до Windows-вирусов и даже макровирусов.
2.8.1. Полиморфные расшифровщики
Простейшим примером частично полиморфного расшифровщика является следующий набор команд, в результате применения которого ни один байт кода самого вируса и его расшифровщика не является постоянным при заражении различных файлов:
MOV гед_1, count ;гед_1, гед_2, гед_3 выбираются из
MOV гед_2, key ; AX,BX,CX,DX,SI,DI,ВР
MOV гед_3, _offset ;count, key, _offset также могут меняться
„LOOP:
ххх byte ptr [гед_3], гед_2 ;хог, add или sub
DEC гед_1
Jxx „loop ;ja или jnc
;дальше следуют зашифрованные код и данные вируса
Более сложные полиморфик-вирусы используют значительно более сложные алгоритмы для генерации кода своих расшифровщиков: приведенные выше инструкции (или их эквиваленты) переставляются местами от заражения к заражению, разбавляются ничего не меняющими командами типа NOP, STI, CLI, STC, CLC, DEC неиспользуемый регистр, XCHG неиспользуемые регистры и т. д.
Полноценные же полиморфик-вирусы используют очень сложные алгоритмы, в результате работы которых в расшифровщике вируса могут встретиться операции SUB, ADD, XOR, ROR, ROL и другие в произвольном количестве и порядке. Загрузка и изменение ключей и других параметров шифровки производится также произвольным набором операций, в котором могут встретиться практически все инструкции процессора Intel (ADD, SUB, TEST, XOR, OR, SHR, SHL, ROR, MOV, XCHG.JNZ, PUSH, POP...) со всеми возможными режимами адресации. Появляются также полиморфик-вирусы, расшифровщик которых использует инструкции вплоть до Intel386, а летом 1997 г. обнаружен 32-разрядный полиморфик-вирус, заражающий ЕХЕ-файлы Windows 95.
В результате в начале файла, зараженного подобным вирусом, идет набор бессмысленных на первый взгляд инструкций, причем некоторые комбинации, которые вполне работоспособны, не берутся фирменными дизассембле-рами (например, сочетание CS:CS: или CS:NOP). И среди этой "каши" из команд и данных изредка проскальзывают MOV, XOR, LOOP,JMP — инструкции, которые действительно являются "рабочими".