Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные вирусы и борьба с ними. Сидоров В....docx
Скачиваний:
21
Добавлен:
15.09.2019
Размер:
931.87 Кб
Скачать

2 Защита от компьютерных вирусов и борьба с ними.

2.1 Профилактика и лечение без использования антивирусных программ.

Windows NT (и все производные от нее системы - Windows 2000, XP и частично Vista) изначально проектировалась как защищенная ОС, способная постоять за себя и дать вирусам решительный отпор без каких-либо дополнительных средств, в том числе и широко разрекламированного Microsoft Anti-Spy-Ware.

С эпидемиологической точки зрения, все это создавало крайне напряженную обстановку. Копировать программы друг у друга - все равно что колоться из одного шприца. С другой стороны, антивирус годичной давности считается вполне свежим и актуальным. Основными носителями вирусов были люди, а не файлы, поэтому масштабы эпидемии определялись исключительно интенсивностью копирования программ.

С появлением сети пользователи стали закачивать дистрибутивы программ из Интернета, а вирусам для размножения перестали требоваться люди. Используя дыры в подсистемах безопасности и ошибки типа переполнения буфера, любой вирус буквально за несколько часов может заразить практически все уязвимые узлы, при этом ему совершенно не обязательно внедряться в исполняемые объекты. Зачем привлекать к себе лишнее внимание, когда можно ограничиться временным проживанием в оперативной памяти. Если заражен хотя бы 1% всех машин в сети, то вирус, умирая при перезагрузке, через незаткнутые дыры будет возвращаться вновь и вновь. Такие вирусы принято называть червями, и это один из наиболее распространенных типов компьютерной заразы на сегодняшний день.

Еще существуют "психологические" вирусы, представляющие собой обыкновенные исполняемые файлы и распространяющиеся через вложения электронной почты, ICQ, web и ftp. Свою историю они ведут от "крэкеров интернета", завлекающих бесплатным доступом в сеть, а на самом деле, форматирующим жесткий диск. Этот подкласс заразы назвали Троянским Конем. Сейчас же времена первобытного варварства остались позади, и большинство троянов не уничтожают информацию, поскольку это сделает их пребывание слишком заметным, а скрыто устанавливают шпионскую закладку, похищающую пароли и содержимое электронных кошельков. Такие компьютеры принято называть зомби или дронами. Собрав огромную армию дронов, хакер может совершать распределенные атаки и делать кучу других антисоциальных вещей. Например, рассылать спам.

Сам собой возникает вопрос: «Каким же образом защититься от вирусных атак?». Казалось простым и рациональным решением данной проблемы является приобретение и установка Антивирусной программы. Но не стоит забывать, что защиту можно построить основываясь на использовании стандартных средств и возможностей операционной системы.

Антивирусы в настоящее время практически полностью утратили былую значимость и усиленно пытаются отойти от пропасти, на дне которой они находятся. Вирусы, заражающие исполняемые файлы, за последние несколько лет фактически перевелись, к тому же запретить запись в исполняемые файлы средствами операционной системы намного проще, дешевле, быстрее и надежнее, чем устанавливать антивирусный пакет. И уж совсем бессмысленно пытаться лечить зараженные объекты, ведь в любой момент их можно переустановить с дистрибутивной копии, хранящейся на CD-R/RW или скачанной из сети.

Антивирусный монитор, следящий за всеми создаваемыми/открываемыми файлами и проверяющий их на лету, — это дополнительные тормоза (подчас очень значительные): конфликты, критические ошибки, голубые экраны смерти и прочие, ничем не оправданные трудности. Вся проблема в том, что антивирус может ловить только те вирусы, о которых знает, а вирусы сейчас пишут все кому не лень, так что даже при экстраординарной степени оперативности никакой гарантии, что вся зараза будет распознана, у нас нет. Более того, вирус, упакованный слегка подправленной версией крутого протектора, имеет 100% шансы остаться незамеченным! Сложные протекторы уже не распаковываются на эмуляторе ЦП, и для их снятия требуется статический распаковщик, входящий в "движок" антивирусной базы и справляющийся только со строго конкретными версиями протекторов и очень болезненно относящийся даже к незначительным изменениям структуры упакованного файла. Обычно бывает достаточно внедрить в точку входа jump на инструкцию, неизвестную эмулятору (например, что-нибудь из набора SSE/SSE2), и антивирус не может ничего сделать, поскольку переменная длина x86 инструкций не позволяет ему определить начало следующей машинной команды.

