В этой статье вы узнаете результаты независимого тестирования встроенной защиты от неизвестных атак и защиты от утечек информации, а также о самых интересных возможностях Cisco Security Agent 4.5.
Если вы дали человеку рыбу, то накормили его на один
день;
если вы научили его ловить рыбу, то накормили его на всю жизнь.
Китайская мудрость
Раньше мы говорили, что защита от day zero attacks - дело будущего. Например в 2002 году статье Future Defenses: Technologies to Stop the Unknown Attack (перевод есть тут, тут и тут) были перечислены способы, которые могут быть использованы для такой защиты, в том числе уже имеющиемя в проекте SELinux. Сейчас 2006 год и уже несколько лет как такие системы существуют, и мы можем посмотреть эффективны ли они. Для примера я взял Cisco Security Agent 4.5.
В этой статье вы узнаете результаты независимого тестирования встроенной защиты от неизвестных атак и защиты от утечек информации, а также о самых интересных возможностях Cisco Security Agent 4.5. Перечислить все возможности этого продукта в статье невозможно, поскольку их слишком много. Более подробно можно узнать в книжке по Cisco Security Agent, в ней 456 страниц.
Cisco Security Agent (далее CSA) - это система предотвращения атак на уровне хоста (HIPS) для операционных систем Windows, Solaris и Linux. Эта технология ведет свою историю от систем обнаружения атак (IDS), которые лишь пассивно обнаруживали атаки и сигнализировали об этом. Основным недостатком этих систем было то, что они использовали сигнатуры атак, которые нужно было постоянно обновлять с появлением новых видов атак. То есть, как только мы прекращали обновлять сигнатуры, то сразу обнаруживалось множество атак, которые эти системы не были способны обнаруживать.
Системы предотвращения атак работают совершенно по-другому. Они активно отслеживают поведение приложений, код, исполняемый на машине, локальные сетевые соединения на машине и выявляют аномалии в их работе, чтобы определить следуют ли разрешать эту активность. Очевидным преимуществом аномальных систем предотвращения атак является то, что им не требуются сигнатуры атак.
Отступление: сразу хочу предупредить, что получается так, что в статье я буду хвалить CSA, но, не потому, что я работаю в Cisco (к моему сожалению), а потому, что мне понравился продукт. Возможно, что такие продукты как Symantec Client Security и ISS Proventia Desktop выполняют аналогичные функции, но я не имел возможности познакомиться с ними так подробно, как с CSA, чтобы еще и провести сравнение. |
После инсталляции на конечную систему CSA начинает следить за ресурсами системы и составлять таблицы с информацией обо всем том, что происходит в системе. Пользуясь этими таблицами, CSA следит, чтобы заданные заранее правила поведения этой системы не нарушались. Агент следит за всем что можно: за использованием и доступом к файлам и приложениям, сетевыми транзакциями, доступом к реестру, использованию ядра, доступом к COM объектам и другим компонентам системы. Цель всего этого: гарантировать четкую работу системы согласно заданным правилам.
Благодаря таким глубоким знаниям обо всем том, что происходит в системе в реальном времени CSA может контролировать то, нужно ли разрешать затребованные действия или запрещать. Это происходит, когда некоторые действия производятся пользователем, либо злонамеренный код пытается выполниться сам. Когда CSA обнаруживает, что запрос не может быть разрешен в соответствии с локальной политикой безопасности, то агент блокирует это действие и посылает сообщение о неверном поведении системы.
Располагаясь глубоко в системе и непосредственно контролируя ее и любое ее поведение, агент выполняет множество ролей, предотвращая как известные, так и неизвестные атаки, включая следующие функции:
Или проще сказать, что агент контролирует некорректно работающие приложения в операционных системах Windows, Solaris и Linux, таким образом, запрещая эксплуатацию имеющихся в этих приложениях уязвимостей, как удаленно по сети, так и локально при случайном запуске злонамеренного кода. И, что самое важное, агент защищает от кражи информации с хоста. Ниже это будет рассмотрено.
Нужно заметить, что начать работать с CSA так просто, нахрапом, не получится. Дело в том, что продукт сложный и в нем много новых понятий, таких как группы, хосты, политики, модули, правила, пользовательские и системные множества состояний, классы приложений, переменные. И каждое понятие надо хорошо изучить. Недаром у Cisco даже целый экзамен есть по этой программе: Securing Hosts Using Cisco Security Agent . Например, если перечислить только типы имеющихся правил, то список будет внушительный:
Правила, в свою очередь, собираются в модули, служащие какой-то одной конкретной цели. В CSA есть два типа модулей: исполнители и детекторы. Исполнители заставляют агента разрешить или запретить какую-то операцию. А детекторы просто сообщают о наступлении события. С каждым правилом есть объяснение в понятной форме на английском языке о том, что этот он делает. Можно также проверить модуль на отсутствие конфликтов правил и создавать свои модули. В CSA есть уже предопределенные модули правил, например:
Дабы не углубляться во все подробности, закончу описание структуры на том, что модули собираются в политики, а из политик уже состоят Agent Kits. К сожалению, здесь места нет все рассказывать. Все подробности в книжке и на сайте. Я перевел значительную часть книги на русский. Желающим могу предоставить.
Штука довольно интересная и представляет из себя набор критериев, по которым приложение заносится в некоторый класс. Создатели CSA пошли по интересному пути. Они не заставляют администратора на каждой из 1000 машин в защищаемой сети вести список всех имеющихся Telnetов, а просто оформили критерии, по которым приложение заносится в этот класс. Например, можно было бы просто зачислить putty. exe и telnet.exe в этот класс, но они сделали не так: как только приложение соединяется по TCP на 23 порт, то оно заносится в класс Telnets, и как только отключается, то оно выходит из этого класса. Но, некоторые классы, конечно, не получается сделать динамически, например, в классе Shells явно заданы cmd. exe, bash, tcsh, csh, sh. В результате, если есть некоторое правило, в котором этот класс участвует, то приложение автоматически ограничивается согласно этому правилу, хотя до этого это правило не ограничивало приложение. Например, можно запретить приложению пока оно обрабатывает важный документ доступ к сети и внешним носителям. А когда не обрабатывает - разрешить. Допустим, есть приложение WinWord. exe. Когда это приложение, открывает файл topsecret.doc, то оно помещается в группу приложений, которым запрещен доступ по сети и к внешним носителям. Или наоборот, если приложение WinWord.exe подключено к какому-либо сетевому ресурсу, то ему не будет разрешен доступ к файлу topsecret.doc, пока оно не отключится от этого ресурса. В итоге заражение этого файла вирусом или dll-injection не позволит злоумышленнику отправить секретные данные из файла куда-либо. Кстати от dll-injection агент тоже защищает. И целостность приложений тоже проверяет.
Достаточно много способов утечки данных возникло в последнее время: различные устройства в самом компьютере типа Floppy, CD, DVD дисков, сетевой доступ посредством Ethernet, Wi-Fi, Bluetooth и модема, COM, LPT, USB, Firewire порты. Нужно контролировать этот, казалось бы, вполне легитимный набор устройств на предмет утечки через него важных данных.
В CSA предусмотрен модуль, отвечающий за защиту от утечки данных. Он так и называется Data Theft Prevention Module. Вы можете создать папку с именем TopSecret и хранить в ней документы, не боясь, что они могут быть сохранены где-то в сети, на другом локальном устройстве или даже переданы в другое приложение через буфер обмена. Система работает достаточно просто: как только приложение открывает файл в защищенной папке, оно сразу же ограничивается в правах - оно не может записать ничего и никуда кроме этой папки. То есть вариант открыть документ в notepad.exe и записать его же уже на расшаренный диск или даже на другой диск локального компьютера не сработает. Есть вариант скопировать данные в буфер обмена - но буфер обмена тоже защищен - передать эту информацию из буфера обмена в другое приложение вы не сможете. То есть вам остается только делать снимки монитора фотоаппаратом или физически вытаскивать жесткий диск (если загрузка с внешних устройств блокирована). В общем, решение достаточно эффективное. Напомню, что все изменения правил производятся на центре управления, то есть пользователь никак не может изменить политику, назначенную администратором. Ну и изменить или испортитить сам CSA тоже не может, поскольку у него работает самозащита.
Я, к сожалению, не проверял можно ли сделать screenshot при помощи нажатия Ctrl-Break или специализированной программой типа SnagIt. В документации по CSA защита от скриншотов не декларируется. Если скриншоты возможны, то тогда придется запрещать работу всех программ обработки изображений на защищаемом компьютере. Мне почему-то кажется, что если посидеть, то можно придумать системы обхода, например попробовать написать два приложения которые бы обменивались друг с другом не через буфер обмена, а через named pipes или сообщения Windows. Я пока не видел программ, обходящих защиту CSA Data Theft Prevention, так что в борьбе средств защиты и нападения пока побеждает CSA.
Нельзя сказать, что идея блокирования приложения внутри папки нова. Блокирование WEB серверов и других демонов UNIX внутри chroot среды (во FreeBSD чаще используется jail), несмотря на некоторые недостатки, уже давно зарекомендовало себя как хороший механизм защиты от эксплуатации уязвимостей. В итоге мы достигаем следующих целей:
|
Что удобно, все настройки агентов производятся через WEB интерфейс, подключившись по HTTPS на сервер управления (Management Center - далее MC). На нем же настройки и хранятся в базе данных MS SQL. А все агенты эти настройки периодически проверяют и скачивают новые правила, если они появились. Хотя в принципе есть метод рассылки UDP пакетов, сообщающих агентам, что есть обновления. Агенты имеют очень аскетичный интерфейс и на первый взгляд кажутся невзрачными для тех, кто не представляет, какая мощь в них заложена. Заметьте, что CSA не любит IIS и при инсталляции просит его отключать, поскольку устанавливает в качестве WEB сервера Apache под Windows. Чтобы установить агента на конкретный сервер или рабочую станцию, нужно зайти по специальному линку на WEB сервер Apache, который установлен на Management Server и скачать exe файл (tar архив в случае Solaris и Linux). Что самое интересное, в структуре заложена возможность свободного перемещения хостов с агентами и даже изменения IP адреса самого центра управления, поскольку все агенты ищут MC по имени, а MC вообще никогда не ищет агентов, пока его не заставишь (и это может быть бесполезным, поскольку искать агента приходится по последнему известному IP-адресу, который теоретически мог уже измениться). Кстати MC может управлять до 100 000 агентов. Представить себе такого не могу.
После инсталляции на конечном хосте: сервере или рабочей станции, агент подключается к центру управления и регистрируется в нем. Все логи передаются на центр управления, могут даже передаваться логи из локальной event log. Если на хосте какие-то проблемы: агент не пускает нужную программу, нужно поправить конфигурацию, то локально этого сделать нельзя. Все операции проводятся через центр управления. Всё что может пользователь - это изменить уровень защиты (их предусмотрено три) или вообще выключить защиту. Поскольку GUI Windows никак не защищено, то для защиты от автоматического отключения троянами агент во первых делает паузу при появлении окошка, во вторых проводит тест Тьюринга (спрашивает CAPTCHA).
Уже давно пора спрашивать CAPTCHA всем персональным экранам и антивирусам. ЗАРАЗА и offtopic показали, как очень просто можно выгрузить защитную программу. Ведь троян точно также может нажимать кнопочки и двигать мышкой, как это делает пользователь. Например, достаточно 8 строк на Visual Basic, для выгрузки Outpost:
set WShell = CreateObject("WScript.Shell")
WShell.Exec "C:\Program Files\Agnitum\Outpost Firewall\outpost.exe"
WScript.Sleep 200
WShell.AppActivate "Agnitum", TRUE
WScript.Sleep 100
WShell.SendKeys "{F10}{DOWN}{UP}{ENTER}"
WScript.Sleep 100
WShell.SendKeys "{ENTER}"
Но это еще не все. Мысла Владислав подробно рассказал, что даже CAPTCHA не панацея - трояны могут и ее обойти при желании. Например, использованная в CSA система (см. на рисунке) - достаточно проста для распознавания. Вот в форуме securitylab.ru картинка уже посложнее. (Но, как показывает практика, посложнее - не значит лучше, поскольку, некоторые люди при усложнении картинки, перестают разбирать, что там написано.)
Проблемы с инсталляцией агента и центра управленияКаждая инсталляция агента называется Agent Kit и включает в себя уже настроенные правила для каждого конкретного сервера и в ней же заложено имя центра управления. В итоге, если нет DNS или WINS внутри сетки, то приходится прописывать IP адрес сервера в локальный файл hosts на каждом агенте, чтобы агент нашел MC. Мне почему-то кажется, что Cisco могла бы сделать это опцией при генерации Kitов: искать сервер по имени или по IP. То есть может возникнуть проблема при инсталляции агента, что он не может найти сервер, но чтобы решить это, достаточно прописать в файл hosts адрес MC. Также может вызывать трудности (для тех, кто не прочел документацию) галочка у надписи " Network Shim". Ну и еще могут быть конфликты с имеющимся софтом. Я бы посоветовал сначала попробовать поставить с "Network Shim", а если возникают конфликты с уже установленным софтом, то поставить второй раз агента с отключенным "Shim". Кроме того, неплохо было бы перед инсталляцией агента, сделать backup сервера. Бояться, что агент заблокирует работу сервера не надо, поскольку вы, наверняка, будете всегда ставить агентов с включенным режимом TestMode. В этом режиме агент не блокирует никакую активность, а пишет в логи, что он бы сделал, если бы был не в TestMode. В итоге, если его действие покажется вам неправильным, всегда можно воспользоваться Wizardом, который поможет создать исключение для этого случая. У меня, например, стоял антивирус Касперского, и после инсталляции агента и перезагрузки - первое что я увидел, это синий экран с ошибкой в драйвере klif. sys. Network shim тут правда ни при чем, это драйвер, отвечающий за перехват файловых операций, а не сетевых. Очевидно, csafile.sys компонент-перехватчик файловых операций от Cisco подрался за ресурсы с перехватчиком от Касперского и драйвер klif.sys проиграл. (Я считаю, что это у Касперского, а не у Cisco, поскольку я уже встречаюсь с падением klif.sys не раз) В итоге, чтобы Agent заработал, klif.sys пришлось удалить. В общем, инсталляция агента сделана очень простой. Самое сложное для администратора - сгенерировать на сервере такой Kit, который бы содержал нужные для этого сервера или рабочей станции правила. Хотя несколько сгенерированных агентов уже есть при начальной инсталляции MC.
Для тех, кто будет ставить Cisco Works/VMS, будет интересно, с какими проблемами вы столкнетесь:
На первый взгляд сложно. Но если вы ставили Cisco Works/VMS на SUN Solaris, помучившись с разными патчами, джавами и мозиллами, то инсталляция под Windows покажется простой.
Сетевой перехватчик (Network Shim)
Итак, при инсталляции агента у вас может возникнуть вопрос ставить сетевой перехватчик или нет. На самом деле есть несколько перехватчиков в CSA (они в этом продукте называются, почему-то "shim"). Каждый перехватчик - это обычный драйвер, который перехватывает обращения приложений к различным ресурсам, причем не только сетевым. Примеры таких перехватчиков-драйверов есть на www.sysinternals.com и вы, наверняка, ими уже пользовались. Например, перечислю драйвера используемые CSA в Windows:
Вы все их можете найти в ветке реестра Windows HKLM\SYSTEM\CurrentControlSet\Services. На картинке приведен пример. Отключить каждый перехватчик можно, добавив параметр Enable со значением 0 в соотвествующую ветку. Для тех, кто хочет получше разобраться почему аж двумя драйверами csanet и csatdi перехватывается сетевой трафик, я советую статью Вадима Смирнова, которая как нельзя лучше объясняет тонкости написания сетевых драйверов-перехватчиков в Windows.
Проблемы перехватчиков известны: производители пользуются иногда недокументированными функциями или неверно передают IRP по стеку драйверов. Поэтому, когда несколько перехватчиков работает вместе, то, поскольку все происходит на уровне ядра, возникают синие экраны и другие проблемы, как на серверах, так и на рабочих станциях.
Я бы посоветовал сначала поставить CSA с network shim, а потом, если возникнет конфликт с другими драйверами от других производителей, то удалить драйвер другого производителя, в котором, скорее всего, рождается проблема.
Это первый вопрос, который, наверно, возникает у любого человека при чтении рекламы. Как можно обнаруживать атаки, которые неизвестны?! Именно примененный в этом продукте аномальный подход позволяет делать это. Разрешая программам делать только то, что разрешено и запрещая делать все остальное, Agent достигает этого. Правда, есть тип правил, который все-таки использует сигнатуры. Это Data Access Control. Он используется для систем содержащих WEB сервер. Этот тип правил просматривает входящие запросы, а именно Uniform Resource Identifier (URI) порцию запроса. Он пытается найти неправильные запросы. Большинство неправильных запросов содержится в базе данных CSA при инсталляции центра управления агентами, но вам придется добавить свои, чтобы ловить новые или специальные виды атак.
Ни в каких рекламных проспектах, ни в книжке Чада Саливана я не смог найти доказательства, подтверждающие работоспособность CSA как HIPS. Но зато в Интернете есть несколько фактов.
Во-первых, есть документ, рассказывающий о том, как можно протестировать Cisco Security Agent. В Интернете я его нашел в двух вариантах:
Эти документы предлагают список утилит, которыми нужно тестировать CSA на предмет его работоспособности перед покупкой. Например, там есть следующие утилиты: RootKit Hacker Defender, Dcom Exploit, клавиатурный перехватчик Silentlog, взломщик хешей паролей Windows Pwdump2, программа для удаленного подключения на любой порт netcat, шпион встраивающийся в браузер Huntbar, программа удаленного управления WinVNC4,
Во-вторых, с момента появления CSA на рынке (а это уже больше года) были найдены уязвимости в Windows, которые CSA успешно обнаружил и предотвратил, не зная о них! А это уже результат. Например, это были следующие уязвимости:
В-третьих, я попытался найти хоть кого-нибудь, кто уже использует этот продукт. Нашел. В том числе и на сайте Cisco, где предоставлена информация, что продукт используется такой известной фирмой, как Siemens.
И, в-четвертых, я проверил сам. Как говорится: "доверяй, но проверяй". Для этого я взял виртуальную машину с Windows 2000 Server, проинсталлировал Cisco Works (веселенькое занятие, ниже расскажу почему), поставил на нем MC с CSA. Для тестирования я использовал Metaspoit Framework, который я тоже происталлировал в виртуальную машину и на базовый компьютер. Ну и напустил на бедного агента все эксплойты, которые нашел в Metasploit Framework. Я пробовал атаковать метасплойтом и сам себя (с виртуальной машины) и с удаленной (с базовой). Результаты были одинаковые.
Самый красочный результат был такой: если агент выключен, то при реализации атаки переполнения буфера в lsass.exe (Microsoft LSASS MSO 4-011 Overflow) тестовый Windows 2000 Server перезагружается, поскольку lsass.exe умирает.
Смотрим картинку и видим сообщение умирающей системы, о том, что она перезагрузится через 11 секунд:
А если агент включен, то CSA выводит информацию о том, что сетевое соединение было заблокировано. Что говорит о том, что защита работает. Смотрим на рисунке в районе System Tray всплывающее сообщение:
Ну и когда я пробовал эксплойт Microsoft RPC DCOM MSO3-026, то увидел несколько сообщений в Management Center, в том числе о том, что была обнаружена попытка воспользоваться Exception и, что была обнаружена и предотвращена попытка запустить cmd.exe . Таким образом, система сохранила устойчивость, предотвратив, тем не менее, очень опасную атаку получения командной строки. Картинку прилагаю:
В итоге были проведены, атаки, о которых CSA не знал, поскольку в нем нет никаких сигнатур этих атак. Но CSA грамотно отследил, что с приложениями происходит "что-то не то" и предотвратил перезагрузку ОС в первом случае (DOS атака) и запуск удаленного шелла от имени администратора (во втором случае).
Надеюсь, что я смог убедить читателя в том, что CSA работает. Были приведены документы, по которым Cisco рекомендует тестировать возможности CSA. Были показаны две уязвимости, которые CSA успешно заблокировал до выхода обновлений антивирусных систем и патчей производителя. Кроме того уже есть фирмы у которых CSA успешно используется. И, наконец, было проведено свое, независимое тестирование. К сожалению, не могу привести результаты всех тестов - надо уложиться в рамки статьи. Ниже вы еще познакомитесь с результатами leaktests. |
Статья вроде бы подошла к концу, но я уже разошелся и решил напоследок проверить как работает встроенный персональный межсетевой экран. Как известно, одной из функций персонального экрана является защита от утечек данных с компьютера. Хитроумные создатели троянов используют множество слабостей ОС Windows, чтобы отослать с компьютера-жертвы на компьютер-сборщик информации все, что посчитают нужным. Существует класс программ под названием leaktest, которые проверяют, закрывает ли экран или нет от утечек. Например, на сайте www.firewallleaktester.com есть табличка, где видно, что среди протестированных, идеальных персональных экранов нет - никто не проходит все тесты. (Правда, список персональных экранов в этой таблице далеко не полный, например, отсутствует Tiny.)
На 11 марта 2006 года по количеству пройденных тестов экран Касперского опережает остальные, а по очкам всех опережает Jetico. Хуже всех встроенный в Windows XP SP2 экран. Соответственно я попробовал несколько тестов на машине с включенным агентом. Я начал с теста Breakout, который смог пройти только Zone Alarm Pro. Этот тест пользуется тем свойством, что функция SendMessage может послать всем программам сообщения без проверки каких-либо прав. В итоге этот тест отсылает URL в Explorer и тот открывает его. Соответственно, в этом URL легко могут быть переданы, например, ваши пароли. Cisco Security Agent стоящий на центре управления проигнорировал запуск этого теста, explorer замечательно законнектился к тестовому сайту. Жаль. Тогда я попробовал второй тест, когда локально создается html файл включается Active Desktop и как обои ставится этот html файл. Я поставил CSA Desktop версию на XP и попробовал. Тоже тест проходит. Стало еще грустнее. Тогда я попробовал самый первый LeakTest который ловят вообще все экраны, кроме ICF Windows SP2. Этот тест сам пытается получить доступ в Интернет. А поскольку обычный FW ведет список программ, которым разрешен доступ в Интернет, то этот тест должен блокироваться как программа, которой не разрешен доступ в сеть. Но этот тест тоже прошел в Cisco Security Agent поскольку, список разрешенных программ надо настраивать. С настройками по умолчанию тест проходит. Попробовал FireHole - тоже проходит. Попробовал еще и еще. Все leaktests показывают, что CSA не блокирует уязвимости Windows, которыми обычно пользуются трояны.
Разочаровались? Я тоже сначала, но, после некоторого раздумья, я сформировал новый Agent Kit, инсталлировал его и проверил еще раз.
LeakTestы стали детектироваться правилами CSA.
При запуске теста FireHole - CSA выводит вопрос - пускать или не пускать. И я уже имел возможность его заблокировать. |
Leaktest перестал работать, его сразу же "раскрыли".
А вот Breakout по-прежнему работал и открывал удаленные странички. Правда на него среагировал антивирус, но от этого не легче.
Побочным эффектом всех моих экспериментов стало то, что некоторые легальные программы потеряли доступ в Internet. Но у CSA MC, есть замечательный волшебник, который исправляет правила агентов, добавляя исключения для программ, которым я доверяю доступ в Интернет.
В общем делаем вывод, что с настройками по умолчанию тестовых Kitов которые идут в поставке CSA, утечки информации с локального компьютера возможны. Но при грамотной генерации новых Kitов и настройке модуля Data Theft Prevention и эти утечки исчезают.
Этот тест еще раз говорит о том, что купить программу (или железку) мало. Надо еще нанять специалиста, который ее настроит. И, причем, если исходить из логики мастера, который ремонтировал мне санузел дома: "сколько стоят материалы, столько и работа", то настраивать Cisco очень выгодно. ;-) |
Мир вашему дому.
ЗЫ: О чем я бы еще хотел рассказать, но не укладываюсь в размер статьи:
Анализ поведения (Application Behavior Analysis) производится на основе информации о доступе приложений к локальным и сетевым файлам, реестру, COM компонентам и осетевых соединениях. Анализ инсталлированного софта (Application Deployment Investigation) позволяет понять что установлено в сети и какую угрозу этой сети представляет.
Литература
1. "Cisco Security Agent 4.5" Chad Sullivan
2. www.cisco.com
Ладно, не доказали. Но мы работаем над этим