Ах, как жалко компьютеры
ФБР, ЦРУ и Военно-Морского флота США,
которые пострадали от проделок
веселого филиппинского парня, но,
перефразируя украинскую пословицу,
"видели глаза, какой аттач
открывали". Небывалый масштаб
распространения вируса "ILOVEYOU" и
последовавшая шумиха натолкнули меня
на некоторые идеи, которыми я и хочу с
вами поделиться.
Дату, когда появился самый
первый вирус, наверное, уже никто и не
помнит. Но задолго до этого
предсказывали изобретение
компьютерных программ, способных
размножаться. По-настоящему громко
вирусы заявили о себе на машинах IBM PC, от
которых и ведет свою историю
современная настольная компьютерная
техника.
Первые вирусы, работавшие в DOS'е,
атаковали COM и/или EXE файлы. При
запуске инфицированной программы
вирус искал их на диске и заражал. При
этом распространялось это, как правило,
на текущий каталог, потому что написать
на ассемблере подпрограмму поиска по
всем директориям совсем непросто.
Вирус внедрялся в одну или несколько
найденных жертв, после чего передавал
управление программе-носителю.
Файловые вирусы были довольно
примитивными и распространялись
достаточно медленно - ведь чтобы
произошло заражение, нужно было
запустить уже "инфицированную"
программу. Очевидно, если работать с
ней редко или вообще не использовать,
вы будете в безопасности. Другое дело,
если в качестве жертвы выбирался часто
запускаемый файл, например COMMAND.COM.
Эта программа автоматически
загружается при старте системы, а
значит является наиболее желанной
жертвой. Если вирус заражал COMMAND.COM и
имел функции поиска по дереву
каталогов, то вскоре весь компьютер "заболевал".
Однако COMMAND.COM всегда на виду, поэтому
многие "продвинутые" пользователи
постоянно проверяли, не изменился ли
его размер. Да и антивирусы приносили
большую пользу. Следовательно,
появились даже такие вирусы, которые
сознательно обходили стороной COMMAND.COM -
чтобы не "засветиться".
Гораздо опаснее были резидентные
вирусы. После запуска они
записывались в память и брали под
контроль дисковые операции (полностью
или частично). То есть обращение к
любому файлу на диске могло привести к
его заражению или порче. Сидя в памяти и
записываясь подряд во все запускаемые
программы, очень быстро вирус
повреждал практически все файлы на
дисках, необходимость писать сложный
блок поиска отпадала сама собой - уже
при запуске программы резидентный
вирус получал к ней путь.
Резидентные вирусы "за бесплатно"
получили "stealth" возможности:
отслеживая обращения к зараженным
программам, можно выдавать ложные
сведения о размере и даже на время "выкусывать"
из них вирусный код. То есть "продвинутый"
юзер мог сколько угодно рассматривать
COMMAND.COM - резидентный stealth-вирус
маскировал все изменения. Не очень
умные антивирусы тоже оказывались не у
дел - stealth следил за зараженными файлами,
при открытии из них самоудалялся, а при
закрытии устанавливался обратно.
Очевидно, что для таких вирусов самым
главным было как можно скорее
обосноваться в памяти - иначе все
обнаружится. А оптимальный способ
первым загрузиться в память - заразить бут-сектор
(загрузочный) диска. Тогда сразу же
при старте системы вирус мог получить
полный контроль над ней. Особо
продвинутые инфекции даже не позволяли
работать "доктору", а отлавливали
запуск наиболее известных
антивирусных программ.
Почему же DOS'овые вирусы чувствовали
себя так вольготно? Да потому, что ОС DOS
не имела никаких механизмов защиты:
хочешь - садись в память, хочешь -
записывайся в файлы или хоть вовсе
стирай их. Впрочем, винить во всех
грехах DOS будет несправедливо. Ведь он
проектировался для слабеньких
компьютеров, в которых каждый байт
памяти и каждый такт процессора были на
счету. Возможно, поэтому разработчики
не осмелились внедрять модули
мониторинга системы. С другой стороны,
ввести элементарные пароли и
разграничение прав доступа к файлам на
диске не помешало бы.
После массового перехода на Windows
думалось: "Все, вирусам конец". Обо
всех старых подходах и разработках
можно было сразу забыть. Дело в том, что
Windows работает в защищенном режиме, где
принцип работы с памятью в корне
отличается от DOS'овского. Ни о каких
резидентах не могло быть и речи - ну что
это за вирус, который будет висеть на
панели задач ? (Конечно, я немного
утрирую, сделать программу
относительно невидимой можно и в Windows,
но тотально контролировать систему не
получится, в принципе). Но болезни
настигли и Windows. Сравнивать их с "ужасами"
файлово-бутово-резидентных stealth-вирусов
язык не поворачивается. Тем не менее,
выяснилось, что и в Windows есть некоторые
лазейки.
Считалось аксиомой, что текстовый
файл заразить нельзя, ни при каких
условиях. То ли дело файлы Word'а, которые
могут содержать макросы на Visual Basic'е.
Программа открывает файл и сразу же
может выполнить записанные в нем
макросы. По-моему, такого рода вирусы
распространились по двум причинам. Во-первых,
народ не привык проверять текстовые
файлы и до поры до времени просто этого
не делал. Во-вторых, Visual Basic простой и
понятный язык, программировать на
котором гораздо проще, чем на
Ассемблере. Если практически любой
резидентный DOS-вирус был "произведением
искусства", то макрос на Visual Basic'е
ничего особенного из себя не
представляет. Basic в школе проходили
почти все - вот и получили инфекции для
Word'а, Excel'я и теоретически для всех
программ, файлы которых могут
содержать автоматически выполняемые
команды.
И еще один момент: "продвинутый"
пользователь, работая в DOS'е,
внимательно следил за винтом и
дисководом. И если при запуске внешне
безобидной программы наблюдалось
подозрительно долгое шуршание диска,
сразу вставал вопрос об антивирусе. Что
же мы происходит в Windows? Ни с того ни с
сего заработал винт? Так это ж винда
свопится, разве непонятно?! Признайтесь
честно, обращали ли Вы внимание на то,
что происходит внезапное обращение к
жесткому диску? Я уже не говорю о том,
что отследить скорость загрузки
программы или документа в Windows
нереально - спасибо хитрому
кэшированию. Нет, я не ругаю Винду (вон
даже с большой буквы написал ), просто
"мысли вслух".
Ладно, и с Word'овским вирусами все
постепенно свыклись, стали проверять
документы перед загрузкой, в общем,
относиться к ним с подобающей
серьезностью. И получили новый удар в
виде Интернет-червей. О подобных
программах известно давно - они
существовали еще задолго до Windows'а и
Outlook'а. Однако в последнее время их
поминают все чаще и чаще.
Принцип "работы" червя предельно
прост - он рассылается по электронной
почте в виде прикрепленного файла,
написанного, например, на Visual Basic'е. Windows
95 OSR2 и Windows 98 с установленным Internet Explorer'ом
4-й версии и выше содержат
специальный модуль, который может
выполнять скрипты на Visual Basic'е. По
большому счету, "писателю" не
нужно заранее знать, какая система
установлена на компьютере, с каким
почтовым клиентом работает
пользователь и т. п. Все эти данные
заблаговременно прописаны в реестре .
Для червя главная проблема -
запуститься. Ведь пока пользователь
вручную не загрузит скрипт, кругом
будет тишь да гладь. Ну а в противном
случае, пеняйте на себя. Червь даст
команду почтовому клиенту разослать
его всем-всем-всем. Адреса можно
получить из адресной книги, из папки
отправленных сообщений, да мало ли еще
откуда. В общем, дело техники. Ну а что
случится с компьютером после того, как
размножение произошло, зависит только
от фантазии генетика беспозвоночных (т.
е. червя).
А теперь самое время перейти к вопросу,
в чем же секрет такого бешеного
распространения червя ILOVEYOU? На мой
взгляд, причина кроется не в
технической продвинутости вируса, а... в
названии письма и аттачмента! Ну
действительно, как не открыть файл с
любовным посланием? Даже если он пришел
от неизвестного адресата. А вдруг это
прекрасная фотомодель, которая всю
жизнь мечтала о встрече, но только
сейчас решилась написать ? К тому же,
аттач, в котором, собственно, и
содержался код червя, назывался очень
хитро "love-letter-for-you.txt.vbs". При
установках "по умолчанию" Windows
отображает следующее имя "love-letter-for-you.txt",
т. е. создается иллюзия самого обычного
текстового файла, в котором вирусов
быть не может по определению.
Дополнительные комментарии излишни…
В итоге, мы имеем миллионы зараженных
компьютеров, миллиардные убытки и
шумиху во всех изданиях, включая "Мой
Компьютер". Плюс проблемы у
филиппинского "шутника". Но
оставим его в покое, давайте лучше
сформулируем выводы.
Очевидно, что с DOS'овских времен
изменилась сама концепция
вирусописательства, методы и
технические приемы распространения.
Связано это с переходом на Winodws и скорее
всего с широким распространением
Интернета. Конечно же, по сравнению с DOS'ом,
Windows гораздо больше защищена, однако и в
ней, особенно в версии 95/98, содержится
масса лазеек для вирусов, червей и
прочей компьютерной заразы.
Пожалуй, наиболее логичной была бы
защита не на уровне антивирусных
сторожей, мониторов и т. п., а на уровне
операционной системы, которая
содержала бы дополнительные средства
защиты и мониторинга, четкое
разграничение прав доступа к ресурсам
и контроль за запуском скриптов. Но что-то
мне подсказывает, что даже после этого
найдутся "дыры", которые позволят
вирусам выжить.
А быть может, о чудо, выйдет совершенная
операционная система Windows 2010, в которой
вирус не сможет существовать по
определению. Поживем - увидим…