Впрочем, даже если антивирусу удастся побороть упаковщик и передать эвристику, распакованный код никаких вирусных признаков все равно там ни за что не обнаружит, ну разве что это будет пионерский вирус. Наличие незашифрованных текстовых строк с ключами реестра, ответственными за автозапуск, имен исполняемых файлов антивирусных программ, команд в стиле "rm -rf/" с высокой степенью указывает на зловредную программу, но их очень легко зашифровать. Еще эвристик может анализировать таблицу импорта и аргументы, передаваемые функции GetProcAddress. А если там встретится WriteProcessMemory, VirtualAllocEx, CreateRemoteThread или что-то еще в этом роде, он сделает вывод, что имеет дело с программой, способной внедряться в другие процессы. Верный признак червей и отладчиков. Ситуация сильно осложняется тем, что многие вирусные приемы сейчас активно используются протекторами, и, если эвристика не утихомирить, он заблокирует добрую половину легальных программ, чего допускать ни в коем случае нельзя! Да и вообще, если создатель вируса неглупый человек, то он многократно прогонит его через различные эвристики, добиваясь их полной и безоговорочной капитуляции.

Что же касается червей (и, в частности, нашумевшего MS BLAST, известного также под кличкой Love San), то это уже отдельная история. Удаляют его антивирусы, не удаляют - что толку? Пока есть дыра, он словно феникс из пепла будет появляться вновь и вновь. К тому же всегда существует вероятность, что кто-то умный напишет свой собственный shell-код, не имеющий с MS BLAST'ом ничего общего, а потому и не детектируемый никаким антивирусом! Некоторые дыры можно закрыть брандмауэром, но в общем случае для этого необходимо установить заплатку от производителя уязвимого продукта, которым может быть как сама ОС, так и один из ее компонентов: IE, FireFox и т.д.

Еще существует такой тип антивирусов, как ревизоры, в задачу которых входит проверка целостности существующих файлов и контроль за вновь созданными. Некоторые ревизоры также контролируют и реестр, особенно ветки, прямо или косвенно ответственные за автоматический запуск программ. Во времена MS-DOS это была очень хорошая штука, но сейчас винчестеры так разжирели, что процедура сканирования отнимает кучу времени, к тому же многие сканеры содержат ошибки, позволяющие заразить файл без изменения его контрольной суммы, не говоря уже о том, что при правильной политике разграничения доступа сводит актуальность сканеров на нет, тем более, начиная с Windows 2000, система сама контролирует целостность жизненно-важных файлов через механизм SFC. Здесь в свою очередь возникает противоречивая ситуация, связанная с тем, что SFC возможно обмануть, особенно если имеем дело со стелс-вирусом - на уровне ядра или вообще не внедряея ни в какие объекты файловой системы, существуя лишь в виртуальной памяти какого-нибудь процесса.

