Истории о вирусах

Поиск вируса


Когда во время работы компьютер начинает вести себя как-то необыч-

но, первая мысль, приходящая на ум любому пользователю - уж не ви-

рус ли это. В такой ситуации важно правильно оценить свои подозре-

ния и сделать выводы.

Как правило, человек, обладающий некоторым опытом и владеющий со-

ответствующим программным инструментарием, справляется с этой зада-

чей без особых затруднений. Наиболее сложная ситуация - когда дей-

ствовать приходится в "полевых" условиях, например, на чужой машине.

Типичный вариант: стандартная PC (286, 386...Pentium), как минимум

1Мбайт ОЗУ, как минимум 400Мбайт HDD; возможно наличие прин-

тера, звуковой карты, CDD и прочей периферии. Программное обеспе-

чение: Windows 95, возможно Windows 3.1x, но работают все равно под



DOS. Джентльменский набор: Norton Commander 3.0-5.0, Norton Utility

6.0-8.0, свежие антивирусы: AidsTest и DrWeb, русификаторы, архивато-

ры, резидентные программы и прочее. В качестве обязательного усло-

вия - наличие заведомо "чистой" защищенной от записи загрузочной

дискеты, содержащей (хотя бы в урезанном виде) вышеупомянутый

комплект программ.

Итак, по мнению хозяина компьютер ведет себя странно. Например,

программы, которые раньше работали правильно, начинают сбоить или

вообще перестают запускаться, компьютер периодически "виснет", эк-

ран и динамик воспроизводят необычные видео- и аудиоэффекты. Что

будем делать?

1. Усаживаем перед собой хозяина компьютера и подробно расспраши-

ваем его о событиях, предшествующих возникновению сбоев. Выяс-

нить нужно следующее.

Кем и как используется машина? Если сотрудники или хозяин час-

то приносят мелкие игрушки, гороскопы, устанавливают и стирают

различные бухгалтерские программы, то вероятность наличия виру-

са в машине весьма высока. Крупные игрушки, которые с трудом

умещаются даже в упакованном виде в коробку дискет, переносятся

с машины на машину редко. При этом они, чаще всего, тщательно

проверяются на наличие вирусов.


а) Когда впервые замечены симптомы вируса? Некоторые вирусы

любят приурочивать свою деятельность к определенной дате или

времени: 1 мая, 7 ноября, 13-е число, пятница, пять часов вечера,

а также 6 марта, 15 ноября, 11-я минута каждого часа.

б) Не связаны ли изменения в работе компьютера с первым запус-

ком какой-либо программы? Если да, то эта программа - первая

в очереди на "медкомиссию".

в) Не связано ли появление симптомов заражения с распаковкой

какого-либо старого архива и запуском программ из него? Неко-

торые современные антивирусы (AVP, DrWeb) умеют проверять

архивы наиболее популярных форматов. Но ведь изредка еще

встречаются архивы .ice, .arc, .zoo, .bsa, .uc2, .ha, .pak, .chz, .eli

и прочие - их антивирусы диагностировать не могут.

г) Не имеет ли хозяин (хозяйка) компьютера привычку оставлять

дискеты в дисководе при перезагрузке? Загрузочный вирус мо-

жет годами жить на дискете, никак себя не проявляя.

2. В присутствии хозяина (хозяйки) включаем компьютер. Вниматель-

но следим за процессом загрузки. Сначала запускается программа

POST, записанная в ПЗУ BIOS. Она тестирует память, тестирует и

инициализирует прочие компоненты компьютера и завершается ко-

ротким одиночным гудком. Если "вирус" проявляет себя уже на

этом этапе - он здесь ни при чем. Теоретически вирус может суще-

ствовать и в BIOS: предполагается, что первые вирусы на террито-

рию СССР "приехали" внутри болгарских ПЗУ (современные ПЗУ

часто не являются "постоянными запоминающими устройствами",

они предусматривают возможность перезаписи BIOS).

3. В присутствии хозяина (хозяйки) пытаемся вызвать необычное по-

ведение компьютера.

а) Идеально, если вирус (если это действительно он) самостоятель-

но извещает всех о своем присутствии, например, выводит на эк-

ран сообщение типа "I am VIRUS!".

Вирусы проявляют себя различными способами: проигрывают ме-

лодии, выводят на экран посторонние картинки и надписи, имити-

руют аппаратные сбои, заставляя дрожать экран.


Но, к сожалению,

чаще всего вирусы специально себя не обнаруживают. К антиви-

русным программам прилагаются каталоги с описаниями вирусов

