Информационно-справочный портал MorePC.ru

29.03.2007 ЗАЩИТИМ КОМПЬЮТЕР ОТ СЕТЕВЫХ АТАК

Д.т.н., проф. А.Ю.Щеглов

(ЗАО “НПП “Информационные технологии в бизнесе”)

www.npp-itb.spb.ru

На сегодняшний день одну из серьезнейших (если не основную) угроз ИТ-безопасности составляет возможность запуска на защищаемом компьютере несанкционированной программы, с чем связано наибольшее количество критичных сетевых атак. Это обусловливается тем, что именно с использованием подобных программ, в большинстве случаев, и осуществляется атака на защищаемые ресурсы, причем, как на информационные, так и на системные. При этом существуют совершенно различные способы внедрения и запуска вредоносных программ, совершенно различны их свойства и назначение. К таким программам относятся и эксплойты, как правило, запускаемые злоумышленниками с использованием уязвимостей, связанных с ошибками программирования системного и прикладного ПО, и всевозможные деструктивные, шпионские, троянские программы, которые весьма разнородны по реализуемым ими целям атаки и по своему построению, это и вирусы, модифицирующие исполняемые файлы санкционированных программ. Совершенно различными могут быть и способы внедрения деструктивного кода, как удаленно – из сети, так и локально, в том числе, и санкционированным пользователем (инсайдером). В последнем случае уместно рассматривать деструктивную программу, как инструментальное средство инсайдера, которое может им использоваться для взлома системы защиты. А вот если бы не дать в принципе запускать на защищаемом компьютере несанкционированные (в том числе, и вредоносные) программы? Не это ли является единственно возможным эффективным решением множества совершенно различных, да к тому же еще, и наиболее сегодня актуальных, проблем ИТ-безопасности? Только представьте себе, насколько такое решение, если оно будет найдено, повысит уровень ИТ-безопасности, уровень защиты конфиденциальной информации! Так существуют ли возможность и средства эффективной защиты компьютера от сетевых атак?

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

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

Решение задачи защиты в общем виде.

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

Под полнотой реализации разграничительной политики доступа в данном случае понимается возможность разграничить доступ “на выполнение” для всех компьютерных ресурсов, с которых возможен запуск программы.

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

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

Однако не следует забывать о разнородности вредоносного кода, что, в том числе, определяет и различные способы его запуска. Дело в том, что деструктивные программы могут запускаться, как под учетной записью пользователя, так и под системными учетными записями, например, System, что, в первую очередь, характерно для эксплойтов. С широкими правами создается учетная запись при установке СУБД и т.д. При этом необходимо учитывать, что ошибки программирования могут обнаруживаться как в системном, так и в прикладном ПО.

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

Видим, что речь зашла об инновационных подходах. Такой подход реализован в Комплексной системе защиты информации (КСЗИ) “Панцирь-К” для ОС Windows 2000/XP/2003 (разработчик ЗАО “НПП “Информационные технологии в бизнесе”), и состоит он в следующем.

Для решения рассматриваемой задачи (и иных задач защиты, которые не рассматриваются в данной работе) при управлении доступом к ресурсам в КСЗИ (в большинстве механизмов контроля доступа к ресурсам) различаются два самостоятельных субъекта доступа – “пользователь” и “процесс”. При этом реализованы следующие схемы задания разграничительной политики доступа к ресурсам (заметим, это решение нами запатентовано):

Таким образом, в качестве субъекта доступа может рассматриваться либо только пользователь, либо только процесс, либо “пара” – процесс и пользователь.

Нас далее в работе будет интересовать реализация разграничительной политики доступа к ресурсам для субъекта процесс.

Реализованное в КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 решение состоит в задании разрешенных к запуску процессов (приложений) заданием перечня папок (каталогов, подкаталогов), из которых разрешено запускать исполняемые файлы системных и прикладных процессов. С учетом того, что должен контролироваться запуск и прикладных, и системных процессов, в качестве подобных папок целесообразно задавать каталоги \Program Files и \XP (WINDOWS) на системном диске. Данные каталоги должны запрещаться (не разрешаться) на запись под любой учетной записью, в том числе, и под любой системной – только такое решение предотвращает любую возможность модификации разрешенных на выполнение исполняемых файлов.

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