Контроль над целостностью виртуальной памяти процессоров берут на себя как антивирусы, так и персональные брандмауэры, распознающие и отсекающие все известные способы внедрения в чужое адресное пространство, да вот только работает этот механизм не всегда эффективно. Зловредному коду, запущенному с пониженными привилегиями, доступ к чужим процессам можно запретить средствами самой операционной системы, а код, запущенный с правами администратора, пройдет сквозь все уровни защиты, как нож сквозь масло (при условии, что его писал не новичок, а хотя бы опытные программист). Самое неприятное, что существует множество легальных программ, например, мультимедийных клавиатур и мышей, использующих внедрение в чужое адресное пространство для реализации своих мультимедийных возможностей, поэтому слепой запрет брандмауэра/антивируса приведет к их неработоспособности. Значит, необходимо предоставить пользователю возможность выбора. А сможет ли он отличить честную программу от нечестной? Но даже не это самое страшное. Чем глубже внедряется брандмауэр/антивирус в систему, тем сложнее зловредному коду его обойти, но и тем больше конфликтов и сбоев в работе системы он (брандмауэр/антивирус) вызывает.

Получается так, что грамотно настроенной системе антивирус оп большому счету не нужен, а с безграмотной никакой антивирус все равно не справится (брандмауэр стоит ставить только затем, чтобы отделить домашнюю локальную сеть от интернета и следить за сетевой активностью установленных программ, выявляя не только шпионов, но и легальные программы, пытающиеся проверить корректность регистрации).

Никакие, даже самые совершенные антивирусы как теоретически так и практически не могут гарантировать 100%-ную защиту от вирусных атак. При этом они стоят немалых денег, пожирают сетевой трафик частыми обновлениями, вызывают конфликты и тормозят работу системы, между тем система вполне может справиться с вирусами и сама - никакие дополнительные костыли ей не нужны.

Теперь можно рассмотреть как построить эффективную защиту и ограничить себя от вирусных угроз не прибегая к использованию специального программного обеспечения

Разграничение доступа - отличная защита от вирусов.

В отличие, например, от BSD, Windows NT не является многопользовательской операционной системой, поскольку только один пользователь может работать с компьютером в любой момент времени, и прежде чем переключиться на другого, необходимо завершить текущий сеанс, закрыв все приложения, и лишь потом… А вот в BSD все очень просто: нажал Alt-F#, переключился на соседнюю консоль - и все! В Windows XP наконец-то появилась возможность переключения сеансов разных пользователей без завершения, но механизма взаимодействия между пользователями как не было, так и нет.

Правда, в текущем сеансе можно запускать программы от имени другого пользователя, но это, во-первых, совсем не то, а во-вторых, далеко не все программы соглашаются на такой запуск, и еще меньше из них сохраняют свою работоспособность в полном объеме. Так что без своеобразных тонкостей здесь не обходится.

Идея противостояния вирусам заключается в выборе правильной политики разграничения доступа, тогда вирус (или другая зловредная программа) просто не сможет напакостить и нанести значительный урон. А для этого все потенциально опасные программы нужно запускать в своеобразной песочнице. В идеале - на виртуальной машине типа VMware.

Начнем с того, что никогда, ни при каких обстоятельствах не следует постоянно сидеть под "администратором", поскольку любая запущенная программа может делать с системой все, что ей вздумается. Под администратором следует заходить в систему только для выполнения "ремонтных" работ - установки новых драйверов, изменения параметров конфигурации и т.д. А все остальное время проводить под "опытным пользователем" или просто "пользователем" с ограниченным доступом. Чем меньше у вас привилегий, тем меньше их и у каждой запущенной вами программы, однако под обыкновенным пользователем многие программы работать отказываются, поскольку требуют записи в каталог Program Files или в другие приватные места. Зато потом наступает тишь да гладь - ни вирусов, ни каких либо других опасных последствий.

Необходимость в периодическом резервировании, естественно, до сих пор существует. Надежнее всего резервироваться на CD-R/RW, DVD-RW, ZIP, Flash, стримеры и прочие внешние носители информации, однако это непроизводительно, неудобно, да и надежность у винчестеров все же повыше будет, чем у того же CD-RW. Итак, необходимо создать нового пользователя с администраторскими правами зайти под ним и создать каталог-хранилище и скопировать туда все, что необходимо. Затем, в свойствах безопасности необходимо предоставить полный доступ только пользователю-создателю.

