Жанр: Учеба
Компьютерная вирусология ч. 1
...просмотреть дамп программы (с помощью Norton Commander, PC Shell
или другой подходящей утилиты). Если в конце программы имеются подозрительные
текстовые строки или, наоборот, нет ни одной текстовой
строки, то такая программа заслуживает дополнительного исследования.
2.9. Вызываемые вирусами эффекты
"Однажды мои соседи обнаружили
у себя в квартире странные явле-
ния: каждую ночь что-то упорно
шелестело в мусорном ведре, и
каждое утро отходы обнаруживались
в самых не подходящих местах.
Стали исчезать картошка, лук...
Крысы! - мелькнула догадка."
Газета "Красная Пресня",
апрель 1990 г.
Как уже указывалось, компьютерные вирусы являются одной из разновидностей
компьютерного вандализма. Вызываемые вирусами эффекты
могут быть классифицированы по следующим основным категориям:
1) отказ в выполнении той или иной функции (например, блокирование
вирусом RС-1701 загрузки программы с защищенной от записи дискеты);
2) выполнение действий, не предусмотренных программой (например,
изменение данных в каком-то файле);
3) разрушение отдельных файлов, управляющих блоков или всей файловой
системы в целом (форматирование диска, удаление файла и
т.д.);
4) выдача ложных, раздражающих или отвлекающих сообщений
(например, "Скажи бебе" или "Non system disk");
5) создание звуковых или визуальных эффектов (например, падение
букв в вирусе RС-1701, замедление выполнения программ в вирусе
RСЕ-1813, проигрывание мелодии в RCE-1805, движущийся на экране
ромбик в Bx1-1C и т.д.);
5) инициирование ошибок или сбоев в программе или операционной
системе (например, переполнение стека), перезагрузка или зависание
MS DOS;
6) блокирование доступа к системным ресурсам (разрастание зараженных
файлов за счет их многократного повторного заражения, невозможность
передать зараженной программе параметры, замедление
работы компьютера путем выполнения холостого цикла из нескольких
команд при каждом прерывании таймера);
7) имитация сбоев аппаратуры (перевод части кластеров в "псевдосбойные"
на дискете или винчестере, зависание ЭВМ через некоторое
время после перезагрузки операционной системы и т.д.);
8) ускорение износа оборудования или попытки его порчи.
Наносимый вирусами ущерб может иметь катастрофический характер
(например, уничтожение винчестера) в сочетании с длительным "инкубационным
периодом" или, наоборот, вирус может наносить мелкие,
трудно обнаруживаемые повреждения данных, выполняемые достаточно
часто. Последние гораздо труднее обнаружить и поэтому, в отличие
от распространенного мнения, они намного опаснее массированного
разрушения данных.
Наиболее уязвимой частью файловой системы DOS является FAT (таблица
размещения файлов). Если FAT разрушен, то DOS не в состоянии
определить местонахождение того или иного файла, хотя сами файлы
не повреждены. Вирус может также выполнять форматизацию некоторых
участков диска, содержащих системные данные. Поэтому необходимо
достаточно часто дублировать управляющие данные файловой системы
на другой, заранее известный участок диска или дискету. Для этой
цели, в частности, можно использовать Norton Utilities, а также
Mirror из пакета PC Shell.
На компьютерах типа АТ данные о конфигурации системы (тип установленного
винчестера и др.) хранятся в небольшой энергонезависимой
памяти (CMOS). Уничтожение содержимого CMOS-памяти приводит к
невозможности загрузиться с винчестера. Восстановление CMOS требует
знания подробных технических данных о винчестере. Поэтому этот
тип памяти также является потенциальным объектом атаки вируса.
Как уже отмечалось, наиболее опасны как раз не катастрофические
повреждения винчестера или дискет (при адекватном архивировании
это означает максимум потерю одного дня работы), а мелкие, незаметные
изменения файлов данных. В частности, известен вирус, который
ищет файлы типа DBF, и найдя внутри файла числовое поле, меняет
местами две рядом стоящие цифры.
По степени разрушительности вирусы можно условно разделить на
два типа: "иллюзионисты" (RC-1701, RCE-1805, RСЕ-2885, Bx1-1C) и
"вандалы" (C-648, RСЕ-1800, Dx3-E9, RC-496). Основным приоритетом
при конструировании "иллюзионистов" является демонстрация какогонибудь
экзотического звукового (например, вирусы RCE-1805, RCE2885)
или визуального эффекта типа бегающего шарика (например, вирус
Bx1-1C), осыпающихся букв (вирус RC-1701) и т.д. В качестве
основного приоритета при конструировании "вандалов" является обеспечение
как можно более скрытого размножения, с тем чтобы фазе
разрушения (детонации), уничтожающей и зараженный файл (дискету) с
данным экземпляром вируса (при разрушении таблицы FAT, форматизации
и других подобных действиях), предшествовало определенное число
незамеченных размножений.
При этом наблюдается интересная взаимосвязь, на которую обратил
внимание автора Л.И.Обухов: если вирус демонстрирует нетривиальный
визуальный или звуковой эффект, то скорее всего он не выполняет
массированного разрушения данных. Поэтому, если неизвестный вирус
демонстрирует какой-то изощренный эффект, то повышаются шансы на
то, что он не выполняет массированных разрушений файловой системы.
Психологически, примитивный вандализм типа разрушения файлов или
форматирования диска, наверное, в большей степени присущ примитивным
личностям, страдающим комплексом неполноценности, но неспособным
на конструктивную деятельность. Ведь давно замечено, что "ломать
є не строить": хотя написание вируса в современных условия
нельзя называть конструктивной деятельностью, все же встроить в
вирус программу разрушения FAT значительно проще, чем программу
падения букв на экране дисплея.
2.10. Повторное заражение
"Сожрали с аппетитом ядовитый порошок
Четыре неразлучных таракана и сверчок"
Из популярной песни 60-х годов
Компьютерные вирусы "бессмертны" и могут неограниченное время
храниться в различного рода архивах. Даже "полностью уничтоженные"
вирусы могут сохраниться в каком-нибудь архивном файле и случайно
или умышленно "реанимироваться" через много месяцев или даже лет
после их первоначального обнаружения и уничтожения. Из этого следует
важный вывод, что после первого обнаружения и уничтожения вируса
следует ожидать повторных заражений. Таким образом, после появления
определенного вируса необходимы специальные меры по предотвращению
повторных заражений. Здесь можно двигаться в двух направлениях:
во-первых, постараться найти первоисточник заражения,
и во-вторых, разработать или установить программы, затрудняющие
(сторожа) или делающие невозможным (вакцины) размножение вируса.
Опасность повторного заражения особенно велика, если дезинфекция
проведена наспех, без тщательной проверки всего объема используемых
программ и имеющихся архивов, а также если доступ к компьютеру
имеют случайные или неквалифицированные пользователи. Как уже отмечалось
выше, особую опасность в этом смысле представляют собой
любители компьютерных игр.
2.11. Вирусофобия и попытки ее эксплуатации
"Трусоват был Ваня бедный"
А.С.Пушкин
Следует отметить, что в ряде организаций само появление нового
вируса вызывает панику, парализуя работу на несколько дней. При
отсутствии специалистов в процессе борьбы с попавшим вирусом зачастую
выполняется огромный объем ненужной работы, например, переформатирование
винчестера. В процессе выгрузки и загрузки информации
пользователи сами могут в спешке уничтожить важную информацию.
Поскольку в таких организациях руководство обычно слабо представляет
себе принципы действия и эффекты, вызываемые этим классом
программ, у программистов появляется возможность использовать вирусы
как "отходной вариант" для объяснения каких-то трудностей или
причин срыва сроков. Варианты объяснений могут варьироваться от
самых примитивных ("Я все сделал(а), а потом пришел вирус и все
уничтожил"), до вполне квалифицированных.
Далеко не все повреждения файловой системы, отказы винчестера
или оборудования вызываются вирусами. Например, некоторые типы
винчестеров имеют довольно низкую надежность и "сыпятся" без всякого
вмешательства вирусов. Имеются компьютеры, которые можно
загрузить, только дав им прогреться в течении получаса. Автору
приходилось работать на дефектном венгерском дисководе ПЭВМ ЕС
1840, который не только фрезеровал дискеты, но и при записи иногда
стирал FAT. Причем восстановить поврежденный FAT при помощи известной
утилиты Norton Disk Doctor не удавалось. Общеизвестно, что
многие отечественные компьютеры и без всяких вирусов регулярно зависают.
В то же время имеется тенденция атрибутировать любое повреждение
данных присутствием вируса. Это по сути один из вариантов мании
("вирусомания"), которая подобно печально известной шпиономании
("шпионы под каждой кроватью") имеет социально-психологическую
этиологию. Первыми пользу из "вирусомании" научились извлекать
электронщики: если компьютер барахлит, а им лень разбираться, то в
ход пускается неотразимый аргумент: "Это у вас какой-то вирус".
2.12. О возможности повреждения оборудования
компьютерными вирусами
"То тарелками пугают..."
В.Высоцкий
Одним из проявлений вирусофобии следует считать слухи о вирусах,
повреждающих оборудование. Вопрос о возможности повреждения оборудования
автору задавали практически на каждой прочитанной им лекции.
Действительно, хотя большинство повреждений, наносимых вирусом,
относятся к данным, возможны также повреждения оборудования.
Например, можно повредить участок люминофора ("выжечь пятно") на
монохроматическом мониторе, используя особенности схемы управления.
Однако для цветного монитора это сделать невозможно. Ходят
упорные слухи о каких-то коварных вирусах, якобы вводящих в резонанс
головки винчестера. К сожалению эти слухи проникают и в
"околовирусные" публикации [Основский90].
Такая мифотворческая тенденция наверно возникает в связи с любым
малоизученным и потенциально опасным явлением. Следует учитывать
также благоприятный для такого рода слухов социальный фон:
сейчас в обществе оживился интерес ко всякого рода магии и "чудотворцам".
Некоторые из них ухитряются даже заговаривать воду по
телевизору. По сравнению с водой, заговоренной по телевизору, вирус,
прожигающий дыру в экране или даже в клавиатуре, выглядит
предельно правдоподобно. Более того, автор не видит причин, почему
многие из классических русских сказок нельзя было бы "модернизировать",
сделав одним из персонажей злой компьютерный вирус и соответствующим
образом приспособив сюжетную канву. Со временем, когда
компьютеры появятся во многих семьях, такие сказки, возможно, будут
интереснее ребенку, чем традиционные варианты с Бабой Ягой,
Кощеем Бессмертным и добрым молодцем.
2.13. Легенды о полезных вирусах
"Как часто мы промахиваемся
еще при выборе цели!"
Виктор Власов
Идея о том, что "подобное излечивается подобным", распространенная
среди средневековых знахарей, периодически реанимируется применительно
к компьютерным вирусам. Она принимает несколько основных
форм, которые мы разберем последовательно.
Первой по распространенности является идея создания "вируса-защитника"
є вирусоподобной программы защиты. Следует отметить, что
эта идея использования для борьбы c вирусом другого вируса носится
в воздухе с момента появления первых вирусов, т.е. примерно с 1984
года (см. главу 1). Исторически, первые фаги создавались именно
как вирусы, охотящиеся на тот или иной вирус. Ничего хорошего из
этого не получилось. Опыт показал, что распространение вирусаохотника
существенно медленнее, чем вируса, за которым охотятся, и
эффективность такой погони невелика.
Эта идея весьма неудачна и в других своих модификациях. Например,
часто предлагается вариант "вируса-контролера", который при
заражении программы подсчитывает и запоминает ее контрольную сумму.
Тогда при запуске зараженной программы вирус подсчитывал бы
контрольную сумму файла, из которого она была считана, и при
несовпадении сигнализировал бы о заражении. Вообще говоря, отсутствие
подобной проверки є это серьезный дефект MS DOS, и исправлять
его стоит именно на уровне операционной системы. Однако тотальное
заражение "вирусом-контролером" неизбежно ведет к потере
работоспособности части программ. Кроме того, заражение всех программ
таким "контролирующим" вирусом неизбежно приведет к увеличению
размеров программ, причем заметному, поскольку каждой исполняемой
программе придется сделать прививку. Если на диске 20M хранится,
скажем, 1000 программ и размер прививки составляет 1024
байта, то получается, что в среднем теряется мегабайт дискового
пространства. Реально, учитывая квантование дискового пространства
по кластерам, эти потери могут оказаться и больше, в особенности,
если на диске записано много программ, близких к размеру кластера.
Кроме того, процесс поиска очередной "жертвы" не так прост, и будет
занимать некоторое время, замедляя загрузку программы. Поэтому
закрывать эту "дыру" предпочтительнее с помощью маленькой резидентной
программы, перехватывающей прерывание 21-4B. Возможно, перехват
следует выполнить сплайсингом, т.е. врезкой команды JMP в
оригинальный обработчик этой команды с тем, чтобы исключить возможность
того, что вирус предварительно перехватит 21 прерывание.
Кстати, перехватить 21 прерывание вирусу можно просто не дать, как
бы он не старался (на этой идее основаны сторожа CHECK21 и SBM є
см. прил.5). Получив управление, эта "заплатка" должна проверять
контрольную сумму. Для COM-файлов достаточно проверить первый
блок, а для EXE-файлов є заголовок и блок, куда передается управление.
При этом для COM-файлов контрольную сумму можно хранить в
неиспользуемых байтах оглавления, а для EXE є в соответствующем
поле заголовка. Метод подсчета контрольной суммы должен быть параметризуемым.
Кстати, аналогичным способом можно закрыть другую
"дыру" в MS DOS, связанную с тем, что снятие атрибута READ ONLY не
требует подтверждения оператора. При этом можно предусмотреть возможность
отключения выдачи запроса с помощью специального, задаваемого
пользователем, пароля.
Другой идеей, связанной с поисками "полезных" применений компьютерных
вирусов, является автоматическое преобразование программы в
какую-то более приемлемую форму. Наиболее часто при этом предлагается
автоматическое сжатие программы. Действительно, имеется ряд
программ, выполняющих сжатие EXE-файлов, наиболее удачной среди
которых является LZEXE, которая обеспечивает экономию порядка 30%
на каждом EXE-файле при очень высокой скорости распаковки (практически
не увеличивая время загрузки). Идее применить для этой цели
вирус уже более 15 лет и она высказывалась еще Ф.Коэном для обоснования
своих работ. Теоретически здесь вроде бы "все чисто". Вирус,
заражая программы, свертывает их с помощью какого-то метода,
а при запуске развертывает. Однако с практической точки зрения эта
идея не выдерживает никакой критики. Дело в том, что включаемый в
сжатые программы распаковщик должен иметь минимальную длину (600
байтов для LZEXE), что в случае вируса обеспечить невозможно. Более
правильным подходом к реализации идеи сжатия информации на
диске, если уж добиваться "тотального" ее осуществления, является
написание специального дискового драйвера, который во-первых, не
включается в сжатую программу, а во-вторых, может сжимать не только
исполняемые файлы, а и все файлы, помеченные определенным атрибутом.
Кстати, такие драйверы были реализованы и успешно применяются.
Однако широкое их распространение сдерживает тот факт, что
достигаемый эффект составляет порядка 20%, т.е. невелик и не компенсирует
все возникающие при этом сложности и неудобства. Есть
все основания предполагать, что для "вируса сжатия" общий эффект
будет отрицательным, поскольку на каждой программе вирус должен
экономить не менее 12-16К (размер одного кластера, скажем, 4К +
собственный размер вируса, который для этого довольно сложного вируса
вряд ли составит меньше 8К), что для программ, меньших 64K,
т.е. для всех COM-файлов, практически нереально. Кроме того, если
не прибегать к каким-то ухищрениям, то вирусу придется хранить в
сжатой программе и достаточно объемную программу упаковки, которая
там совершенно не нужна, но которую нельзя выкинуть, т.к. иначе
вирус теряет способность к размножению. Ну и наконец, поскольку
часть программ при сжатии теряет работоспособность, то неясно как
предохранить такие программы от заражения.
Конечно, не исключены и какие-то другие возможные приложения
"полезного" вируса, однако такая форма коммуникации программ должна
учитываться уже при разработке операционной системы, а экспериментирование
должно быть ограничено лабораторными экспериментами
на новых операционных системах. Возможно, что "вирусоподобные"
программы окажутся полезными в каких-то узких областях системного
программирования. Нельзя бросаться в "запретительство" только потому,
что в MS DOS вирусы создают серьезные проблемы. В то же
время автор убежден, что безвредных вирусов для MS DOS, как и для
любой операционной системы, ориентированной на широкий круг пользователей,
принципиально не существует. По определению, процесс
размножения вируса неконтролируем (иначе это, строго говоря, не
вирус). Если операционная система широко используется, то она неизбежно
будет "мигрировать" с одного компьютера на другой, попадая
туда, где ее совсем не ждали. А возникающая в ряде организаций при
обнаружении нового вируса паника зачастую наносит больший ущерб,
чем сам вирус, парализуя работу на несколько дней. Как бы ни была
прививка тщательно написанной, неизбежно окажется, что она вызывает
потерю работоспособности части программ, какие-то тонкие взаимодействия
с другими резидентными программами. В общем, пользователей
ожидают приключения. А ведь лекарство не должно быть опаснее,
чем болезнь.
Принципиальной проблемой любой реализации "полезного" вируса является
его переносимость. В силу своей природы вирусы сильно зависят
от версии операционной системы є значительно больше, чем обычные
программы. Опыт показал, если зараженная вирусом программа работоспособна
в версии 3.3, то это совсем не означает, что она окажется
работоспособной в версии 4.0 или даже в версии 3.3 с
нестандартным командным процессором. В особенности плохо дело обстоит
с резидентными программами, которые часто после заражения
теряют работоспособность. А ведь развитие операционной системы может
продолжаться десятилетиями. Получается, что при получении новой
версии операционной системы все программы нужно срочно лечить,
затем доставать новый штамм и заражать повторно. В общем, вопросов
здесь явно больше, чем ответов.
И, наконец, последний аргумент в пользу ограничения экспериментов
по созданию "полезных" вирусов специализированными операционными
системами связан с тем, что по определению "полезный" вирус
будет распространяться свободно. Тем самым, доступность механизма
размножения (центральной части любого вируса), делает его общедоступной
базой для совсем небезобидных экспериментов. В частности,
он легко может быть модифицирован злоумышленником в троянскую
программу, которая, скажем, защищая от некоторых вирусов, сама периодически
стирает FAT.
Накопленный автором опыт изучения вирусов позволяет сделать вывод
о том, что в существующих вариантах любой вирус является опасной
программой, неизбежно вызывающей побочные эффекты. Последние
связаны либо с повреждением заражаемых программ, либо с нарушением
функционирования операционной системы. Если сравнивать переносимость
вирусов с переносимостью резидентных программ, то обычно вирусы
в большей степени зависят от версии операционной системы. При
размножении в среде отличной от "естественной" (например, более
поздняя версия операционной системы или нестандартный командный
процессор) вирусы, как правило, вызывают дополнительные побочные
эффекты вплоть до зависания операционной системы. Учитывая высказанные
доводы трудно не прийти к мнению о том, что "безвредных"
вирусов не существует, а эксперименты по их созданию для MS DOS
связаны со значительным риском "выпустить джинна из бутылки".
3. КЛАССИФИКАЦИЯ КОМПЬЮТЕРНЫХ ВИРУСОВ
"Я никаким насекомым не радуюсь,
потому что я их боюсь,є призналась Алиса. є
Є Но я могу вам сказать, как их зовут."
"А они, конечно, идут, когда их зовут?"
є небрежно заметил Комар.
"Нет, кажется, не идут."
"Тогда зачем же их звать, если они не идут?"
"Им это ни к чему, а нам все-таки нужно.
Иначе зачем вообще знать, как что называется"
Льюис Керрол
Серьезность и долговременный характер проблемы защиты от компьютерных
вирусов уже практически ни у кого не вызывают сомнений. Поэтому
необходимо организовать оперативный обмен информацией по
данной проблеме и наладить взаимодействие работающих в этой области
специалистов. Это, в свою очередь, требует решения ряда подзадач,
одной из которых является выработка стандартной классификации
компьютерных вирусов.
Стандартная классификация существенно облегчает накопление и
распространение знаний в любой области, и компьютерные вирусы не
являются исключением. Применительно к компьютерной вирусологии она
помогает решению такой важной задачи, как однозначное определение
типа обнаруженного вируса. При этом должен использоваться ограниченный
набор сравнительно простых и непротиворечивых признаков, не
требующих проведения глубокого анализа зараженных программ и элементов
операционной системы. Существующие в настоящее время классификации,
как правило, основаны на "кличках" є распространенных
среди программистов названиях, отражающих то или иное свойство вируса.
Анализируя имеющиеся неформальные названия, можно выявить
четыре основные тенденции их образования. Первая основана на указании
места обнаружения или разработки вируса (Lehigh, Jerusalem,
Vienna, Alameda), вторая є на содержащихся в теле вируса текстовых
строках (Vacsina, Eddie, Dark Avenger, Disk Killer, sUMsDos),
третья є на вызываемом вирусом эффекте (Time Bomb, DOS-62,
Cascade, Black Fridау) и наконец, четвертая є на длине тела вируса
или на приращении длины файла при заражении (524, 648, 1800, 2000
и т.д.). При этом один и тот же вирус может иметь множество
названий, и новое название, использованное разработчиком той или
иной антивирусной программы, далеко не всегда соответствует новому
вирусу.
Для широко известных вирусов перечень названий напоминает список
имен арабского шейха. Например, автор встречал более десяти названий
вируса, обнаруженного в декабре 1987 года в Иерусалимском университете
(RСЕ-1813 по предлагаемой ниже классификации), среди которых
три: Israeli virus (Израильский), Jerusalem (Иерусалим) и
PLO (ООП) є относятся к первому типу, два названия (sUMsDos и
sU) є ко второму типу, и, наконец, еще четыре: Black Hole (Черная
дыра), Black Friday (Черная пятница), Friday 13 (Тринадцатая пятница)
и Вирус замедления є к третьему типу (данный вирус "вырезает"
в левом углу экрана черную дыру, удаляет все запускаемые файлы
по пятницам, пришедшимся на 13 число и, кроме того, примерно через
20 мин. после запуска зараженной программы искусственно замедляет
работу компьютера в несколько сотен раз).
Конечно же, такое многообразие названий создает определенные затруднения,
особенно если учитывать, что данный вирус имеет несколько
отличающихся по деталям функционирования штаммов. Поэтому
необходим какой-то выход из создавшейся ситуации. На определенном
этапе среди разработчиков антивирусных средств наблюдалась стихийная
тенденция к использованию в качестве основных названий, применяемых
известным зарубежным полидетектором SCAN (фирма McAfee
Associates, США); однако он, естественно, запаздывает с классификацией
болгарских вирусов, не говоря уже о вирусах отечественного
изготовления. Поэтому набор обнаруживаемых им вирусов не соответствует
советским условиям, а используемые строки для контекстного
поиска (сигнатуры) часто неудачны (например, дают много ложных
срабатываний). При этом для ранних версий SCAN неоднократно наблюдались
случаи, когда наиболее актуальные для нас вирусы могут
классифицироваться неверно (как это было с подгруппой Vacsine
группы ТР-вирусов) или попадали в две группы сразу (например,
Vacsine и Yankee Doodle). В последнем случае создавалось ложное
впечатление о том, что файл заражен двумя вирусами сразу. Кроме
того, недавно появился другой достаточно мощный полидетектор
TNTVIRUS (фирма CARMEL Software Engineering), в котором в ряде
случаев используются другие названия. Не исключено, что будет третий,
четвертый и т.д. Поэтому необходим какой-то менее субъективный
и учитывающий нашу информационную изолирова
...Закладка в соц.сетях