2up.com |
3tunes.com |
Безобидные резидентные вирусы. Перехватывают INT 21h и при вызове функции DOS Find First (AH=4Eh) ищут COM-файлы и записываются в их начало. Содержат зашифрованные строки:
"04h.609": 04h Virus, (c) Enrico*.com "04h.635": 04h Virus*.com
20-е столетие несомненно является одним из поворотных этапов в жизни человечества. Как сказал один из писателей-фантастов, «человечество понеслось вперед, как подстегнутая лошадь», и, определив себя как технократическую цивилизацию, все свои силы наши деды, отцы и мы сами бросили на развитие техники в самых разных ее обличиях - от медицинских приборов до космических аппаратов, от сельскохозяйственных комбайнов до атомных электростанций, от транспорта до систем связи, - список бесконечен, поскольку крайне сложно привести область деятельности человечества, не затронутую развитием техники. // Что являлось причиной столь широкомасштабного и стремительного развития - военное противостояние политических систем, эволюционное «поумнение» человека или его патологическая лень (изобрести колесо, дабы не таскать мамонта на плечах) - пока неясно. Оставим эту загадку для историков последующих столетий.
Человечество захвачено техникой и уже вряд ли откажется от удобств, предоставляемых ею (мало кто пожелает поменять современный автомобиль на гужевую тягу). Уже очень многими напрочь забыта обычная почта с ее конвертами и почтальонами - вместо нее пришла электронная почта с ее ошеломляющей скоростью доставки (до нескольких минут вне зависимости от расстояния) и очень высокой надежностью. Не представляю себе существования современного общества без компьютера, способного многократно повысить производительность труда и доставить любую мыслимую информацию (что-то вроде принципа «пойди туда, не знаю куда, найди то, не знаю что»). Уже не удивляемся мобильному телефону на улице - я и сам к нему привык всего за один день.
20-е столетие также является одним из самых противоречивых, принесших истории человечества немало парадоксов, основной из которых, как мне кажется, является отношение человека к природе. Перестав жить в дружбе с природой, победив ее и доказав себе, что легко может ее уничтожить, человек вдруг понял, что погибнет и сам, - и поменялись роли в драме »Человек-Природа». Раньше человек защищал себя от природы, теперь же он все больше и больше защищает природу от самого себя.
Другим феноменом 20- го века является отношение человека к религии. Став технократом, человек не перестал верить в Бога (или его аналогов). Более того, появились и окрепли другие религии.
К основным техническим феноменам 20-го века относятся, на мой взляд, появление человека в космосе, утилизация атомной энергии вещества, грандиозный прогресс систем связи и передачи информации и, конечно же, ошеломляющее развитие микро- и макро-компьютеров. И как скоро появляется упоминание о феномене компьютеров, так тут же возникает еще один феномен конца нашего столетия - феномен компьютерных вирусов.
Быть может, многим покажется смешным или легкомысленным то, что факт возникновения компьютерных вирусов поставлен в один ряд с исследованиями космоса, атомного ядра и развитием электроники. Возможно, что я неправ в своих рассуждениях, однако дайте возможность объясниться.
Во-первых, компьютерные вирусы - это серьезная и довольно заметная проблема, возникновения которой никто не ожидал. Даже всевидящие фантасты-футурологи прошлого не говорят об этом ничего (насколько это мне известно). В их многочисленных произведениях с той или иной точностью предсказаны практически все технические достижения настоящего (вспомним, например, Уэллса с его идеей полета из пушки на Луну и марсиан, вооруженных неким подобием лазера). Если же говорить о вычислительных машинах, то тема эта вылизана донельзя - однако нет ни одного пророчества, посвященного компьютерным вирусам. Тема вируса в произведениях писателей появилась уже после того, как первый реальный вирус поразил свой первый компьютер.
Во-вторых, компьютерные вирусы - это первая вполне удачная попытка создать жизнь. Попытка удачная, но нельзя сказать, что полезная - современные компьютерные «микроорганизмы» более всего напоминают насекомых-вредителей, приносящих только проблемы и неприятности.
Но все таки - жизнь, поскольку компьютерным вирусам присущи все атрибуты живого - способность к размножению, приспособляемости к среде, движению и т.д. (естественно, только в пределах компьютеров - так же как все вышесказанное верно для биологических вирусов в пределах клеток организма).
Более того, существуют «двуполые» вирусы (см. вирус RMNS), а примером »многоклеточности» могут служить, например, макро-вирусы, состоящие из нескольких независимых макросов.
И в-третьих, тема вирусов стоит несколько особняком от всех остальных задач, решаемых при помощи компьютера (забудем о таких специфичных задачах, как взлом защиты от копирования и крипрографию). Практически все проблемы, решаемые при помощи вычислительной техники, являются продолжением целенаправленной борьбы человека с окружающей его природой. Природа ставит человеку длинное нелинейное дифференциальное уравнение в трехмерном пространстве - человек набивает компьютер процессорами, памятью, обвешивает пыльными проводами, много курит и в итоге решает это уравнение (или пребывает в состоянии уверенности, что решил). Природа дает человеку кусок провода с вполне определенными характеристиками - человек придумывает алгоритмы передачи как можно большего объема информации по этому проводу, терзает его модуляциями, сжимает байты в биты и терпеливо ждет сверхпроводимости при комнатной температуре. Природа (в лице фирмы IBM) дает человеку очередное ограничение в виде очередной версии IBM PC - и человек не спит ночами, опять много курит, оптимизируя коды очередной базы данных, дабы уместить ее в предоставленные ему ресурсы оперативной и дисковой памяти. И так далее.
А вот борьба с компьютерными вирусами является борьбой человека с человеческим же разумом (в некотором смысле тоже проявлением природных сил, хотя на этот счет имеется более одного мнения). Эта борьба является борьбой умов, поскольку задачи, стоящие перед вирусологами, ставят такие же люди. Они придумывают новый вирус - а нам с ним разбираться. Затем они придумывают вирус, в котором разобраться очень тяжело - но мы с ним разбираемся. И сейчас наверняка где-то сидит за компьютером парень, который не глупее меня, страдающий над очередным монстром, в котором мне придется разбираться целую неделю, а потом еще одну неделю отлаживать алгоритм антивируса.Кстати, чем не эволюция живых организмов?
Итак, появление компьютерных вирусов - один из наиболее интересных моментов в истории технического прогресса 20-го века, и настал момент закончить с около-философскими рассуждениями и перейти к конкретным вопросам. И вопрос об определении понятия «компьютерный вирус» будет стоять на первом месте.
Так что же такое компьютерный вирус?
На горе лежит дискета
У неё запорчен бут
Через дырочку в конверте
Её вирусы грызут
(Народный фольклор)
Объяснение будет дано на примере клерка, работающего исключительно с бумагами. Идея такого объяснения принадлежит Д.Н.Лозинскому.
Представим себе аккуратного клерка, который приходит на работу к себе в контору и каждый день обнаруживает у себя на столе стопку листов бумаги со списком заданий, которые он должен выполнить за рабочий день. Клерк берет верхний лист, читает указания начальства, пунктуально их выполняет, выбрасывает «отработанный» лист в мусорное ведро и переходит к следующему листу. Предположим, что некий злоумышленник тайком прокрадывается в контору и подкладывает в стопку бумаг лист, на котором написано следующее:
«Переписать этот лист два раза и положить копии в стопку заданий соседей»
Что сделает клерк? Дважды перепишет лист, положит его соседям на стол, уничтожит оригинал и перейдет к выполнению второго листа из стопки, т.е. продолжит выполнять свою настоящую работу. Что сделают соседи, являясь такими же аккуратными клерками, обнаружив новое задание? То же, что и первый: перепишут его по два раза и раздадут другим клеркам. Итого, в конторе бродят уже четыре копии первоначального документа, которые и дальше будут копироваться и раздаваться на другие столы.
Примерно так же работает и компьютерный вирус, только стопками бумаг-указаний являются программы, а клерком - компьютер. Так же как и клерк, компьютер аккуратно выполняет все команды программы (листы заданий), начиная с первой. Если же первая команда звучит как «скопируй меня в две другие программы», то компьютер так и сделает, - и команда-вирус попадает в две другие программы. Когда компьютер перейдет к выполнению других »зараженных» программ, вирус тем же способом будет расходиться все дальше и дальше по всему компьютеру.
В приведенном выше примере про клерка и его контору лист-вирус не проверяет, заражена очередная папка заданий или нет. В этом случае к концу рабочего дня контора будет завалена такими копиями, а клерки только и будут что переписывать один и тот же текст и раздавать его соседям - ведь первый клерк сделает две копии, очередные жертвы вируса - уже четыре, затем 8, 16, 32, 64 и т.д., т.е.
количество копий каждый раз будет увеличиваться в два раза.
Если клерк на переписывание одного листа тратит 30 секунд и еще 30 секунд на раздачу копий, то через час по конторе будет «бродить» более 1.000.000.000.000.000.000 копий вируса! Скорее всего, конечно же, не хватит бумаги, и распространение вируса будет остановлено по столь банальной причине.
Как это ни смешно (хотя участникам этого инцидента было совсем не смешно), именно такой случай произошел в 1988 году в Америке - несколько глобальных сетей передачи информации оказались переполненными копиями сетевого вируса (вирус Морриса), который рассылал себя от компьютера к компьютеру. Поэтому «правильные» вирусы делают так:
«Переписать этот лист два раза и положить копии в стопку заданий соседей, если у них еще нет этого листа».
Проблема решена - «перенаселения» нет, но каждая стопка содержит по копии вируса, при этом клерки еще успевают справляться и с обычной работой.
«А как же уничтожение данных?» - спросит хорошо эрудированная домохозяйка. Все очень просто - достаточно дописать на лист примерно следующее:
«1. Переписать этот лист два раза и положить копии в стопку заданий соседей, если у них еще нет этого листа.
2. Посмотреть на календарь - если сегодня пятница, попавшая на 13-е число, выкинуть все документы в мусорную корзину»
Примерно это и выполняет хорошо известный вирус «Jerusalem» (другое название - «Time»).
Кстати, на примере клерка очень хорошо видно, почему в большинстве случаев нельзя точно определить, откуда в компьютере появился вирус. Все клерки имеют одинаковые (с точностью до почерка) КОПИИ, но оригинал-то с почерком злоумышленника уже давно в корзине!
Вот такое простое объяснение работы вируса. Плюс к нему хотелось бы привести две аксиомы, которые, как это ни странно, не для всех являются очевидными:
Во-первых, вирусы не возникают сами собой - их создают очень злые и нехорошие программисты-хакеры и рассылают затем по сети передачи данных или подкидывают на компьютеры знакомых. Вирус не может сам собой появиться на Вашем компьютере - либо его подсунули на дискетах или даже на компакт-диске, либо Вы его случайно скачали из компьютерной сети передачи данных, либо вирус жил у Вас в компьютере с самого начала, либо (что самое ужасное) программист-хакер живет у Вас в доме.
Во-вторых: компьютерные вирусы заражают только компьютер и ничего больше, поэтому не надо бояться - через клавиатуру и мышь они не передаются.
Первые исследования саморазмножающихся искусственных конструкций проводились в середине нынешнего столетия. В работах фон Неймана, Винера и других авторов дано определение и проведен математический анализ конечных автоматов, в том числе и самовоспроизводящихся. Термин «компьютерный вирус» появился позднее - официально считается, что его впервые употребил сотрудник Лехайского университета (США) Ф.Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США. С тех пор прошло немало времени, острота проблемы вирусов многократно возросла, однако строгого определения, что же такое компьютерный вирус, так и не дано, несмотря на то, что попытки дать такое определение предпринимались неоднократно.
Основная трудность, возникающая при попытках дать строгое определение вируса, заключается в том, что практически все отличительные черты вируса (внедрение в другие объекты, скрытность, потенциальная опасность и проч.) либо присущи другим программам, которые никоим образом вирусами не являются, либо существуют вирусы, которые не содержат указанных выше отличительных черт (за исключением возможности распространения).
Например, если в качестве отличительной характеристики вируса принимается скрытность, то лекго привести пример вируса, не скрывающего своего распространения. Такой вирус перед заражением любого файла выводит сообщение, гласящее, что в компьютере находится вирус и этот вирус готов поразить очередной файл, затем выводит имя этого файла и запрашивает разрешение пользователя на внедрение вируса в файл.
Если в качестве отличительной черты вируса приводится возможность уничтожения им программ и данных на дисках, то в качестве контрпримера к данной отличительной черте можно привести десятки совершенно безобидных вирусов, которые кроме своего распространения ничем больше не отличаются.
Основная же особенность компьютерных вирусов - возможность их самопроизвольного внедрения в различные объекты операционной системы - присуща многим программам, которые не являются вирусами.
Например, самая распространенная операционная система MS-DOS имеет в себе все необходимое, чтобы самопроизвольно устанавливаться на не-DOS'овские диски. Для этого достаточно на загрузочный флоппи-диск, содержащий DOS, записать файл AUTOEXEC.BAT следующего содержания:
SYS A: COPY *.* A:\ SYS B: COPY *.* B:\ SYS C: COPY *.* C:\ ...
Модифицированная таким образом DOS сама станет самым настоящим вирусом с точки зрения практически любого существующего определения компьютерного вируса.
Таким образом, первой из причин, не позволяющих дать точное определение вирусу, является невозможность однозначно выделить отличительные признаки, которые соответствовали бы только вирусам.
Второй же трудностью, возникающей при формулировке определения компьютерного вируса является то, что данное определение должно быть привязано к конкретной операционной системе, в которой этот вирус распространяется. Например, теоретически могут существовать операционные системы, в которых наличие вируса просто невозможно. Таким примером может служить система, где запрещено создавать и изменять области выполняемого кода, т.е. запрещено изменять объекты, которые либо уже выполняются, либо могут выполняться системой при каких-либо условиях.
Поэтому представляется возможным сформулировать только обязательное условие для того, чтобы некоторая последовательность выполняемого кода являлась вирусом.
ОБЯЗАТЕЛЬНЫМ (НЕОБХОДИМЫМ) СВОЙСТВОМ КОМПЬЮТЕРНОГО ВИРУСА является возможность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
Следует отметить, что это условие не является достаточным (т.е. окончательным), поскольку следуя вышеприведенному примеру операционная система MS-DOS удовлетворяет данному свойству, но вирусом, скорее всего, не является.
Вот почему точного определения вируса нет до сих пор, и вряд ли оно появится в обозримом будущем.
Следовательно нет точно определенного закона, по которому «хорошие» файлы можно отличить от «вирусов». Более того, иногда даже для конкретного файла довольно сложно определить, является он вирусом или нет.
Вот два примера: вирус KOH и программа ALREADY.COM.
Пример 1. Есть... вирус? утилита? с названием KOH. Эта программа шифрует/расшифровывает диски _только_по_запросу_пользователя_. Выполнена она в виде загрузочной дискеты - boot-cектор содержит bootstrap loader KOH, а где-то в других секторах лежит основной код KOH. При загрузке с дискеты KOH задает пользователю вопрос типа: «А можно, я сам себя установлю на винчестер?» (если он уже на винчестере, то спрашавает то же самое про дискету). При утвердительном ответе KOH переносит себя с диска на диск.
В результате KOH переносит (копирует) сам себя с дискеты на винчестер, а с винчестера на дискеты, но только с разрешения хозяина компьютера.
Затем KOH выводит текст о своих hot-keys («горячие» клавиши), по которым он шифрует/расшифровывает диски - спрашивает пароль, читает сектора, шифрует их и делает недоступными, если не знать пароля. Есть у него, кстати, ключ де-инсталляции, по коему он сам себя с диска убирает (расшифровав, естественно, все, что было зашифровано).
Итого, KOH - это некая утилита защиты информации от несанкционированного доступа. Добавлена к ней, правда, одна особенность: сия утилита сама себя может копировать с диска на диск (с разрешения пользователя). Вирус ли это?.. Да или нет? Скорее всего - нет...
И все-бы было ничего, и никто бы эту утилиту по имени KOH вирусом не обозвал, но только bootstrap loader у этого KOH практически на 100% совпадает с довольно «популярным» вирусом «Havoc» («StealthBoot»)... «и все - и крышка празднику». Вирус! И официальное название есть - «StealthBoot.KOH».
Если бы, конечно, автором KOH был бы не безызвестный программист, а, скажем, Симантек, или Sierra, или даже Сам Microsoft, то никто бы и не посмел назвать это вирусом...
Пример 2. Есть некая программа ALREADY.COM, которая сама себя копирует в разные подкаталоги на диске в зависимости от системной даты.
Вирус? Конечно да - типичный вирус-червь, сам себя расползающий по дискам (включая сетевые). Да?.. Да!
«Вы играли - но не угадали ни одной буквы!» Hе вирус это, как оказалось, а компонента от какого-то софтвера. Однако если этот файл выдернуть из этого софтвера, то ведет он себя как типичный вирус.
Итого были приведены два живых примера:
1. не-вирус - вирус 2. вирус - не-вирус
Внимательный читатель, который не прочь поспорить, может возразить:
Стоп. Hазвание «вирусы» по отношению к программам пришло из биологии именно по признаку саморазмножения. КОH этому условию соответствует, следовательно это есть вирус (или комплекс, включающий вирусный компонент)...
В таком случае DOS является вирусом (или комплексом, включающим вирусный компонент), поскольку в нем есть команда SYS и COPY. А если на диске присутствует файл AUTOEXEC.BAT, приведенный несколькими абзацами выше, то для размножения не потребуется даже вмешательства пользователя. Плюс к этому: если принять за необходимый и достаточной признак вируса возможность саморазмножения, то тогда любая программа, имеющая инсталлятор, является вирусом. Итого: аргумент не проходит.
... что, если под вирусом понимать не просто «саморазмножающийся код», но «саморазмножающийся код, не выполняющий полезных действий или даже приносящий вред, без привлечения/информирования пользователя»...
Вирус KOH является программой, шифрующей диски по паролю, вводимому пользователем. _Все_ свои действия KOH комментирует на экране и спрашивает разрешения пользователя. Плюс к тому имеет деинсталлятор - расшифровывает диски и удаляет с них свой код. Однако все равно - вирус!
Если в случае с ALREADY.COM привлечь субъективные критерии (полезна/не полезна, входит в комплект/самостоятельна и т.п.), то, возможно, это и не стоит называть вирусом/червяком. Hо стоит ли привлекать эти самые субъективные критерии?
А какие могут быть объективные критерии вируса? Саморазмножение, скрытность и деструктивные свойства? Но ведь на каждый объективный критерий можно привести два контрпримера - a) пример вируса, не подходящего под критерий, и b) пример не-вируса, подходящего под критерий:
Саморазмножение:
Intended-вирусы, не умеющие размножаться по причине большого количества ошибок, или размножающиеся только при очень ограниченных условиях.
MS-DOS и вариации на тему SYS+COPY.
Скрытность:
Вирусы «KOH», «VirDem», «Macro.Word.Polite» и некоторые другие информируют пользователя о своем присутствии и размножении.
Сколько примерно (с точностью до десятка) драйверов сидит под стандартной Windows95 ? Скрытно сидит, между прочим.
Деструктивные свойства:
Безобидные вирусы, типа «Yankee», которые прекрасно живут в DOS, Windows 3.x, Win95, NT и ничего никуда не гадят.
Старые версии Norton Disk Doctor'а на диске с длинными именами файлов. Запуск NDD в этом случае превращает Disk Doctor'а в Disk Destroyer'а.
Посему тема «нормального» определения компьютерного вируса остается открытой. Есть только несколько точных вех: например, файл COMMAND.COM вирусом не является, а печально известная программа с текстом «Dis is one half» является стопроцентным вирусом («OneHalf»). Все, что лежит между ними, может как оказаться вирусом, так и нет.
Не горячитесь, Шура, - вы еще не отсидели за прошлое дело.
из Жванецкого
Объяснений, что такое компьютерный вирус, можно привести несколько. Самое простое - бытовое объяснение для домохозяйки, которая ни разу в жизни компьютера не видела, но знает, что Он есть, и что в Нем водятся Вирусы. Такое объяснение дается довольно легко, чего нельзя сказать о втором объяснении, рассчитанном на специалиста в области программ. Мне пока не представляется возможным дать точное определение компьютерного вируса и провести четкую грань между программами по принципу «вирус - невирус».
Сам я написанием вирусов не занимался, с их авторами пересекаюсь довольно редко, и, следовательно, мои соображения по этому поводу могут быть лишь чисто теоретическими.
Так кто же пишет вирусы? На мой взгляд, основную их массу создают студенты и школьники, которые только что изучили язык ассемблера, хотят попробовать свои силы, но не могут найти для них более достойного применения. Отраден тот факт, что значительная часть таких вирусов их авторами часто не распространяется, и вирусы через некоторое время «умирают» вместе с дискетами, на которых хранятся. Такие вирусы пишутся скорее всего только для самоутверждения.
Вторую группу составляют также молодые люди (чаще - студенты), которые еще не полностью овладели искусством программирования, но уже решили посвятить себя написанию и распространению вирусов. Единственная причина, толкающая подобных людей на написание вирусов, это комплекс неполноценности, который проявляет себя в компьютерном хулиганстве.
Из-под пера подобных «умельцев» часто выходят либо многочисленные модификации «классических» вирусов, либо вирусы крайне примитивные и с большим числом ошибок (такие вирусы я называю «студенческими»). Значительно облегчилась жизнь подобных вирусописателей после выхода конструкторов вирусов, при помощи которых можно создавать новые вирусы даже при минимальных знаниях об операционной системе и ассемблере, или даже вообще не имея об этом никакого представления. Их жизнь стала еще легче после появления макро-вирусов, поскольку вместо сложного языка Ассемблер для написания макро-вирусов достаточно изучить довольно простой Бейсик.
Став старше и опытнее, но так и не повзрослев, многие из подобных вирусописателей попадают в третью, наиболее опасную группу, которая создает и запускает в мир «профессиональные» вирусы. Эти очень тщательно продуманные и отлаженные программы создаются профессиональными, часто очень талантливыми программистами. Такие вирусы нередко используют достаточно оригинальные алгоритмы, недокументированные и мало кому известные способы проникновения в системные области данных.
«Профессиональные» вирусы часто выполнены по технологии «стелс» и(или) являются полиморфик-вирусами, заражают не только файлы, но и загрузочные сектора дисков, а иногда и выполняемые файлы Windows и OS/2.
Довольно значительную часть в моей коллекции занимают «семейства» - группы из нескольких (иногда более десятка) вирусов. Представителей каждой их таких групп можно выделить по одной отличительной черте, которая называется «почерком»: в нескольких различных вирусах встречаются одни и те же алгоритмы и приемы програмирования. Часто все или почти все представители семейства принадлежат одному автору, и иногда довольно забавно следить за «становлением пера» подобного художника - от почти «студенческих» попыток создать хоть что-нибудь, похожее на вирус, до вполне рабоспособной реализации «профессионального» вируса.
По моему мнению, причина, заставляющая таких людей направлять свои способности на такую бессмысленную работу все та же - комплекс неполноценности, иногда сочетающийся с неуравновешенной психикой. Показателен тот факт, что подобное вирусописительство часто сочетается с другими пагубными пристрастиями. Так, весной 1997 года один из наиболее известных в мире авторов вирусов по кличке Talon (Австралия) скончался в возрасте 21 года от летальной дозы героина.
Несколько отдельно стоит четвертая группа авторов вирусов - «исследователи». Эта группа состоит из довольно сообразительных программистов, которые занимаются изобретением принципиально новых методов заражения, скрытия, противодействия антивирусам и т.д. Они же придумывают способы внедрения в новые операционные системы, конструкторы вирусов и полиморфик-генераторы. Эти программисты пишут вирусы не ради собственно вирусов, а скорее ради «исследования» потенциалов «компьютерной фауны».
Часто авторы подобных вирусов не запускают свои творения в жизнь, однако очень активно пропагандируют свои идеи через многочисленные электронные издания, посвященные созданию вирусов. При этом опасность от таких «исследовательских» вирусов не падает - попав в руки «профессионалов» из третьей группы, новые идеи очень быстро реализуются в новых вирусах.
Отношение к авторам вирусов у меня тройственное. Во-первых, все, кто пишет вирусы или способствует их распространению, являются «кормильцами» антивирусной индустрии, годовой оборот которой я оцениваю как минимум две сотни миллионов долларов или даже более того (при этом не стоит забывать, что убытки от вирусов составляют несколько сотен миллионов долларов ежегодно и в разы превышают расходы на антивирусные программы). Если общее количество вирусов к концу 1997 года скорее всего достигнет 20.000, то нетрудно подсчитать, что доход антивирусных фирм от каждого вируса ежегодно составляет минимум 10 тысяч долларов. Конечно же, авторам вирусов не следует надеяться на материальное вознаграждение: как показывает практика, их труд был и остается бесплатным. К тому же на сегодняшний день предложение (новые вирусы) вполне удовлетворяет спрос (возможности антивирусных фирм по обработке новых вирусов).
Во-вторых, мне несколько жаль авторов вирусов, особенно «профессионалов». Ведь для того, чтобы написать подобный вирус, необходимо: a) затратить довольно много сил и времени, причем гораздо больше, чем требуется для того, чтобы разобраться в вирусе занести его в базу данных или даже написать специальный антивирус; и б) не иметь другого, более привлекательного, занятия. Следовательно, вирусописатели-»профессионалы» довольно работоспособны и одновременно с этим маются от безделья - ситуация, как мне кажется, весьма печальная.
И в третьих, к моему отношении к авторам вирусов довольно сильно подмешаны чувства нелюбви и презрения как к людям, заведомо и бесцельно тратящим себя во вред всем остальным.
Тяжела и неказиста
Жизнь простого программиста
(Народный фольклор)
Нет предела нашему интегралу.
(Народная мудрость)
Мнений по поводу даты рождения первого компьютерного вируса очень много. Мне доподлинно известно только одно: на машине Беббиджа его не было, а на Univac 1108 и IBM-360/370 они уже были («Pervading Animal» и «Christmas tree»). Таким образом, первый вирус появился где-то в самом начале 70-х или даже в конце 60-х годов, хотя «вирусом» его никто еще не называл. На этом разговор о вымерших ископаемых предлагаю считать завершенным.
Поговорим о новейшей истории: «Brain», «Vienna», «Cascade» и далее. Те, кто начал работать на IBM-PC аж в середине 80-х, еще не забыли повальную эпидемию этих вирусов в 1987-89 годах. Буквы сыпались на экранах, а толпы пользователей неслись к специалистам по ремонту дисплеев (сейчас все наоборот: винчестер сдох от старости, а валят на неизвестный передовой науке вирус). Затем компьютер заиграл чужеземный гимн «Yankee Doodle», но чинить динамики уже никто не бросился - очень быстро разобрались, что это - вирус, да не один, а целый десяток.
Так вирусы начали заражать файлы. Вирус «Brain» и скачущий по экрану шарик вируса «Ping-pong» ознаменовали победу вируса и над Boot-сектором. Все это очень не нравилось пользователям IBM-PC, и - появились противоядия. Первым попавшимся мне антивирусом был отечественный ANTI-KOT: это легендарный Олег Котик выпустил в свет первые версии своей программы, которая уничтожала целых 4 (четыре) вируса (американский SCAN появился у нас в стране несколько позднее). Кстати, всем, кто до сих пор сохранил копию этого антивируса, предлагаю немедленно ее стереть (да простит меня Олег Котик!) как программу вредную и ничего, кроме траты лишних нервов и ненужных телефонных звонков, не приносящую. К сожалению, ANTI-KOT определяет вирус «Time» («Иерусалимский») по комбинации «MsDos» в конце файла, а некоторые другие антивирусы эти самые буквы аккуратно прицепляют ко всем файлам с расширением COM или EXE.
Следует обратить внимание на то, что истории завоевания вирусами России и Запада различаются между собой. Первым вирусом, стремительно распространившимся на Западе был загрузочный вирус «Brain», и только потом появились файловые вирусы «Vienna» и «Cascade». В России же наоборот, сначала появились файловые вирусы, а годом позже - загрузочные.
Время шло, вирусы плодились. Все они были чем-то похожи друг на друга, лезли в память, цеплялись к файлам и секторам, периодически убивали файлы, дискеты и винчестеры. Одним из первых «откровений» стал вирус «Frodo.4096» - первый из известных мне файловых вирусов-невидимок (стелс).
Этот вирус перехватывал INT 21h и, при обращении через DOS к зараженным файлам, изменял информацию таким образом, что файл появлялся перед пользователем в незараженном виде. Но это была только надстройка вируса над MS-DOS. Не прошло и года, как электронные тараканы полезли внутрь ядра DOS (вирус-невидимка «Beast.512»). Идея невидимости продолжала приносить свой плоды и далее: летом 1991 года пронесся, кося компьютеры как бубонная чума, вирус «Dir_II». «Да-a-a!» сказали все, кто в нем копался.
Но бороться с невидимками было довольно просто: почистил RAM - и будь спокоен, ищи гада и лечи его на здоровье. Побольше хлопот доставляли самошифрующиеся вирусы, которые иногда всречались в очередных поступлениях в коллекции. Ведь для их идентификации и удаления приходилось писать специальные подпрограммы, отлаживать их. Но на это никто тогда не обращал внимания, пока... Пока не появились вирусы нового поколения, те, которые носят название полиморфик-вирусы. Эти вирусы используют другой подход к невидимости: они шифруются (в большинстве случаев), а в расшифровщике используют команды, которые могут не повторяться при заражении различных файлов.
Первый полиморфик-вирус появился в начале 90-х кодов - «Chameleon», но по-настоящему серьезной проблема полиморфик-вирусов стала лишь год спустя - в апреле 1991-го, когда практически весь мир был охвачен эпидемией полиморфик-вируса «Tequila» (насколько мне известно, эта эпидемия практически не затронула Россию, а первая Российская эпидемия, вызванная полиморфик-вирусом, произошла аж три года спустя - год 1994, это был вирус «Phantom1»).
Популярность идеи самошифрующихся полиморфик-вирусов вылилась в появление генераторов полиморфик-кода - в начале 1992 появляется знаменитый вирус «Dedicated», базирующийся на первом известном полиморфик-генераторе MtE и открывший серию MtE-вирусов, а через довольно короткое время появляется и сам полиморфик-генератор. Представляет он из себя объектный модуль (OBJ-файл), и теперь для того чтобы из самого обычного нешифрованного вируса получить полиморфик-мутанта достаточно лишь слинковать их объектные модули - OBJ-файл полиморфик-генератора и OBJ-файлом вируса. Теперь автору вируса, если он желает создать настоящий полиморфик-вирус, не придется корпеть над кодами собственного за/расшифровщика. При желании он может подключить к своему вирусу полиморфик-генератор и вызывать его из кодов вируса.
К счастью, первый MtE-вирус не попал в «живую природу» и не вызвал эпидемии, а разработчики антивирусных программ, соответственно, имели некоторый запас времени для подготовки к отражению новой напасти.
Всего год спустя производство полиморфик-вирусов становится уже «ремеслом», и в 1993 году произошел их «обвал». В поступающих в коллекцию вирусах удельный вес самошифрующихся полиморфик-вирусов становится все больше и больше. Создается впечатление, что одним из основных направлений в трудном деле создания вирусов становится разработка и отладка полиморфик-механизма, а конкуренция среди авторов вирусов сводится не к тому, кто из них напишет самый крутой вирус, а чей полиморфик-механизм окажется круче всех.
Вот далеко не полный список тех из них, которые можно назвать стопроцентно полиморфичными (конец 1993):
Лень - движущая сила прогресса. Эта народная мудрость не нуждается в комментариях. Но только в середине 1992 года прогресс в виде автоматизации производства дошел и до вирусов. Пятого июля 1992 года объявлен к выпуску в свет первый конструктор вирусного кода для IBM-PC совместимых компьютеров - пакет VCL (Virus Creation Laboratory) версии 1.00.
Этот конструктор позволяет генерировать исходные и хорошо откомментированные тексты вирусов (файлы, содержащие ассемблерный текст), объектные модули и непосредственно зараженные файлы. VCL снабжен стандартным оконным интерфейсом. При помощи системы меню можно выбрать тип вируса, поражаемые объекты (COM и/или EXE), наличие или отсутствие самошифровки, противодействие отладчику, внутренние текстовые строки, подключить до десяти эффектов, сопровождающих работу вируса и т.п. Вирусы могут использовать стандартный способ поражения файлов в их конец, или записывать себя вместо файлов, уничтожая их первоначальное содержимое, или являться вирусами-спутниками (международный термин - компаньон-вирусы [companion]).
И все сразу стало значительно проще: захотел напакостить ближнему - садись за VCL и, за 10-15 минут настрогав 30-40 разных вирусов, запусти их на неприятельском компьютере(ах). Каждому компьютеру - отдельный вирус!
Дальше - больше. 27 июля появилась первая версия конструктора PS-MPC (Phalcon/Skism Mass-Produced Code Generator). Этот конструктор не содержит в себе оконного интерфейса и генерирует исходные тексты вирусов по файлу конфигурации. Этот файл содержит в себе описание вируса: тип поражаемых файлов (COM или EXE); резидентность (PS-MPC создает также и резидентные вирусы, чего не позволяет конструктор VCL); способ инсталляции резидентной копии вируса; возможность использования самошифрования; возможность поражения COMMAND.COM и массу другой полезной информации.
На основе PS-MPC был создан конструктор G2 (Phalcon/Skism's G2 0.70 beta), который поддерживает файлы конфигурации стандарта PS-MPC, однако при генерации вируса использует большее количество вариантов кодирования одних и тех же функций.
Имеющаяся у меня версия G2 помечена первым января 1993 года. Видимо, новогоднюю ночь авторы G2 провели за компьютерами. Лучше бы они вместо этого попили шампанского, хотя одно другому не мешает.
Итак, каким же образом повлияли конструкторы вирусов на электронную фауну? В коллекции вирусов, которая хранится на моем «складе», количество «сконструированных» вирусов следующее:
на базе VCL и G2 - по несколько сотен;
на базе PS-MPC - более тысячи.
Так проявилась еще одна тенденция в развитии компьютерных вирусов: все большую часть в коллекциях начинают занимать «сконструированные» вирусы, а в ряды их авторов начинают вливаться откровенно ленивые люди, которые сводят творческую и уважаемую профессию вирусописания к весьма заурядному ремеслу.
Год 1992-й принес больше, чем полиморфик-вирусы и вирус-конструкторы. В конце этого года появился первый вирус для Windows, открывший, таким образом, новую страницу в истории вирусописания. Небольного размера (менее 1K), совершенно безвредный и нерезидентный вирус вполне грамотно заражал выполняемые файлы нового формата Windows (NewEXE) и своим появлением пробил для вирусов окно в мир Windows.
Через некоторое время появились вирусы для OS/2, а в январе 1996 - и первый вирус для Windows95. На сегодняшний день не проходит и недели без появления новых вирусов, заражающих не-DOS системы, и, видимо, проблема не-DOS вирусов в скором времени выйдет на первый план, перекрыв проблему DOS-вирусов. Скорее всего, это произойдет эквивалентно постепенному умиранию DOS и распространению новых операционных систем и программ для них. Коль скоро все существующие DOS-приложения будут замещены их аналогами для Windows, Win95 и OS/2, проблема DOS-вирусов сойдет на нет и оставит после себя лишь теоретический интерес для компьютерного социума.
В том же 1993 году появилась и первая попытка написать вирус, работающий в защищенном режиме процессора Intel386. Это был загрузочный вирус «PMBS», названный так по строке текста внутри его кода. При загрузке с зараженного диска вирус переходил в защищенный режим, устанавливал себя как супервизор системы и затем загружал DOS в режиме виртуального окна V86. К счастью, вирус этот оказался «не жильцом» - его второе поколение напрочь отказывалось размножаться по причине нескольких ошибок в коде вируса. К тому же он «завешивал» систему, если какая-либо из программ пыталась выйти за пределы V86, например, определить наличие расширенной памяти.
Эта неудачная попытка написать вирус-супервизор так и оставалась единственной известной вплоть до весны 1997 года, когда один московский умелец выпустил вирус «PM.Wanderer» - вполне «удачную» реализацию вируса, работающего в защищенном режиме.
Пока непонятно, станут ли в дальнейшем вирусы-супервизоры действительной проблемой для пользователей и разработчиков антивирусных программ. Скорее всего нет, так как такие вирусы должны «засыпать» на время работы новых операционных систем (Windows, Win95/NT, OS/2), что позволяет их (вирусы) легко обнаружить и удалить. Однако полноценный вирус-супервизор, использующий технологию «стелс» может принести немало неприятностей пользователям «чистой» DOS, ведь обнаружить такой стелс-вирус под DOS не представляется возможным.
Год 1995-й, август. Все прогрессивное человечество, компания Microsoft и Билл Гейтс лично празднуют выход новой операционной системы Windows95. На фоне шумного торжества практически незамеченным прошло сообщение о появлении вируса, использующего принципиально новые методы заражения, вируса, заражающего документы Microsoft Word.
Честно говоря, это был не первый вирус, заражающий документы Word. До этого момента антивирусные фирмы уже имели на руках первый опытный образец вируса, который переписывал себя из документа в документ. Однако никто не обратил серьезного внимания на этот не вполне удачный эксперимент. В результате практически все антивирусные фирмы оказались не готовыми к последующему развитию событий - эпидемии макро-вируса - и начали спешно предпринимать полу-меры. Например, несколько фирм практически одновременно выпустили в свет документы-антивирусы, действовавшие примерно по тем же принципам, что и вирус, однако уничтожавшие его вместо размножения.
Кстати, спешно пришлось править антивирусную литературу - ведь она раньше на вопрос «Можно ли заразить компьютер при чтении файла?» отвечала «Однозначно - нет!» и приводила длинные доказательства этого.
А вирус, получивший к тому времени имя «Concept», продолжал победное движение по планете. Появившись скорее всего в каком-то из подразделений фирмы Microsoft, «Concept» в мгновение ока завладел тысячами (если не миллионами) компьютеров. Это неудивительно, ведь передача текстов в формате MS Word стала де-факто одним из стандартов, а для того, чтобы заразиться вирусом, требуется всего-лишь открыть зараженный документ, и все остальные документы, редактируемые в зараженном Word'e также оказываются зараженными. В результате, получив по Internet зараженный файл и прочитав его, пользователь, не зная того сам, оказывался «разносчиком заразы», и вся его переписка (если, конечно же она велась при помощи MS Word) также оказывалась зараженной! Таким образом, возможность заражения MS Word, помноженная на скорость Internet, стала одной из самых серьезных проблем за всю историю существования вирусов.
Не прошло и года, как летом 1996-го года появился вирус «Laroux» («Лару»), заражающий таблицы MS Excel. Как и в случае с вирусом «Concept», новый макро-вирус был обнаружен «в природе» практически одновременно в разных фирмах. Кстати, в 1997 году этот вирус стал причиной эпидемии в Москве.
В том же 1996 году появились первые конструкторы макро-вирусов, а в начале 1997 года появились первые полиморфик-макро-вирусы для MS-Word и первые вирусы для MS Office97. Плюс к тому непрерывно росло число разнообразных макро-вирусов, достигшее нескольких сотен к лету 1997-го.
Открыв новую страницу в августе 1995-го, опираясь на весь опыт, накопленный вирусописательством за почти десятилетие непрерывной работы и совершенствования, макро-вирусы, пожалуй, являются самой большой проблемой современной вирусологии.
Пора перейти к более детальному описанию событий. Начнем с самого начала.
Чего ожидать от компьютерного андеграунда в последующие годы? Скорее всего основными проблемами останутся: 1) полиморфик-DOS-вирусы, к которым добавятся проблемы полиморфизма в макро-вирусах и вирусах для Windows и OS/2; 2) макро-вирусы, которые будут находить все новые и новые приемы заражения и скрытия своего кода в системе; 3) сетевые вирусы, использующие для своего распространения протоколы и команды компьютерных сетей.
Пункт 3) находится пока только на самой ранней стадии - вирусы делают первые робкие попытки самостоятельно распространять свой код по MS Mail и пользуясь ftp, однако все еще впереди.
Не исключено, что появятся и другие проблемы, которые принесут немало неприятностей пользователям и достаточное количество неурочной работы разработчикам антивирусных программ. Однако я смотрю на будущее с оптимизмом: все проблемы, когда-либо встававшие в истории развития вирусов, были довольно успешно решены. Скорее всего так же успешно будут решаться и будущие проблемы, пока еще только витающие идеями в воспаленном разуме вирусописателей.
Что будет послезавтра и как долго вообще будут существовать вирусы? Для того, чтобы ответить на этот вопрос следует определить, где и при каких условиях водятся вирусы.
Основная питательная среда для массового распространения вируса в ЭВМ, на мой взгляд, обязана содержать следующие необходимые компоненты:
незащищенность операционной системы (ОС);
наличие разнообразной и довольно полной документации по OC и «железу»;
широкое распространение этой ОС и этого «железа».
Слудует отметить, что понятие операционной системы достаточно растяжимое. Например, для макро-вирусов операционной системой являются редакторы Word и Excel, поскольку именно редакторы, а не Windows предоставляют макро-вирусам (т.е. программам на бейсике) необходимые ресурсы и функции.
Если в операционной системе присутствуют элементы защиты информации, как это сделано практически во всех ОС, вирусу будет крайне трудно поразить объекты своего нападения, так как для этого потребуется (как минимум) взломать систему паролей и привилегий. В результате работа, необходимая для написания вируса, окажется по силам только профессионалам высокого уровня (вирус Морриса для VAX - пример этому). А у профессионалов, на мой взгляд, уровень порядочности все-таки намного выше, чем в среде потребителей их продукции, и, следовательно, число созданных и запущенных в большую жизнь вирусов еще более сократится.
Для массового производства вирусов также необходимо и достаточное количество информации о среде их обитания. Какой процент от числа системных программистов, работающих на мини-ЭВМ в операционках UNIX, VMS и т.д. знает систему управления процессами в оперативной памяти, полные форматы выполняемых файлов и загрузочных записей на диске? (т.е. информацию, необходимую для создания вируса). И следовательно, какой процент от их числа в состоянии вырастить настоящего полноценного зверя? Другой пример - операционная система Novell NetWare, достаточно популярная, но крайне слабо документированная. В результате мне пока не известно ни одного вируса, поразившего выполняемые файлы Novell NetWare, несмотря на многочисленные обещания вирусописателей выпустить такой вирус в ближайшее время.
А что же будет дальше? И как долго вирусы будут нас беспокоить? - вопросы, который в той или иной мере беспокоит практически всех пользователей.
Капнист пиесу накропал громадного размера...
Юлий Ким. «Капнист»
Компьютерные вирусы. Что это такое и как с этим бороться? На эту тему уже написаны десятки книг и сотни статей, борьбой с компьютерными вирусами профессионально занимаются сотни (или тысячи) специалистов в десятках (а может быть, сотнях) компаний. Казалось бы, тема эта не настолько сложна и актуальна, чтобы быть объектом такого пристального внимания. Однако это не так. Компьютерные вирусы были и остаются одной из наиболее распространенных причин потери информации. Известны случаи, когда вирусы блокировали работу организаций и предприятий. Более того, несколько лет назад был зафиксирован случай, когда компьютерный вирус стал причиной гибели человека - в одном из госпиталей Нидерландов пациент получил летальную дозу морфия по той причине, что компьютер был заражен вирусом и выдавал неверную информацию.
Несмотря на огромные усилия конкурирующих между собой антивирусных фирм, убытки, приносимые компьютерными вирусами, не падают и достигают астрономичсеских величин в сотни миллионов долларов ежегодно. Эти оценки явно занижены, поскольку известно становится лишь о части подобных инцидентов.
При этом следует иметь в виду, что антивирусные программы и «железо» не дают полной гарантии защиты от вирусов. Примерно так же плохо обстоят дела на другой стороне тандема «человек-компьютер». Как пользователи, так и профессионалы-программисты часто не имеют даже навыков «самообороны», а их представления о вирусе порой являются настолько поверхностными, что лучше бы их (представлений) и не было.
Немногим лучше обстоят дела на Западе, где и литературы побольше (издается аж три ежемесячных журнала, посвященных вирусам и защите от них), и вирусов поменьше (поскольку «левые» китайские компакт-диски особо на рынок не поступают), и антивирусные компании ведут себя активнее (проводя, например, специальные конференции и семинары для специалистов и пользователей).
У нас же, к сожалению, все это не совсем так. И одним из наименее »проработанных» пунктов является литература, посвященная проблемам борьбы с вирусами.
На сегодняшний день имеющаяся на прилавках магазинов печатная продукция антивирусного толка либо давно устарела, либо написана непрофессионалами, либо авторами типа Хижняка, что гораздо хуже.
Довольно неприятным моментом является также опережающая работа Российского компьютерного «андеграунда»: только за два года было выпущено более десятка электронных номеров журнала вирусописателей «Infected Voice», появилось несколько станций BBS и WWW-страниц, ориентированные на распространение вирусов и сопутсвующей информации.
Все это и послужило толчком к тому, чтобы собрать воедино весь материал, который скопился у меня за восемь лет профессиональной работы с компьютерными вирусами, их анализа и разработке методов обнаружения и лечения.
Сразу хочу отметить, что приводимый ниже материал включает в себя несколько переработанных глав из моей книги «Компьютерные вирусы в MS-DOS» (1992 год), статьи, опубликованные в журналах «Интеркомпьютер», «КомпьютерПресс» и «VirusBulletin» (Англия), несколько текстов из «Энциклопедии Вирусов AVP», и даже часть диспута из электронной конференции «relcom.comp.virus». Естественно, что по этой причине различные части книги сильно различаются по стилю изложения - от разболтанного и даже вульгарного до почти академического. К тому же повествование ведется вперемешку то от первого, то от третьего лица. За это я сразу хочу принести свои извинения, сославшись на катастрофическую нехватку времени, хотя, может быть, такой »пестрый» стиль изложения не является недостатком и позволит книге не быть безнадежно скучной.
К недостаткам книги можно также отнести практически полное игнорирование »не-IBM-PC-вирусов», заражающих Macintosh, VAX и другие типы компьютеров. Недостаточно полно освещены также методы обнаружения и удаления вирусов в Windows, Win95, NT и OS/2, так же как и некоторые технические особенности внедрения вирусов в эти операционные системы (ОС). Надеюсь, что последующие издания книги будут свободны от этих недочетов.
Переходя к традиционным для «Введений» бладарностям, хотелось бы сказать большое спасибо:
И.Карасику за то, что в 1990 году он толкнул меня в пучину литературного творчества (журнал «Интеркомпьютер», уже давно, к сожалению, переставший выходить в свет);
Вадиму Богданову, Алексею Де-Мондерику, Андрею Крюкову, Андрею Тихонову и всей остальной моей команде за помощь в разработке антивируса AVP, за выдержку и стойкость в бесконечной борьбе добра и зла;
Наталье Касперской за помощь в подготовке и редакции (отладке) этой книги, за огромную работу по продвижению AVP на российский и проталкиванию на мировой рынки, а также за удовлетворительное исполнение обязанностей жены в оставшееся от перечисленных выше работ время.
Я очень сожалею, что с приведенным ниже материалом ознакомятся также и авторы компьютерных насекомых, и что они (авторы) примут его к сведению и по мере необходимости будут использовать.
При подготовке главы «История компьютерных вирусов» использованы материалы из изданий:
Survivor's Guide To Computer Viruses by Virus Bulletin
Dr.Solomon's Virus Encyclopaedia
журнал Virus Bulletin
Главы, посвященные макро-вирусам, подготовлены совместно с Андреем Крюковым. В написании глав про Windows принимал участие Вадим Богданов.
Стоит мне что-нибудь проглотить, как тут же
происходит что-нибудь интересное. Посмотрим, что
будет на этот раз!
Льюис Керрол. «Алиса в стране чудес»
На мейнфреймах этого времени периодически появлялись программы, которые получили название «кролик» (the rabbit). Эти программы клонировали себя, занимали системные ресурсы и таким образом снижали производительность системы. Скорее всего «кролики» не передавались от системы к системе и являлись сугубо местными явлениями - ошибками или шалостями системных программистов, обслуживавших компьютер. Первый же инцидент, который смело можно назвать эпидемией «компьютерного вируса», произошел на системе Univax 1108. Вирус, получивший название «Pervading Animal», дописывал себя к выполняемым файлам - делал практически то же самое, что тысячи современных компьютерных вирусов.
Компьютеры становятся все более и более попуярными. Появляется все больше и больше программ, авторами которых являются не софтверные фирмы, а частные лица, причем эти программы имеют возможность свободного хождения по различным серверам общего доступа - BBS. Результатом этого является появление большого числа разнообразных «троянских коней» - программ, которые при их запуске наносят системе какой-либо вред.
Под операционную систему Tenex создан вирус «The Creeper», использовавший для своего распространения глобальные компьютерные сети. Вирус был в состоянии самостоятельно войти в сеть через модем и передать свою копию удаленной системе. Для борьбы с этим вирусом была создана программа «The Reeper» - первая известная антивирусная программа.
Методы размножения Excel-вирусов (включая Excel97) в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов (например, Sheets.Copy) и в отсутствии NORMAL.DOT — его функцию (в вирусном смысле) выполняют файлы в STARTUP-каталоге Excel.
Следует отметить, что существует два возможных варианта расположения кода макро-вирусов в таблицах Excel. Подавляющее большинство таких вирусов записывают свой код в формате VBA (Visual Basic for Applications), однако существуют вирусы, хранящие свой код в старом формате Excel версии 4.0. Такие вирусы по своей сути ничем не отличаются от VBA-вирусов, за исключением отличий в формате расположения кодов вируса в таблицах Excel.
Несмотря на то, что в новых версиях Excel (начиная с версии 5) используются более совершенные технологии, возможность исполнения макросов старых версий Excel была оставлена для поддержания совместимости. По этой причине все макросы, написанные в формате Excel 4, вполне работоспособны во всех последующих версиях, несмотря на то, что Microsoft не рекомендует использовать их и не включает необходимую документацию в комплект поставки Excel.
Получив управление, вирус совершает следующие действия (приведен список наиболее общих действий вируса при его выполнении; для конкретного вируса список может быть дополнен, пункты могут поменяться местами и значительно расшириться):
резидентный вирус проверяет оперативную память на наличие своей копии и инфицирует память компьютера, если копия вируса не найдена. Нерезидентный вирус ищет незараженные файлы в текущем и (или) корневом оглавлении, в оглавлениях, отмеченных командой PATH, сканирует дерево каталогов логических дисков, а затем заражает обнаруженные файлы;
возвращает управление основной программе (если она есть). Паразитические вирусы при этом либо a) лечат файл, выполняют его, а затем снова заражают, либо б) восстанавливает программу (но не файл) в исходном виде (например, у COM-программы восстанавливается несколько первых байт, у EXE-программы вычисляется истинный стартовый адрес, у драйвера восстанавливаются значения адресов программ стратегии и прерывания). Компаньон-вирусы запускают на выполнение своего «хозяина», вирусы-черви и overwriting-вирусы возвращают управление DOS.
Метод восстановления программы в первоначальном виде зависит от способа заражения файла. Если вирус внедряется в начало файла, то он либо сдвигает коды зараженной программы на число байт, равное длине вируса, либо перемещает часть кода программы из ее конца в начало, либо восстанавливает файл на диске, а затем запускает его. Если вирус записался в конец файла, то при восстановлении программы он использует информацию, сохраненную в своем теле при заражении файла. Это может быть длина файла, несколько байт начала файла в случае COM-файла или несколько байтов заголовка в случае EXE-файла. Если же вирус записывается в середину файла специальным образом, то при восстановлении файла он использует еще и специальные алгоритмы.
Поскольку Access является частью пакета Office97 Pro, то вирусы для Access представляют собой такие же макросы на языке Visual Basic, как и прочие вирусы, заражающие приложения Office97. Однако в данном случае вместо авто-макросов в системе присутствуют автоматические скрипты, которые вызываются системой при различных событиях (например, Autoexec). Данные скрипты затем могут вызывать различные макро-программы.
Таким образом, при заражении баз данных Access вирусу необходимо заменить какой-либо авто-скрипт и скопировать в заражаемую базу свои макросы. Заражение скриптов без дополнительных макросов не представляется возможным, поскольку язык скриптов достаточно примитивен и не содержит необходимых для этого функций.
Следует отметить, что в терминах Access скрипты называются макросами (macro), а макросы — модулями (module), однако в дальнейшем будет использоваться унифицированная терминология — скрипты и макросы.
Лечение баз данных Access является более сложной задачей, чем удаление прочих макро-вирусов, поскольку в случае Access необходимо обезвредить не только вирусные макросы, но и авто-скрипты. А так так значительная часть работы Access возложена как раз на скрипты и макросы, то некорректное удаление или деактивация какого-либо элемента может привести к невозможности операций с базой данных. То же справедливо и для вирусов - некорректное замещение авто-скриптов может привести к потере данных, хранящихся в базе.
Большинство известных Word-вирусов (версий 6, 7 и Word97) при запуске переносят свой код (макросы) в область глобальных макросов документа («общие» макросы), для этого они используют команды копирования макросов MacroCopy, Organizer.Copy либо при помощи редактора макросов — вирус вызывает его, создает новый макрос, вставляет в него свой код, который и сохраняет в документе.
При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким образом, при следующем запуске редактора MS-Word вирус активизируется в тот момент, когда WinWord грузит глобальные макросы, т.е. сразу.
Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким образом команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможной дальнейшие изменения формата файла, т.е. конвертирование в какой-либо не-Template формат) и записывает в файл свои макросы, включая Auto-макрос.
Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска.
Второй способ внедрения вируса в систему используется значительно реже — он базируется на так называемых «Add-in» файлах, т.е. файлах, являющихся служебными дополнениями к Word. В этом случае NORMAL.DOT не изменяется, а Word при запуске загружает макросы вируса из файла (или файлов), определенного как «Add-in». Этот способ практически полностью повторяет заражение глобальных макросов за тем исключением, что макросы вируса храняться не в NORMAL.DOT, а в каком-либо другом файле.
Возможно также внедрения вируса в файлы, расположенные в каталоге STARTUP, - Word автоматически подгружает файлы-темплейты из этого каталога, но такие вирусы пока не встречались.
Рассмотренные выше способы внедрения в систему представляют собой некоторый аналог резидентных DOS-вирусов. Аналогом нерезидентности являются макро-вирусы, которые не переносят свой код в область системных макросов - для заражения других файлов-документов они либо ищут их при помощи встроенных в Word функций работы с файлами, либо обращаются к списку последних редактированных файлов (Recently used file list). Затем такие вирусы открывают документ, заражают его и закрывают.
Практически все загрузочные вирусы резидентны. Они внедряются в память компьютера при загрузке с инфицированного диска. При этом системный загрузчик считывает содержимое первого сектора диска, с которого производится загрузка, помещает считанную информацию в память и передает на нее (т.е. на вирус) управление. После этого начинают выполняться инструкции вируса, который:
как правило, уменьшает объем свободной памяти (слово по адресу 0040:0013), копируют в освободившееся место свой код и считывает с диска свое продолжение (если оно есть). В дальнейшем некоторые вирусы «ждут» загрузки DOS и восстанавливают это слово в его первоначальное значение. В результате они оказываются расположенными не за пределами DOS, а как отдельные блоки DOS-памяти.
перехватывает необходимые вектора прерываний (обычно — INT 13H), считывает в память оригинальный boot-сектор и передает на него управление.
В дальнейшем загрузочный вирус ведет себя так же, как резидентный файловый: перехватывает обращения операционной системы к дискам и инфицирует их, в зависимости от некоторых условий совершает деструктивные действия или вызывает звуковые или видеоэффекты.
Существуют нерезидентные загрузочные вирусы — при загрузке они заразают MBR винчестера и дискеты, если те присутствуют в дисководах. Затем такие вирусы передают управление оригинальному загрузчику и на работу компьютера более не влияют.
При работе с каким-либо документом редактор AmiPro создает два файла — непосредственно текст документа (с расширением имени SAM) и дополнительный файл, содержащий макросы документа и, возможно, прочую информацию (расширение имени — SMM). Формат обоих файлов достаточно прост — они представляют собой обычный текстовый файл, в котором как редиктируемый текст, так и команды управления присутствуют в виде обычных текстовых строк.
Документу можно поставить в соответствие какой-либо макрос из SMM-файла (команда AssignMacroToFile). Этот макрос является аналогом AutoOpen и AutoClose в MS Word и вызывается редактором AmiPro при открыти или закритии файла.
Видимо, в AmiPro отсутствует возможность помещать макросы в «общую» область, поэтому вирусы для AmiPro могут заразить систему только при открытии зараженного файла, но не при загрузке системы, как это происходит с MS-Word после заражения файла NORMAL.DOT.
Как и MS Word, AmiPro позволяет переопределять системные макросы (например, SaveAs, Save) командой ChangeMenuAction. При вызове переопределенных функций (команд меню) управление получают зараженные макросы, т.е. код вируса.
DOS предусматривает два легальных способа создания резидентных модулей: драйверами, указываемыми в CONFIG.SYS, и при помощи функции KEEP (INT 21h, AH=31h или INT 27h). Многие файловые вирусы для маскировки своего распространения используют другой способ - обработку системных областей, управляющих распределением памяти (MCB). Они выделяют для себя свободный участок памяти (включая UMB), помечают его как занятый и переписывают туда свою копию. Некоторые вирусы внедряют свои TSR-копии в свободные участки памяти в таблице векторов прерываний, в видео-память, в рабочие области DOS, в память, отведенную под системные буферы и в HMA-память. Подробнее эти способы описаны в разделе Обнаружение резидентного вируса.
После выделения блока памяти вирус копирует в него своей код и переопределяет одно или несколько прерываний, необходимых ему для поиска заражаемых файлов, для выполнения деструктивных действий или звуковых и видеоэффектов.
При инфицировании файлов нерезидентные и некоторые резидентные вирусы ищут на диске (дисках) эти файлы при помощи функций DOS FindFirst и FindNext (INT 21h, AH=11h,12h,4Eh,4Fh). Резидентные вирусы используют более широкий список функций DOS, при обращении к которым происходит заражение файла. Фактически в этом списке присутствуют все функции, по значениям входных или выходных параметров которых можно определить имя файла, к которому идет обращение (к таким параметрам относятся значения соответствующих регистров или областей памяти). В результате к "вирусоопасным" функциям прерывания 21h относятся функции выполнения (EXEC, AX=4B00), загрузки в память (AH=4Bh), поиска (FindFirst и FindNext, AH=11h,12h,4Eh,4Fh) создания (Create, AH=3Ch), открытия (Open, AH=3Dh), закрытия (Close, AH=3Eh), изменения атрибутов (ChMode, AH=43h), переименования (Rename, AH=56h), и некоторые другие функции работы с файлами.
Известны несколько способов проверки резидентным вирусом наличия своей копии в памяти компьютера. Первый заключается в том, что вирус вводит новую функцию некоторого прерывания, действие которой заключается в возврате значения "я здесь". При старте вирус обращается к ней, и если возвращенное значение совпадает со значением "я здесь", значит память компьютера уже заражена и повторное заражение не производится. При проверке вторым способом вирус записывает значение "я здесь" в какую-либо редко используемую область памяти - в таблице векторов прерываний или в области данных BIOS (0040:00??). При последующих стартах зараженных программ вирус проверяет это значение и не вызывает процедуру заражения памяти. Существуют, конечно же и другие способы, например, некоторые вирусы просто сканирует память компьютера.
Некоторые резидентные файловые вирусы (как правило, вирусы, созданные при помощи конструкторов типа VCL и PS-MPC) определяют свою TSR-копию некорректно и копируют себя в оперативную память при каждом запуске зараженного файла. Естественно, что в этом случае компьютер либо сразу зависает, либо через некоторое время перестает выполнять программы по причине нехватки свободной памяти.
Файловые черви (worms) являются, в некотором смысле, разновидностью компаньон-вирусов, но при этом никоим образом не связывают свое присутствие с каким-либо выполняемым файлом. При размножении они всего лишь копируют свой код в какие-либо каталоги дисков в надежде, что эти новые копии будут когда-либо запущены пользователем. Иногда эти вирусы дают своим копиям «специальные» имена, чтобы подтолкнуть пользователя на запуск своей копии - например, INSTALL.EXE или WINSTART.BAT.
Существуют вирусы-черви, использующие довольно необычные приемы, например, записывающие свои копии в архивы (ARJ, ZIP и прочие). К таким вирусам относятся «ArjVirus» и «Winstart». Некоторые вирусы записывают команду запуска зараженного файла в BAT-файлы (см. например, «Worm.Info»).
Не следует путать файловые вирусы-черви с сетевыми червями. Первые используют только файловые функции какой-либо операционной системы, вторые же при своем размножении пользуются сетевыми протоколами.
К данной группе относятся вирусы, которые при своем размножении тем или иным способом используют файловую систему какой-либо (или каких-либо) ОС.
Внедрение файлового вируса возможно практически во все исполняемые файлы всех популярных ОС. На сегодняшний день известны вирусы, поражающие все типы выполняемых объектов стандартной DOS: командные файлы (BAT), загружаемые драйверы (SYS, в том числе специальные файлы IO.SYS и MSDOS.SYS) и выполняемые двоичные файлы (EXE, COM). Существуют вирусы, поражающие исполняемые файлы других операционных систем - Windows 3.x, Windows95/NT, OS/2, Macintosh, UNIX, включая VxD-драйвера Windows 3.x и Windows95.
Существуют вирусы, заражающие файлы, которые содержат исходные тексты программ, библиотечные или объектные модули. Возможна запись вируса и в файлы данных, но это случается либо в результате ошибки вируса, либо при проявлении его агрессивных свойств. Макро-вирусы также записывают свой код в файлы данных - документы или электронные таблицы, - однако эти вирусы настолько специфичны, что вынесены в отдельную группу.
По способу заражения файлов вирусы делятся на «overwriting», паразитические («parasitic»), компаньон-вирусы («companion»), «link»-вирусы, вирусы-черви и вирусы, заражающие объектные модули (OBJ), библиотеки компиляторов (LIB) и исходные тексты программ.
Большинcтво файловых стелс вирусов использует те же приемы, что приведены выше: они либо перехватывают DOS-вызовы обращения к файлам (INT 21h) либо временно лечат файл при его открытии и заражают при закрытии. Также как и для загрузочных вирусов, существуют файловые вирусы, использующие для своих стелс-функций перехват прерываний более низкого уровня - вызовы драйверов DOS, INT 25h и даже INT 13h.
Полноценные файловые стелс-вирусы, использующие первый способ скрытия своего кода, в большинстве своем достаточно громоздки, поскольку им приходиться перехватывать большое количество DOS-функций работы с файлами: открытие/закрытие, чтение/запись, поиск, запуск, переименование и т.д., причем необходимо поддерживать оба варианта некоторых вызовов (FCB/ASCII), а после появления Windows95/NT им стало необходимо также обрабатывать третий вариант - функции работы с длинными именами файлов.
Некоторые вирусы используют часть функций полноценного стелс-вируса. Чаще всего они перехватывают функции DOS FindFirst и FindNext (INT 21h, AH=11h, 12h, 4Eh, 4Fh) и "уменьшают" размер зараженных файлов. Такой вирус невозможно определить по изменению размеров файлов, если, конечно, он резидентно находится в памяти. Программы, которые не используют указанные функции DOS (например, "Нортоновские утилиты"), а напрямую используют содержимое секторов, хранящих каталог, показывают правильную длину зараженных файлов.
К таким вирусам относятся программы, которые на первый взгляд являются стопроцентными вирусами, но не способны размножаться по причине ошибок. Например, вирус, который при заражении "забывает" поместить в начало файлов команду передачи управления на код вируса, либо записывает в нее неверный адрес своего кода, либо неправильно устанавливает адрес перехватываемого прерывания (что в подавляющем большинстве случаев завешивает компьютер) и т.д.
К категории "intended" также относятся вирусы, которые по приведенным выше причинам размножаются только один раз - из "авторской" копии. Заразив какой-либо файл, они теряют способность к дальнейшему размножению.
Появляются intended-вирусы чаще всего при неумелой перекомпиляции какого-либо уже существующего вируса, либо по причине недостаточного знания языка программирования, либо по причине незнания технических тонкостей операционной системы.
IRC (Internet Relay Chat) — это специальный протокол, разработанный для коммуникации пользователей Интернет в реальном времени. Этот протокол предоставлят возможность Итрернет-"разговора" при помощи специально разработанного программного обеспечения. IRC чем-то похож на телефонный разговор, за исключением того, что в разговоре могут участвовать более двух собеседников, объединяющихся по интересам в различные группы IRC-конференций.
Для поддержки IRC-конференций созданы различные IRC-сервера, к которым подключаются участники IRC-"разговоров". Во всем мире насчитывается огромное количество IRC-серверов, объединенных в так называемые сети. Самой большой является сеть EFnet, сервера которой каждый день одновременно посещают несколько десятков тысяч пользователей.
Для подключения к IRC-серверу и ведения IRC-"разговоров" разработаны специальные программы - IRC-клиенты. Подключившись к IRC-серверу при помощи программы-клиента пользователь обычно выбирает тему IRC-конференции, командой join входит в одну или несколько конференций ("каналы" в терминах IRC) и начинает общение с другими "обитателями" этих каналов.
Помимо посещения общих (public) конференций пользователи IRC имеют возможность общаться один-на-один с любым другим пользователем (private), при этом они даже не обязательно должны быть на одном канале. Кроме этого существует довольно большое количество IRC-команд, при помощи которых пользователь может получить информацию о других пользователях и каналах, изменять некоторые установки IRC-клиента и прочее. Сущетсвует также возможность передавать и принимать файлы - именно на этой возможности и базируются IRC-черви.
На компьютерах с MS Windows самыми распространенными клиентами являются mIRC и PIRCH. Это не очень объемные, но довольно сложные программные продукты, которые кроме предоставления основных услуг IRC (подключение к серверам и каналам) имеют еще и массу дополнительных возможностей.
К таким возможностям относятся, например, сценарии работы (скрипты) и задание автоматической реакции на различные события. Например, при появлении во время разговора определенного слова IRC-клиент передает сообщение пользователю, пославшему это слово. Также возможно отключение пользователя от канала; посылка персональных сообщений новым пользователям, подключающимся к каналу; и многое другое. В PIRCH-клиенте, например, событий, на которые предусмотрена реакция, более 50.
Наиболее часто подобный способ полиморфизма используется макро-вирусами, которые при создании своих новых копий случайным образом меняют имена своих переменных, вставляют пустые строки или меняют свой код каким-либо иным способом. Таким образом алгоритм работы вируса остается без изменений, но код вируса практически полностью меняется от заражения к заражению.
Реже этот способ применяется сложными загрузочными вирусами. Такие вирусы внедряют в загрузочные сектора лишь достаточно короткую процедуру, которая считывает и диска основной код вируса и передает на него управление. Код этой процедуры выбирается из нескольких различных вариантов (которые также могут быть разбавлены "пустыми" командами), команды переставляются между собой и т.д.
Еще реже этот прием встречается у файловых вирусов - ведь им приходится полностью менять свой код, а для этого требуются достаточно сложные алгоритмы. На сегодняшний день известны всего два таких вируса, один из которых ("Ply") случайным образом перемещает свои команды по своему телу и заменяет их на команды JMP или CALL. Другой вирус ("TMC") использует более сложный способ - каждый раз при заражении вирус меняет местами блоки своего кода и данных, вставляет "мусор", в своих ассемблерных инструкциях устанавлявает новые значения оффсетов на данные, меняет константы и т.д. В результате, хотя вирус и не шифрует свой код, он является полиморфик-вирусом - в коде не присутствует постоянного набора команд. Более того, при создании своих новых копий вирус меняет свою длину.
Загрузочные вирусы
Макро-вирусы
Полиморфик-вирусы
Прочие «вредные программы»
Intended-вирусы
Конструкторы вирусов
Полиморфные генераторы
Троянские кони (логические бомбы)
Утилиты скрытого администрирования (backdoor)
Резидентные вирусы
Сетевые вирусы
Стелс-вирусы
Файловые вирусы
IRC-черви
Вирусы можно разделить на классы по следующим основным признакам:
среда обитания;
операционная система (OC);
особенности алгоритма работы;
деструктивные возможности.
По СРЕДЕ ОБИТАНИЯ вирусы можно разделить на:
файловые;
загрузочные;
макро;
сетевые.
Файловые вирусы либо различными способами внедряются в выполняемые файлы (наиболее распространенный тип вирусов), либо создают файлы-двойники (компаньон-вирусы), либо используют особенности организации файловой системы (link-вирусы).
Загрузочные вирусы записывают себя либо в загрузочный сектор диска (boot-сектор), либо в сектор, содержащий системный загрузчик винчестера (Master Boot Record), либо меняют указатель на активный boot-сектор.
Макро-вирусы заражают файлы-документы и электронные таблицы нескольких популярных редакторов.
Сетевые вирусы используют для своего распространения протоколы или команды компьютерных сетей и электронной почты.
Существует большое количество сочетаний - например, файлово-загрузочные вирусы, заражающие как файлы, так и загрузочные сектора дисков. Такие вирусы, как правило, имеют довольно сложный алгоритм работы, часто применяют оригинальные методы проникновения в систему, используют стелс и полиморфик-технологии. Другой пример такого сочетания - сетевой макро-вирус, который не только заражает редактируемые длокументы, но и рассылает свои копии по электронной почте.
Заражаемая ОПЕРАЦИОННАЯ СИСТЕМА (вернее, ОС, объекты которой подвержены заражению) является вторым уровнем деления вирусов на классы. Каждый файловый или сетевой вирус заражает файлы какой-либо одной или нескольких OS - DOS, Windows, Win95/NT, OS/2 и т.д. Макро-вирусы заражают файлы форматов Word, Excel, Office97.
Загрузочные вирусы также ориентированы на конкретные форматы расположения системных данных в загрузочных секторах дисков.
Среди ОСОБЕННОСТЕЙ АЛГОРИТМА РАБОТЫ вирусов выделяются следующие пункты:
резидентность;
использование стелс-алгоритмов;
самошифрование и полиморфичность;
использование нестандартных приемов.
РЕЗИДЕНТНЫЙ вирус при инфицировании компьютера оставляет в оперативной памяти свою резидентную часть, которая затем перехватывает обращения операционной системы к объектам заражения и внедряется в них. Резидентные вирусы находятся в памяти и являются активными вплоть до выключения компьютера или перезагрузки операционной системы. Нерезидентные вирусы не заражают память компьютера и сохраняют активность ограниченное время. Некоторые вирусы оставляют в оперативной памяти небольшие резидентные программы, которые не распространяют вирус. Такие вирусы считаются нерезидентными.
Резидентными можно считать макро-вирусы, посколько они постоянно присутствуют в памяти компьютера на все время работы зараженного редактора. При этом роль операционной системы берет на себя редактор, а понятие «перезагрузка операционной системы» трактуется как выход из редактора.
В многозадачных операционных системах время «жизни» резидентного DOS-вируса также может быть ограничено моментом закрытия зараженного DOS-окна, а активность загрузочных вирусов в некоторых операционных системах ограничивается моментом инсталляции дисковых драйверов OC.
Использование СТЕЛС-алгоритмов позволяет вирусам полностью или частично скрыть себя в системе. Наиболее распространенным стелс-алгоритмом является перехват запросов OC на чтение/запись зараженных объектов. Стелс-вирусы при этом либо временно лечат их, либо «подставляют» вместо себя незараженные участки информации. В случае макро-вирусов наиболее популярный способ — запрет вызовов меню просмотра макросов. Один из первых файловых стелс-вирусов — вирус «Frodo», первый загрузочный стелс-вирус — «Brain».
САМОШИФРОВАНИЕ и ПОЛИМОРФИЧНОСТЬ используются практически всеми типами вирусов для того, чтобы максимально усложнить процедуру детектирования вируса.
Полиморфик-вирусы (polymorphic) - это достаточно труднообнаружимые вирусы, не имеющие сигнатур, т.е. не содержащие ни одного постоянного участка кода. В большинстве случаев два образца одного и того же полиморфик-вируса не будут иметь ни одного совпадения. Это достигается шифрованием основного тела вируса и модификациями программы-расшифровщика.
Различные НЕСТАНДАРТНЫЕ ПРИЕМЫ часто используются в вирусах для того, чтобы как можно глубже спрятать себя в ядре OC (как это делает вирус «3APA3A»), защитить от обнаружения свою резидентную копию (вирусы «TPVO», «Trout2»), затруднить лечение от вируса (например, поместив свою копию в Flash-BIOS) и т.д.
По ДЕСТРУКТИВНЫМ ВОЗМОЖНОСТЯМ вирусы можно разделить на:
безвредные, т.е. никак не влияющие на работу компьютера (кроме уменьшения свободной памяти на диске в результате своего распространения);
неопасные, влияние которых ограничивается уменьшением свободной памяти на диске и графическими, звуковыми и пр. эффектами;
опасные вирусы, которые могут привести к серьезным сбоям в работе компьютера;
очень опасные, в алгоритм работы которых заведомо заложены процедуры, которые могут привести к потере программ, уничтожить данные, стереть необходимую для работы компьютера информацию, записанную в системных областях памяти, и даже, как гласит одна из непроверенных компьютерных легенд, способствовать быстрому износу движущихся частей механизмов - вводить в резонанс и разрушать головки некотоорых типов винчестеров.
Но даже если в алгоритме вируса не найдено ветвей, наносящих ущерб системе, этот вирус нельзя с полной уверенностью назвать безвредным, так как проникновение его в компьютер может вызвать непредсказуемые и порой катастрофические последствия. Ведь вирус, как и всякая программа, имеет ошибки, в результате которых могут быть испорчены как файлы, так и сектора дисков (например, вполне безобидный на первый взгляд вирус «DenZuk» довольно корректно работает с 360K дискетами, но может уничтожить информацию на дискетах большего объема).До сих пор попадаются вирусы, определяющие «COM или EXE» не по внутреннему формату файла, а по его расширению. Естественно, что при несовпадении формата и расширения имени файл после заражения оказывается неработоспособным. Возможно также «заклинивание» резидентного вируса и системы при использовании новых версий DOS, при работе в Windows или с другими мощными программными системами. И так далее.
К категории «компаньон» относятся вирусы, не изменяющие заражаемых файлов. Алгоритм работы этих вирусов состоит в том, что для заражаемого файла создается файл-двойник, причем при запуске зараженного файла управление получает именно этот двойник, т.е. вирус.
Наиболее распространены компаньон-вирусы, использующие особенность DOS первым выполнять .COM-файл, если в одном каталоге присутствуют два файла с одним и тем же именем, но различными расшинениями имени - .COM и .EXE. Такие вирусы создают для EXE-файлов файлы-спутники, имеющие то же самое имя, но с расширением .COM, например, для файла XCOPY.EXE создается файл XCOPY.COM. Вирус записывается в COM-файл и никак не изменяет EXE-файл. При запуске такого файла DOS первым обнаружит и выполнит COM-файл, т.е. вирус, который затем запустит и EXE-файл. Некоторые вирусы используют не только вариант COM-EXE, но также и BAT-COM-EXE.
Вторую группу составляют вирусы, которые при заражении переименовывают файл в какое-либо другое имя, запоминают его (для последующего запуска файла-хозяина) и записывают свой код на диск под именем заражаемого файла. Например, файл XCOPY.EXE переименовывается в XCOPY.EXD, а вирус записывается под именем XCOPY.EXE. При запуске управление получает код вируса, который затем запускает оригинальный XCOPY, хранящийся под именем XCOPY.EXD. Интересен тот факт, что данный метод работает, наверное, во всех операционных системах - подобного типа вирусы были обнаружены не только в DOS, но в Windows и OS/2.
В третью группу входят так называемые «Path-companion» вирусы, которые «играют» на особенностях DOS PATH. Они либо записывают свой код под именем заражаемго файла, но «выше» на один уровень PATH (DOS, таким образом, первым обнаружит и запустит файл-вирус), либо переносят файл-жертву на один подкаталог выше и т.д.
Возможно существование и других типов компаньон-вирусов, использующих иные оригинальные идеи или особенности других операционных систем.
Конструктор вирусов - это утилита, предназначенная для изготовления новых компьютерных вирусов. Известны конструкторы вирусов для DOS, Windows и макро-вирусов. Они позволяют генерировать исходные тексты вирусов (ASM-файлы), объектные модули, и/или непосредственно зараженные файлы.
Некоторые конструктороы (VLC, NRLG) снабжены стандартным оконным интерфейсом, где при помощи системы меню можно выбрать тип вируса, поражаемые объекты (COM и/или EXE), наличие или отсутствие самошифровки, противодействие отладчику, внутренние текстовые строки, выбрать эффекты, сопровождающие работу вируса и т.п. Прочие конструкторы (PS-MPC, G2) не имеют интерфейса и считывают информацию о типе вируса из конфигурационного файла.
Link-вирусы, как и компаньон-вирусы не изменяют физического содержимого файлов, однако при запуске зараженного файла «заставляют» ОС выполнить свой код. Этой цели они достигают модификацией необходимых полей файловой системы.
На сегодняшний день известен единственный тип Link-вирусов - вирусы семейства «Dir_II». При заражении системы они записывают свое тело в последний кластер логического диска. При заражении файла вирусы корректируют лишь номер первого кластера файла, расположенный в соответствующем секторе каталога. Новый начальный кластер файла будет указывать на кластер, содержащий тело вируса. Таким образом, при заражении файлов их длины и содержимое кластеров диска, содержащих эти файлы, не изменяется, а на все зараженные файлы на одном логическом диске будет приходиться только одна копия вируса.
До заражения данные каталога хранят адрес первого кластера файла:
Сектор каталога Диск +--------------+ +----------------------+ |Имя 1 |------>|+--------------------+| |- - - - - - - | ||Файл 1 || |Имя 2 | |+--------------------+| |- - - - - - - |------>|+--------------------+| | | ||Файл 2 || |- - - - - - - | |+--------------------+| | | |- - - - - - - | | | |Имя n |------>|+--------------------+| +--------------+ ||Файл n || |+--------------------+| | | +----------------------+
После заражения данные каталога указывыют на вирус, т.е. при запуске файла управление получают не файлы, а вирус:
Сектор каталога Диск +--------------+ +----------------------+ |Имя 1 |----+ |+--------------------+| |- - - - - - - | | ||Файл 1 || |Имя 2 | | |+--------------------+| |- - - - - - - |--->| |+--------------------+| | | | ||Файл 2 || |- - - - - - - | | |+--------------------+| | | | |- - - - - - - | | | | |Имя n |--->| |+--------------------+| +--------------+ | ||Файл n || | |+--------------------+| | | | | | %%%%%%%%%%%%%%%%%%%% | +->| % Вирус %%%%%%%%%%%% | | %%%%%%%%%%%%%%%%%%%% | +----------------------+
Макро-вирусы (macro viruses) являются программами на языках (макро-языках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т.д.). Для своего размножения такие вирусы используют возможности макро-языков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макро-вирусы для Microsoft Word, Excel и Office97. Существуют также макро-вирусы, заражающие документы Ami Pro и базы данных Microsoft Access.
Для существования вирусов в конкретной системе (редакторе) необходимо наличие встроенного в систему макро-языка с возможностями:
привязки программы на макро-языке к конкретному файлу;
копирования макро-программ из одного файла в другой;
возможность получения управления макро-программой без вмешательства пользователя (автоматические или стандартные макросы).
Данным условиям удовлетворяют редакторы Microsoft Word, Office97 и AmiPro, а также электронная таблица Excel и база данных Microsoft Access. Эти системы содержат в себе макро-языки: Word - Word Basic, Excel, Office97 (включая Word97, Excel97 и Access) - Visual Basic for Applications. При этом:
макро-программы привязаны к конкретному файлу (AmiPro) или находятся внутри файла (Word, Excel, Office97);
макро-язык позволяет копировать файлы (AmiPro) или перемещать макро-программы в служебные файлы системы и редактируемые файлы (Word, Excel, Office97);
при работе с файлом при определенных условиях (открытие, закрытие и т.д.) вызываются макро-программы (если таковые есть), которые определены специальным образом (AmiPro) или имеют стандартные имена (Word, Excel, Office97).
Данная особенность макро-языков предназначена для автоматической обработки данных в больших организациях или в глобальных сетях и позволяет организовать так называемый «автоматизированный документооборот». С другой стороны, возможности макро-языков таких систем позволяют вирусу переносить свой код в другие файлы, и таким образом заражать их.
На сегодняшний день известны четыре системы, для которых существуют вирусы — Microsoft Word, Excel, Office97 и AmiPro. В этих системах вирусы получают управление при открытии или закрытии зараженного файла, перехватывают стандартные файловые функции и затем заражают файлы, к которым каким-либо образом идет обращение. По аналогии с MS-DOS можно сказать, что большинство макро-вирусов являются резидентными: они активны не только в момент открытия/закрытия файла, но до тех пор, пока активен сам редактор.
Большинство макро-вирусов можно считать резидентными, поскольку они присутствуют в области системных макросов в течение всего времени работы редактора. Они так же как резидентные загрузочные и файловые вирусы перехватывают системные события и используют их для своего размножения. К подобным событиям относятся различные системные вызовы, возникающие при работе с документами Word и таблицами Excel (открытие, закрытие, создание, печать и т.д.), вызов пункта меню, нажатие на какую-либо клавишу или достижение какого-либо момента времени. Для перехвата событий макро-вирусы переопределяют один или несколько системных макросов или функций.
При заражении некоторые макро-вирусы проверяют наличие своей копии в заражаемом объекте и повторно себя не копируют. Другие макро-вирусы не делают этого и переписывают свой код при каждом заражении. Если при этом в заражаемом файле или области системных макросов уже определен макрос, имя которого совпадает с макросом вируса, то такой макрос оказывается уничтоженным.
Реализация стелс-алгоритмов в макро-вирусах является, наверное, наиболее простой задачей - достаточно всего лишь запретить вызов меню File/Templates или Tools/Macro. Достигается это либо удалением этих пунктов меню из списка, либо их подменой на макросы FileTemplates и ToolsMacro.
Частично стелс-вирусами можно назвать небольшую группу макро-вирусов, которые хранят свой основной код не в самом макросе, а в других областях документа - в его переменных или в Auto-text.
Первые известные mIRC-черви. Обнаружены в конце ноября - начале декабря 1997. Названия получили по кодовым словам, которые используются червями: если в тексте, переданном в канал каким-либо пользователем присутствует строка "Acoragil", то все пользователи, зараженные червем "mIRC.Acoragil" автоматически отключаются от канала. То же самое происходит с червем "mIRC.Simpsalapim" - он аналогично реагирует на строку "Simpsalapim".
При размножении черви командами mIRC пересылают свой код в файле SCRIPT.INI каждому новому пользователю, который подключается к каналу.
Содержат троянскую часть. "mIRC.Simpsalapim" содержит код захвата канала IRC: если mIRC владельца канала заражен, то по вводу кодового слова "ananas", злоумышленник перехватывает управление каналом.
"mIRC.Acoragil" по кодовым словам пересылает системные файлы DOC, Windows или UNIX. Некоторые кодовые слова выбраны таким образом, что не привлекают внимания жертвы - hi, cya или the. Одна из модификаций этого червя пересылает злоумышленнику файл паролей UNIX.
Вирусы, заражающие библиотеки компиляторов, объектные модули и исходные тексты программ, достаточно экзотичны и практически не распространены. Всего их около десятка. Вирусы, заражающие OBJ- и LIB-файлы, записывают в них свой код в формате объектного модуля или библиотеки. Зараженный файл, таким образом, не является выполняемым и неспособен на дальнейшее распространение вируса в своем текущем состоянии. Носителем же «живого» вируса становится COM- или EXE-файл, получаемый в процессе линковки зараженного OBJ/LIB-файла с другими объектными модулями и библиотеками. Таким образом, вирус распространяется в два этапа: на первом заражаются OBJ/LIB-файлы, на втором этапе (линковка) получается работоспособный вирус.
Заражение исходных текстов программ является логическим продолжением предыдущего метода размножения. При этом вирус добавляет к исходным текстам свой исходный код (в этом случае вирус должен содержать его в своем теле) или свой шестнадцатеричный дамп (что технически легче). Зараженный файл способен на дальнейшее распространение вируса только после компиляции и линковки (см. например, вирусы «SrcVir», «Urphin»).
Данный метод заражения является наиболее простым: вирус записывает свой код вместо кода заражаемого файла, уничтожая его содержимое. Естественно, что при этом файл перестает работать и не восстанавливается. Такие вирусы очень быстро обнаруживают себя, так как операционная система и приложения довольно быстро перестают работать. Мне не известно ни одного случая, когда подобного типа вирусы были бы обнаружены «в живом виде» и стали причиной эпидемии.
К разновидности overwriting-вирусов относятся вирусы, которые записываются вместо DOS-заголовка NewEXE-файлов. Основная часть файла при этом остается без изменений и продолжает нормально работать в соответсвующей операционной системе, однако DOS-заголовок оказывается испорченным.
К паразитическим относятся все файловые вирусы, которые при распространении своих копий обязательно изменяют содержимое файлов, оставляя сими файлы при этом полностью или частично работоспособными. Основными типами таких вирусов являются вирусы, записывающиеся в начало файлов («prepending»), в конец файлов («appending») и в середину файлов («inserting»). В свою очередь, внедрение вирусов в середину файлов происходит различными методами - путем переноса части файла в его конец или копирования своего кода в заведомо неиспользуемые данные файла («cavity»-вирусы).
Первый известный PIRCH-червь. Рассылает себя каждому присоединившемуся к каналу пользователю. По ключевым словам выполняет различные действия, например:
по команде ".query" происходит своего рода перекличка, по которой зараженные системы отвечают <Да, я уже заражена>;
по команде ".exit" завершает работу клиента.
По другим командам червь удаляет все файлы с диска С:, предоставляет доступ к файлам на зараженном компьютере, и т.д.
К полиморфик-вирусам относятся те из них, детектирование которых невозможно (или крайне затруднительно) осуществить при помощи так называемых вирусных масок - участков постоянного кода, специфичных для конкретного вируса. Достигается это двумя основными способами - шифрованием основного кода вируса с непостоянным ключем и случаным набором команд расшифровщика или изменением самого выполняемого кода вируса. Существуют также другие, достаточно экзотические примеры полиморфизва - DOS-вирус "Bomber", например, не зашифрован, однако последовательность команд, которая передает управление коду вируса, является полностью полиморфной.
Полиморфизм различной степени сложности встречается в вирусах всех типов - от загрузочных и файловых DOS-вирусов до Windows-вирусов и даже макро-вирусов.
Полиморфик-генераторы, как и конструкторы вирусов, не являются вирусами в прямом смысле этого слова, поскольку в их алгоритм не закладываются функции размножения, т.е. открытия, закрытия и записи в файлы, чтения и записи секторов и т.д. Главной функцией подобного рода программ является шифрование тела вируса и генерация соответствующего расшифровщика.
Обычно полиморфные генераторы распространяются их авторами без ограничений в виде файла-архива. Основным файлом в архиве любого генератора является объектный модуль, содержащий этот генератор. Во всех встречавшихся генераторах этот модуль содержит внешнюю (external) функцию - вызов программы генератора.
Таким образом автору вируса, если он желает создать настоящий полиморфик-вирус, не приходится корпеть над кодами собственного за/расшифровщика. При желании он может подключить к своему вирусу любой известный полиморфик-генератор и вызывать его из кодов вируса. Физически это достигается следующим образом: объектный файл вируса линкуется с объектным файлом генератора, а в исходный текст вируса перед командами его записи в файл вставляется вызов полиморфик-генератора, который создает коды расшифровщика и шифрует тело вируса.
Простейшим примером частично полиморфного расшифровщика является следующий набор команд, в результате применения которого ни один байт кода самого вируса и его расшифровщика не является постоянным при заражении различных файлов:
MOV reg_1, count ; reg_1, reg_2, reg_3 выбираются из MOV reg_2, key ; AX,BX,CX,DX,SI,DI,BP MOV reg_3, _offset ; count, key, _offset также могут меняться _LOOP: xxx byte ptr [reg_3], reg_2 ; xor, add или sub DEC reg_1 Jxx _loop ; ja или jnc ; дальше следуют зашифрованные код и данные вируса
Более сложные полиморфик-вирусы используют значительно более сложные алгоритмы для генерации кода своих расшифровщиков: приведенные выше инструкции (или их эквиваленты) переставляются местами от заражения к заражению, разбавляются ничего не меняющими командами типа NOP, STI, CLI, STC, CLC, DEC неиспользуемый регистр, XCHG неиспользуемые регистры и т.д.
Полноценные же полиморфик-вирусы используют еще более сложные алгоритмы, в результате работы которых в расшифровщике вируса могут встретиться операции SUB, ADD, XOR, ROR, ROL и другие в произвольном количестве и порядке. Загрузка и изменение ключей и других параметров шифровки производится также произвольным набором операций, в котором могут встретиться практически все инструкции процессора Intel (ADD, SUB, TEST, XOR, OR, SHR, SHL, ROR, MOV, XCHG, JNZ, PUSH, POP ...) со всеми возможными режимами адресации. Появляются также полиморфик-вирусы, расшифровщик которых использует инструкции вплоть до Intel386, а летом 1997 года обнаружен 32-битный полиморфик-вирус, заражающий EXE-файлы Windows95.
В результате в начале файла, зараженного подобным вирусом, идет набор бессмысленных на первый взгляд инструкций, причем некоторые комбинации, которые вполне работоспособны, не берутся фирменными дизассемблерами (например, сочетание CS:CS: или CS:NOP). И среди этой "каши" из команд и данных изредка проскальзывают MOV, XOR, LOOP, JMP - инструкции, которые действительно являются "рабочими".
При инфицировании файла вирус может производить ряд действий, маскирующих и ускоряющих его распространение. К подобным действиям можно отнести обработку атрибута read-only, снятие его перед заражением и восстановление после. Многие файловые вирусы считывают дату последней модификации файла и восстанавливают ее после заражения. Для маскировки своего распространения некоторые вирусы перехватывают прерывание DOS, возникающее при обращении к защищенному от записи диску (INT 24h), и самостоятельно обрабатывают его.
К "вредным программам", помимо вирусов, относятся также троянские
кони (логические бомбы), хакерские утилиты скрытого администрирования
удаленных компьютеров ("backdoor"), программы, "ворующие" пароли доступа к ресурсам Интернет и прочую конфиденциальную информацию; а также "intended"
-вирусы, конструкторы
вирусов и полиморфик-генераторы.
Под термином "резидентность" (DOS'овский термин TSR - Terminate and Stay Resident) понимается способность вирусов оставлять свои копии в системной памяти, перехватывать некоторые события (например, обращения к файлам или дискам) и вызывать при этом процедуры заражения обнаруженных объектов (файлов и секторов). Таким образом, резидентные вирусы активны не только в момент работы зараженной программы, но и после того, как программа закончила свою работу. Резидентные копии таких вирусов остаются жизнеспособными вплоть до очередной перезагрузки, даже если на диске уничтожены все зараженные файлы. Часто от таких вирусов невозможно избавиться восстановлением всек копий файлов с дистрибутивных дисков или backup-копий. Резидентная копия вируса остается активной и заражает вновь создаваемые файлы. То же верно и для загрузочных вирусов — форматирование диска при наличии в памяти резидентного вируса не всегда вылечивает диск, поскольку многие резидентные вирусы заражает диск повторно после того, как он отформатирован.
Нерезидентные вирусы, напротив, активны довольно непродолжительное время — только в момент запуска зараженной программы. Для своего распространения они ищут на диске незараженные файлы и записываются в них. После того, как код вируса передает управление программе-носителю, влияние вируса на работу операционной системы сводится к нулю вплоть до очередного запуска какой-либо зараженной программы. Поэтому файлы, зараженные нерезидентными вирусами значительно проще удалить с диска и при этом не позволить вирусу заразить их повторно.
К сетевым относятся вирусы, которые для своего распространения активно используют протоколы и возможности локальных и глобальных сетей. Основным принципом работы сетевого вируса является возможность самостоятельно передать свой код на удаленный сервер или рабочую станцию. «Полноценные» сетевые вирусы при этом обладают еще и возможностью запустить на выполнение свой код на удаленном компьютере или, по крайней мере, «подтолкнуть» пользователя к запуску зараженного файла.
Бытует ошибочное мнение, что сетевым является любой вирус, распространяющийся в компьютерной сети. Но в таком случае практически все вирусы были бы сетевыми, даже наиболее примитивные из них: ведь самый обычный нерезидентный вирус при заражении файлов не разбирается - сетевой (удаленный) это диск или локальный. В результате такой вирус способен заражать файлы в пределах сети, но отнести его к сетевым вирусам никак нельзя.
Наибольшую известность приобрели сетевые вирусы конца 1980-х, их также называют сетевыми червями (worms). К ним относятся вирус Морриса, вирусы «Cristmas Tree» и «Wank Worm&». Для своего распространения они использовали ошибки и недокументированные функции глобальных сетей того времени - вирусы передавали свои копии с сервера на сервер и запускали их на выполнение. В случае с вирусов Морриса эпидемия захватила аж несколько глобальных сетей в США.
Сетевые вирусы прошлого распространялись в компьютерной сети и, как правило, так же как и компаньон-вирусы, не изменяли файлы или сектора на дисках. Они проникали в память компьютера из компьютерной сети, вычисляли сетевые адреса других компьютеров и рассылали по этим адресам свои копии. Эти вирусы иногда также создавали рабочие файлы на дисках системы, но могли вообще не обращаться к ресурсам компьютера (за исключением оперативной памяти).
После нескольких эпидемий сетевых вирусов ошибки в сетевых протоколах и программном обеспечении были исправлены, а «задние двери» закрыты. В результате за песледние десять лет не было зафиксировано ни одного случая заражения сетевым вирусом, как, впрочем, не появилось и ни одного нового сетевого вируса.
Говоря про файловые вирусы, необходимо отметить такую их черту, как скорость распространения. Чем быстрее распространяется вирус, тем вероятее возникновение эпидемии этого вируса. Чем медленнее распространяется вирус, тем сложнее его обнаружить (если, конечно же, этот вирус пока неизвестен антивирусным программам). Понятия «быстрого» и «медленного» вируса (Fast infector, Slow infector) являются достаточно относительными и используются только как характеристика вируса при его описании.
Нерезидентные вирусы часто являются «медленными» - большинство из них при запуске заражает один или два-три файла и не успевает заполонить компьютер до запуска антивирусной программы (или появления новой версии антивируса, настроенной на данный вирус). Существуют, конечно же, нерезидентые «быстрые» вирусы, которые при запуске ищут и заражат все выполняемые файлы, однако такие вирусы очень заметны: при запуске каждого зараженного файла компьютер некоторое (иногда достаточно долгое) время активно работает с винчестером, что демаскирует вирус.
«Скорость» резидентных вирусов обычно выше, чем у нерезидентных - они заражают файлы при каких-либо обращениях к ним. В результате на диске оказываются зараженными все или почти все файлы, которые постоянно используются в работе.
Скорость распространения резидентных файловых вирусов, заражающих файлы только при их запуске на выполнение, будет ниже, чем у вирусов, заражающих файлы и при их открытии, переименовании, изменении атрибутов файла и т.д. Многие вирусы при создании своей копии в оперативной памяти компьютера пытаются занять область памяти с самыми старшими адресами, разрушая временную часть командного интерпретатора COMMAND.COM. По окончании работы зараженной программы временная часть интерпретатора восстанавливается, при этом происходит открытие файла COMMAND.COM и, если вирус заражает файлы при их открытии, его заражение. Таким образом, при запуске подобного вируса первым будет заражен файл COMMAND.COM.
Как оказалось, мощная и разветвленная система команд IRC-клиентов позволяет на основе их скриптов создавать компьютерные вирусы, передающие свой код на компьютеры пользователей сетей IRC, так называемые "IRC-черви". Первый инцидент с IRC-червем зафиксирован в конце 1997 года: пользователями mIRC-клиента был обнаружен скрипт (файл SCRIPT.INI), переносивший свой код через каналы IRC и заражавший mIRC-клиентов на компьютерах пользователей, подключавшихся к зараженным каналам. Как оказалось, скрипт-черви являются достаточно простыми программами, и через довольно короткое время на основе первого mIRC-червя были созданы и "выпущены" в сети несколько десятков различных скрипт-червей.
Принцип действия таких IRC-червей примерно одинаков. При помощи IRC-команд файл сценария работы (скрипт) или реакции на IRC-события автоматически посылается с зараженного компьютера каждому вновь присоединившемуся к каналу пользователю. Присланный файл-сценарий замещает стандартный и при следующем сеансе работы уже вновь зараженный клиент будет рассылать червя.
Черви при этом используют особенности конфигурации клиента (всех версий mIRC младше 5.31 и всех версий PIRCH до PIRCH98), благодаря которой принимаемые файлы всех типов помещаются в корневой каталог клиента. Этот каталог также содержит и основные скрипты клиента, включая авто-загружаемые mIRC-скрипты SCRIPT.INI, MIRC.INI и PIRCH-скрипт EVENTS.INI. Данные скрипты автоматически исполняются клиентом при старте и в дальнейшем используются как основной сценарий его работы.
Некоторые IRC-черви также содержат троянский компонент: по заданным ключевым словам производят разрушительные действия на пораженных компьютерах. Например, червь "pIRCH.Events" по определенной команде стирает все файлы на диске пользователя.
В скрипт-языках клиентов mIRC и PIRCH также существуют операторы для запуска обычных команд операционной системы и исполняемых модулей (программ) DOS и Windows. Эта возможность IRC-скриптов послужила основой для появления скрипт-червей нового поколения, которые помимо скриптов заражали компьютеры пользователей EXE-вирусами, устанавливали "троянских коней", и т.п.
Скрипт-черви работоспособны только в том случае, если пользователь разрешает копирование файлов из сети на свой компьютер. Данная опция IRC-клиентов называется 'DCC autoget' - получение файлов по протоколу DCC автоматически и без предупреждающего сообщения. При отключенной опции зараженный файл принимается, помещается в каталог клиента и в следующем сеансе работы продолжает свое распространение. При этом пользователь не получает никаких предупреждающих сообщений.
Следует отметить, что фирма-изготовитель клиента mIRC отреагировала достаточно оперативно и буквально через несколько дней после появления первого червя выпустила новую версию своего клиента, в которой были закрыты пробелы в защите.
Стелс-вирусы теми или иными способами скрывают факт своего присутствия в системе. Известны стелс-вирусы всех типов, за исключением Windows-вирусов — загрузочные вирусы, файловые DOS-вирусы и даже макро-вирусы. Появление стелс-вирусов, заражающих файлы Windows, является скорее всего делом времени.
К троянским коням относятся программы, наносящие какие-либо разрушительные действия, т.е. в зависимости от каких-либо условий или при каждом запуске уничтожающая информацию на дисках, "завешивающая" систему и т.п.
Большинство известных мне троянских коней являются программами, которые "подделываются" под какие-либо полезные программы, новые версии популярных утилит или дополнения к ним. Очень часто они рассылаются по BBS-станциям или электронным конференциям. По сравнению с вирусами "троянские кони" не получают широкого распространения по достаточно простым причинам - они либо уничтожают себя вместе с остальными данными на диске, либо демаскируют свое присутствие и уничтожаются пострадавшим пользователем.
К "троянским коням" также можно отнести "дропперы" вирусов - зараженные файлы, код которых подправлен таким образом, что известные версии антивирусов не определяют вируса в файле. Например, файл шифруется каким-либо специальным образом или упаковывается редкоиспользуемым архиватором, что не позволяет антивирусу "увидеть" заражение.
Следует отметить также "злые шутки" (hoax). К ним относятся программы, которые не причиняют компьютеру какого-либо прямого вреда, однако выводят сообщения о том, что такой вред уже причинен, либо будет причинен при каких-либо условиях, либо предупреждают пользователя о несуществующей опасности. К "злым шуткам" отностяся, например, программы, которые "пугают" пользователя сообщениями о форматировании диска (хотя никакого форматирования на самом деле не происходит), детектируют вирусы в незараженных файлах (как это делает широко известная программа ANTITIME), выводят странные вирусоподобные сообщения (драйвер диска CMD640X от какого-то коммерческого пакета) и т.д. - в зависимости от чувства юмора автора такой программы. Видимо, к "злым шуткам" относится также строка "CHOLEEPA" во втором секторе винчестеров фирмы Seagate.
К такой же категории "злых шуток" можно отнести также заведомо ложные сообщения о новых супер-вирусах. Такие сообщения периодически появляются в электронных конференциях и обычно вызывают панику среди пользователей.
Существует деление полиморфик-вирусов на уровни в зависимости от сложности кода, который встречается в расшифровщиках этих вирусов. Такое деление впервые предложил д-р. Алан Соломон, через некоторое время Весселин Бончев расширил его.
Уровень 1: вирусы, которые имеют некоторый набор расшифровщиков с постоянным кодом и при заражении выбирают один из них. Такие вирусы являются "полу-полиморфиками" и носят также название "олигоморфик" (oligomorphic). Примеры: "Cheeba", "Slovakia", "Whale".
Уровень 2: расшифровщик вируса содержит одну или несколько постоянных инструкций, основная же его часть непостоянна.
Уровень 3: расшифровщик содержит неиспользуемые инструкции - "мусор" типа NOP, CLI, STI и т.д.
Уровень 4: в расшифровщике используются взаимозаменяемые инструкции и изменение порядка следование (перемешивание) инструкций. Алгоритм расшифрования при этом не изменяется.
Уровень 5: используются все перечисленные выше приемы, алгоритм расшифрования непостоянен, возможно повторное шифрование кода вируса и даже частичное шифрование самого кода расшифровщика.
Уровень 6: permutating-вирусы. Изменению подлежит основной код вируса - он делится на блоки, которые при заражении переставляются в произвольном порядке. Вирус при этом остается работоспособным. Подобные вирусы могут быть незашифрованы.
Приведенное выше деление не свободно от недостатков, поскольку производится по единственному критерию - возможность детектировать вирус по коду расшифровщика при помощи стандартного приема вирусных масок:
Уровень 1: для детектирования вируса достаточно иметь несколько масок Уровень 2: детектирование по маске с использованием "wildcards" Уровень 3: детектирование по маске после удаления инструкций-"мусора" Уровень 4: маска содержит несколько вариантов возможного кода, т.е. становится алгоритмической Уровень 5: невозможность детектирования вируса по маске
Недостаточность такого деления продемонстрирована в вирусе 3-го уровня полиморфичности, который так и называется - "Level3".
Этот вирус, являясь одним из наиболее сложных полиморфик-вирусов, по приведенному выше делению попадает в Уровень 3, поскольку имеет постоянный алгоритм расшафровки, перед которым стоит большое количество команд-"мусора". Однако в этом вирусе алгоритм генерирования "мусора" доведен до совершенства: в коде расшифровщика могут встретиться практически все инструкции процессора i8086.
Если произвести деление на уровни с точки зрения антивирусов, использующих системы автоматической расшифровки кода вируса (эмуляторы), то деление на уровни будет зависеть от сложности эмуляции кода вируса. Возможно детектирование вируса и другими приемами, например, расшифровка при помощи элементарных математических законов и т.д.
Поэтому мне кажется более объективным деление, в котором помимо критерия вирусных масок участвуют и другие параметры.
Степень сложности полиморфик-кода (процент от всех инструкций процессора, которые могут встретиться в коде расшифровщика)
Использование анти-эмуляторных приемов
Постоянство алгоритма расшифровщика
Постоянство длины расшифровщика
Мне не хотелось бы излагать эти пункты подробнее, поскольку в результате это однозначно подтолкнет вирусописателей к созданию подобного рода монстров.
Троянские кони этого класса по своей сути является достаточно мощными утилитами удаленного администрирования компьютеров в сети. По своей функциональности они во многом напоминают различные системы администрирования, разрабатываемые и распространяемые различными фирмами-производителями программных продуктов.
Единственная особенность этих программ заставляет классифицировать их как вредные троянские программы: отсутствие предупреждения об инсталляции и запуске. При запуске троянец устанавливает себя в системе и затем следит за ней, при этом пользователю не выдается никаких сообщений о действиях троянца в системе. Более того, ссылка на троянца может отсутствовать в списке активных приложений. В результате "пользователь" этой троянской программы может и не знать о ее присутствии в системе, в то время как его компьютер открыт для удаленного управления.
Будучи установленными на компьютер, утилиты скрытого управления позволяют делать с компьютером все, что в них заложил их автор: принимать/отсылать файлы, запускать и уничтожать их, выводить сообщения, стирать информацию, перезагружать компьютер и т.д. В результате эти троянцы могут быть использованы для обнаружения и передачи конфиденциальной информации, для запуска вирусов, уничтожения данных и т.п. - пораженные компьютеры оказываются открытыми для злоумышленных действий хакеров.
Отдельно следует отметить довольно незначительную группу вирусов, не имеющих «точки входа» (EPO-вирусы - Entry Point Obscuring viruses). К ним относятся вирусы, не записывающие команд передачи управления в заголовок COM-файлов (JMP) и не изменяющие адрес точки старта в заголовке EXE-файлов. Такие вирусы записывают команду перехода на свой код в какое-либо место в середину файла и получают управление не непосредственно при запуске зараженного файла, а при вызове процедуры, содержащей код передачи управления на тело вируса. Причем выполняться эта процедура может крайне редко (например, при выводе сообщения о какой-либо специфической ошибке). В результате вирус может долгие годы «спать» внутри файла и выскочить на свободу только при некоторых ограниченных условиях.
Перед тем, как записать в середину файла команду перехода на свой код, вирусу необходимо выбрать «правильный» адрес в файле - иначе зараженный файл может оказаться испорченным. Известны несколько способов, с помощью которых вирусы определяют такие адреса внутри файлов.
Первый способ - поисх в файле последовательности стандартного кода C/Pascal (вирусы «Lucretia», «Zhengxi»). Эти вирусы ищут в заражаемых файлах стандартные заголовки процедур C/Pascal и записывают вместо них свой код.
Второй способ - трассировка или дизассемблирование кода файла («CNTV», «MidInfector», «NexivDer»). Такие вирусы загружают файл в память, затем трассируют или дизассемблируют его и в зависимости от различных условий выбирают команду (или команды), вместо которых записывается код перехода на тело вируса.
Третий способ применяется только резидентными вирусами - при запуске файла они контролируют какое-либо прерывание (чаще - INT 21h). Как только заражаемый файл вызывает это прерывание, вирус записывает свой код вместо команды вызова прерывания (см. «Avatar.Positron», «Markiz»).
Выполняемые двоичные файлы DOS имеют форматы COM или EXE, различающиеся заголовком и способом запуска программ на выполнение. Расширение имени файла («.COM» или «.EXE») не всегда соответствует действительному формату файла, что, правда, никак не влияет на работу программы. Файлы COM и EXE заражаются по-разному, следовательно вирус должен отличать файлы одного формата от другого. Вирусы решают эту задачу двумя способами: одни анализируют расширение имени файла («.COM», «.EXE»), другие - заголовок файла. Первый способ далее будет называться заражением .COM- (или .EXE-) файлов, второй - заражением COM- (или EXE-) файлов.
В большинстве случаев вирус инфицирует файл корректно, т.е. по информации, содержащейся в теле вируса, можно полностью восстановить зараженный файл. Но вирусы, как и большинство программ, часто содержат незаметные с первого взгляда ошибки. Из-за этого даже вполне корректно написанный вирус может необратимо испортить файл при его заражении. Например, вирусы, различающие типы файлов по расширению имени (.COM, .EXE), очень опасны, так как портят файлы, у которых расширение имени не соответствует внутреннему формату.
Один из наиболее часто встречающися примеров некоррекного заражения файла - COMMAND.COM от Windows95. Этот файл по сути является EXE-файлом, более того имеет размер более 90K, что невозможно для COM-файла. Поэтому вирусы, которые различают COM/EXE файлы по расширению имени и не проверяют длины заражаемых COM-файлов (например, «Junkie»), портят такой COMMAND.COM, и он становится неработоспособным.
Наиболее распространенным способом внедрения вируса в файл является дописывание вируса в его конец. При этом вирус изменяет начало файла таким образом, что первыми выполняемыми командами программы, содержащейся в файле, являются команды вируса.
В DOS COM-файле в большинстве случаев это достигается изменением его первых трех (или более) байтов на коды инструкции JMP Loc_Virus (или в более общем случае - на коды программы, передающей управление на тело вируса). DOS EXE-файл переводится в формат COM-файла и затем заражается как COM-файл либо модифицируется заголовок файла. В заголовке DOS EXE-файла изменяются значения стартового адреса (CS:IP) и длина выполняемого модуля (файла), реже - регистры-указатели на стек (SS:SP), контрольная сумма файла и т.д. В исполняемых файлах Windows и OS/2 (NewEXE - NE,PE,LE,LX) изменяются поля в NewEXE-заголовке. Структура этого залоловка значительно сложнее заголовка DOS EXE-файлов, поэтому изменению подлежит большее число полей - значение стартового адреса, количество секций в файле, характеристики секций и т.д. Дополнительно к этому длины файлов перед заражением могут увеличиваться до значения, кратного параграфу (16 байт) в DOS или секции в Windows и OS/2 (размер секции зависит от параметров заголовка EXE-файла).
DOS COM-файл DOS EXE-файл New EXE-файл +---------+ +---------+ +---------+ +--|JMP | | +----|Заголовок| |DOS stub | | |----+ | | |---------| |---------| | |Программа| | |Программа| |New EXE | | | | | | | +----|заголовок| | |---------| V | | | |---------| | |Вирус | Стартовый |---------| | |Программа| +->| | адрес |Вирус | | | | | | --------->| | V | | +---------+ | | Стартовый |---------| +---------+ адрес |Вирус | --------->| | | | +---------+
Вирусы, внедряющиеся в DOS SYS-файлы, приписывают свои коды к телу файла и модифицируют адреса программ стратегии (Strategy) и прерывания (Interrupt) заражаемого драйвера (встречаются вирусы, изменяющие адрес только одной из этих программ). При инициализации зараженного драйвера вирус перехватывает соответствующий запрос операционной системы, передает его драйверу, ждет ответа на этот запрос, корректирует его и остается вместе с драйвером в одном блоке оперативной памяти.
Такой вирус может быть чрезвычайно опасным и живучим, так как он внедряется в оперативную память при загрузке DOS раньше любой антивирусной программы, если она, конечно, тоже не является драйвером.
+--------------------------------+ Незараженный файл-драйвер |Заголовок| Драйвер | +--------------------------------+
+------------------------------------+ Зараженный файл-драйвер | +-------------------------------+ | | | V V +------------------------------------------------------------+ |Заголовок| Драйвер | Вирус | +------------------------------------------------------------+
Существуют также вирусы, заражающие системные драйвера другим способом: вирус модифицирует его заголовок так, что DOS рассматривает инфицированный файл как цепочку из двух (или более) драйверов.
+--------------------------------+ Незараженный файл-драйвер |Заголовок| Драйвер | +--------------------------------+
+--------------------------------+ Зараженный файл-драйвер | V +------------------------------------------------------------+ |Заголовок| Драйвер |Заголовок| Вирус | +------------------------------------------------------------+
Аналогично вирус может записать свои коды в начало драйвера, а если в файле содержится несколько драйверов, то и в середину файла.
Известны два способа внедрения паразитического файлового вируса в начало файла. Первый способ заключается в том, что вирус переписывает начало заражаемого файла в его конец, а сам копируется в освободившееся место. При заражении файла вторым способом вирус создает в оперативной памяти свою копию, дописывает к ней заражаемый файл и сохраняет полученную конкатенацию на диск. Некоторые вирусы при этом дописывают в конец файла блок дополнительной информации (например, вирус «Jerusalem» по этому блоку отличает зараженные файлы от незараженных).
+-----------------------------+ Внедрение вируса в начало | Файл | файла первым способом +-----------------------------+ +-------------------------------+ V + - - - --------------------------------+ |Свободно| Файл | | + - - - --------------------------------+
+---------------------------------------+- - + |Вирус | Файл | | | +---------------------------------------+- - +
+-----------------------------+ Внедрение вируса в начало | Файл | файла вторым способом +-----------------------------+ | +----------+ +--------+ | V V + - - - ---------------------------------+ |Свободно| Файл | + - - - ---------------------------------+
+----------------------------------------+- - + |Вирус | Файл | | +----------------------------------------+- - +
Внедрение вируса в начало файла применяется в подавляющем большинстве случаев при заражении DOS'овских BAT- и COM-файлов. Известно несколько вирусов, записывающих себя в начало EXE-файлов операционных систем DOS, Windows и даже Linux. При этом вирусы, чтобы сохранить работоспособность программы, либо лечат зараженный файл, повторно запускают его, ждут окончания его работы и снова записываются в его начало (иногда для этого используется временный файл, в который записывается обезвреженный файл), либо восстанавливают код программы в памяти компьютера и настраивают необходимые адреса в ее теле (т.е. дублируют работу ОС).
Существует несколько методов внедрения вируса в середину файла. В наиболее простом из них вирус переносит часть файла в его конец или «раздвигает» файл и записывает свой код в освободившееся пространство. Этот cпособ во многом аналогичен методам, перечисленным выше. Некоторые вирусы при этом компрессируют переносимый блок файла так, что длина файла при заражении не изменяется (см. «Mutant»).
Вторым является метод «cavity», при котором вирус записывается в заведомо неиспользуемые области файла. Вирус может быть скопирован в незадействованные области таблицы настройки адресов DOS EXE-файла (см. «BootExe») или заголовок NewEXE-файла («Win95.Murkry»), в область стека файла COMMAND.COM («Lehigh») или в область текстовых сообщений популярных компиляторов («NMSG»). Существуют вирусы, заражающие только те файлы, которые содержат блоки, заполненные каким-либо постоянным байтом, при этом вирус записывает свой код вместо такого блока.
Кроме того, копирование вируса в середину файла может произойти в результате ошибки вируса, в этом случае файл может быть необратимо испорчен.
Опасный резидентный файлово-загрузочный полиморфик-вирус. Использует mIRC как один из способов своего распространения: перехватывает системные события Windows и при запуске файла MIRC32.EXE активизирует свою mIRC-процедуру. При этом открывает файл MIRC.INI и записывает в его конец команду, снимающую защиту:
[fileserver] Warning=Off
Затем создает файлы SCRIPT.INI и INCA.EXE. Файл INCA.EXE содержит дроппер вируса, скрипт файла SCRIPT.INI пересылает себя и этот дроппер в канал IRC каждому присоединившемуся к каналу и каждому выходящему с канала.
Для того, чтобы оставить выполняемый код в памяти Windows, существует три способа, причем все три способа (за исключением Windows NT) уже применялись различными вирусами.
Самый простой способ - зарегистрировать программу как одно из приложений, работающих в данный момент. Для этого программа регистрирует свою задачу, окно которой может быть скрытым, регистрирует свой обработчик системных событий и т.д. Второй способ - выделить блок системной памяти при помощи DPMI-вызовов и скопировать в него свой код (вирус Ph33r). Третий способ — остаться резидентно как VxD-драйвер (Wnidows 3.xx и Windows95) или как драйвер Windows NT.
Перехват обращений к файлам производится одним из двух способов - либо перехватываются вызовы INT 21h (Hook_V86_Int_Chain, Get/Set_V86_Int_Vector, Get/Set_PM_Int_Vector), либо перехватывается системный вызов API. Затем резидентные Windows-вирусы действуют примерно также, как и DOS-вирусы: перехватывают обращения к файлам и заражают их.
Для обнаружения уже присутствующей в памяти резидентной копии используются примерно те же способы, что описаны выше, за исключением VxD-вирусов. Известные VxD-вирусы загружаются в память при загрузке Windows. Для этого они записывают команду запуска в файл конфигурации Windows SYSTEM.INI. Если в этом файле уже есть команда запуска вирусного VxD-файла, то вирус не производит повторной регистрации своего VxD-файла.
Физическое расположение вируса внутри файла зависит от его формата, который в случае продуктов Microsoft чрезвычайно сложен — каждый файл-документ Word, Office97 или таблица Excel представляют собой последовательность блоков данных (каждый из которых также имеет свой формат), объединенных между собой при помощи большого количества служебных данных. Этот формат носит название OLE2 - Object Linking and Embedding. Структура файлов Word, Excel и Office97 (OLE2) напоминает усложненную файловую систему дисков DOS: «корневой каталог» файла-документа или таблицы указывает на основные подкаталоги различных блоков данных, несколько таблиц FAT содержат информацию о расположении блоков данных в документе и т.д.
Более того, система Office Binder, поддерживающая стандарты Word и Excel позволяет создавать файлы, одновременно содержащие один или несколько документов в формате Word и одну или несколько таблиц в формате Excel. При этом Word-вирусы способны поражать Word-документы, а Excel-вирусы — Excel-таблицы, и все это возможно в пределах одного дискового файла. То же справедливо и для Office97.
По причине такой сложности форматов файлов Word, Excel и Office97 представить расположение макро-вируса в файле можно лишь схематично:
Незараженный файл-документ Вирус в файле-документе или таблица или таблице +----------------+ +----------------+ |заголовок файла | |заголовок файла | |----------------| |----------------| |служебные данные| |служебные данные| |(каталоги, FAT) | |(каталоги, FAT) | |----------------| |----------------| |текст | |текст | | | | | |----------------| |----------------| |шрифты | |шрифты | |----------------| |----------------| |макросы | |макросы | |(если есть) | |(если есть) | |----------------| | - - - - - - - -| |прочие данные | |макросы вируса | . . . |----------------| | | |прочие данные | | | . . . +----------------+ +----------------+
Следует отметить, что Word версий 6 и 7 позволяет шифровать присутствующие в документе макросы. Таким образом, некоторые Word-вирусы присутствуют в зараженных документах в зашифрованном (Execute only) виде.
При работе с документом Word версий 6 и 7 выполняет различные действия: открывает документ, сохраняет, печатает, закрывает и т.д. При этом Word ищет и выполняет соответствующие «встроенные макросы» — при сохранении файла по команде File/Save вызывается макрос FileSave, при сохранении по команде File/SaveAs — FileSaveAs, при печати документов — FilePrint и т.д., если, конечно, таковые макросы определены.
Существует также несколько «авто-макросов», автоматически вызываемые при различных условиях. Например, при открытии документа Word проверяет его на наличие макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его. При закрытии документа Word выполняет макрос AutoClose, при запуске Word вызывается макрос AutoExec, при завершении работы — AutoExit, при создании нового документа — AutoNew.
Похожие механизмы (но с другими именами макросов и функций) используются и в Excel/Office97, в которых роль авто- и встроенных макросов выполняют авто- и встроенные функции, присутствующие в каком-либо макросе или макросах, причем в одном макросе могут присутствовать несколько встроенных и авто-функций.
Таким образом к автоматическим макросам/функциям относятся:
Word Excel Office97 ---- ----- -------- AutoOpen Auto_Open Document_Open AutoClose Auto_Close Document_Close AutoExec AutoExit AutoNew Document_New Auto_Activate Auto_Deactivate
Имена некоторых стандартных макросов Word (даны имена в различных локализованных версиях Word) приведены ниже:
Английский Датский Голландский Финский
FileNew FilerNyt BestandNieuw TiedostoUusi FileOpen Filer+bn BestandOpenen TiedostoAvaa FileClose FilerLuk BestandSluiten TiedostoSulje FileSave FilerGem BestandOpslaan TiedostoTallenna FileSaveAs FilerGemSom BestandOpslaanAls TiedostoTallennaNimellф FileTemplates FilerSkabeloner BestandSjablonen TiedostoMallit ToolsMacro FunkMakro ExtraMacro Ty0kalutMakro
Французский Немецкий Итальянский
FichierNouveau DateiNeu FileNuovo FichierOuvrir Datei+ffnen FileApri FichierFermer DateiSchlie#en FileChiudi FichierEnregistrer DateiSpeichern FileSalva FichierEnregistrerSous DateiSpeichernUnter FileSalvaConNome FichierModшles DateiDokVorlagen FileModelli OutilsMacro ExtrasMakro StrumMacro
Загрузочные вирусы заражают загрузочный (boot) сектор флоппи-диска и boot-сектор или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера - после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного диска (A:, C: или CD-ROM в зависимости от параметров, установленных в BIOS Setup) и передает на него управление.
В случае дискеты или компакт-диска управление получает boot-сектор, который анализирует таблицу параметров диска (BPB - BIOS Parameter Block) высчитывает адреса системных файлов операционной системы, считывает их в память и запускает на выполнение. Системными файлами обычно являются MSDOS.SYS и IO.SYS, либо IBMDOS.COM и IBMBIO.COM, либо других в зависимости от установленной версии DOS, Windows или других операционных систем. Если же на загрузочном диске отсутствуют файлы операционной системы, программа, расположенная в boot-секторе диска выдает сообщение об ошибке и предлагает заменить загрузочный диск.
В случае винчестера управление получает программа, расположенная в MBR винчестера. Эта программа анализирует таблицу разбиения диска (Disk Partition Table), вычисляет адрес активного boot-сектора (обычно этим сектором является boot-сектор диска C:), загружает его в память и передает на него управление. Получив управление, активный boot-сектор винчестера проделывает те же действия, что и boot-сектор дискеты.
При заражении дисков загрузочные вирусы «подставляют» свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех описанных выше способах: вирус "заставляет" систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, но коду вируса.
Заражение дискет производится единственным известным способом — вирус записывает свой код вместо оригинального кода boot-сектора дискеты.
Подявляющее большинство резидентных загрузочных вирусов для выделения системной памяти для своей резидентной копии использует один и тот же прием: они уменьшают объем DOS-памяти (слово по адресу 0040:0013) и копируют свой код в "отрезанный" блок памяти. Объем DOS-памяти обычно уменьшается на единицу (один килобайт) в случае коротких загрузочных вирусов, код которых занимает один сектор дискового пространства (512 байт). Вторая половина килобайта используется такими вирусами как буфер чтения/записи при заражении дисков. Если же размер вируса больше одного килобайта или он использует нестандартные методы заражения, требующие большего объема буфера чтения/записи, объем памяти уменьшается на несколько килобайт (среди известных вирусов максимальное значение у вируса RDA.Fighter - 30K).
В дальнейшем некоторые вирусы "ждут" загрузки DOS и восстанавливают первоначальное значение объема системной памяти - в результате они оказываются расположенными не за пределами DOS, а как отдельный блок DOS-памяти. Некоторые загрузочные вирусы вообще не используют и не изменяют значение объема системной памяти. Они копируют себя в какую-либо область памяти, неиспользуемую вплоть до загрузки DOS, ждут загрузки DOS и затем инсталлируют свой код в системе всеми возможными в DOS способами.
Такими вирусами используются несколько способов перехвата момента загрузки DOS. Наиболее "популятный" способ - проверка значения INT 21h (прерывание DOS-функций). Если это значение изменилось, вирусы считают, что инсталляция DOS завершена. Проверка значения INT 21h проводится при вызовах INT 8, 1Ch (прерывания таймера, для этого вирусы помимо прерываний обращения к дискам перехватывают также прерывания таймера) или при вызовах INT 13h. Менее популярный способ - проверка данных, считываемых с диска (для этого требуется только перехват INT 13h). Если буффер чтения содержит заголовок EXE-файла, вирусы считают, что загрузка DOS завершена, поскольку в память для выполнения загружается EXE-файл.
Загрузочные стелс-вирусы для скрытия своего кода используют два основных способа. Первый из них заключается в том, что вирус перехватывает команды чтения зараженного сектора (INT 13h) и подставляет вместо него незараженный оригинал. Этот способ делает вирус невидимым для любой DOS-программы, включая антивирусы, неспособные "лечить" оперативную память компьютера. Возможен перехват команд чтения секторов на уровне более низком, чем INT 13h.
Второй способ направлен против антивирусов, поддерживающих команды прямого чтения секторов через порты контроллера диска. Такие вирусы при запуске любой программы (включая антивирус) восстанавливают зараженные сектора, а после окончания ее работы снова заражают диск. Поскольку для этого вирусу приходится перехватывать запуск и окончание работы программ, то он должен перехватывать также DOS-прерывание INT 21h.
С некоторыми оговорками стелс-вирусами можно назвать вирусы, которые вносят минимальные изменения в заражаемый сектор (например, при заражении MBR правят только активный адрес загрузочного сектора - изменению подлежат только 3 байта), либо маскируются под код стандартного загрузчика.
Безымянные вирусы
0-9
A
B
'BAT'
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
V_
W
'WORMS'
X
Y
Z