пятница, 1 апреля 2011 г.

ISSP \ Домен 09. Безопасность приложений. Часть 9

В этой части рассмотрены следующие вопросы:
  • Мобильный код
  • Java-апплеты
  • Элементы управления ActiveX
  • Вредоносное программное обеспечение
  • Вирусы
  • Черви
  • Троянские программы
  • Логические бомбы
  • Ботсети
  • Антивирусное программное обеспечение
  • Выявление спама
  • Противодействие вредоносному коду


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

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

В следующих разделах рассматриваются некоторые из распространенных видов мобильного кода.


Java – это объектно-ориентированный независимый от платформы язык программирования. Этот язык может использоваться для написания как полноценных программ, так и небольших скриптов, называемых апплетами (applet), которые выполняются в браузере пользователя.

Другие языки компилируются в объектный код для конкретной операционной системы и процессора. Поэтому, например, скомпилированное для Windows приложение не может работать на Macintosh. В отличие от них, Java не зависит от платформы, поскольку он создает промежуточный код (bytecode – байт-код), который не зависит от конкретного процессора. Виртуальная машина Java (JVM – Java Virtual Machine) затем конвертирует байт-код в машинный код, который понимает процессор на данной конкретной системе. Давайте вкратце рассмотрим процесс создания и выполнения Java-апплетов:
  1. Программист создает Java-апплет и выполняет его компиляцию.
  2. Компилятор Java преобразует исходный код в байт-код (не зависящий от конкретного процессора).
  3. Пользователь загружает Java-апплет.
  4. JVM конвертирует байт-код в машинный код (для соответствующего процессора, установленного на компьютере пользователя).
  5. Апплет запускается при обращении к нему.
Для запуска апплета, JVM создает виртуальную машину в рамках пользовательской среды, называемую песочницей (sandbox). Эта виртуальная машина является замкнутой средой, в которой апплет выполняет свои действия. Апплеты обычно отправляются по запросам от веб-страниц, поэтому апплет выполняется сразу, как только он приходит. Такой апплет может выполнять вредоносную деятельность намеренно или случайно, если разработчик апплета сделал что-то неправильно. Поэтому песочница строго ограничивает доступ апплета к любым системным ресурсам. JVM является посредником между апплетом и ресурсами системы, перехватывая, проверяя и выполняя запросы апплета к системным ресурсам и оставляя при этом сам апплет внутри песочницы. Компоненты этого процесса показаны на Рисунке 9-19.

Рисунок 9-19. Модель безопасности Java
ПРИМЕЧАНИЕ. Язык Java сам предоставляет защитные механизмы, такие как сбор мусора, управление памятью, проверка использования адресов, а также содержит компонент, который проверяет соблюдение заранее определенных правил.
Настройки браузера. В отношении Java-апплетов и действий, которые они выполняют, могут быть установлены ограничения и функции контроля при помощи специальных настроек браузера. Эти настройки не влияют на полноценные приложения Java, используемые за пределами окна браузера.
Однако плохие парни выяснили, как обойти эти ограничения песочницы. Программисты выяснили, как создавать апплеты, позволяющие коду получать доступ к жестким дискам и системным ресурсам, которые должны быть защищены схемой безопасности Java. Эти методы могут использоваться при создании вредоносного кода, который может нарушить безопасность пользовательских систем.


ActiveX – это технология Microsoft, состоящая из набора технологий объектно-ориентированного программирования и инструментов, основанных на COM и DCOM. Программист использует эти инструменты для создания элементов управления (компонентов) ActiveX, которые являются самодостаточными программами, аналогично Java-апплетам. Элементы управления ActiveX могут повторно использоваться различными приложениями в рамках одной системы, или различными системами в сети. Эти элементы управления могут быть загружены с веб-сайтов для добавления дополнительной функциональности (например, для просмотра анимации на веб-странице), но кроме этого они являются компонентами операционной системы Windows (динамически подключаемыми библиотеками (DLL)) и выполняют обычные задачи операционной системы.

