Computer Crime Research Center

Вадим Проскурин

Программные закладки в защищенных системах

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

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

Приведем один пример атаки защищенной системы программной закладкой. Несколько лет назад служба безопасности одной из фирм, занимающихся посреднической деятельностью, обнаружила, что конфиденциальная информация, передаваемая партнерам по электронной почте, становится известной третьей стороне, несмотря на то, что в системе использовались платы “Криптон-3”, реализующие обеспечивающий гарантированную защиту информации алгоритм шифрования в соответствии с ГОСТ 28147-89.

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

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

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

Почему программные закладки опасны

Любая программа содержит хотя бы одну ошибку

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

Известно множество примеров использования злоумышленниками подобных ошибок на практике, в том числе для внедрения программных закладок. Например, в начале 1987 г. западногерманский хакер Маркус Хесс использовал ошибки в подсистеме защиты ОС UNIX для внедрения в сеть Министерства обороны США программной закладки, которая оставалась незамеченной в течение нескольких недель и была выявлена чисто случайно.

Сетевой вирус “Червь Морриса”, написанный в 1988 г. студентом Массачуcетского технологического института Б. Моррисом, парализовал работу около 6,2 тыс. компьютеров американских глобальных сетей (более 7% общего числа компьютеров), причинив материальный ущерб на сумму более 98 млн долл. США. “Червь Морриса” в процессе размножения также использовал ошибки в подсистеме защиты UNIX. К счастью, получая в системе практически неограниченные права доступа, он использовал их только для размножения, но не пытался получать доступ к конфиденциальной информации (поэтому, в принципе, его нельзя назвать программной закладкой). Однако если бы Моррис задался целью осуществлять НСД к ресурсам глобальных сетей с помощью своего вируса, он бы не столкнулся с серьезными проблемами.

Адекватная политика безопасности поддерживается не всегда

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

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

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

  • в BIOS компьютера установлен пароль на загрузку;
  • на жестких дисках используется только файловая система NTFS;
  • запрещено использование паролей, короче шести символов;
  • запрещена эмуляция ОС OS/2 и POSIX;
  • запрещен анонимный и гостевой доступ;
  • запрещен запуск любых отладчиков;
  • компьютер могут выключать только администраторы и операторы системы (но не обычные пользователи), причем выключение запрещено без предварительной аутентификации пользователя;
  • запрещено разделение между пользователями ресурсов сменных носителей информации (гибких дисков и CD-ROM);
  • запись в системный каталог и файлы инициализации (boot.ini, ntdetect.com, ntldr, config.sys и autoexec.bat) разрешена только администраторам и системным процессам.

    Очевидно, что эти требования существенно затрудняют работу с системой как пользователей, так и администраторов. Требование, запрещающее запуск любых отладчиков, запрещает любое программирование в защищенной системе. Запрет совместного использования накопителей CD-ROM во многих случаях просто неприемлем. Требование, запрещающее пользователям самостоятельно выключать компьютер, вообще практически невыполнимо: для этого необходимо физически защищать не только корпус компьютера, но и провода электропитания и электрические розетки.

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

    Администраторы время от времени совершают ошибки

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

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

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

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

    Как защититься от программных закладок

    Какой должна быть политика безопасности

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

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

    Какие дополнительные меры защиты должны быть приняты

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

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

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

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

    Мониторинг потоков данных, которые могут быть использованы программными закладками в процессе функционирования и которые практически не используются легальным программным обеспечением (например, если программа входа в систему -- login в UNIX или Winlogon в Windows NT -- обращается для записи к файлу, не являющемуся ее файлом конфигурации, то, скорее всего, в системе присутствует перехватчик паролей). Создание в системе объектов-ловушек (объектов, доступ пользователя к которым невозможен без использования программных закладок). Любые успешные обращения пользователей к объектам-ловушкам должны регистрироваться. Например, если подсистема аудита ОС Windows NT зафиксировала успешное обращение к файлу с атрибутами защиты Everyone -- No Access, то это означает, что подсистема разграничения доступа изменена программной закладкой.

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

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

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

    Главная | Библиотека | Статьи | Форум
    Ссылки | Команда | Контакты

    Copyright © Центр исследования проблем компьютерной преступности, 2001-2002 Все права защищены.
    При публикации информации взятой в нашем каталоге ссылка на http://www.crime-research.org обязательна.

    Rated by PING