Рис.1. Пример настройки механизма защиты

Рассмотрим, что мы получаем при таких настройках – любому процессу (субъект доступа – процесс, задается маской “*”) разрешается выполнение процессов только из соответствующих двух папок на системном диске, при этом запрещается любая возможность (опять же, любым процессом, в том числе и системным) модификации данных папок. Т.е. любой несанкционированный исполняемый файл запустить становится невозможно в принципе. Это ли не решения большинства актуальных сегодня задач защиты информации! Да пусть ваш компьютер “напичкан” вредоносным кодом – эксплойтами, деструктивными и шпионскими программами, троянами, вирусами (здесь рассматриваем именно вирусы – программы, призванные модифицировать исполняемый код разрешенных к запуску программ), запустить-то его невозможно никаким образом!

В порядке замечания отметим, что в КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 кардинально изменен подход к построению интерфейса механизма защиты – права доступа назначаются не присвоением атрибутов объектам, а присвоением прав доступа субъектам. Основной же разграничительной политикой доступа к ресурсам является разрешительная политика, задаваемая правами доступа “Ресурсы, разрешенные для…”. Проиллюстрируем сказанное. В интерфейсе на рис.1 задано, что субъект (в данном случае, любой – маска “*”) может запустить процесс только из двух соответствующих папок на диске F:). Не правда ли, очень удобно?! Это существенно упрощает задачу администрирования (КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 – это средство защиты, ориентированное на корпоративное (где необходимо эффективное решение задач защиты информации), а не на домашнее использование, отсюда, и инновации, продуманность и эффективность механизмов защиты, и принципиально иные подходы к построению интерфейсов механизмов защиты).

Однако, специалист, представляющий себе архитектуру современных ОС семейства Windows, нам возразит – при подобных настройках система работать не будет, мы увидим “синий экран”! К сожалению, он окажется прав. При подобных настройках система работать не сможет, требуются уточняющие настройки. Дело в том, что некоторые системные процессы должны иметь право записи в соответствующие файловые объекты на системном диске. Их не так много (не более десятка). К таким процессам, например, могут быть отнесены: winlogon.exe, lsass.exe, csrss.exe, svchost.exe, services.exe и некоторые другие.

Заметим, что данное свойство современных ОС семейства Windows определяет огромный их архитектурный недостаток – невозможность запретить модификацию системного диска системным пользователям (в частности, System), как следствие, и всем системным процессам, а также иным процессам, запускаемым под этой учетной записью (т.к. возможность реализации разграничительной политики доступа для субъекта “процесс” здесь отсутствует). Вот результат – невозможность какого-либо противодействия атакам, связанным с уязвимостями, предоставляющими возможность получение злоумышленником системных прав – записывай на системный диск эксплойт и запускай!

Однако в КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 присутствует возможность разграничивать права доступа процессов к ресурсам. Воспользуемся ею.

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

Естественно возникает вопрос, а как определить подобные процессы? В КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 с этой целью реализованы необходимые инструментальные средства аудита.

Методика настройки разграничительной политики доступа к ресурсам, с применением данных инструментальных средств, состоит в следующем. Включается аудит событий (либо всех событий доступа ко всем ресурсам, либо выборочный – к интересующим ресурсам, в данном случае, к заданным папкам, из которых разрешается запуск системных и прикладных процессов). Разграничения при этом не активизируются. Далее осуществляются необходимые действия, например, загрузка системы, работа в штатном режиме с заданным набором приложений и т.д. При этом средствами аудита фиксируются все обращения к контролируемым ресурсам, которые в КСЗИ формируются в виде, представленном на рис.2.


Рис.2. Журнал регистрации событий

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

Для удобства дальнейшей обработки зарегистрированных событий в КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003 предусмотрена возможность фильтрации событий, накопленных в журнале, по одному, либо по совокупности параметров, окно фильтра журналов представлено на рис.3.

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

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