Для обеспечения безопасности технологии ActiveX не применяется хранение элементов управления ActiveX в безопасных местах, вместо этого выполняется информирование пользователя об источнике получения такого элемента. Получив уведомление, пользователь решает, следует ли доверять элементу из этого источника или нет.

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

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

Основное различие между Java-апплетами и элементами управления ActiveX в подходах к обеспечению безопасности заключается в том, что Java выполняет код апплетов в песочнице, ограничивая, таким образом, доступ кода к системным ресурсам компьютера пользователя, а ActiveX использует технологию Authenticode, основанную на цифровых сертификатах и доверенных центрах сертификации (вопросы, связанные с цифровыми подписями, сертификатами и центрами сертификации подробно описаны в Домене 06). Хотя обе эти технологии являются хорошими и интересными, им присущи определенные недостатки. Java не может гарантировано обеспечить сохранение всего кода в песочнице, что может стать причиной различных видов нарушения безопасности. Этим пользуются разработчики вредоносного программного обеспечения. В то же время ActiveX в действительности не всегда обеспечивает безопасность, поскольку частое появление предупреждающих сообщений раздражает пользователей, большинство пользователей не понимают организацию работы этой технологии и связанные с ней риски. Все это приводит к тому, что они нажимают кнопку «Ok», даже не читая текст предупреждения.


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

Соблюдение простого правила – не открывать вложения в сообщения электронной почты, полученные от неизвестных отправителей, является одним из лучших способов борьбы с вредоносным кодом. Однако современные вирусы и черви научились, заражая компьютер, использовать сохраненные на нем адресные книги для отправки вредоносных сообщений от имени владельца зараженного компьютера, поэтому это правило уже не гарантирует защиту системы от вредоносного кода. В таком случае, отправляемые зараженные сообщения выглядят достаточно правдоподобно, посколько они отправляются от имени человека, известного получателю. А так как получатель знаком с отправителем, вполне вероятно, что он откроет сообщение и дважды щелкнет мышью на вложении… Теперь и его компьютер заражен и рассылает вредоносные сообщения от его имени людям, указанным в его адресной книге.

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

Вредоносный код может быть обнаружен по следующим косвенным признакам:
  • Увеличение размера файла
  • Неожиданно большое количество обращений к диску
  • Изменение штампа времени последнего изменения файла
  • Резкое сокращение объема свободного пространства на жестком диске
  • Неожиданные и странные действия приложений
  • Резкое увеличение сетевой активности
В следующем разделе мы кратко рассмотрим несколько видов вредоносного кода.


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

Макросы – это программы, написанные на специальных языках, таких как Visual Basic или VBScript, часто используемых при работе с продуктами Microsoft Office. Макрос автоматизирует определенные повторяющиеся задачи, которые иначе пользователям пришлось бы выполнять вручную. Пользователи могут создать макрос, который будет выполнять ряд действий или повседневных рутинных задач просто по нажатию кнопки, избавляя пользователя от необходимости выполнять каждую из этих задач по отдельности вручную. Макрос может быть разработан для выполнения полезных действий, но он может быть создан и в качестве вредоносной программы. Макро-вирус (macro virus) – это вирус, написанный на одном из таких макро-языков и являющийся независимым от платформы. Макро-вирусы заражают файлы шаблонов и документов, используя их для своего «размножения». Макро-вирусы встречаются достаточно часто, поскольку их совсем несложно написать, а офисные продукты используются очень широко.

Некоторые вирусы заражают загрузочный сектор жесткого диска компьютера, перенося оригинальные данные загрузочного сектора в другое место на диске, либо просто перезаписывая поверх них новую информацию. Такие вирусы называются загрузочными вирусами (boot sector virus). Некоторые загрузочные вирусы размещают непосредственно в загрузочном секторе части своего кода, которые могут запустить вирус, а остальные части кода размещаются в секторах жесткого диска, которые они помечают как "плохие". Такие секторы операционная система и приложения не будут пытаться использовать и злоумышленник может не опасаться, что они будут перезаписаны.

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

