Компьютерные вирусы
популярных форматов. Но ведь изредка ещевстречаются архивы .ice,
.arc, .zoo, .bsa, .uc2, .ha, .pak, .chz, .eliи прочие - их
антивирусы диагностировать не могут.
d) Не имеет ли хозяин (хозяйка) компьютера привычку оставлять дискеты
в дисководе при перезагрузке? Загрузочный вирус может годами жить
на дискете, никак себя не проявляя.
2. В присутствии хозяина (хозяйки) включаем компьютер. Внимательно
следим за процессом загрузки. Сначала запускается программаPOST,
записанная в ПЗУ BIOS. Она тестирует память, тестирует
иинициализирует прочие компоненты компьютера и завершается коротким
одиночным гудком. Если «вирус» проявляет себя уже на этом этапе - он
здесь ни при чем. Теоретически вирус может существовать и в BIOS:
предполагается, что первые вирусы на территорию СССР «приехали»
внутри болгарских ПЗУ (современные ПЗУчасто не являются «постоянными
запоминающими устройствами», они предусматривают возможность
перезаписи BIOS).
3. В присутствии хозяина (хозяйки) пытаемся вызвать необычное поведение
компьютера.
а) Идеально, если вирус (если это действительно он) самостоятельно
извещает всех о своем присутствии, например, выводит на экран сообщение
типа . Вирусы проявляют себя различными способами:
проигрывают мелодии, выводят на экран посторонние картинки и надписи,
имитируют аппаратные сбои, заставляя дрожать экран. Но, к
сожалению,чаще всего вирусы специально себя не обнаруживают. К антиви-
русным программам прилагаются каталоги с описаниями вирусов (для
AidsTest они хранятся в файле aidsvir.txt, для DrWeb -в файле
virlist.web). Наиболее полным является гипертекстовый каталог avpve,
входящий в состав антивирусного пакета Е. Касперского. В нем можно не
только прочитать достаточно подробное описание любого вируса, но и
понаблюдать его проявления. От настоящих вирусов следует отличать так
называемые «студенческие шутки», особенно широко распространенные на
компьютерах ВУЗов и школ. Как правило, это резидентные программы,
которые периодически производят напоминающие работу вирусов видео- и
аудиоэффекты. В отличие от настоящих вирусов, эти программы не умеют
размножаться. Наличие такого рода программ на «бухгалтерских»
компьютерах маловероятно.
б) Очень часто сбои вызываются вирусами не преднамеренно, а лишь в силу
их несовместимости с программной средой, возникающей из-за наличия в
алгоритме вируса ошибок и неточностей. Если какая-либо программа
«зависает» при попытке запуска, существует очень большая вероятность,
что именно она и заражена вирусом. Если компьютер «виснет» в процессе
загрузки (после успешного завершения программы POST), то при помощи
пошагового выполнения файлов config.sys и autoexec.bat (клавиша F8 в
DOS б.х) можно легко определить источник сбоев.
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. Нередко сбои бывают вызваны естественными причинами, никако-го
отношения к вирусам не имеющими.
a) Аппаратные сбои. Исключить эту возможность поможет загрузкас чистой
дискеты и запуск (с нее) диагностической программы ndiags. Тестируем
память, основную плату, порты и все остальное. Иногда достаточен
простой внешний осмотр компьютера -может быть, что-то неправильно
подключено.
b) Нарушения в логической структуре диска. Загружаемся с чистой дискеты
и запускаем (с нее) ndd. Сначала просто отмечаем наличие ошибок
(перекрестных цепочек, потерянных кластеров и так далее). Если
ошибок очень много и подавляющее их число относится к СОМ- и ЕХЕ-
файлам, то ни в коем случае нельзя выполнять операцию исправления
ошибок: это может быть DIR-подобный вирус, и такое «лечение» диска
может стать для многих программ фатальным. Если ошибки есть и их
относительно немного, рискуем и лечим диск. Вновь загружаемся с
винчестера. Сбои пропали?
c) Конфликты между различными компонентами операционной системы и
прикладными программами. Особенно «вредоносными» являются дисковые
драйверы-обманщики, активно видоизменяющие (пусть и с благородными
целями) информацию, считываемую или записываемую на диск:
- дисковые кэш (SMARTDRV, NC_CASHE);- упаковщики дисков (DblSpace,
DrvSpace, Stacker);
- системы безопасности (антивирусные мониторы типа PROTECT, HDPROT,
ADM и прочие, системы разграничения доступа DISKMON, DISKREET).
Нередко сбоят устаревшие пристыковочные системы защиты от
несанкционированного копирования, типа NOTA или CERBERUS.
6. Наконец, самый интересный случай - вирус явно не обнаружен, но
подозрения на его наличие по-прежнему остаются. Достаточноподробно
эту тему изложил Е. Касперский в своей книге , избранные фрагменты которой можнонайти в гипертекстовом
каталоге avpve того же автора. Остаетсятолько привести краткое
изложение этих глав с уточнениями и замечаниями (может быть, весьма
спорными).
а) Обнаружение загрузочного вируса. Загружаемся с чистой дискетыи,
запустив DiskEditor, заглядываем в сектор 0/0/1 винчестера. Если
винчестер разделен (при помощи fdisk) на логические диски, то код
занимает приблизительно половину сектора и начинаетсяс байт FAh 33h C0h
(вместо 33h иногда может быть 2Вh). Заканчиваться код должен текстовыми
строками типа . В конце сектора размещаются
внешне разрозненные байты таблицы разделов. Нужно обратить внимание на
размещение активного раздела в таблице разделов. Если операционная
система расположена на диске С, а активен 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 обеспечивает
пошаговую трассировку кода,команда r отображает текущее содержимое
регистров. Чтобы ви-зуально распознать наличие вируса по коду, конечно,
необходимопределенный опыт. Вот на что надо обращать особое внимание:
- Наличие в начале программы последовательности команд подобного типа
крайне подозрительно:
Start:
call Metka
Metka: pop
- Наличие в начале файла строк типа , или
подразумевает обработку программы соответствующим упаковщиком;
если начало программы не содержит последовательности команд,
характерных для упаковщика, не исключен факт ее заражения.
- Программы, написанные на языках высокого уровня, часто содержат в
своем начале сегмент кода, затем сегмент данных. Наличие еще одного
сегмента кода, располагающегося в конце файла программы, весьма
подозрительно.
- Подозрение вызывают расположенные в начале программы, написанной на
языке высокого уровня, фрагменты видоизменения собственного кода,
вызовы DOS- или BIOS-прерываний и прочее. Желательно визуально
помнить характерные начала программ, скомпилированных в той или иной
системе программирования (на-пример, начала программ, написанных на
Turbo Pascal, содержат большое количество дальних вызовов
подпрограмм call xxxx:xxxx).
- Наконец, о наличии вируса могут свидетельствовать
строки типа внутри файла.
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.coin и test.exe. Вот их
исходные текстына языке Assembler.
test.com
cseg segment
assume cs:cseg, ds:cseg, ss:cseg
org 100h
Start:
db 1249 dup (OFAh,90h,OFBh,OF8h)
mov ah,4Ch
int 21 h
cseg ends
End Start
test.exe
cseg segment
assume cs:cseg, ds:cseg
Start:
db 1000 dup (0FAh,90h,0FBh,0F8h)
mov ah,4Ch
int 21 h
cseg ends
sseg segment stack
assume ss:sseg
db 118 dup (OFAh,90h,OFBh,OF8h)
sseg ends
End Start
Скопируем приманки на зараженную машину. Выполним над ними как можно больше
операций: запустим, скопируем в другое место винчестера и на дискету,
переместим, просмотрим их в NC и DOS (командой dir). При этом желательно
несколько раз поменять системное время и дату, потому что вирусы нередко
активны не каждый день и не круглые сутки. Чтобы исключить Stealth-эффект,
загрузимся с чистой дискеты и рассмотрим внимательно эти файлы. Как
правило, достаточно бывает проконтролировать размер файлов и просмотреть их
код припомощи F3 - наличие вируса определить несложно.
в) Выделение нерезидентного файла. Самый неприятный случай. Помимо того,
что вирус нередко привередничает, распознавая приманку, и по-прежнему
отказывается работать , так еще и заражаемость
программ сильно зависит от их расположения на винчестере. Одни
нерезидентные вирусы заражают только в текущем каталоге, другие - только в
подкаталогах 1-го уровня, третьи - в каталогах, указанных в строке path
системной среды (Vienna), четвертые - вообще во всех каталогах винчестера.
Поэтому воспользуемся программой типа rt, чтобыскопировать приманки во все
каталоги диска (запускаем из корневого каталога):
rt copy a:\test.* .
Точка в конце - символ текущего каталога. Потом их можно будет
удалить:
rt del test.*
Теперь выбираем заведомо зараженную программу и запускаем ее N
раз,постоянно изменяя время и дату. Проконтролировать изменение длины
поможет та же программа rt:
rt dir test.* >test.txt
Получаем файл test.txt, содержащий список файлов test.* с указаниемих
длины. Выбираем тот файл приманки, который изменил длину.
Вот вирус и пойман.
Как исследовать алгоритм работы вируса
Ситуация, когда компьютер оказался заражен неизвестным вирусом,
встречается не очень часто, но полностью сбрасывать со счетов такую
возможность нельзя. Выше рассматривались способы обнаружения вируса и
Страницы: 1, 2, 3, 4, 5
|