Вирус
Введение
Среди набора программ, используемого большинством пользователей персональных компьютеров каждый день, антивирусные программы традиционно занимают особое место. Эти "лекарства" компьютерного мира для программ и данных в реальном мире можно сравнить, пожалуй, либо с аспирином, либо с контрацептиком. Причем всё "в одном флаконе". В реальной жизни - невозможная смесь. Но современные антивирусные программы представляют собой многофункциональные продукты, сочетающие в себе как превентивные, профилактические средства, так и средства лечения вирусов и восстановления данных.
Требования к антивирусным программам достаточно противоречивы. С одной стороны, пользователи хотят иметь надежную, мощную антивирусную защиту. С другой стороны, они хотят, чтобы эта защита не требовала от пользователя много времени и сил. И это вполне естественные требования.
При этом нельзя ни на мгновение отставать от общего развития компьютерного мира. Каждый год приносит новые технологии, в том числе, и в мире компьютерных вирусов. Так, в 1995 году появился первый макровирус, заражающий документы MS Word. В 1996 появились первые Win32-вирусы для Windows 95. В 1997 г. вирусы впервые стали использовать для распространения сообщения электронной почты и появились первые вирусы, работающие в защищенном режиме процессоров Intel (впервые этот режим появился в i286). В 1998 г. был создан первый вирус, нарушающий работу аппаратной части компьютеров. Это был Win95.CIH, который "сработал" 26 апреля 1999 г. на миллионах компьютеров по всему миру. В России этот вирус стал известен под именем "Чернобыль". В самом конце 1998 г. появился первый вирус для Windows NT.
В 1999 г. получили массовое распространение e-mail-черви (вирусные программы-черви, которые используют для распространения сообщения электронной почты). Эпидемия вируса Win95.Spanska.10000 ("Нарру99") началась 1 января 1999 г. и продолжается до сих пор. Другой e-mail червь Melissa в марте 1999 г. парализовал работу нескольких тысяч почтовых серверов в Европе и Америке. По масштабу мартовскую эпидемию Meliss-ы можно сравнить с легендарным "червем Морриса", который в ноябре 1988 г. парализовал работу нескольких крупных компьютерных сетей в Америке.
Также в 1999 г. стали очень популярны троянские программы, дающие удаленный доступ к инфицированному компьютеру через Интернет и позволяющие воровать информацию, например, пароли. Троянские системы семейств Back Orifice, NetBus, Trojan Stealth можно свободно найти в Интернете, чем и пользуются злоумышленники.
Все эти "новинки" заставляют постоянно совершенствовать антивирусные программы. В известной степени борьба с компьютерными вирусами очень похожа на извечную борьбу брони и снаряда. И в ближайшем будущем эта борьба вряд ли прекратится. Но ничего страшного в этом нет. Пользователю важно лишь не забывать об угрозе компьютерных вирусов, и принимать для защиты от них меры, не требующие в принципе больших усилий или специальных знаний. Достаточно проводить регулярное резервное копирование важных данных и пользоваться современными антивирусными программами.
Методы борьбы с вирусами
Способы противодействия компьютерным вирусам можно разделить на несколько групп: профилактика вирусного заражения и уменьшение предполагаемого ущерба от такого заражения; методика использования антивирусных программ, в том числе обезвреживание и удаление известного вируса; способы обнаружения и удаления неизвестного вируса.
Наиболее эффективны в борьбе с компьютерными вирусами антивирусные программы. Однако сразу хотелось бы отметить, что не существует антивирусов, гарантирующих стопроцентную защиту от вирусов, и заявления о существовании таких систем можно расценить как либо недобросовестную рекламу, либо непрофессионализм. Таких систем не существует, поскольку на любой алгоритм антивируса всегда можно предложить контр-алгоритм вируса, невидимого для этого антивируса (обратное, к счастью, тоже верно: на любой алгоритм вируса всегда можно создать антивирус). Более того, невозможность существования абсолютного антивируса была доказана математически на основе теории конечных автоматов, автор доказательства — Фред Коэн.
Следует также обратить внимание на несколько терминов, применяемых при обсуждении антивирусных программ:
• «Ложное срабатывание» (False positive) — детектирование вируса в незараженном объекте (файле, секторе или системной памяти). Обратный термин — «False negative», т.е. недетектирование вируса в зараженном объекте.
• «Сканирование по запросу» («on-demand») — поиск вирусов по запросу пользователя. В этом режиме антивирусная программа неактивна до тех пор, пока не будет вызвана пользователем из командной строки, командного файла или программы-расписания (system scheduler).
• «Сканирование на-лету» («real-time», «on-the-fly») — постоянная проверка на вирусы объектов, к которым происходит обращение (запуск, открытие, создание и т.п.). В этом режиме антивирус постоянно активен, он присутствует в памяти «резидентно» и проверяет объекты без запроса пользователя.
Классификация Антивирусов
Сканеры
Принцип работы антивирусных сканеров основан на проверке файлов, секторов и системной памяти и поиске в них известных и новых (неизвестных сканеру) вирусов. Для поиска известных вирусов используются так называемые «маски». Маской вируса является некоторая постоянная последовательность кода, специфичная для этого конкретного вируса. Если вирус не содержит постоянной маски, или длина этой маски недостаточно велика, то используются другие методы. Примером такого метода являетcя алгоритмический язык, описывающий все возможные варианты кода, которые могут встретиться при заражении подобного типа вирусом. Такой подход используется некоторыми антивирусами для детектирования полиморфик-вирусов.
Во многих сканерах используются также алгоритмы «эвристического сканирования», т.е. анализ последовательности команд в проверяемом объекте, набор некоторой статистики и принятие решения («возможно заражен» или «не заражен») для каждого проверяемого объекта. Поскольку эвристическое сканирование является во многом вероятностным методом поиска вирусов, то на него распространяются многие законы теории вероятностей. Например, чем выше процент обнаруживаемых вирусов, тем больше количество ложных срабатываний.
Сканеры также можно разделить на две категории — «универсальные» и «специализированные». Универсальные сканеры рассчитаны на поисх и обезвреживание всех типов вирусов вне зависимости от операционной системы, на работу в которой рассчитан сканер. Специализированные сканеры предназначены для обезвреживания ограниченного числа вирусов или только одного их класса, например макро-вирусов. Специализированные сканеры, рассчитанные только на макро-вирусы, часто оказываются наиболее удобным и надежным решением для защиты систем документооборота в средах MS Word и MS Excel.
Сканеры также делятся на «резидентные» (мониторы), производящие сканирование «на-лету», и «нерезидентные», обеспечивающие проверку системы только по запросу. Как правило, «резидентные» сканеры обеспечивают более надежную защиту системы, поскольку они немедленно реагируют на появление вируса, в то время как «нерезидентный» сканер способен опознать вирус только во время своего очередного запуска.
К достоинствам сканеров всех типов относится их универсальность, к недостаткам — размеры антивирусных баз, которые сканерам приходится «таскать за собой», и относительно небольшую скорость поиска вирусов.
CRC-сканеры
Принцип работы CRC-сканеров основан на подсчете CRC-сумм (контрольных сумм) для присутствующих на диске файлов/системных секторов. Эти CRC-суммы затем сохраняются в базе данных антивируса, как, впрочем, и некоторая другая информация: длины файлов, даты их последней модификации и т.д. При последующем запуске CRC-сканеры сверяют данные, содержащиеся в базе данных, с реально подсчитанными значениями. Если информация о файле, записанная в базе данных, не совпадает с реальными значениями, то CRC-сканеры сигнализируют о том, что файл был изменен или заражен вирусом.
CRC-сканеры, использующие анти-стелс алгоритмы, являются довольно сильным оружием против вирусов: практически 100% вирусов оказываются обнаруженными почти сразу после их появления на компьютере. Однако у этого типа антивирусов есть врожденный недостаток, который заметно снижает их эффективность. Этот недостаток состоит в том, что CRC-сканеры не способны поймать вирус в момент его появления в системе, а делают это лишь через некоторое время, уже после того, как вирус разошелся по компьютеру. CRC-сканеры не могут определить вирус в новых файлах (в электронной почте, на дискетах, в файлах, восстанавливаемых из backup или при распаковке файлов из архива), поскольку в их базах данных отсутствует информация об этих файлах. Более того, периодически появляются вирусы, которые используют эту «слабость» CRC-сканеров, заражают только вновь создаваемые файлы и остаются, таким образом, невидимыми для них.
Блокировщики
Антивирусные блокировщики — это резидентные программы, перехватывающие «вирусо-опасные» ситуации и сообщающие об этом пользователю. К «вирусо-опасным» относятся вызовы на открытие для записи в выполняемые файлы, запись в boot-сектора дисков или MBR винчестера, попытки программ остаться резидентно и т.д., то есть вызовы, которые характерны для вирусов в моменты из размножения.
К достоинствам блокировщиков относится их способность обнаруживать и останавливать вирус на самой ранней стадии его размножения, что, кстати, бывает очень полезно в случаях, когда давно известный вирус постоянно «выползает неизвестно откуда». К недостаткам относятся существование путей обхода защиты блокировщиков и большое количество ложных срабатываний, что, видимо, и послужило причиной для практически полного отказа пользователей от подобного рода антивирусных программ (мне, например, неизвестно ни об одном блокировщике для Windows95/NT — нет спроса, нет и предложения).
Необходимо также отметить такое направление антивирусных средств, как антивирусные блокировщики, выполненные в виде аппаратных компонентов компьютера («железа»). Наиболее распространенной является встроенная в BIOS защита от записи в MBR винчестера. Однако, как и в случае с программными блокировщиками, такую защиту легко обойти прямой записью в порты контроллера диска, а запуск DOS-утилиты FDISK немедленно вызывает «ложное срабатывание» защиты.
Существует несколько более универсальных аппаратных блокировщиков, но к перечисленным выше недостаткам добавляются также проблемы совместимости со стандартными конфигурациями компьютеров и сложности при их установке и настройке. Все это делает аппаратные блокировщики крайне непопулярными на фоне остальных типов антивирусной защиты.
Иммунизаторы
Иммунизаторы делятся на два типа: иммунизаторы, сообщающие о заражении, и иммунизаторы, блокирующие заражение каким-либо типом вируса. Первые обычно записываются в конец файлов (по принципу файлового вируса) и при запуске файла каждый раз проверяют его на изменение. Недостаток у таких иммунизаторов всего один, но он летален: абсолютная неспособность сообщить о заражении стелс-вирусом. Поэтому такие иммунизаторы, как и блокировщики, практически не используются в настоящее время.
Второй тип иммунизации защищает систему от поражения вирусом какого-то определенного вида. Файлы на дисках модифицируются таким образом, что вирус принимает их за уже зараженные (пример — печально известная строка «MsDos», предохраняющая от ископаемого вируса «Jerusalem»). Для защиты от резидентного вируса в память компьютера заносится программа, имитирующая копию вируса. При запуске вирус натыкается на нее и считает, что система уже заражена.
Такой тип иммунизации не может быть универсальним, поскольку нельзя иммунизировать файлы от всех известных вирусов: одни вирусы считают уже зараженными файлы, если время создания файла содержит метку 62 секунды, а другие — 60 секунд. Однако несмотря на это, подобные иммунизаторы в качестве полумеры могут вполне надежно защитить компьютер от нового неизвестного вируса вплоть до того момента, когда он будет определяться антивирусными сканерами.
Какой антивирус лучше?
Какой антивирус самый лучший? Ответ будет — «любой», если на вашем компьютере вирусы не водятся и вы не пользуетесь вирусо-опасными источниками информации. Если же вы любитель новых программ, игрушек, ведете активную переписку по электронной почте и используете при этом Word или обмениваетесь таблицами Excel, то вам все-таки следует использовать какой-либо антивирус. Какой именно — решайте сами, однако есть несколько позиций, по которым различные антивирусы можно сравнить между собой.
Качество антивирусной программы определяется, на мой взгляд, по следующим позициям, приведенным в порядке убывания их важности:
1. Надежность и удобство работы — отсутствие «зависаний» антивируса и прочих технических проблем, требующих от пользователя специальной подготовки.
2. Качество обнаружения вирусов всех распространенных типов, сканирование внутри файлов-документов/таблиц (MS Word, Excel, Office97), упакованных и архивированных файлов. Отсутствие «ложных срабатываний». Возможность лечения зараженных объектов. Для сканеров (см. ниже), как следствие, важной является также периодичность появления новых версий (апдейтов), т.е. скорость настройки сканера на новые вирусы.
3. Существование версий антивируса под все популярные платформы (DOS, Windows, Windows95, Windows NT, Novell NetWare, OS/2, Alpha, Linux и т.д.), присутствие не только режима «сканирование по запросу», но и «сканирование на лету», существование серверных версий с возможностью администрирования сети.
4. Скорость работы и прочие полезные особенности, функции, «припарки» и «вкусности».
Надежность работы антивируса является наиболее важным критерием, поскольку даже «абсолютный антивирус» может оказаться бесполезным, если он будет не в состоянии довести процесс сканирования до конца — «повиснет» и не проверит часть дисков и файлов и, таким образом, оставит вирус незамеченным в системе. Если же антивирус требует от пользователя специальных знаний, то он также окажется бесполезным — большинство пользователей просто проигнорирует сообщения антивируса и нажмут [OK] либо [Cancel] случайным образом, в зависимости от того, к какой кнопке ближе находится курсор мыши в данный момент. Ну а если антивирус будет чересчур часто задавать сложные вопросы рядовому пользователю, то, скорее всего, он (пользователь) перестанет запускать такой антивирус или даже удалит его с диска.
Качество детектирования вирусов стоит следующим пунктом по вполне естественной причине. Антивирусные программы потому и называются антивирусными, что их прямая обязанность — ловить и лечить вирусы. Любой самый «навороченный» по своим возможностям антивирус бесполезен, если он не в состоянии ловить вирусы или делает это не вполне качественно. Например, если антивирус не детектирует 100% какого-либо полиморфного вируса, то при заражении системы этим вирусом такой антивирус обнаружит только часть (допустим 99%) зараженных на диске файлов. Необнаруженными останется всего 1%, но когда вирус снова проникнет в компьютер, то антивирус опять обнаружит 99%, но уже не от всех файлов, а только от вновь зараженных. В результате жаражено на диске будет уже 1.99%. И так далее, пока все файлы на диске не будут заражены при полном молчании антивируса.
Поэтому качество детектирования вирусов является вторым по важности критерием «лучшести» антивирусной программы, более важным, чем «многоплатформенность», наличие разнообразного сервиса и т.д. Однако если при этом антивирус с высоким качеством детектирования вирусов вызывает большое количество «ложных срабатываний», то его «уровень полезности» резко падает, поскольку пользователь вынужден либо уничтожать незараженные файлы, либо самостоятельно производить анализ подозрительных файлов, либо привыкает к частым «ложным срабатываниям», перестает обращать внимание на сообщения антивируса и в результате пропускает сообщение о реальном вирусе.
«Многоплатформенность» антивируса является следующим пунктом в списке, поскольку только программа, рассчитанная на конкретную операционную систему, может полностью использовать функции этой системы. «Неродные» же антивирусы часто оказываются неработоспособными, а иногда даже разрушительными. Например, вирус «OneHalf» поразил компьютер с установленными на нем Windows95 или WindowsNT. Если для расшифрования диска (данный вирус шифрует сектора диска) воспользоваться DOS-антивирусом, то результат может оказаться плачевным: информация на диске окажется безнадежно испорченной, поскольку Windows 95/NT не позволит антивирусу пользоваться прямыми вызовами чтения/записи секторов при расшифровке секторов. Антивирус же, являющийся Windows-программой, справляется с этой задачей без проблем.
Возможность проверки файлов «на лету» также является достаточно важной чертой антивируса. Моментальная и принудительная проверка приходящих на компьютер файлов и вставляемых дискет является практически 100%-й гарантией от заражения вирусом, если, конечно, антивирус в состоянии детектировать этот вирус. Очень полезными являются антивирусы, способные постоянно следить за «здоровьем» серверов — Novell NetWare, Windows NT, а в последнее время, после массового распространения макро-вирусов, и за почтовыми серверами, сканируя входящую/исходящую почту. Если же в серверном варианте антивируса присутствуют возможность антивирусного администрирования сети, то его ценность еще более возрастает.
Следующим по важности критерием является скорость работы. Если на полную проверку компьютера требуется нескольно часов, то вряд ли большинство пользователей будут запускать его достаточно часто. При этом медленность антивируса совсем не говорит о том, что он ловит вирусов больше и делает это лучше, чем более быстрый антивирус. В разных антивирусах используются различные алгоритмы поиска вирусов, один алгоритм может оказаться более быстрым и качественным, другой — медленным и менее качественным. Все зависит от способностей и профессионализма разработчиков конкретного антивируса.
Наличие всяческих дополнительных функций и возможностей стоит в списке качеств антивируса на последнем месте, поскольку очень часто эти функции никак не сказываются на уровне «полезности» антивируса. Однако эти дополнительные функции значительно упрощают жизнь пользователя и, может быть, даже подталкивают его запускать антивирус почаще.
Откуда берутся вирусы?
Основным источником вирусов на сегодняшний день является глобальная сеть Internet. Наибольшее число заражений вирусом происходит при обмене письмами в форматах Word/Office97. Пользователь зараженного макро-вирусом редактора, сам того не подозревая, рассылает зараженные письма адресатам, которые в свою очередь отправляют новые зараженные письма и т.д.
Предположим, что пользователь ведет переписку с пятью адресатами, каждый из которых также переписывается с пятью адресатами. После посылки зараженного письма все пять компьютеров, получившие его, оказываются зараженными. Затем с каждого вновь зараженного компьютера отправляется еще пять писем. Одно уходит назад на уже зараженный компьютер, а четыре — новым адресатам.
Таким образом, на втором уровне рассылки заражено уже 1+5+20=26 компьютеров. Если адресаты сети обмениваются письмами раз в день, то к концу рабочей недели (за 5 дней) зараженными окажутся как минимум 1+5+20+80+320=426 компьютеров. Нетрудно подсчитать, что за 10 дней зараженными оказываются более ста тысяч компьютеров! Причем каждый день их количество будет учетверяться.
Описанный случай распространения вируса является наиболее часто регистрируемым антивирусными компаниями. Нередки случаи, когда зараженный файл-документ или таблица Excel по причине недосмотра попадает в списки рассылки коммерческой информации какой-либо крупной компании. В этом случае страдают не пять, а сотни или даже тысячи абонентов таких рассылок, которые затем разошлют зараженные файлы десяткам тысячам своих абонентов.
.
Локальные сети
Третий путь «быстрого заражения» — локальные сети. Если не принимать необходимых мер защиты, то зараженная рабочая станция при входе в сеть заражает один или несколько служебных файлов на сервере (в случае Novell NetWare — LOGIN.COM)
На следующий день пользователи при входе в сеть запускают зараженные файлы
Вместо служебного файла LOGIN.COM может также выступать различное программное обеспечение, установленное на сервере, стандартные документы-шаблоны или Excel-таблицы, применяемые в фирме, и т.д.
Пиратское программное обеспечение
Нелегальные копии программного обеспечения, как это было всегда, являются одной из основных «зон риска». Часто пиратские копии на дискетах и даже на CD-дисках содержат файлы, зараженные самыми разнообразными типами вирусов.
Персональные компьютеры «общего пользования»
Опасность представляют также компьютеры, установленные в учебных заведениях. Если один из студентов принес на своих дискетах вирус и заразил какой-либо учебный компьютер, то очередную «заразу» получат и дискеты всех остальных студентов, работающих на этом компьютере.
То же относится и к домашним компьютерам, если на них работает более одного человека. Нередки ситуации, когда сын-студент (или дочь), работая на многопользовательском компьютере в институте, перетаскивают оттуда вирус на домашний компьютер, в результате чего вирус попадает в компьютерную сеть фирмы папы или мамы.
Ремонтные службы
Достаточно редко, но до сих пор вполне реально заражение компьютера вирусом при его ремонте или профилактическом осмотре. Ремонтники — тоже люди, и некоторым из них свойственно наплевательское отношение к элементарным правилам компьютерной безопасности. Однажды забыв закрыть защиту от записи на одном из своих флоппи-дисков, такой «маэстро» довольно быстро разнесет заразу по машинам своей клиентуры и скорее всего потеряет ее (клиентуру).
Восстановление файлов
В подавляющем большинстве случаев восстановление зараженных файлов является достаточно сложной процедурой, которую невозможно произвести «руками» без необходимых знаний — форматов выполняемых файлов, языка ассемблера и т.д. К тому же обычно зараженными на диске оказываются сразу несколько десятков или сотен файлов и для их обезвреживания необходимо разработать собственную программу-антивирус (можно также воспользоваться возможностями редактора антивирусных баз из комплекта AVP версий 2.x).
При лечении файлов следует учитывать следующие правила:
• необходимо протестировать и вылечить все выполняемые файлы (COM, EXE, SYS, OVL) во всех каталогах всех дисков вне зависимости от атрибутов файлов (т.е. файлы read-only, системные и скрытые);
• желательно сохранить неизменными атрибуты и дату последней модификации файла;
• необходимо учесть возможность многократного поражения файла вирусом («бутерброд» из вирусов).
Само лечение файла производится в большинстве случаев одним из нескольких стандартных способов, зависящих от алгоритма размножения вируса. В большинстве случаев это сводится к восстановлению заголовка файла и уменьшению его длины.
Дезактивация оперативной памяти
Процедура дезактивации памяти, как и лечение зараженных файлов, требует некоторых знаний об операционной системе и обязательного знания азыка Ассемблер.
При лечении оперативной памяти необходимо обнаружить коды вируса и изменить их таким образом, чтобы вирус в дальнейшем не мешал работе антивирусной программы — «отключить» подпрограммы заражения и стелс. Для этого требуется полный анализ кода вируса, так как процедуры заражения и стелс могут располагаться в различных участках вируса, дублировать друг друга и получать управление при различных условиях.
В большинстве случаев для дезактивации памяти достаточно «обрубить» прерывания, перехватываемые вирусом: INT 21h в случае файловых вирусов и INT 13h в случае загрузочных (существуют, конечно же, вирусы, перехватывающие другие прерывания или несколько прерываний).
При дезактивации TSR-копии вируса необходимо помнить, что вирус может предпринимать специальные меры для восстановления своих кодов (например, некоторые вирусы семейства «Yankee» восстанавливают их при помощи методов помехо-защищенного кодирования), и в этом случае придется нейтрализовать и механизм самовосстановления вируса. Некоторые вирусы, кроме того, подсчитывают CRC своей резидентной копии и перезагружают компьютер или стирают сектора диска, если CRC не совпадает с оригинальным значением. В этом случае необходимо «обезвредить» также и процедуру подсчета CRC.
Анализ алгоритма вируса
На мой взгляд, наиболее удобным для хранения и анализа вируса объектом является файл, содержащий его (вируса) тело. Как показывает практика, для анализа файлового вируса удобнее иметь несколько зараженных файлов различной, но не очень большой, длины. При этом желательно иметь зараженные файлы всех типов (COM, EXE, SYS, BAT, NewEXE), поражаемых вирусом. Если необходимо проанализировать часть оперативной памяти, то при помощи некоторых утилит (например, AVPUTIL.COM) довольно просто выделить участок, где расположен вирус, и скопировать его на диск. Если же требуется анализ сектора MBR или boot-сектора, то скопировать их в файлы можно при помощи популярных «Нортоновских утилит» или AVPUTIL. Для хранения загрузочного вируса наиболее удобным является файл-образ зараженного диска. Для его получения необходимо отформатировать дискету, заразить ее вирусом, скопировать образ дискеты (все сектора, начиная с нулевого и кончая последним) в файл и при необходимости скомпрессировать его (эту процедуру можно проделать при помощи «Нортоновских утилит», программ TELEDISK или DISKDUPE).
Зараженные файлы или файл-образ зараженной дискеты лучше передать разработчикам антивирусных программ по электронной почте или, в крайнем случае, на дискете по обычной почте. Однако если это займет много времени, которое, как известно, не ждет, то пользователям, достаточно уверенным в себе, можно попробовать и самостоятельно разобраться в вирусе и написать собственный антивирус.
При анализе алгоритма вируса предстоит выяснить:
• способ(ы) размножения вируса;
• характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках;
• метод лечения оперативной памяти и зараженных файлов (секторов).
При решении этих задач не обойтись без дизассемблера или отладчика (например, отладчиков AFD, AVPUTIL, SoftICE, TorboDebugger, дизассемблеров Sourcer или IDA).
И отладчики, и дизассемблеры имеют и положительные и отрицательные черты — каждый выбирает то, что он считает более удобным. Несложные короткие вирусы быстро «вскрываются» стандартным отладчиком DEBUG, при анализе объемных и высокосложных полиморфик-стелс-вирусов не обойтись без дизассемблера. Если необходимо быстро обнаружить метод восстановления пораженных файлов, достаточно пройтись отладчиком по началу вируса до того места, где он восстанавливает загруженную программу перед тем, как передать ей управление (фактически именно этот алгоритм чаще всего используется при лечении вируса). Если же требуется получить детальную картину работы вируса или хорошо документированный листинг, то кроме дизассемблеров Sourcer или IDA с их возможностями восстанавливать перекрестные ссылки, здесь вряд ли что поможет. К тому же следует учитывать, что, во-первых, некоторые вирусы достаточно успешно блокируют попытки протрассировать их коды, а во-вторых, при работе с отладчиком существует ненулевая вероятность того, что вирус вырвется из-под контроля.
При анализе файлового вируса необходимо выяснить, какие файлы (COM, EXE, SYS) поражаются вирусом, в какое место (места) в файле записывается код вируса — в начало, конец или середину файла, в каком объеме возможно восстановление файла (полностью или частично), в каком месте вирус хранит восстанавливаемую информацию.
При анализе загрузочного вируса основной задачей является выяснение адреса (адресов) сектора, в котором вирус сохраняет первоначальный загрузочный сектор (если, конечно, вирус сохраняет его).
Для резидентного вируса требуется также выделить участок кода, создающий резидентную копию вируса и вычислить возможные адреса точек входа в перехватываемые вирусом прерывания. Необходимо также определить, каким образом и где в оперативной памяти вирус выделяет место для своей резидентной копии: записывается ли вирус по фиксированным адресам в системные области DOS и BIOS, уменьшает ли размер памяти, выделенной под DOS (слово по адресу [0000:0413]), создает ли для себя специальный MCB-блок либо использует какой-то другой способ.
Существуют особые случаи, когда анализ вируса может оказаться очень сложной для пользователя задачей, например при анализе полиморфик-вируса. В этом случае лучше обратиться к специалисту по анализу кодов программ.
Для анализа макро-вирусов необходимо получить текст их макросов. Для нешифрованных не-стелс вирусов это достигается при помощи меню Tools/Macro. Если же вирус шифрует свои макросы или использует стелс-приемы, то необходимо воспользоваться специальными утилитами просмотра макросов. Такие специализированные утилиты есть практически у каждой фирмы-производителя антивирусов, однако они являются утилитами «внутреннего пользования» и не распространяются за пределы фирм.
На сегодняшний день известна единственная shareware-программа для просмотра макросов — Perforin. Однако эта утилита пока не поддерживает файлы Office97.
Заключение
Вирусы – были и остаются серьёзной проблемой в компьютерном мире, но все проблемы, которые были ими созданы были решены и антивирусы помогают избежать повтора таких “критических ситуаций”. Борьбой с вирусами занимается множество специалистов в сотнях компаний, и они успешно решают проблему вирусов. Так что если вы используете у себя на компьютере антивирус и своевременно обновляете его базы, то 95% что проблемы вирусов у вас не возникнет вообще.