Вирус-невидимка (stealth virus) скрывает изменения, которые он произвел в файлах или загрузочной записи. Это может реализовано путем мониторинга вызовов системных функций, используемых для чтения файлов или секторов и выдачи результатов. При этом, когда антивирусная программа пытается прочитать зараженный файл или сектор, ей предоставляется первоначальное содержимое неинфицированного файла вместо реального содержимого инфицированного файла. Также вирус может попытаться скрыть свое присутствие, временно переместив свой код в другое место, пока антивирусная программа выполняет процедуру сканирования.

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

Полиморфный вирус (polymorphic virus) создает отличающиеся друг от друга, но при этом полнофункциональные копии своего кода. Он делает это, чтобы перехитрить антивирусный сканер. Даже если сканер сможет обнаружить и заблокировать 1-2 копии вируса, остальные экземпляры могут остаться в системе и продолжить свою работу.

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

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

Составной вирус (multipart virus) заражает как загрузочный сектор жесткого диска, так и исполняемые файлы. В случае запуска такого вируса, он сначала заражает загрузочный сектор диска, а затем приступает к заражению всей системы.

Самоискажающий вирус (self-garbling virus) пытается скрыться от антивирусного программного обеспечения, искажая свой собственный код. По мере распространения вируса, он изменяет способ форматирования своего кода. Небольшая часть кода вируса при его активации выполняет декодирование искаженной части кода.

Мем-вирусы (Meme virus) фактически не являются компьютерными вирусами – это разновидность сообщений электронной почты, которые постоянно пересылаются по всему Интернету. Они могут быть цепочкой писем, поддельным предупреждением о почтовом вирусе, сообщениями религиозного характера или сообщениями финансовых пирамид. Они пересылаются людьми, а не программами, они могут расходовать трафик и сеять панику. Некоторые письма предупреждают об опасных (но не существующих в действительности) вирусах. Прочитав такое сообщение, люди верят ему и считают своим долгом переслать их своим друзьям и знакомым, чтобы рассказать им об этом, хотя реально они были обмануты и фактически распространяли мем-вирус.

Скриптовые вирусы (Script virus) весьма популярны и опасны в последние годы. Скрипты – это файлы, выполняемые интерпретатором, например, Microsoft Windows Script Host, интерпретирующим различные виды скриптовых языков. Использование скриптов позволило сделать веб-сайты более динамичными и интерактивными. Чаще всего для этих целей используются Visual Basic (VBScript) и Java (JScript), и другие скриптовые языки, встроенные в HTML. Когда веб-страница, содержащая такие скрипты, запрашивается веб-браузером, эти скрипты исполняются. Если оказывается, что скрипты были вредоносными, последствия этого могут быть очень плохими. Такой скрипт может выполнять, например, рассылку вредоносного кода в сообщениях электронной почты, адресованных всем знакомым пользователя инфицированного компьютера, записанным в его адресной книге. Также, такой скрипт может удалить или внести изменения в критичные файлы. Применение скриптов являются еще одним вектором заражения, используемым вирусописателями для выполнения своих грязных дел.
ПРИМЕЧАНИЕ. Одним из наиболее известных вирусов, причинивших огромный ущерб, является LoveLetter. Он был написан на VBScript.
Другим видом вирусов является туннелирующий вирус (tunneling virus), который пытается установить себя ниже антивирусной программы (на уровне системы). Он перехватывает запросы к функциям операционной системы. Когда антивирусная программа выполняет проверку критичных файлов, их размеров, дат модификации и т.д., обращаясь за этой информацией к функциям операционной системы, вирус перехватывает этот запрос и отвечает на него самостоятельно, предоставляя информацию, которая свидетельствует о том, что все хорошо и никаких признаков заражения нет.
ПРИМЕЧАНИЕ. Для тестирования антивирусного программного обеспечения используется тест EICAR. Этот тест выполняется с помощью специального COM-файла, признаваемая вредоносным всеми антивирусными продуктами (хотя в действительности никакой угрозы он не представляет и при запуске просто выводит на экран текстовую строку). В базах любого антивирусного продукта есть сигнатура файла EICAR.com. Вы можете провести этот тест самостоятельно, чтобы проверить реакцию на вирус используемых в вашей компании антивирусных продуктов. Для этого после завершения настройки антивирусного программного обеспечения, просто запишите такой файл в систему (его можно создать с помощью Блокнота Windows).
Компоненты вредоносного программного обеспечения. Ниже перечислены шесть основных элементов вредоносных программ, хотя не обязательно, что любая из них должна обладать всеми этими элементами.
  • Установка ("заражение"). Инсталлирует себя в систему жертвы.
  • Скрытие. Использует методы, позволяющих избежать обнаружения.
  • Самоуничтожение. Удаляет собственный код после выполнения вредоносных действий.
  • Репликация ("размножение"). Создает свои копии, распространяясь на системы других жертв.
  • Триггер. Использует события, чтобы инициировать исполнение своих вредоносных действий.
  • Полезная нагрузка (payload). Выполняет определенную функцию, для которой был предназначен вредоносный код (т.е. удаляет файлы, устанавливает бэкдор и т.п.)