(для AidsTest они хранятся в файле aidsvir.txt, для DrWeb -

в файле virlist.web). Наиболее полным является гипертекстовый

каталог avpve, входящий в состав антивирусного пакета Е. Каспер-

ского. В нем можно не только прочитать достаточно подробное

описание любого вируса, но и понаблюдать его проявления.

От настоящих вирусов следует отличать так называемые "студен-

ческие шутки", особенно широко распространенные на компью-

терах ВУЗов и школ. Как правило, это резидентные программы,

которые периодически производят напоминающие работу виру-

сов видео- и аудиоэффекты. В отличие от настоящих вирусов,

эти программы не умеют размножаться. Наличие такого рода

программ на "бухгалтерских" компьютерах маловероятно.

б) Очень часто сбои вызываются вирусами не преднамеренно,

а лишь в силу их несовместимости с программной средой, возни-

кающей из-за наличия в алгоритме вируса ошибок и неточнос-

тей. Если какая-либо программа "зависает" при попытке запуска,

существует очень большая вероятность, что именно она и зараже-

на вирусом. Если компьютер "виснет" в процессе загрузки (пос-

ле успешного завершения программы POST), то при помощи по-

шагового выполнения файлов config.sys и autoexec.bat (клавиша

F8 в DOS 6.x) можно легко определить источник сбоев.

4. Не перегружая компьютер, запускаем (можно прямо с винчестера)

антивирус, лучше всего DrWeb с ключом /hal. Вирус (если он есть)

попытается немедленно заразить DrWeb. Последний достаточно на-

дежно детектирует целостность своего кода и в случае чего выведет

сообщение "Я заражен неизвестным вирусом!" Если так и произой-

дет, то наличие вируса в системе доказано. Внимательно смотрим на

диагностические сообщения типа "Файл такой-то ВОЗМОЖНО за-

ражен вирусом такого-то класса" (СОМ, EXE, TSR, BOOT, MACRO

и т.п.).


Подозрения на ВООТ-вирус в 99% бывают оправданы.

Однажды DrWeb 3.20 "ругался" на ВООТ-сектор дискеты, "вылечен-

ной" AidsTest от вируса LzExe, поэтому антивирусным программам

тоже не всегда можно доверять. Наличие большого количества фай-

лов, предположительно зараженных вирусом одного и того же клас-

са, с большой достоверностью указывает на присутствие в компьюте-

ре неизвестного вируса. Но могут быть и исключения - DrWeb

версии 3.15 и ниже активно "ругался" на стандартные DOC-компо-

ненты WinWord 2.0.

Кроме того, DrWeb определяет наличие в памяти компьютера неиз-

вестных резидентных вирусов и Stealth-вирусов. Ошибки при их

определении (в последних версиях антивируса) достаточно редки.

Версия 3.15, не умеющая лечить вирус Kaczor, исправно заподозри-

ла наличие агрессивного резидента в памяти. Версия же 3.18, умею-

щая его лечить, в инфицированной системе вообще ничего не заме-

тила, а детектировала и вылечила вирус лишь при загрузке с чистой

дискеты. При этом нужно иметь в виду, что предупреждения типа

"Странная дата файла", единичные подозрения на СОМ-, ЕХЕ-ви-

русы и прочее вряд ли могут быть расценены как бесспорное дока-

зательство наличия вируса.

MACRO-вирусы живут исключительно в Windows и никакого нега-

тивного влияния на DOS-программы оказать не могут, за исключе-

нием того случая, когда они что-либо стерли в Windows-сеансе.

5. Нередко сбои бывают вызваны естественными причинами, никако-

го отношения к вирусам не имеющими.

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

с чистой дискеты и запуск (с нее) диагностической программы

ndiags. Тестируем память, основную плату, порты и все осталь-

ное. Иногда достаточен простой внешний осмотр компьютера -

может быть, что-то неправильно подключено.

б) Нарушения в логической структуре диска. Загружаемся с чистой

дискеты и запускаем (с нее) ndd. Сначала просто отмечаем наличие

ошибок (перекрестных цепочек, потерянных кластеров и так далее).



Если ошибок очень много и подавляющее их число относится

к СОМ- и ЕХЕ-файлам, то ни в коем случае нельзя выполнять опе-

рацию исправления ошибок: это может быть DIR-подобный вирус,

и такое "лечение" диска может стать для многих программ фаталь-

ным. Если ошибки есть и их относительно немного, рискуем и ле-

чим диск. Вновь загружаемся с винчестера. Сбои пропали?

