С легкой памяти «лихих 90-х», времен DOSа, гибких дисков и компьютерных программ, заставляющих буквы падать (в буквальном смысле этого слова), вредоносный софт нередко называют обобщенным словом «вирусы». К сожалению, это сочное, запоминающееся слово рождает в уме неискушенного пользователя совершенно фантастические представления о том, что же такое вирус вообще и как от него уберечься. Попытаемся бегло обрисовать настоящее положение дел с вредоносным ПО, чтобы методы защиты от него в области свободного программного обеспечения были достаточно очевидны.
Инструментарий компьютерного хулигана – заботы самого хулигана
Хочу сразу предупредить: мы не будем говорить о программных продуктах, используемых компьютерными взломщиками, хакерами и прочими персонажами. В самом деле, даже самый асоциальный компьютерный взломщик может пользоваться для своих темных делишек вполне законными программными продуктами – компилятором, отладчиком, сетевым инструментарием и так далее. И даже специально созданные для этого программы (так называемые rootkits) хотя и представляют серьезную опасность для взламываемого компьютера, вряд ли способны особо заинтересовать добропорядочного пользователя. Общим для подобного рода программных продуктов является то, что запускаются они с ведома пользователя. Следовательно, пользователь, запускающий такую программу, сам прекрасно представляет ее вредоносные свойства, а значит, он и есть злоумышленник, что переводит обзор в административную и моральную плоскости.
Корень зла
Говоря формально, потенциально вредоносным считается то ПО, возможности которого не до конца документированы. Злоумышленник (или написанная им программа) может втайне от пользователя «проэксплуатировать» систему, и здесь только от воли злоумышленника зависит, насколько результаты такой «эксплуатации» будут в самом деле вредоносными.
Это открывает один курьезный ракурс рассмотрения проблемы. По сути, потенциально вредоносным является любое, самое обычное ПО – операционная система или прикладной софт, если в него (намеренно или по недосмотру) заложены недокументированные возможности. В этом смысле собственно «вирусы» как продукт жизнедеятельности злоумышленника вторичны по отношению к этому ПО, они возникают как бы сами собой, в ответ на «провокацию» – заманчивую возможность эксплуатации чужой системы.
Так или иначе, эти программы «паразитируют» на теле не вполне здоровых ОС или программного продукта. И об их существовании пользователь не подозревает до тех пор, пока их действия не станут очевидными. Здесь аналогия с вирусом достаточно полная: имеется факт заражения – установка вредоносной программы в систему, как и в случае настоящего вируса, не замечаемая вирусоносителем, инкубационный период, в течение которого работа вируса незаметна, и симптомы болезни, отражающие активную работу этой программы.
Что такое «вирус»…
Фактически это программа, которая вовсе не обязательно попадает под определение «файл с расширением .exe». Подобные «искусственные организмы» встречаются внутри операционной системы и программных продуктов в разных обличиях. Помимо собственно исполняемых файлов (к которым в случае Windows стоит причислить еще довольно большое множество файлов, включая даже шрифтовые) одна программа может быть частью другой, которую она модифицировала (довольно типичное поведение DOSовских вирусов 90-х). Также она может представляться модулем или сценарием для определенного ПО (популярный пример – макровирусы для программы Microsoft Word), может, наконец, вписывать себя в разнообразные хранилища данных, которые не являются программами, но части которых в определенных условиях выполняются как программы (пример – так называемые загрузочные вирусы, поражающие определенную область жесткого диска, данные из которой загружаются и выполняются до загрузки операционной системы).
Поскольку вирус – это программа, само наличие его на каком-либо устройстве хранения данных еще не означает «зараженности компьютера» в данный момент. Вирус надо сначала инициировать, запустив либо непосредственно его, либо зараженную им программу. Именно работающая вредоносная программа причиняет вред. Кстати, если она уже загружена, поздно предпринимать какие-то меры против нее, поскольку она может предотвратить попытки себя обезвредить. Так поступают известные вредоносные программы для Windows, которые устанавливаются на равных правах с драйверами устройств и контролируют тем самым любой доступ к дискам или памяти; они отслеживают большинство известных антивирусов и способны обмануть их либо нарушить их работу.
… и с чем его едят?
Проблему первоначального запуска вирус решает множеством различных способов. Если он уже активен в системе, к его услугам и подсистема автоматического запуска служб, и модификация имеющихся. Если вирус неактивен, он может стать активным при участии пользователя, но без его ведома. Например, в системах семейства Windows практикуется так называемый автозапуск программ с носителя: когда ОС определяет, что подключен новый носитель данных, она ищет на этом носителе файл специального формата (autorun.inf) и выполняет все команды, в нем записанные. Вирусу остается только модифицировать этот файл. Не случайно автозапуск на флеш-носителях – очень частая причина заражения вредоносной программой.
Другой вариант – можно обмануть пользователя, выдав программу за обновление системы, а то и просто за картинку, которая внезапно запускается как программа (используются различные недокументированные возможности файловых навигаторов, почтовых программ и тому подобное).
Очень большое значение в распространении вредоносного ПО имеет обмен программами и документами, которые могут содержать автоматически выполняемые вредоносные сценарии. Если пользователю по какой-то причине захотелось такой документ открыть или запустить полученную программу, дело злоумышленника в шляпе.
На пересечении обмана и обмена лежат всевозможные сайты, содержащие контрафактное ПО (часто уже зараженное). Несоответствие информации, видимой пользователем, допустим, в окне WWW-навигатора, и информации, которую этот навигатор на самом деле обрабатывает, дает злоумышленникам дополнительные возможности. Не следует забывать, что современные WWW-навигаторы имеют свойство автоматически выполнять на компьютере пользователя части программ, скачиваемых с web-сайта. Активные элементы, написанные на javascript, имеются на подавляющем большинстве сайтов, но помимо них есть еще java-апплеты, Flash-ролики и некоторые другие инструменты. Ошибка или недосмотр в каждом таком «исполнителе» может привести к запуску вредоносной программы.
Огромное количество вредоносного ПО распространяется с электронной почтой, причиной чему служат слабые ограничения почтового протокола и множественные недосмотры в популярном почтовом софте для ОС Windows.
Как вылечить грипп?
Довольно распространенным является заблуждение, что если «в файле обнаружен вирус», этот файл можно «вылечить». На самом деле таким свойством обладали только «настоящие вирусы» – DOSовские файловые вирусы, а из более современных – макровирусы в документах. На сегодня в подавляющем большинстве случаев речь идет о заражении системы, а не файла. Это значит, что для «излечения вируса» необходимо удалить вредоносное ПО и отменить сделанные им изменения в системе. Последняя задача – самая сложная и далеко не всегда выполнимая.
Словом, лечить надо не грипп, а человека. Проверка почтовой переписки и удаление писем, содержащих вредоносное ПО, практически никогда (или вовсе никогда – один шанс из миллиона) не вредят переписке. То же относится к фильтрации доступа к файловым архивам и некоторым другим превентивным мерам. Если некий файл нельзя получить, потому что он «содержит вирус», этого делать и не надо, потому что ничего, кроме вредоносного ПО, в этом файле и нет. Такая вредоносная программа называется обычно «троянской» или «spyware» – в зависимости от того, какие функции выполняет и каким способом была получена и активизирована на компьютере. Оба термина, равно как «backdoor», «червь» и другие, достаточно размыты и представляют интерес только для классификаторов вредоносного ПО и просто интересующихся этой темой.
Cui prodest?
Саморассылающееся по почте вредоносное ПО без примеси какой бы то ни было полезной нагрузки для пользователя сильно отличается от того, что было лет десять-пятнадцать назад. Во времена «DOSовских вирусов» практически каждый экземпляр вредоносного ПО «цеплялся» за какой-нибудь полезный исполняемый файл, а антивирус «лечил» этот файл, уничтожая вирус и восстанавливая нормальную работу программы.
В написании таких вирусов даже усматривалась особая хакерская «дисциплина»: пораженная программа должна вести себя, как здоровая (за исключением активизации собственно вируса), вирус не должен заражать сам себя, он должен уметь «убегать» от антивируса и тому подобное. Какие вредоносные действия будет совершать вирус, автору было совершенно неважно: это могли быть веселые шутки вроде экрана кверху ногами, осыпающихся букв или песенки «чижик-пыжик» (которую наигрывал… дисковод!), а могли быть и необратимые деструктивные действия вроде удаления информации с жесткого диска и даже порчи содержимого ППЗУ определенного типа (знаменитые «Cih» и «Чернобыль»).
Однако времена молодецкой удали прошли. Сегодня вредоносное ПО – это в первую очередь бизнес.
Какую прибыль можно получить от эксплуатации чужого компьютера? Ответ очевиден: воспользоваться ресурсами этого компьютера:
вычислительная мощность (например, можно заставить подбирать пароль к еще не взломанной учетной записи);
дисковое пространство (разместить на компьютере склад контрафактного ПО, аудио- и видеоматериалов и прочего содержимого, которое легально распространять нельзя);
учетные записи (чужие учетные записи можно использовать для доступа к различным ресурсам как в локальной сети, так и в сети «Интернет». Особенный интерес представляют средства электронного платежа: номера кредитных карт и тому подобное);
сетевые ресурсы (эта составляющая используется наиболее активно, в основном за счет массовых рассылок);
мозг пользователя (несмотря на угрожающую формулировку, эта категория вредоносного ПО довольно курьезна: можно, например, заставить пользователя решать CAPTCHA* для интересующих злоумышленника сайтов);
CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart – полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) – компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы – человеком или компьютером.
Самый прибыльный на сегодня бизнес такого рода – массовая рассылка непрошеной почты, то есть спама. Не имея возможности рассылать ее с собственных серверов, давно и прочно занесенных во всевозможные «черные списки», новоявленные «почтальоны» прибегают к жестким вирусным технологиям. Каждый пользовательский компьютер, зараженный спам-агентом («ботом»), становится источником рассылки как непрошеной почты, так и экземпляров таких же и других ботов. Конгломерат из многих тысяч зараженных компьютеров («ботнет») управляется централизованно с серверов компании-злоумышленника.
Среди ботнетов нет места какой-либо дисциплине, кроме диктата прибыли. Зараженный компьютер продолжает работать более-менее сносно только до тех пор, пока с него можно рассылать спам. Дальнейшее хозяев ботнета не интересует. Зачастую никакое лечение такого компьютера невозможно и требуется полное удаление данных и переустановка системы.
Вирусы и Linux
Прежде чем перейти к советам касательно защиты от вирусов в Linux, заметим, что ситуация с вредоносным софтом в мире свободного ПО вообще и Linux в частности значительно отличается от таковой в области несвободного ПО. Дело в том, что оно не имеет эпидемического характера.
И тому есть несколько причин.
Первая и главная состоит в том, что пользователю дистрибутива Linux крайне редко выпадает необходимость устанавливать стороннее, непроверенное ПО. В дистрибутив входят тысячи программных продуктов, в соответствующем хранилище (репозитории) их находится еще больше. Огромный выбор проверенного и централизованно распространяемого свободного ПО, для получения которого нет необходимости ни во взломе, ни в подборе регистрационной информации, делает ситуацию «скачал с одного хакерского сайта дистрибутив, с другого – ломалку, запустил сначала одно, потом другое» совершенно нетипичной.
Под Linux существуют и несвободные программы – например, игровое или специализированное ПО, но и их нередко можно бесплатно скачать с сайта производителя (как, например, Skype или Adobe Acrobat Reader, в этом случае производитель гарантирует отсутствие вредоносности). Платный софт все чаще распространяется по гибридной схеме: «движок» скачивается бесплатно, а «начинку» – игровые уровни и прочее – можно купить в составе игры для Windows.
Не последнюю роль играет также строгое разделение прав пользователей. В Linux только один пользователь – (так называемый суперпользователь) имеет право произвольно модифицировать операционную систему: менять настройки, устанавливать и удалять ПО, исправлять системные файлы и так далее. «Обычный» юзер в принципе не может изменить настройки операционной системы. Не могут этого сделать и отдельные сетевые службы, каждая из которых запускается с правами какого-либо «обычного» пользователя, к тому же дополнительно пораженного в правах. Значимые системные службы, которым требуются суперпользовательские права, зачастую запускаются в так называемом изолированном окружении (chroot), что не позволяет им модифицировать настройки вне этого окружения. Заметим, что даже здесь речь идет о потенциальном взломе ОС, а не о каких-то действительных угрозах. Наконец, администратору компьютера категорически не рекомендуется постоянно работать в режиме суперпользователя, достаточно выполнять в таком режиме только выбранные команды. Например, для администрирования персонального компьютера достаточно, по большому счету, двух действий, требующих суперпользовательских прав:
установки и удаления ПО (посредством обращения к надежному хранилищу);
настройки сетевого подключения.
Для свободного ПО в целом не стоит проблема всеобщей совместимости исполняемых форматов. Это значит, что готовый программный продукт, собранный, допустим, для дистрибутива ALT Linux, совершенно не обязан работать в составе дистрибутива Gentoo Linux. Свободный программный продукт всегда доступен в исходных текстах на языке программирования, и сообщество любого Linux-дистрибутива предпочтет изготовить свою собственную версию исполняемой программы, со своими, присущими только этому сообществу модификациями. Результат, с точки зрения пользователя, будет примерно одинаковый: программный продукт будет выполнять все возложенные на него функции. А вот с «точки зрения вируса» ситуация станет просто ужасной: все программы, даже ядро операционной системы, внутри себя совершенно разные, даже в рамках разных версий одного и того же дистрибутива. Найдя способ проэксплуатировать одну конкретную уязвимость одной конкретной программы, злоумышленник откроет себе «лазейку» на компьютеры только с установленной определенной версией определенного дистрибутива Linux… до первого обновления!
Стоит сказать пару слов об оперативности исправления ошибок, в том числе ошибок, связанных с безопасностью. Свободное ПО подразумевает беспрепятственный доступ к исходным текста. Это означает, что над поиском ошибок в свободной программе работает, считай, все прогрессивное человечество. Злоумышленнику найти такую ошибку, разумеется, также проще, чем найти ошибку в программе без исходных текстов. Но что ему сделать намного сложнее, чем в случае несвободного ПО, так это успеть проэксплуатировать эту ошибку раньше, чем она будет обнаружена и исправлена свободным сообществом. В свободном ПО существует традиционная практика исправлять ошибки, связанные с безопасностью, до того, как информация о них станет достоянием общественности. Задержка между обнаружением ошибки и ее исправлением в составе хранилища составляет несколько часов, в то время как ошибки в несвободных продуктах могут «висеть» неисправленными по месяцу. Хитрость в том, что тот, кто обнаружил ошибку в свободной программе, может тут же ее исправить!
Наконец, не стоит забывать, что Linux-системы не обрели столь массового распространения, чтобы наличие одной общей уязвимости вызывало эффект эпидемии.
Считается, что большинство взломов Linux происходит либо вручную, непосредственно злоумышленниками, либо путем последовательного применения всех известных вредоносных инструментов, позволяющих проэксплуатировать ту или иную уязвимость в прикладном ПО определенной версии. Такую активность (например, определенного вида запросы HTTP-серверу) сравнительно легко отследить в системном журнале как администратору, так и специально обученному «сторожу» (например, с помощью Snort). Тем самым предотвращается даже потенциальная возможность атаки на компьютер, независимо от того, может ли вообще она быть успешной.
Что делать?
Правила гигиены при работе с Linux очень похожи на общие правила поведения за компьютером, однако по Linux их намного проще соблюсти:
не скачивать и не устанавливать подозрительного ПО;
не изменять настройки системы с правами суперпользователя и вообще не работать с такими правами, если вы до конца не знаете, что именно делаете;
при обнаружении ошибки сообщать о ней сообществу через систему отслеживания ошибок. Вам скажут спасибо, ведь тем самым вы поможете не только себе, но и всем остальным пользователям;
отслеживать обновления системы на предмет безопасности;
содержать в чистоте и порядке свои учетные записи, не пользоваться ненадежными паролями и не хранить пароли в доступном кому бы то ни было месте. Особенно это относится к паролю суперпользователя!
Георгий КУРЯЧИЙ, директор Центра свободного программного обеспечения в образовании
Комментарии