Черви (worm) отличаются от вирусов тем, что они могут воспроизводить себя самостоятельно, не используя для этого какое-либо приложение на зараженном компьютере, и являются автономными программами. Червь может распространять свои копии через электронную почту, через веб-сайты и т.д. В настоящее время определения червей и вирусов все больше сливаются, различия между ними становятся все более размытыми. Червь ILOVEYOU был одной из первых таких программ, он использовал для своего распространения программы Outlook и Outlook Express. При запуске пользователем вложения в сообщении электронной почты, автоматически порождалось несколько процессов. Червь отправлял свои копии на все адреса, найденные в адресной книге жертвы. Некоторые файлы на жестком диске удалялись и заменялись на другие. При их открытии, червь производил повторную рассылку своих копий.


Троянская программа (Trojan horse) – это программа, которая скрывается под другой программой. Например, троянская программа может называться Notepad.exe и иметь такую же иконку, как обычная программа «Блокнот». Однако при запуске поддельной Notepad.exe, эта программа может удалить системные файлы. Троянские программы выполняют полезные функции в дополнение к вредоносной функциональности, выполняющейся в фоновом режиме. Троянская программа, названная «Notepad.exe» может также запустить и обычную программу «Блокнот» для пользователя, однако в фоновом режиме она будет удалять файлы или выполнять иные вредоносные действия. Для противодействия троянским программам может использоваться система IDS уровня узла, которая может быть настроена для контроля определенных файлов и выявления фактов увеличения их размеров, что часто является признаком троянской программы. Если оригинальный файл Notepad.exe имеет размер 50KB и вдруг его размер вырос до 2 МВ, это может означать, что эта программа заражена трояном.

Трояны удаленного доступа (RAT – Remote Access Trojan) – это вредоносные программы, которые при работе на системе жертвы, позволяют злоумышленнику получить удаленный доступ к этой системе. Они имитируют функциональность обычных программ удаленного доступа, применяемых для удаленного администрирования, однако они используются во вредоносных целях. Трояны удаленного доступа обычно разрабатывают таким образом, чтобы они могли незаметно устанавливаться в систему и также незаметно работать в ней. Обычно их скрывают в различном мобильном коде, например, в Java-апплетах или элементах управления ActiveX, которые загружаются с веб-сайтов.

