Поиск вируса
Поиск вируса
Когда во время работы компьютер начинает вести себя как-то необычно, первая мысль, приходящая на ум любому пользователю – уж не вирус ли это. В такой ситуации важно правильно оценить свои подозрения и сделать выводы.
Как правило, человек, обладающий некоторым опытом и владеющий соответствующим программным инструментарием, справляется с этой задачей без особых затруднений. Наиболее сложная ситуация – когда действовать приходится в «полевых» условиях, например, на чужой машине.
Типичный вариант: стандартная 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.х) можно легко определить источник сбоев.
4. Не перегружая компьютер, запускаем (можно прямо с винчестера) антивирус, лучше всего DrWeb с ключом /hal. Вирус (если он есть) попытается немедленно заразить DrWeb. Последний достаточно надежно детектирует целостность своего кода и в случае чего выведет сообщение «Я заражен неизвестным вирусом!» Если так и произойдет, то наличие вируса в системе доказано. Внимательно смотрим на диагностические сообщения типа «Файл такой-то ВОЗМОЖНО заражен вирусом такого-то класса» (COM, EXE, TSR, BOOT, MACRO и т. п.). Подозрения на BOOT-вирус в 99 % бывают оправданы.
Однажды DrWeb 3.20 «ругался» на BOOT-сектор дискеты, «вылеченной» AidsTest от вируса LzExe, поэтому антивирусным программам тоже не всегда можно доверять. Наличие большого количества файлов, предположительно зараженных вирусом одного и того же класса, с большой достоверностью указывает на присутствие в компьютере неизвестного вируса. Но могут быть и исключения – DrWeb версии 3.15 и ниже активно «ругался» на стандартные DOC-компоненты WinWord 2.0.
Кроме того, DrWeb определяет наличие в памяти компьютера неизвестных резидентных вирусов и Stealth-вирусов. Ошибки при их определении (в последних версиях антивируса) достаточно редки. Версия 3.15, не умеющая лечить вирус Kaczor, исправно заподозрила наличие агрессивного резидента в памяти. Версия же 3.18, умеющая его лечить, в инфицированной системе вообще ничего не заметила, а детектировала и вылечила вирус лишь при загрузке с чистой дискеты. При этом нужно иметь в виду, что предупреждения типа «Странная дата файла», единичные подозрения на COM-, EXE-вирусы и прочее вряд ли могут быть расценены как бесспорное доказательство наличия вируса. 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 C0h (вместо 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 <имя_программы>. Команда u позволяет дизассемблировать фрагмент кода, команда d – просмотреть его в шестнадцатеричном формате, команда g <адрес> запускает программу на выполнение с остановом в указанной точке, команда t обеспечивает пошаговую трассировку кода, команда r отображает текущее содержимое регистров. Чтобы визуально распознать наличие вируса по коду, конечно, необходим определенный опыт. Вот на что надо обращать особое внимание:
Данный текст является ознакомительным фрагментом.