Теперь этот каталог недоступен никому, даже системе. И только владелец, создавший его (то есть "backup"), может войти в раздел "безопасность" и вернуть "всех" на место.

Хорошая защита от вирусов и прочих деструктивных программ, неправда ли? Кстати говоря, задумаемся, а что произойдет, если случайно (преднамеренно) удалить пользователя "backup"? Ведь тогда доступ к архиву не сможет получить никто! К счастью, штатная утилита chkdsk распознает такую ситуацию, и, если видит подобный каталог-зомби, она автоматически возвращает "всех", воскрешая информацию из небытия.

Нашей следующей задачей будет постройка "песочницы" для всех тех программ, что могут быть атакованы из сети, к числу которых принадлежит Internet Explorer, FireFox, Outlook Express, The Bat, ICQ и другие. Каждая из них должна быть запущена из-под ограниченного пользователя, не имеющего доступа ни к каким каталогам, кроме тех, которые явно нужны самой программе. В принципе, можно завести одного ограниченного пользователя на всех, однако в этом случае червь, пробравшийся через Internet Explorer, сможет разрушить почтовую базу, накопленную за многие годы, что будет обидно. Поэтому лучше всего дать каждой программе по пользователю (конечно, это увеличивает потребности системы в памяти, но не столь радикально).

Итак, предположим, что в соответствии с вышеизложенным был создан ограниченный пользователь, в свойствах "безопасности" каждого из каталогов (или всех дисков целиков) данный пользователь добавлен, и доступ ему запрещен (политика запрета имеет приоритет над политикой разрешений, поэтому удалять "всех" совершенно не обязательно). По завершению этой нехитрой операции у нашего «ограниченного» пользователя останутся только те каталоги, которые ему нужны (как правило, это каталоги самой программы, причем без права записи в исполняемые файлы).

Попробуем запустить в песочнице, например, FireFox. Создаем ярлык с firefox.exe, щелкаем по нему правой клавишей, идем в "свойства", затем - в "дополнительно" и там взводим галочку "запускать от имени другого пользователя". Выбираем нашего нового пользователя (или конкретного, которого мы создали для FireFox), говорим "ОК" и запускаем. Появляется грозное диалоговое окно, требующее ввода имени и пароля. Вводим. И… FireFox не запускается! Между прочим, в Linux/BSD подобная операция протекает без каких бы то ни было проблем. А здесь нужен нам потребуется файловый монитор, показывающий, на каких именно файловых операциях программа вызывает сбой.

Чтобы запустить наш браузер воспользуемся командной строкой, а конкретнее командой «runas» и не забудем указать профиль пользователя:

"runas /profile /user:Sidorov firefox.exe", где Sidorov – имя нашего нового пользователя с ограниченными правами. Теперь запуск проходит без проблем:

Рис.2. Запуск программы через командную строку от имени пользователя

Описанная ситуация происходит в Windows 2000, в Windows XP (и далее), или с более поздними версиями ПО, она вполне возможно и не проявит себя, но для того, чтобы Вы знали как её обойти (в случае возникновения), она и была описана. Вот Opera хранит кэш не в профиле пользователя, а непосредственно в своем каталоге (впрочем, это зависит от настроек), поэтому нашей учетной записи необходимо присвоить права на запись в "program filesopera".

Маленький подводный камень: перенаправить ввод с клавиатуры на файл, увы, не удастся, и пароль придется каждый раз вводить вручную, что напрягает. Впрочем, программисты запросто напишут программу, лишенную этих недостатков. Нам же главное - создать кучу пользователей, распределив права доступа так, чтобы зловредные программы не имели никаких шансов ни для размножения, ни для шпионской деятельности.

Теперь настало время поговорить о защите компьютера от угроз с внешних носителей информации.

Для надежной защиты компьютера от вирусов на usb-флешках достаточно отключить автозагрузку (автозапуск) на всех дисках, подключаемых к компьютеру. Это можно сделать, воспользовавшись специальными программами (Anti autorun), либо выполнив ряд несложных действий по настройке операционной системы.