Хакерам доступно множество подобных программ (Back Orifice, SubSeven, Netbus и др.). Как только такая программа запускается на системе жертвы, злоумышленник может скачать или загрузить на нее файлы, передать ей команды, установить на нее программное обеспечение (например, для подключения к ботсети) и использовать зараженную систему по своему усмотрению.


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

Ботсети

Слово «бот» – это сокращение от слова «робот». Бот представляет собой фрагмент кода, который выполняет некоторую функциональность для своего хозяина, являющегося автором этого кода. Боты (bot) являются разновидностью вредоносных программ, они установлены на тысячах компьютеров. Компьютер, на котором установлен бот, называют зомби (zombie). Бот получает команды от своего хозяина и заставляет зараженный компьютер выполнять их. Такими командами может быть рассылка спама, вирусов или проведение атак. Злоумышленник предпочитает выполнять такие действия с использованием ботов, а не своего компьютера, поскольку это позволяет ему избежать обнаружения и идентификации.

Совокупность скомпрометированных злоумышленником зомби-компьютеров, на которых установлены боты, называется ботсетью (botnet). Для создания ботсети хакеры взламывают тысячи систем, рассылая вредоносный код множеством различных методов: в виде вложений в сообщения электронной почты, через скомпрометированные веб-сайты, с помощью рассылки ссылок на вредоносные сайты, вложенных в сообщения электронной почты и т.д. В случае успешной установки на компьютере пользователя, вредоносный код направляет злоумышленнику сообщение о том, что система была взломана и теперь доступна злоумышленнику, который может использовать ее по своему желанию. Например, он может использовать созданную ботсеть для проведения мощной DDoS-атаки или сдавать ее в аренду спамерам. При этом большинство компьютеров, входящих в ботсеть, являются домашними компьютерами ничего не подозревающих пользователей.

Хозяин этой ботсети управляет входящими в нее системами удаленно, как правило, посредством протокола IRC (Internet Relay Chat).

Основные шаги создания и использования ботсетей приведены ниже:
  1. Хакер различными способами направляет потенциальным жертвам вредоносный код, который содержит в себе программное обеспечение бота.
  2. После успешной установки на системе жертвы, бот устанавливает контакт с управляющим сервером ботсети, связываясь с ним через IRC или специальный веб-сервер, в соответствии с тем, что указано в его коде. После этого управляющий сервер берет на себя управление новым ботом.
  3. Спамер платит хакеру за использование систем его ботсети, хакер передает на управляющий сервер соответствующие команды, а управляющий сервер, в свою очередь, дает команду всем зараженным системам, входящим в ботсеть, рассылать спам.
Спамеры используют этот метод потому, что это значительно повышает вероятность достижения их сообщениями получателей, в обход установленных у них спам-фильтров, т.к. такие сообщения будут отправляться не с одного адреса, который быстро будет заблокирован или добавлен во все «черные списки», а со множества реальных адресов владельцев взломанных компьютеров.

Для создания ботсети, ее будущий хозяин либо все делает сам, либо оплачивает хакерам разработку и распространение вредоносных программ для заражения систем, которые станут частью его ботсети. А потом к хозяину ботсети будут обращаться и платить ему те, кто хочет рассказать вам о своих новых продуктах, а также те, кому нужно провести атаку на конкурентов, своровать личные данные или пароли пользователей и многие другие.


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

Выявление вредоносного кода на основе сигнатур – это эффективный способ обнаружения вредоносного программного обеспечения, однако при этом существуют определенные задержки в части реагирования на новые угрозы. После первого обнаружения вируса, производитель антивируса должен изучить этот вирус, разработать и протестировать новые сигнатуры, выпустить обновление базы сигнатур, а все пользователи должны загрузить это обновление. Если вредоносный код просто рассылает ваши фотографии всем вашим друзьям, такая задержка не столь критична. Однако если вредоносная программа похожа на червя Slammer, ущерб от такой задержки может быть катастрофическим.
ПРИМЕЧАНИЕ. Червь Slammer появился в 2003 году. Он использовал уязвимость в СУБД Microsoft SQL Server 2000, позволяющую провести атаку переполнения буфера и вызвать отказ в обслуживании. По некоторым оценкам Slammer нанес ущерб на сумму свыше 1 млрд. долларов.
Поскольку новые вредоносные программы создаются ежедневно, производителям антивирусного программного обеспечения трудно не отставать. Технология использования вирусных сигнатур позволяет обнаруживать вирусы, которые уже были выявлены, и для которых была создана сигнатура. Но в связи с тем, что вирусописатели очень плодовиты, а многие вирусы могут изменять свой код, очень важно, чтобы антивирусное программное обеспечение имело и другие механизмы, позволяющие обнаружить вредоносный код.

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

