DOS-вирусы

1. Вирус может проникнуть в таблицу векторов прерываний. Лучший способ обнаружить такой вирус — просмотреть карту распределения памяти, содержащую список резидентных программ (пример такой карты приведен в табл. 3.1). Подробная карта памяти сообщает информацию обо всех блоках, на которые разбита память: адрес блока управления памятью МСВ, имя программы — владельца блока, адрес ее префикса программного сегмента (PSP) и список перехватываемых блоком векторов прерываний.

При наличии вируса в таблице векторов прерываний (табл. 3.2) утилиты, отображающие карту распределения памяти (например, AVPTSR.COM, AVPUTIL.COM), начинают "шуметь".

Другой, более надежный, но требующий высокой квалификации пользователя способ — просмотреть таблицу векторов прерываний с помощью дизассемблера. Если при этом будут обнаружены коды какой-то программы, значит, код вируса (или участок кода) найден.

2. Вирус может несколькими способами встроиться в DOS: в произвольный системный драйвер, в системный буфер, в другие рабочие области DOS (например, в область системного стека или в свободные места таблиц DOS и BIOS).

Наиболее "популярный" способ инфицирования вирусом произвольного системного драйвера — прикрепление тела вируса к файлу, содержащему драйвер, и модификация заголовка поражаемого драйвера. Если при этом вирус оформляет себя как отдельный драйвер', то его можно обнаружить при просмотре карты распределения памяти, содержащей список системных драйверов. Если при этом в списке присутствует драйвер, который не описан в файле CONFIG.SYS, то он и может быть вирусом. Если же вирус "приклеивается" к расположенному перед ним драйверу, не выделяя свои коды как отдельную программу-драйвер, то обнаружить его можно методами, описанными ниже.

Вирус, встраивающийся в системный буфер, должен уменьшать общее число буферов; в противном случае он будет уничтожен последующими операциями считывания с диска. Совсем не сложно написать программу, которая подсчитывает число буферов, реально присутствующих в системе, и сравнивает полученный результат со значением команды BUFFERS, расположенной в файле CONFIG.SYS (если команда BUFFERS отсутствует, то со значением, устанавливаемым DOS по умолчанию)

Существует достаточно способов внедрения вируса в системные таблицы или область стека DOS. Однако реализация этих способов потребует от автора вируса досконального знания различных версий DOS. К тому же свободного места в DOS не так уж много, и поэтому написание полноценного "стелс"-вируса такого типа маловероятно. Если же все-таки подобный вирус появится, то обнаружить его код можно дизассемблированием подозрительных участков DOS.

3. Вирус может проникнуть в область программ в виде-

— отдельной резидентной программы или отдельного блока памяти (МСВ);

— внутри или "приклеившись" к какой-либо резидентной программе. Если вирус внедряется в отведенную для прикладных программ область памяти в виде нового блока, создавая для себя собственный МСВ, или как отдельная резидентная программа, его можно обнаружить при просмотре подробной карты распределения памяти, отображающей адреса всех блоков МСВ. Обычно такой вирус выглядит как отдельный блок памяти (табл. 3.3, 3.4), не имеющий имени и перехватывающий один или несколько векторов прерываний (например, INT 8, 13h, ICh, 21h). Следует отметить, что вирус может выделить себе блок памяти как в обычной (conventional), так и в верхней памяти (UMB).

Адрес блока МСВ Адрес и» JRnaq» блок» МСВ(Кб) Имя программы владельца блока МСВ Номера векторов прерываний ;
ОЕ9А ОЕ9В 3,20К COMMAND СОМ 22,24,2Е
OF6E OF6F 0.04К блок свободен  
OF72 ОЕ9В 0.15К COMMAND СОМ  
10D1 10DA 23.20К AVPTSR СОМ 10,1В,23,26,27,28
    2F.40    
17AF 17ВО 1.70К •? 08 (вирус Yankee)
ОЕ9В 539.30К COMMAND СОМ 30,31
9F04 3.90К ? 1С.21 (вирус Jerusalem)

 

 


Таблица 3.3 Вирус в области пользовательских программ

Таблица 3.4 Вирус в области пользовательских программ (UMB)

Адрес блока мсв Адрес »»SP Размер блока МСВ<Кб) Имяврограммы владельца блока МСВ Номера векторов прерывают
03 D8 03D8 262К COMMAND СОМ 22 24 2Е
047 D 006К блок свободен  
03D8 025К COMMAND СОМ  
1890К AVPTSR СОМ 10 1В 23 26,27 28
        2F40
08F5 03D8 618 64К COMMAND СОМ
АООО 136 09К DOS  
С13А   120К DOS вирус Tremor маскирую щиися под блок DOS
С186   5496К блок свободен  


4 Вирус может проникнуть за границу памяти, выделенной под DOS Практически все загрузочные и некоторые файловые вирусы располага ются за пределами памяти, выделенной для DOS, уменьшая значение слова, расположенного по адресу [0040 0013] Первый мегабайт памяти компьютера в этом случае выглядит, как показано на рис 3 5

Рис. 3.5