Итак, для защиты компьютера от автостарта на флешкахи СD-дисках (и, заодно, от попадания вирусов) необходимо отключить данную опцию в групповой политике.

Вторым аспектом безопасности флеш-накопителей является задача препятствия проникновению на флешку вирусов с зараженного компьютера. Поскольку флеш-карта используется в основном для передачи файлов с одного компьютера на другой, сложно гарантировать то, что один из компьютеров-участников этой передачи не окажется зараженным.

Весьма радикальным методом является использование флеш-устройств с возможностью защиты от записи (write-protect) или миниатюрных USB-кардридеров, использующих SD-карты с возможностью защиты от записи. Достаточно защищенными от проникновения вирусов являются некоторые модели флешек с аутентификацией по отпечатку пальца (Fingerprint access) — такая защита вызвана особенностью архитектуры подобных флешек, поскольку у них уже существует файл autorun.inf, обеспечивающий запуск приложения аутентификации, и удалить его стандартными средствами невозможно.

Если ваша флешка не наделена такими свойствами, то защиту от записи можно настроить средствами Windows. Для этого необходимо любым из способов отформатировать флешку в формат файловой системы NTFS и затем также как и в пункте выше запретить пользователям вносить изменения в корень диска, а предоставить доступ только к одному каталогу, заранее созданному на флешке.

Кроме вышеизложенных способов защиты от компьютерных вирусов пользователю необходимо соблюдать некоторые простые правила и советы.

Поиск информации.

Прежде всего, нужно тщательно выбирать среду поиска необходимой программы, так как 99% вирусов попадают на компьютер из интернета. Вы можете искать в социальной сети или использовать популярные поисковые системы. Наиболее безопасный способ — скачивание программы с официального сайта разработчика, так как там просто невозможно подцепить вирус. Попробуйте попросить у какого-нибудь своего друга или знакомого из социальной сети, любую программу или файл. Наиболее вероятно, что вы получите ссылку на файло-обменник типа Rapidshare, Depositfiles. Именно в файло-обменниках чаще всего компьютер подхватывает инфекцию вместе с файлом.

Настройки безопасности.

Настройте Ваш браузер на безопасный режим работы, в новых версиях популярных браузеров уже есть все необходимые настройки, что значительно облегчает задачу. Если Вы знаете, что сайт, который собираетесь посетить, относится к категории сомнительных, то рекомендуется пользоваться «анонимным» режимом работы. В Internet Explorer этот режим называется InPrivate Browsing, а в Google Chrome — Incognito. К сожалению, на браузеры Opera и Safari таких защитных плагинов не разработано, однако на Firefox его можно скачать отдельно.

Почта.

Стоит более скрупулезно относиться даже к той почте, которую присылают ваши друзья. Если вы не ждете от него какой-то определенный файл — не открывайте, не узнав предварительно, высылал ли его Ваш друг. Не стоит думать, что почта от хорошо знакомых Вам друзей может быть только безопасной, ведь никто не знает через какие не подконтрольные компьютеры она прошла, пока направлялась от него до Вас. Ни в коем случае не открывайте прикрепленные к письму файлы, если там ничего, кроме прикрепления нет, в большинстве случаев — это вирус.

Файервол.

Для наибольшей защиты компьютера — необходимо контролировать его через файервол. Если вы пользуетесь операционной системой Windows, то необходимо скачать отдельный от встроенного файервол, который будет контролировать исходящие соединения. Если Вы счастливый обладатель Windows Vista или Windows 7, то отключать встроенные туда файерволы нет необходимости, они соответствуют всем требованиям.

Создание защищенной системы без использования антивирусов - это реально! Пускай на первоначальном этапе нам придется проделать большой объем работы и очень много думать головой, создавая столько пользователей, чтобы полностью изолировать одно потенциально опасное приложение от всех остальных.