Рассмотрим следующую аналогию. Иван – полицейский, он работает, чтобы поймать плохих парней и запереть их. Если Иван собирается использовать метод сигнатур, он сравнивает стопки фотографий с каждым человеком, которого он видит на улице. Когда он видит совпадение, он быстро ловит плохого парня и сажает его в свою патрульную машину. Если он собирается использовать эвристический метод, он следит за подозрительными действиями. Например, если он видит человека в лыжной маске, стоящего перед входом в банк, он оценивает вероятность того, что это грабитель, а не просто замерзший парень, выпрашивающий мелочь у посетителей банка.
ПРИМЕЧАНИЕ. Бездисковые рабочие станции так же уязвимы для вирусов, несмотря на отсутствие у них жесткого диска и полноценной операционной системы. Они могут быть заражены вирусами, которые загружаются и живут в памяти. Такие системы могут быть перезагружены дистанционно (удаленная перезагрузка), чтобы очистить память и вернуть ее в исходное состояние, т.е. вирус кратковременно живет в такой системе.
Некоторые антивирусные продукты создают искусственную среду, называемую виртуальной машиной или песочницей, и позволяют некоторой части подозрительного кода выполниться в защищенной среде. Это дает антивирусной программе возможность увидеть код в действий, что дает гораздо больше информации для принятия решения, является ли он вредоносным или нет.
ПРИМЕЧАНИЕ. Виртуальную машину или песочницу иногда называют буфером эмуляции (emulation buffer). Это то же самое, что защищенный сегмент памяти, поэтому даже если код действительно окажется вредоносным, система все равно останется в безопасности.
Анализ информации о части кода называется статическим анализом, если выполняется запуск части кода на виртуальной машине, это называется динамическим анализом. Оба этих метода считаются эвристическими методами обнаружения.
Вакцинация. Другой подход, который использовали некоторые антивирусные программы, называется вакцинацией (immunization). Продукты с этой функциональностью вносили изменения в файлы и области диска, чтобы они выглядели так, как будто уже были инфицированы. При этом вирус может решить, что файл (диск) уже заражен и не будет вносить никаких дополнительных изменений, перейдя к следующему файлу.
Программа вакцинации, как правило, нацелена на конкретный вирус, поскольку каждый из них по-разному проверяет факт заражения и ищет в файле (на диске) разные данные (сигнатуры). Однако число вирусов и другого вредоносного программного обеспечения постоянно растет, растет и количество файлов, которые необходимо защищать, поэтому такой подход в настоящее время не применим на практике в большинстве случаев, и производители антивирусов больше его не используют.
В настоящее время, даже с учетом всех этих сложных и эффективных подходов, нет стопроцентой гарантии эффективности антивирусных средств, поскольку вирусописатели очень хитры. Это постоянная игра в кошки-мышки, которая продолжается каждый день. Антивирусная индустрия находит новый способ обнаружения вредоносных программ, а вирусописатели на следующей неделе находят, как обойти этот новый способ. Это заставляет производителей антивирусных средств постоянно увеличивать интеллектуальность своих продуктов, а пользователям приходится ежегодно покупать их новые версии.