в) Конфликты между различными компонентами операционной си-

стемы и прикладными программами. Особенно "вредоносными"

являются дисковые драйверы-обманщики, активно видоизменяю-

щие (пусть и с благородными целями) информацию, считывае-

мую или записываемую на диск:

- дисковые кэш (SMARTDRV, NC_CASHE);

- упаковщики дисков (DblSpace, DrvSpace, Stacker);

- системы безопасности (антивирусные мониторы типа PROTECT,

HDPROT, ADM и прочие, системы разграничения доступа

DISKMON, DISKREET). Нередко сбоят устаревшие пристыковоч-

ные системы защиты от несанкционированного копирования, типа

NOTA или CERBERUS.

6. Наконец, самый интересный случай - вирус явно не обнаружен,

но подозрения на его наличие 'по-прежнему остаются. Достаточно

подробно эту тему изложил Е. Касперский в своей книге "Компью-

терные вирусы в MS-DOS", избранные фрагменты которой можно

найти в гипертекстовом каталоге avpve того же автора. Остается

только привести краткое изложение этих глав с уточнениями и за-

мечаниями (может быть, весьма спорными).

а) Обнаружение загрузочного вируса. Загружаемся с чистой дискеты

и, запустив DiskEditor, заглядываем в сектор 0/0/1 винчестера.

Если винчестер разделен (при помощи fdisk) на логические диски,

то код занимает приблизительно половину сектора и начинается

с байт FAh 33h COh (вместо 33h иногда может быть 2Bh). Закан-

чиваться код должен текстовыми строками типа "Missing operating

system". В конце сектора размещаются внешне разрозненные бай-

ты таблицы разделов. Нужно обратить внимание на размещение

активного раздела в таблице разделов. Если операционная система



расположена на диске С, а активен 2, 3 или 4 раздел, то вирус мог

изменить точку старта, сам разместившись в начале другого логи-

ческого диска (заодно нужно посмотреть и там). Но также это мо-

жет говорить о наличии на машине нескольких операционных си-

стем и какого-либо boot-менеджера, обеспечивающего выборочную

загрузку. Проверяем всю нулевую дорожку. Если она чистая,

то есть ее сектора содержат только байт-заполнитель, все в поряд-

ке. Наличие мусора, копий сектора 0/0/1 и прочего может гово-

рить о присутствии загрузочного вируса. Впрочем, антивирусы при

лечении загрузочных вирусов лишь "обезглавливают" противника

(восстанавливают исходное значение сектора 0/0/1), оставляя тело

"догнивать" на нулевой дорожке. Проверяем boot-сектор MS-DOS,

он обычно расположен в секторе в 0/1/1. Его внешний вид для

сравнения можно найти как в вышеупомянутой книге Е. Касперс-

кого, так и на любой "чистой" машине. Итак, если вирус обнару-

жен, при помощи DiskEditor переписываем в файл зараженный

объект: MBR 0/0/1 (а лучше всю нулевую дорожку), boot 0/1/1

и все остальное. Желательно отправить этот комплект вирусоло-

гам. Копию, при желании, оставляем себе - для опытов.

б) Обнаружение файлового вируса. Нерезидентные файловые виру-

сы специально не скрывают своего наличия в системе. Поэтому

основным признаком заражения файла является увеличение его

длины, которое легко заметить даже в инфицированной операци-

онной системе. Резидентные вирусы могут скрывать изменение

длины файла (да и вообще наличие своего кода внутри файла-

жертвы), если они написаны по Stealth-технологии. Но при заг-

рузке с "чистой" дискеты это можно увидеть. Некоторые вирусы

не изменяют длину заражаемых программ, используя "пустые"

участки внутри файла программы или кластерный "хвост" фай-

ла, расположенный после последнего заполненного сектора.

В этом случае основной признак заражения - изменение конт-

рольной суммы байт файла.


Это легко обнаруживают антивиру-

сы-инспектора типа Adinf. В качестве крайней меры можно рас-

сматривать прямое изучение кода программ, подозрительных

с точки зрения наличия в них вируса. Одно из лучших программ-

ных средств для оперативного изучения кода вирусов - програм-

ма HackerView (hiew.exe by SEN). Но, поскольку "по умолча-

нию" компьютер чужой, hiew, td, softice, ida и подобных

программ на нем может просто не оказаться. Зато стандартный

отладчик debug присутствует точно. Загружаем подозреваемую

на наличие вируса программу (в чистой операционной системе)

в память при помощи команды debug <имя_программы>. Коман-

да и позволяет дизассемблировать фрагмент кода, команда d -