Сложно ли подобным образом настроить соответствующие механизмы защиты. На наш взгляд – нет! Надо просто попробовать. Это задача на один день, которая может решаться студентом ВУЗа, имеющим некоторые навыки администрирования! А ведь, определив необходимые настройки для одного компьютера, вы затем растиражируете их на все компьютеры в корпоративной сети.

Стоит ли денек “повозиться”, чтобы разом “забыть” о наиболее актуальных сегодня проблемах ИТ-безопасности.

Если же администратор безопасности вашей компании усомнится в возможности решения подобной задачи, начнет говорить о сложности администрирования КСЗИ “Панцирь-К” для ОС Windows 2000/XP/2003, “забудьте” об ИТ-безопасности, по крайней мере, до тех пор, пока не замените своего администратор.


Рис.3. Фильтр журнала аудита

Вот, насколько изящно и эффективно разом могут быть решены наиболее актуальные сегодня задачи обеспечения ИТ-безопасности. Вот что такое инновационное решение! А как же сегодня без инноваций, посмотрите, что делается сегодня в области ИТ-безопасности в мире:

А теперь разовьем успех нашего инновационного решения, основанного на реализации разграничительной политики доступа к ресурсам для субъекта процесс.

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

Пример разграничительной политики доступа к файловым объектам для приложения Internet Explorer представлен на рис.4.


Рис.4. Пример разграничительной политики доступа к файловым объектам для приложения Internet Explorer

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

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

Макросы, как правило, используются для решения следующих задач:

- Для ускорения часто выполняемых операций редактирования или форматирования;

- Для объединения нескольких команд, например, для вставки таблицы с указанными размерами и границами и определенным числом строк и столбцов;

- Для упрощения доступа к параметрам в диалоговых окнах;

- Для автоматизации обработки сложных последовательных действий в задачах.

Другими словами, пользователь может произвольно расширить возможности используемого программного обеспечения. Проблема же состоит в том, что на возможности расширения функций офисных приложений практически нет никаких ограничений. Ядро автоматизации составляет Visual Basic for Application (VAP). Он включает в себя функции работы с реестром и файловой системой, что позволяет осуществлять деструктивные действия не только по отношению к обрабатываемым данным, но и в отношении системных ресурсов.

Высокая распространенность макро-вирусов имеет очень простое объяснение.

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

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

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

Стоит также сказать, что в последнее время макро-вирусы все чаще используются совместно с другими вирусными атаками. Так, например, Kukudro.A – это макро-вирус, внедряющий на зараженные компьютеры троян Downloader.JIH.

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

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

Пример единых настроек к системных ресурсам для наиболее часто используемых офисных приложений: Microsoft Office Word 2003, Microsoft Office Excel 2003, Microsoft Office Outlook 2003, приведен в табл.1.

 

Таблица 1

Единые разграничения к системным ресурсам для процессов офисных приложений

Файловые ресурсы

Разрешенные для чтения

Разрешенные для записи и чтения

Разрешенные для выполнения

F:\DOCUMENTS AND SETTINGS\

ALL USERS\

APPLICATION DATA\

MICROSOFT\

OFFICE\

DATA\

OPA11.BAK

F:\XP\*

F:\PROGRAM FILES\*

F:\DOCUMENTS AND SETTINGS\“Имя пользователя”\*

F:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MICROSOFT\OFFICE\

DATA\OPA11.DAT

 

F:\XP\*

F:\PROGRAM FILES\*

Ресурсы реестра

Запрещенные для чтения

Разрешенные для записи и чтения

-

HKCU\*

 

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

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

В заключение вновь зададим читателю вопрос: так существуют ли возможность и средства эффективной защиты от сетевых атак? Надеемся, эта статья является достаточно веским основанием, для положительного ответа на этот вопрос. Другое дело, что без инновационных подходов сегодня эффективно решить задачу обеспечения ИТ-безопасности в принципе невозможно. А много ли читателю знакомо средств защиты информации, профессионально построенных, основу которых составляет реализация инновационных решений?! Тогда с какой целью они созданы и используются? Но это уже совершенно иной вопрос.