Следующим этапом эволюции антивирусного программного обеспечения называют поведенческие блокираторы (behavior blocker). Антивирусное программное обеспечение, выполняющее блокировку на основе поведения, фактически позволяет подозрительному коду выполняться в незащищенной операционной системе и следит за его взаимодействием с операционной системой, обращая внимание на подозрительные действия. В частности, антивирусное программное обеспечение следит за следующими видами действий:
  • Запись в автоматически загружаемые при запуске системы файлы или в разделы автозапуска в системном реестре
  • Открытие, удаление или изменение файлов
  • Включение скриптов в сообщения электронной почты для отправки исполняемого кода
  • Подключение к сетевым ресурсам или общим папкам
  • Изменение логики исполняемого кода
  • Создание или изменение макросов и скриптов
  • Форматирование жесткого диска или запись в загрузочный сектор
Если антивирусная программа выявляет некоторые из этих потенциально опасных действий, она может принудительно завершить такую программу и сообщить об этом пользователю. Новое поколение поведенческих блокаторов в действительности анализирует последовательность выполнения таких действий, прежде чем решить, что система заражена (поведенческие блокаторы первого поколения срабатывали просто на отдельные действия, что приводило к большому числу ложных срабатываний). Современное антивирусное программное обеспечение может перехватывать выполнение опасных частей кода и не позволяет им взаимодействовать с другими запущенными процессами. Также они могут обнаруживать руткиты. Некоторые из таких антивирусных программ позволяют выполнить «откат» системы до состояния, в котором она была перед заражением, «стирая» все изменения, выполненные вредоносным кодом.

Казалось бы, что поведенческие блокираторы могут полностью решить все проблемы, связанные с вредоносным кодом, однако у них есть один недостаток, который требует выполнения такого мониторинга вредоносного кода в режиме реального времени, в противном случае система все-таки может быть заражена. К тому же постоянный мониторинг требует большого количества системных ресурсов…
ПРИМЕЧАНИЕ. Эвристический анализ и блокирование на основе поведения считаются проактивными методами, они могут обнаруживать новые вредоносные программы, иногда называемые атаками «нулевого дня». Обнаружение вредоносного кода на основе сигнатур не может выявить новые вредоносные программы.
Большинство антивирусных программ, используют сочетание всех этих технологий, чтобы обеспечить максимальную защиту, насколько это возможно. Отдельные решения по противодействию вредоносному программному обеспечению показаны на Рисунке 9-20.

Рисунок 9-20. Произволители антивирусного программного обеспечения используют различные методы обнаружения вредоносного кода


Все мы очень устали от сообщений электронной почты, которые предлагают нам купить что-нибудь ненужное. Такие письма назваются спамом (spam) – это нежелательные сообщения электронной почты. Спам не только отвлекает его получателей от их дел, но потребляет значительную пропускную способность сети, а также может являться источником распространения вредоносных программ. Многие компании используют спам-фильтры на своих почтовых серверах, а пользователи могут настроить правила фильтрации спама в своих почтовых клиентах. Но спамеры, также как и вирусописатели, постоянно выдумывают новые хитроумные способы обхода спам-фильтров.

Эффективное распознавание спама стало настоящей наукой. Один из используемых методов называется Байесовской фильтрацией (Bayesian filtering). Много лет назад, господин по имени Томас Байес (математик) разработал эффективный способ предсказания вероятности происхождения каких-либо событий с помощью математики. Теорема Байеса позволяет определить вероятность того, что произошло какое-либо событие при наличии лишь косвенных тому подтверждений (данных), которые могут быть неточны. Концептуально это не так уж трудно понять. Если вы трижды ударились головой о кирпичную стену и каждый раз падали, вы можете сделать вывод, что и дальнейшие попытки приведут к тем же болезненным результатам. Более интересно, когда эта логика применяется к действиям, содержащим намного больше переменных. Например, как работает спам-фильтр, который не пропускает к вам письма с предложением купить виагру, но при этом не препятствует доставке почты от вашего друга, который очень интересуется этим препаратом и пишет вам сообщения о его свойствах и воздействии на организм? Фильтр Байеса применяет статистическое моделирование к словам, из которых состоят сообщения электронной почты. Над этими словами выполняются математические формулы, позволяющие в полной мере понять их отношение друг к другу. Фильтр Байеса выполняет частотный анализ каждого слова, а затем оценивает сообщение как целое, чтобы определить, спам это или нет.

