- Основные черты Auto-Containment как средства защиты
- Предустановленные наборы правил
- Задание целевых приложений в правилах Auto-Containment
- Задание ограничений и исключений в правилах Auto-Containment
- Ограничения приложений, изолированных посредством Auto-Containment
- Обнаружение установщиков
- Способы запуска программ без изоляции
- Ограниченность контроля Auto-Containment
Основные черты Auto-Containment как средства защиты
Компонент Auto-Containment, как и HIPS, является средством проактивной защиты, работающим на основе правил для определенных программ и их групп. Любые ограничения, которые накладывает Auto-Containment, будем называть изоляцией, независимо от их характера (что соответствует формулировкам всплывающих оповещений CIS). Компонент Auto-Containment имеет следующие особенности, отличающие его от HIPS:
- изоляция программ происходит в момент их запуска;
- если программа уже запущена, то невозможно ее изолировать, освободить от изоляции или изменить вид ее изоляции;
- изоляция программ наследуется их дочерними процессами;
- при этом, если процесс наследует изоляцию, он уже не подчиняется другим правилам Auto-Containment;
- изоляция может представлять собой как запрет определенной активности программы, так и виртуализацию ее работы;
- однако изоляция не подлежит гибкой настройке, можно лишь выбрать один из предустановленных ее вариантов;
- наборы же программ, подлежащих изоляции, можно гибко задавать на основании не только их путей, но и хэша, рейтинга, происхождения и др.;
- оповещения, которые позволяют отказаться от изоляции, возможны только для программ-установщиков; изоляцию обычных программ предотвратить невозможно.
Типичное применение Auto-Containment — автоматическая виртуализация при запуске файлов с рейтингом неопознанных.
Предустановленные наборы правил
Изначально на вкладке Containment → Авто-Containment задано несколько правил. Если набор правил изменить, то всегда можно вернуться к предустановленному варианту нажатием кнопки «Правила по умолчанию».
Предустановленный набор правил будет различным, в зависимости от выбранной конфигурации. В конфигурации «Internet Security» или «Firewall Security» набор правил, заданный по умолчанию, предписывает изолировать только те неопознанные приложения, которые:
- имеют определенное происхождение: загружены веб-браузерами или почтовыми клиентами, распакованы архиваторами, скопированы со съемных носителей и т.д.;
- либо созданы в течение последних трех дней;
- либо расположены в областях общего доступа, на съемных носителях и т.д.
Правила в этих конфигурациях устроены так, что почти любое новое неопознанное приложение, появившееся на ПК, будет изолировано при запуске. Однако неопознанные программы, которые находятся на ПК давно и чье происхождение не относится к подозрительным, запустятся без изоляции.
В конфигурации «Proactive Security» предустановленный набор правил Auto-Containment предписывает виртуализировать работу любых неопознанных программ, независимо от их даты и происхождения.
Задание целевых приложений в правилах Auto-Containment
Приложение, к которому должно применяться правило Auto-Containment, называется целью. Цель определяется по совокупности признаков: своему пути или хэшу, происхождению, рейтингу и др. Чтобы задать эти признаки необходимо нажать кнопку Изменить на вкладке Критерии в правиле Auto-Containment.
Путь или хэш целевого приложения
Путь к целевому приложению можно вписать непосредственно в поле Расположение файла, а также можно нажать кнопку Обзор и выбрать файл, каталог или группу файлов. Если требуется, чтобы правило не зависело от пути (а зависело, например, только от рейтинга), то следует выбрать в качестве цели группу «Все приложения».
Иногда CIS отказывается принимать в поле Расположение файла подстановочные символы (*
и ?
) и переменные среды (%tmp%
, %windir%
и т.п.). Решение проблемы — создать на вкладке Рейтинг файлов → Группы файлов группу с желаемым содержимым и указать в правиле Auto-Containment эту группу в качестве расположения цели.
Вместо пути можно задать хэш, указав файл через соответствующий пункт меню Обзор. Тогда правило будет применяться только к файлам, которые совпадают с выбранным по содержимому, хотя могут отличаться от него по имени и местоположению.
Рейтинг целевого приложения
Если правило должно применяться только к программам с определенным рейтингом, понадобится указать в поле Рейтинг файла один из вариантов: доверенный, неопознанный или вредоносный.
Внимание! Если не создать отдельное правило для файлов с рейтингом «вредоносный», то такие файлы будут запускаться без ограничений Auto-Containment. Одного лишь правила для файлов с рейтингом «неопознанный» недостаточно. Напомню, что приложения получают рейтинг «вредоносных» на основании облачной проверки.
Поставщик целевого приложения
В версии CIS 12 можно потребовать, чтобы правило применялось только к приложениям с подписью определенного производителя.
Производителя можно либо выбрать из имеющегося списка поставщиков, либо указать файл/процесс, имеющий нужную подпись. Можно перечислить несколько подходящих поставщиков.
К сожалению, не предусмотрена возможность задать имя поставщика по маске (например, чтобы охватить возможные его будущие изменения). Любопытно, что по экспериментам, прямое редактирование конфигурации позволяет это сделать и результат оказывается работоспособным.
Возраст целевого приложения
Можно наложить условие возраст целевого приложения, т.е. потребовать, чтобы целевое приложение было создано раньше или позже определенной даты или указать, насколько должно отличаться время его создания от текущего времени.
Отмечу, что возраст определяется на основании файлового атрибута Дата создания (не модификации). Этот атрибут может быть легко изменен без нарушения целостности файла, и, наоборот, модификация файла не приводит к изменению этого атрибута. Таким образом, определяемый «возраст» файла совершенно не гарантирует, что файл был создан в указанное время и не изменялся с тех пор.
Родительский процесс
В версии CIS 12 можно указать, какая программа должна запускать целевое приложение.
Родительскую программу можно задать путем, группой файлов или хэшем. При желании, можно наложить ограничения на ее рейтинг.
По умолчанию правило действует только на непосредственных потомков заданной программы. Но можно увеличить максимальное число уровней наследования. Например, для уровня 2 правилу подойдут приложения, запускаемые не только заданной программой, но и теми, кого она непосредственно запустила.
Происхождение целевого приложения
Можно потребовать, чтобы правило применялось только к приложениям, полученным из определенных источников либо созданным определенными программами или определенными пользователями.
Источником приложения может считаться Интернет, Интранет или Съемный носитель.
Программу, создавшую целевое приложение, можно задать ее путем, хешем или принадлежностью к группе файлов. Интерфейс не позволяет отредактировать путь к программе-создателю (чтобы, например, превратить его в шаблон); однако можно создать группу файлов, наполнить ее произвольными путями или шаблонами и указать эту группу в качестве программы-создателя. Начиная с CIS 12, можно также уточнить, должно ли приложение-создатель иметь определенный рейтинг.
Наконец, можно указать пользователя, от имени которого должно быть создано целевое приложение. Для этого используется стандартный интерфейс выбора пользователя. Вместо конкретного пользователя можно указать группу, к которой он принадлежит.
В одном правиле можно перечислить несколько возможных программ или пользователей, создавших целевое приложение, а также несколько возможных его источников.
Учет происхождения файлов
CIS отслеживает создание исполняемых файлов и записывает информацию об их происхождении в свою базу данных. При этом различается создание файла и его копирование: в данные о копии переписываются некоторые данные об оригинале. Таким образом, программой, создавшей копию файла будет считаться именно та, которая создала его оригинал, а не файловый менеджер, выполнивший копирование.
При определении источника файла CIS опирается на его принадлежность к той или иной зоне происхождения (Интернет, Интранет и т.д.). Зона происхождения определяется операционной системой и записывается в NTFS-поток Zone.Identifier, а CIS переписывает эти данные в свою базу.
Порядок применения правил
Итак, программа попадает под действие правила, если для нее выполняются одновременно все условия, перечисленные в окне Критерии файлов:
- она соответствует заданному расположению или хешу;
- она создана каким-либо из приложений, перечисленных в разделе «Файл создан процессом» (или этот раздел пуст);
- она запущена каким-либо из приложений, перечисленных в разделе «Файл запущен процессом» (или этот раздел пуст);
- она создана от имени какого-либо из пользователей, перечисленных в разделе «Файл создан пользователем» (или этот список пуст);
- источником ее происхождения является какой-либо из перечисленных в разделе «Источник происхождения файла» (или этот раздел пуст);
- она имеет рейтинг, указанный в разделе «Рейтинг файла» (или этот раздел пуст);
- она подписана одним из поставщиков, перечисленных в разделе «Файл подписан поставщиком» (или этот раздел пуст);
- ее атрибут «Дата создания» соответствует ограничению в разделе «Возраст файла» (или ограничение не задано).
Если запускаемое приложение является целью нескольких правил, то сработает правило, расположенное выше.
Задание ограничений и исключений в правилах Auto-Containment
Рассмотрим действия над целевыми приложениями, задаваемые в окне создания правила Auto-Containment.
Запуск в реальной среде с ограничениями
Если выбрать действие Запускать с ограничениями, то целевое приложение будет запускаться в реальной среде, но оно и его дочерние процессы будут ограничены в правах. Уровень ограничений задается на вкладке «Опции». При любом из уровней запрещается модификация защищенных файлов и ключей реестра, а также доступ к защищенным COM-интерфейсам. Защищенными являются те файлы, ключи реестра и COM-интерфейсы, которые перечислены в соответствующих списках на вкладке HIPS → Защищенные объекты.
Уровень Частично ограниченное означает, что приложению запрещаются вышеуказанные операции с защищенными объектами, а также привилегированные операции, такие как загрузка драйверов и отладка. Однако при этом разрешен доступ к различным системным ресурсам, наподобие буфера обмена.
Уровень Подозрительное более строгий. При нем разрешены только отдельные системные ресурсы; блокируются операции, требующие привилегий администратора. Приложению запрещается запускать более 10 процессов одновременно.
При уровне Ограниченное разрешено еще меньше системных ресурсов, в частности, блокируется буфер обмена. Как и при уровне «Подозрительное», приложению разрешается запускать одновременно не более 10 процессов. (По моим наблюдениям, блокируются операции, которые разрешены лишь группе пользователей «Прошедшие проверку».)
Уровень Недоверенное накладывает на приложение примерно такие же ограничения, как и уровень «Ограниченное», но при этом вообще запрещает ему запускать другие процессы.
Дополнительно можно ограничить размер памяти, выделяемой приложению, а также время, отводимое на его выполнение.
Запуск в виртуальной среде
Выбор действия Запустить виртуально задает запуск целевого приложения и всех его дочерних процессов в виртуальной среде. На мой взгляд, виртуализация без дополнительных ограничений — наиболее предпочтительный вид изоляции неопознанных приложений. При ней, с одной стороны, реальная система относительно защищена от изменений, с другой — приложениям дается довольно много свободы для корректного выполнения. Особенности виртуальной среды COMODO и приемы работы с ней описаны в отдельной статье.
В дополнение к виртуализации можно наложить на целевое приложение и его дочерние процессы ограничения. Эти ограничения задаются на вкладке «Опции». Они аналогичны ограничениям для запуска в реальной среде, однако в виртуальной среде разрешена модификация защищенных файлов и ключей реестра.
Блокировка запуска приложений
Действие Блокировать означает, что целевому приложению будет запрещено запускаться.
При выборе этого действия на вкладке «Опции» появляется пункт Переместить программу в карантин. Если отметить этот пункт, то при попытке запуска целевого приложения оно будет не только блокироваться, но и удаляться, причем удаление нельзя будет предотвратить никакими оповещениями. Поэтому рекомендую избегать использования данной опции. В частности, понадобится отключить ее в предустановленном наборе правил.
Исключение приложений из изоляции
Действие Игнорировать означает, что целевое приложение будет запускаться без изоляции Auto-Containment. Даже если есть другое правило, назначающее данному приложению изолированный запуск или блокировку, но оно расположено ниже — изоляция не будет применена.
При выборе данного действия на вкладке Опции появляется пункт Не применять выбранное действие к дочерним процессам. Если он отмечен, то только целевое приложение будет исключено из изоляции, а его дочерние процессы будут подчиняться правилам Auto-Containment, как обычно. Если же он не отмечен — из изоляции Auto-Containment будут исключены все дочерние процессы целевого приложения, а также их дочерние проессы и т.д.
Внимание! По умолчанию при создании игнорирующего правила опция «Не применять выбранное действие к дочерним процессам» отключена. Если нет необходимости в бесконтрольном запуске дочерних процессов, рекомендую включить эту опцию.
Иногда действительно необходимо исключить дочерние процессы из контроля Auto-Containment, т.е. отключить опцию «Не применять выбранное действие к дочерним процессам». Отмечу, что правило, исключающее из изоляции целевое приложение вместе с его дочерними процессами, продолжит действовать на эти процессы, даже когда само целевое приложение завершит работу.
Таким образом, исключение из Auto-Containment наследуется более надежно, чем привилегии установщика: они теряются, когда программа-установщик завершает работу.
Однако в некоторых ситуациях исключение дочерних процессов не работает:
- когда целевое приложение является доверенным установщиком, а на вкладке Containment → Настройка Containment отключена опция «Обнаруживать программы, требующие повышенных привилегий»;
- когда целевое приложение, являющееся доверенным установщиком, завершает работу;
- когда целевое приложение или его промежуточный дочерний процесс исключен из «защиты от shell-кода»;
- когда пользователь две минуты не отвечает на оповещение HIPS о запуске дочернего процесса.
Ограничения приложений, изолированных посредством Auto-Containment
Права приложений, изолированных посредством Auto-Containment, определяются видом и уровнем изоляции, списками защищенных объектов, а также правилами HIPS и фаервола. Виды и уровни изоляции рассмотрены выше. Теперь рассмотрим, как влияют на ограничения изолированных приложений списки защищенных объектов и правила HIPS и фаервола.
Программам, выполняющимся в реальной среде с ограничениями Auto-Containment, запрещаются операции с объектами, перечисленными в списках на вкладке HIPS → Защищенные объекты:
- блокируется модификация файлов, перечисленных в списке «Защищенные файлы»;
- блокируется создание или модификация защищенных ключей реестра;
- блокируется обзор содержимого каталогов, перечисленных в списке «Папки с защищенными данными»;
- блокируется доступ к COM-интерфейсам, перечисленным в соответствующем списке.
При этом защита файлов имеет определенную особенность. Приложениям, выполняющимся в реальной среде с ограничениями Auto-Containment, запрещается удаление и модификация любых существующих файлов, которые соответствуют шаблонам, перечисленным на вкладке HIPS → Защищенные объекты → Защищенные файлы. Если шаблон не оканчивается знаком |
, то будет разрешено создавать новые файлы, соответствующие этому шаблону; созданные файлы будет разрешено удалять (но не модифицировать). Если шаблон оканчивается знаком |
— создание новых файлов будет запрещено. Например, в списке «Защищенные файлы» присутствуют шаблоны *.exe
и C:\Users\*\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*|
, и поэтому ограниченным в Auto-Containment приложениям разрешается создавать exe-файлы, но запрещается их изменять, а также запрещается создавать файлы в каталоге автозагрузки.
Если программа уже изолирована посредством Auto-Containment, то ее активность не вызовет оповещений HIPS. Однако активность изолированных программ можно дополнительно ограничить правилами HIPS.
Посредством HIPS можно лишь ужесточить ограничения, наложенные Auto-Containment, но не снять их. Например, как уже сказано, программе, выполняющейся в реальной среде с ограничениями Auto-Containment разрешено создавать защищенные файлы, шаблон которых не содержит знака |
(запрещено лишь модифицировать их). Однако если в правилах HIPS заблокировать такой программе операции с защищенными файлами, то будет запрещено не только их изменение, но и создание.
Если же программа выполняется в виртуальной среде, то на нее не действуют никакие запреты HIPS на создание и изменение файлов и ключей реестра. Однако действуют другие запреты, в частности, на запуск процессов, на доступ к COM-интерфейсам и т.д. Каталоги, перечисленные в списке «Папки с защищенными данными», будут выглядеть для этих программ пустыми.
Фаервол, в отличие от HIPS, может выдавать оповещения об изолированных приложениях. Он контролирует их сетевую активность подобно режиму «Пользовательский набор правил»: соединения будут разрешаться при наличии разрешающего правила, блокироваться — при наличии запрещающего (приоритет имеет правило, расположенное выше); в отсутствие правила будет показано оповещение или, если оповещения отключены, применится действие по умолчанию: разрешение или блокировка. Если приложение расположено в виртуальной среде, то в правиле фаервола должен быть указан его реальный путь (т.е. c:\VTRoot\HarddiskVolume1\test.exe
, а не c:\test.exe
).
Обычно сетевая активность изолированных приложений возможна лишь при запуске в виртуальной среде (с ограничениями и без них). Если же приложение выполняется в реальной среде с ограничениями Auto-Containment, то, как правило, независимо от разрешений фаервола, оно не сможет установить соединение, поскольку будут заблокированы необходимые для этого файловые объекты (сокеты) или ключи реестра.
Обнаружение установщиков
Контроль программ, запущенных доверенными установщиками
По умолчанию на вкладке Containment → Настройка Containment включена опция «Обнаруживать программы, требующие повышенных привилегий». Она означает, что программы, имеющие статус доверенных установщиков, будут исключены из контроля Auto-Containment вместе со своими дочерними процессами. Таким образом, эта опция облегчает установку и обновление безопасных программ.
С другой стороны, эта опция несколько ослабляет защиту. В прежних версиях CIS ослабление было значительным, поскольку ряд прикладных программ ошибочно наделялся привилегиями установщика. Сейчас эта проблема во многом устранена и, на мой взгляд, опцию можно оставить включенной.
Если вы все-таки желаете, чтобы Auto-Containment полностью контролировал дочерние процессы доверенных установщиков, отключите опцию «Обнаруживать программы, требующие повышенных привилегий» в настройке Containment и опцию «Доверять приложениям, установленным с помощью доверенных установщиков» в настройке рейтинга файлов. Отключение второй опции необходимо на случай, если доверенный установщик создаст какой-либо неизвестный файл и запустит его.
Оповещения о неопознанных установщиках
Если на вкладке Containment → Настройка Containment опция «Обнаруживать программы, требующие повышенных привилегий» включена, то становится доступной следующая опция: «Не показывать оповещения при запросах повышенных привилегий». Если отключить эту вторую опцию, то при попытке запуска неопознанных программ, имеющих признак установщика, будут выдаваться оповещения.
Более точно — оповещения будут возникать, когда некая программа-установщик (неопознанная или нет) должна быть, согласно правилам Auto-Containment, виртуализирована и/или ограничена (но не заблокирована). Еще более точно — оповещения возникнут не только для программ, которые действительно имеют признак установщика, но и для тех, которые лишь запрашивают при запуске права администратора.
В данных оповещениях предлагается выбрать одно из действий:
- Изолированный запуск. Программа запустится с тем видом изоляции, который предписан ей правилами Auto-Containment.
- Запустить без ограничений при отключенной опции «Доверять этому приложению». Данная программа и ее дочерние процессы временно выполнятся без контроля Auto-Containment и HIPS.
- Блокировать. Программа не будет запущена.
- Запустить без ограничений при включенной опции «Доверять этому приложению». Программа станет доверенной и запустится с привилегиями установщика: она и ее дочерние процессы выполнятся без контроля Auto-Containment и HIPS, а созданные ими файлы станут доверенными (если включена опция ДПУПДУ).
При выборе последнего варианта (запуск без ограничений и доверие) автоматически создается правило Auto-Containment, предписывающее запуск данной программы и ее дочерних процессов без ограничений. Это правило бессмысленно при стандартной конфигурации, и я рекомендую его удалить.
Если включить опцию «Не показывать оповещения при запросах повышенных привилегий», то можно будет выбрать вариант, который всегда будет применяться вместо показа оповещения. Рекомендую вариант «Запускать изолированно».
Способы запуска программ без изоляции
Добавление в доверенные или создание исключающего правила
При стандартных наборах правил Auto-Containment изолируются только неопознанные программы. Поэтому, чтобы предотвратить изоляцию какой-либо безопасной программы, следует просто добавить ее в список доверенных. Это можно сделать через окно настройки CIS или, если программа запущена, через список активных процессов.
Иногда приходится иметь дело с часто создающимися или меняющимися программами, например, при программировании. Чтобы не добавлять в доверенные каждую новую программу, можно исключить их из Auto-Containment по расположению, т.е. создать правило:
- выбрать действие «Игнорировать»,
- в «Критериях» указать шаблон пути (или каталог, группу),
- отметить опцию «Не применять выбранное действие к дочерним процессам».
Проблема всплывающих уведомлений об изоляции
Когда программа впервые изолируется в Auto-Containment, всплывает окно, уведомляющее об этом. Также это окно содержит кнопку разблокировки («Больше не изолировать»).
Внимание! Для исключения программы из изоляции опасно пользоваться кнопкой «Больше не изолировать» на всплывающем уведомлении.
Нажатие кнопки «Больше не изолировать» не только делает данную программу доверенной, но и создает правило, снимающее контроль Auto-Containment со всех ее дочерних процессов. Рекомендую удалить такие правила, если они уже созданы.
Можно запретить уведомления об изоляции, отключив опцию «Показывать информационные сообщения» на вкладке Общая настройка → Интерфейс, однако тогда исчезнут и другие уведомления, например, о блокировке файла антивирусом.
Запуск программ без изоляции через контекстное меню
Предложу способ запуска программ через контекстное меню, чтобы они и их дочерние процессы выполнились без контроля Auto-Containment. Этот способ облегчит установку нового ПО, особенно в условиях отключенного обнаружения установщиков.
Для этого будет использоваться простейшая программа, которая запускает файл, указанный в ее аргументах командной строки. Понадобится скачать архив с программой (пароль cis), поместить программу в любое удобное место, добавить ее в доверенные и запустить — будет предложено добавить в контекстное меню проводника пункт COMODO: запустить без изоляции (его удаление выполняется повторным запуском). Программа написана на AutoIt3, в папке source прилагается исходный код и конвертер: в случае сомнений вы можете сгенерировать аналогичную программу, проверив ее код и подпись конвертера.
Затем понадобится добавить правило Auto-Containment:
- выбрать действие «Игнорировать»,
- в критериях указать расположение программы,
- оставить отключенной опцию «Не применять выбранное действие к дочерним процессам».
Теперь, чтобы запустить программу без изоляции, понадобится вызвать на ней, удерживая нажатой клавишу Shift, контекстное меню и выбрать пункт «COMODO: запустить без изоляции». В результате эта программа и ее дочерние процессы временно выполнятся без контроля Auto-Containment. Очевидно, запускать таким способом можно только программы, которые, во-первых, сами гарантированно безопасны и, во-вторых, не могут запустить какое-либо сомнительное приложение.
Ограниченность контроля Auto-Containment
В некоторых случаях правила Auto-Containment не действуют.
Для приложений, которые запускаются раньше графического интерфейса CIS, не работают правила, которые предписывают их изолировать, а также правила, которые исключают из изоляции их дочерние процессы. Таким образом, Auto-Containment не спасет от вредоносного приложения, которому удалось попасть в автозагрузку.
Если некое приложение уже изолировано посредством Auto-Containment, то его дочерние процессы будут выполняться с тем же видом изоляции, не подчиняясь другим правилам Auto-Containment. Например, если приложение выполняется как «частично ограниченное», то оно будет запускать и другие приложения как «частично ограниченные», даже если, согласно правилам Auto-Containment, они должны быть заблокированы или запущены виртуально и т.д.
Также правила Auto-Containment не действуют на приложения, запускаемые в виртуальной среде COMODO.
Дополнительные ограничения Auto-Containment не работают для программ, добавленных в исключения опции «Обнаруживать внедрение shell-кода».
Как сказано выше, Auto-Containment не изолирует дочерние процессы программ, выполняющихся с привилегиями установщика (если включена опция «Обнаруживать программы, требующие повышенных привилегий»).
И, конечно, изоляции не подлежат дочерние процессы программ, которым назначено соответствующее исключающее правило.