просмотреть его в шестнадцатеричном формате, команда g <ад-

рес> запускает программу на выполнение с остановом в указан-

ной точке, команда t обеспечивает пошаговую трассировку кода,

команда г отображает текущее содержимое регистров. Чтобы ви-

зуально распознать наличие вируса по коду, конечно, необходим

определенный опыт. Вот на что надо обращать особое внимание:

- Наличие в начале программы последовательности команд подоб-

ного типа крайне подозрительно:

Start:

call Metka

Metka: pop<r>

- Наличие в начале файла строк типа "PkLite", "Ь291"или "diet"

подразумевает обработку программы соответствующим упаковщиком;

если начало программы не содержит последовательности команд, ха-

рактерных для упаковщика, не исключен факт ее заражения.

- Программы, написанные на языках высокого уровня, часто содер-

жат в своем начале сегмент кода, затем сегмент данных. Наличие

еще одного сегмента кода, располагающегося в конце файла про-

граммы, весьма подозрительно.

- Подозрение вызывают расположенные в начале программы, напи-

санной на языке высокого уровня, фрагменты видоизменения соб-

ственного кода, вызовы DOS- или BIOS-прерываний и прочее. Же-

лательно визуально помнить характерные начала программ,

скомпилированных в той или иной системе программирования (на-



пример, начала программ, написанных на Turbo Pascal, содержат

большое количество дальних вызовов подпрограмм call xxxx:xxxx).

- Наконец, о наличии вируса могут свидетельствовать "посторон-

ние" строки типа "Eddie lives." внутри файла.

7. Ловля вируса "на живца". Итак, допустим, что наличие вируса в си-

стеме доказано одним из предложенных выше методов, и заражен-

ные вирусом объекты определены. Теперь можно начать изучение

вируса и, вслед за этим, попытаться удалить его с машины. Жела-

тельно послать образец вируса профессиональным вирусологам.

А для этого необходимо выделить вирус в чистом виде.

а) Выделение загрузочного вируса. Как уже говорилось выше, если

вирус заразил винчестер, необходимо при помощи программы

DiskEditor сохранить в файле образ зараженного объекта (напри-

мер, сектора 0/0/1 или всей нулевой дорожки). Но, как известно,

загрузочные вирусы только "живут" в системных областях вин-

честера, размножаются же они, заражая системные области дис-

кет. Поэтому смотрим на лицевую панель компьютера. Если

в наличии дисководы обоих типов (3.5" и 5.25"), то придется

/•

отформатировать 4 дискеты на 4 стандартных формата: 360Кбайт,

720Кбайт, 1.2Мбайт и 1.44Мбайт. Затем при помощи программы

DiskEditor внимательно рассмотрим и постараемся запомнить

внешний вид boot-секторов этих дискет (0/0/1), хотя бы первые

байты (естественно, все это делается на чистой машине). Встав-

ляем не защищенные от записи дискеты по очереди в дисководы

"больной" машины и (обязательно) обращаемся к ним: пытаемся

прочитать каталог, записать, прочитать и удалить какие-либо

файлы. Наконец, на чистой машине при помощи DiskEditor

вновь просматриваем сектор 0/0/1. Если на какой-либо дискете

он изменился, при помощи того же DiskEditor снимаем образ

всей дискеты в файл. Вирус пойман. Можно упаковать файл ка-

ким-нибудь архиватором и послать его вирусологу. Некоторые

хитрые вирусы хранят свое тело на дополнительной, специально



отформатированной дорожке, так называемом инженерном ци-

линдре дискеты. В этом случае без пакета копирования ключевых

дискет типа fda, teledisk или copymaster не обойтись.

б) Выделение резидентного вируса. Как известно, резидентный ви-

рус постоянно находится в памяти ПЭВМ, выбирая жертву для

заражения. Наиболее часто в качестве жертв выступают запуска-

емые программы. Однако файлы программ могут заражаться при

открытии, копировании на дискету или с нее (вирус OneHalf), во

время поиска при помощи DOS-функций FindFirst или FindNext.

Необходимо подобрать подходящего претендента на "конт-

рольное" заражение - небольшую программу простой структуры,

приманку. Некоторые вирусы пытаются распознать приманку

и отказываются от ее заражения. Не подходят для таких целей

слишком короткие программы или такие, большая часть которых

состоит из повторяющихся байт (например, 90h - код команды

NOP). В качестве приманки с большим успехом можно использо-

вать программы test.com и test.exe. Вот их исходные тексты

на языке Assembler.


Содержание раздела