Такой фильтр не просто ищет слова «Виагра», «секс» и т.п., он смотрит на то, как часто используются эти слова, и в каком порядке, чтобы установить, является ли сообщение спамом. К сожалению, спамеры знают, как работают такие фильтры, и манипулируют словами в строке темы и теле сообщения, чтобы попытаться обмануть спам-фильтр. Именно поэтому вы можете получать спам-сообщения с ошибками или словами, в которых используются символы вместо букв. Спамеры очень заинтересованы в том, чтобы вы получали их сообщения, потому что они зарабатывают на этом большие деньги.


Защита компаний от большого списка различных вредоносных программ требует большего, чем просто антивирусное программное обеспечение. Как и с другими компонентами программы безопасности, требуется внедрить и поддерживать некоторые дополнительные административные, физические и технические защитные меры и средства.

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

Сведения о вирусных атаках, используемых средствах антивирусной защиты, а также об ожидаемом от пользователей поведении должны быть предусмотрены в программе повышения осведомленности. Каждый пользователь должен знать, что он должен делать и куда обращаться, если на его компьютере будет обнаружен вирус. В стандарте должны быть рассмотрены все вопросы, касающиеся действий пользователя, связанных с вредоносным кодом, должно быть указано, что долженделать пользователь и что делать ему запрещается. В частности, стандарт должен содержать следующие вопросы:
  • На каждую рабочую станцию, сервер, коммуникатор, смартфон должно быть установлено антивирусное программное обеспечение.
  • Для каждого из этих устройств должен быть реализован способ автоматического обновления антивирусных сигнатур, который должен быть включен и настроен на каждом устройстве.
  • У пользователя не должно быть возможности отключить антивирусное программное обеспечение.
  • Должен быть заранее разработан и спланирован процесс удаления вирусов, должно быть определено и назначено контактное лицо, на случай выявления вредоносного кода.
  • Все внешние диски (USB-накопители и т.п.) должны сканироваться автоматически.
  • Должны сканироваться файлы резервных копий.
  • Должен проводиться ежегодный пересмотр антивирусных политик и процедур.
  • Используемое антивирусное программное обеспечение должно обеспечивать защиту от загрузочных вирусов.
  • Антивирусное сканирование должно независимо выполняться на шлюзе и на каждом отдельном устройстве.
  • Антивирусное сканирование должно выполняться автоматически по расписанию. Не нужно расчитывать на то, что пользователи будут запускать сканирование вручную.
  • Критичные системы должны быть физически защищены таким образом, чтобы локальная установка на них вредоносного программного обеспечения была невозможна.
Поскольку вредоносное программное обеспечение может нанести многомиллионный ущерб (в виде операционных расходов, потери производительности), многие компании устанавливают антивирусные решения на всех точках входа в сеть. Антивирусный сканер может быть интегрирован в программное обеспечение почтового сервера, прокси-сервера или межсетевого экрана. Такой антивирусный сканер проверяет весь входящий трафик на наличие в нем вредоносного кода, чтобы обнаружить и остановить его заранее, еще до того, как он попадет во внутреннюю сеть. Продукты, реализующие такую функциональность, могут сканировать трафик SMTP, HTTP, FTP, а также, возможно, и других протоколов. Но важно понимать, что такой продукт следит только за одним или двумя протоколами, а не за всем входящим трафиком. Это является одной из причин, по которой на каждом сервере и рабочей станции также должно быть установлено антивирусное программное обеспечение.

Комментариев нет: