О каналах скрытых, потайных, побочных. И не только. (Часть 2-я, заключительная)
В.А. Галатенко
Об агентах — хороших и ... разных
Агенты и многоагентные системы (МАС) — одно из активно развиваемых направлений современной технологии программирования. Агенты доставляют на удаленные системы код, расширяющий функциональность последних, а многоагентные комплексы позволяют естественным образом распараллелить решение сложных задач. Оба свойства важны, например, для эффективной индексации мультимедийных ресурсов (см. [25]). Файлы мультимедиа велики, и загружать их на центральный сервер для индексации накладно. Проще доставить на целевую систему индексирующий код, а затем получить оттуда лишь результаты индексации, имеющие существенно меньший размер. Подобный подход хорош и с точки зрения информационной безопасности, если подходить к ней с позиций поставщиков информационного наполнения и управления цифровыми правами, поскольку он исключает выгрузку платных ресурсов и, в то же время, способствует распространению сведений о них.
Мобильные агенты опираются на интерфейсы и возможности, присутствующие на большинстве платформ. Кроме того, они способны перемещаться с одной системы на другую, двигаясь по намеченному маршруту, что делает их автономными, не требующими постоянного управления, за счет чего экономятся вычислительные и коммуникационные ресурсы. В контексте информационной безопасности мобильные агенты могут взять на себя роль странствующих рыцарей, контролирующих удаленные системы на предмет своевременного наложения корректирующих заплат и отсутствия признаков вредоносной активности (см. [26]), выявляющих и отражающих вместе с "братьями по оружию" распределенные, скоординированные атаки (см. [27]), внося в защиту элементы динамичности и самоорганизации (см. [28]).
Инкрементальность — важное достоинство мобильных агентов и многоагентных систем. Каждый отдельный агент может решать свою, частную задачу (выделение определенных свойств мультимедийного наполнения, проверка установки определенных программных коррекций, выявление определенных разновидностей вредоносного ПО, реализация определенных положений политики безопасности), но их пополняемая совокупность оказывается адекватным, актуальным отражением и средством проведения в жизнь текущей политики безопасности, меняющейся под влиянием изменений в окружении, при появлении новых рисков и угроз.
Технология мобильных агентов и многоагентных систем — средство сильнодействующее, пользоваться которым следует с осторожностью, осознавая ассоциированные риски. Уязвимость коммуникаций МАС — лишь одна и, вероятно, не самая сложная из проблем. Нужно учитывать (см., например, [29]), что:
агенты могут атаковать целевые платформы (проблема безопасности платформ);
агенты сами могут быть атакованы платформами, другими агентами и внешними сущностями, такими как вирусы (проблема безопасности агентов).
Надежная защита и платформ, и агентов может быть построена только с учетом семантики программ (см. [2]), но некоторые частные решения можно получить формальными, криптографическими методами, проводя аутентификацию агентов и их источников, контролируя целостность и обеспечивая конфиденциальность кода и данных агентов (см. [29], [30], [31]).
Особую сложность проблемам безопасности мобильных агентов и целевых платформ придает их взаимное влияние. Предположим, что мобильный агент содержит конфиденциальные данные, лишь часть из которых предназначена для каждой посещаемой им платформы. Эти части шифруют открытыми ключами соответствующих платформ.
В принципе, расшифрование может производиться как агентами, так и платформами, но у обоих подходов есть недостатки (см. [31]). Если расшифрование осуществляет агент, платформа должна передать ему свой закрытый ключ, что (слишком) рискованно. При расшифровании средствами платформы последняя должна знать структуру агента, что противоречит мобильности. Кроме того, следует предупредить попытки расшифрования данных, украденных у агентов. Предложенное в [31] компромиссное решение основано на предоставлении платформой некоторого базового криптографического сервиса, пользоваться которым могут только аутентифицированные агенты.
В агентах выделяется ядро "раскрутки", имеющее простую структуру, расшифровывающее тело на конкретной платформе и контролирующее целостность результата.
Согласованность действий МАС — еще одна сложная проблема. Если агенты проводят в жизнь политику безопасности в рамках большой корпоративной сети, то при изменении положений этой политики необходимо отозвать одну совокупность агентов и запустить вместо нее другую. Теоретически все просто, но этому могут помешать асинхронность перемещений мобильных агентов, временное отсутствие связи с удаленными сетевыми сегментами и т.п. В общем, добропорядочное использование МАС — дело непростое, зато для вредоносных агентов открывается масса возможностей.
Как и со скрытыми и потайными каналами, с вредоносным ПО нужно бороться — выявлять и ликвидировать и/или ограничивать. В статье [2] обоснованы преимущества подхода, основанного на ограничении с учетом семантики программ и протоколов. Относительно выявления можно сказать, что для скрытых и потайных каналов оно в общем случае безнадежно, а для вредоносного ПО — еще безнадежнее. Как показывают результаты работы [32], даже лучшие коммерческие антивирусные средства пасуют перед несложными методами обфускации программ, такими, например, как переупорядочение кода, с точки зрения теории информации, факт абсолютно очевидный и естественный. Ситуацию до некоторой степени можно улучшить за счет более изощренного сопоставления с образцами вредоносного поведения, как предлагается в [33], но это "продвижение" никак нельзя назвать решающим.
В таких условиях остается надеяться разве что на детские психологические трюки и пытаться отвлечь хакеров от Интернет, предоставив им отдельный уголок для развлечений и демонстрации своей мощи (см. [34]), или снижать вероятность ненамеренного запуска пользователями вредоносного ПО, распространив на системный загрузчик подход "все, что не разрешено, запрещено" и защитив выполнимые файлы криптографическими контрольными суммами (см. [35]).
О потайных ходах и ремонтных агентах
Если из каких-либо соображений требуется постоянно отслеживать состояние удаленной системы и при необходимости воздействовать на него, конструируют и используют потайные ходы (backdoors). Обычно подобные ходы ассоциируются с вредоносной активностью, но, как показывает проект, развиваемый в университете Rutgers (см. http://discolab.rutgers.edu/bda/), для них имеются и вполне добропорядочные применения, такие как удаленный мониторинг и восстановление работоспособности (удаленное лечение). В таком контексте потайные ходы уместно называть техническими интерфейсами. В статье [36] описан прототип реализации технических интерфейсов для FreeBSD.
Поскольку конечной целью является починка пришедшей в неработоспособное состояние удаленной целевой системы, последняя должна рассматриваться как пассивный объект. Предлагаемый интерфейс с ней сводится к удаленному доступу к памяти, реализуемому при посредничестве программируемой сетевой карты. Целевая система должна поддерживать области сенсоров и внешнего представления, считывание которых позволяет выявлять и диагностировать аномальные ситуации (такие, например, как отсутствие прогресса в выполнении приложений, перерасход или исчерпание ресурсов), а также "ремонтные захваты" — области памяти, запись в которые способна поправить ситуацию (например, таблица процессов или находящаяся в памяти копия суперблока файловой системы). В принципе, при наличии доступа к памяти целевой системы, возможен перенос реализуемого ею сервиса на другой узел сети (например, в рамках кластерной конфигурации), если ремонт на месте не может быть осуществлен (см. [37]).
Конечно, с точки зрения информационной безопасности, потайные ходы — средство с очень серьезными побочными эффектами. Если система, осуществляющая мониторинг, окажется скомпрометированной, злоумышленник может получить полный контроль над целевой системой. Столь же опасно вмешательство в работу программируемой сетевой карты. В качестве меры противодействия подобные сетевые карты могут быть реализованы в защищенном исполнении, аналогично криптомодулям, а удаленное управление может осуществляться с нескольких машин и только при условии полного согласия в их действиях.
Описанный подход хорош, прежде всего, для восстановления работоспособности системы после непреднамеренных или умышленных атак на доступность (например, при срабатывании fork-бомбы, исчерпания оперативной памяти или порчи файловой системы). Если же система взломана злоумышленниками и поставлена под контроль путем внедрения в нее вредоносного ПО, такого как руткиты, то здравый смысл вроде бы подсказывает, что единственный способ восстановить доверие к ней — полная переустановка с гарантированно безопасных носителей и последующее наложение всех доступных корректирующих заплат, а также восстановление неиспорченных пользовательских данных. Однако в развитой корпоративной сети подобная деятельность может потребовать длительной ручной работы высококвалифицированных специалистов и оказаться экономически нецелесообразной или практически невозможной. Вместо этого можно попытаться реализовать идею автоматического самолечения систем (то есть удаления всего вредоносного без потери доброкачественной информации), встроив в них ремонтных агентов и защитив последних посредством технологии виртуальных машин (см. [38]).
Ремонтные агенты, как и другие средства информационной безопасности, должны удовлетворять следующим проектным принципам:
простота;
обособление (агент должен быть защищен от несанкционированного изменения или обхода);
доверие;
обозримость (агенту должна быть видна вся система);
приспособляемость (работа агента и количество потребляемых им ресурсов должны зависеть от состояния контролируемой системы и не мешать ее нормальному функционированию).
Общая схема работы ремонтного агента проста. Он запоминает заведомо безопасное состояние производственной системы, контролирует все вносимые изменения, периодически проверяет наличие признаков аномального поведения и несанкционированных изменений и при необходимости возвращает систему в безопасное состояние. Поскольку производственная система функционирует в рамках виртуальной машины, она не может вмешаться в работу агента, который является доверенным неизменяемым расширением ядра.
Разумеется, на практике все гораздо сложнее. Во-первых, если злоумышленник получит физический доступ к системе, он сможет обойти ремонтного агента; защититься от физических угроз можно только с помощью аппаратной поддержки. Во-вторых, подозрительная активность обнаруживается с некоторым запаздыванием, поэтому критичные данные рискуют оказаться скомпрометированными. В-третьих, "заведомо безопасный" образ системы может оказаться неполным (системный администратор или пользователь могут что-то добавить или изменить в обход агента), и тогда несанкционированные изменения не удастся обнаружить и ликвидировать. Безопасность системы не может быть выше уровня дисциплины, существующей в организации и зафиксированной в ее политике.
Автоматическое восстановление после компрометации должно стать одной из основных целей при проектировании и реализации перспективных информационных систем. С одной стороны, следует смириться с неизбежностью успешных атак или, по крайней мере, отказов аппаратуры и ошибок администрирования. С другой стороны, стоимость аппаратуры, в том числе, и носителей данных, быстро падает, поэтому имеется техническая и экономическая возможность организовать детальное протоколирование функционирования систем и, в частности, фиксировать все изменения в файловой системе, сохраняя возможность откатки вредоносной или ошибочной деятельности.
Основная проблема состоит в том, чтобы откатить все несанкционированные изменения, не затронув легальных модификаций. В статье [39] описаны возможные подходы к решению этой задачи и прототипная реализация — система восстановления после вторжений Taser. Идея состоит в том, чтобы ассоциировать изменения с процессами, которые их осуществляют, и задать правила, разделяющие процессы на "чистых" и "нечистых". Утверждается, что результаты получаются удовлетворительными и по уровню автоматизации, и по накладным расходам на протоколирование, и по времени восстановления.
О потайных ходах и руткитах
Руткиты, как известно, служат для того, чтобы злоумышленник, взломавший систему и получивший привилегии суперпользователя, мог и в дальнейшем осуществлять к ней скрытный, несанкционированный, суперпользовательский доступ. То есть, руткит — это и потайной ход, и средство маскировки злоумышленной активности.
Руткиты являются разновидностью троянских программ и подразделяются на бинарные и руткиты уровня ядра. Первые подменяют системные утилиты, вторые — функции ядра, реализующие системные вызовы. Методологию классификации руткитов и детальные сведения о механизмах их функционирования можно найти, например, в статье [40].
Для выявления бинарных руткитов достаточно средств контроля целостности (таких, например, как Tripwire) ключевых системных файлов.
С руткитами уровня ядра ситуация существенно сложнее. Сигнатурный подход, разумеется, неэффективен и в этом случае. Если, например, изменен адрес таблицы системных вызовов в обработчике соответствующего прерывания, то какую сигнатуру и где следует искать? Дополнительную техническую проблему при реализации сканирования и проверки целостности файлов составляет отсутствие доверия к результатам системных сервисов.
Если руткит реализован с помощью механизма загружаемых модулей ядра (а это самый распространенный метод применительно к Linux-системам), можно попытаться, как рекомендуют авторы работы [41], перед загрузкой проводить бинарный статический анализ модулей с элементами символьного выполнения на предмет выявления признаков вредоносного поведения, таких как запись в управляющие структуры ядра. Но, по сути, это обобщенный антивирусный подход, сочетающий поиск сигнатур и эвристики, а его ограниченность известна. Правда, руткиты необходимо выявлять не среди произвольных программ, а среди модулей, тяготеющих к определенной внутренней структуре, характерной, например, для драйверов устройств, но методы обфускации программ и здесь оказываются достаточными для сокрытия признаков вредоносности. Точнее, можно прогнозировать "гонку вооружений" между средствами выявления признаков вредоносного поведения и их сокрытия. Согласно опубликованным в статье [41] результатам, предложенные и реализованные ее авторами методы позволили выявить все проверявшиеся руткиты (их было восемь) и не дали ни одного ложного срабатывания на почти пятистах легальных модулях. Время анализа, как правило, не превышало 10 мс, максимум составлял 420 мс (Pentium IV, 2 ГГц, 1 ГБ ОЗУ). Так что, несмотря на теоретические проблемы, наличие и серьезность которых авторы, разумеется, осознают, первые практические результаты оказались обнадеживающими, хотя пока не решались технические проблемы интеграции с ядром и обеспечения невозможности обхода контролирующего загрузчика модулей.
Загружаемые модули — серьезная угроза безопасности монолитных операционных систем, поскольку они имеют неограниченный доступ к коду и структурам данных ядра. На долю подобных модулей приходится до 70% кода ядра и от 70% до 90% ошибок, среднее время жизни которых составляет около 20 месяцев (см. [42]). Даже если отвлечься от злоумышленных руткитов, остаются угрозы, существующие благодаря уязвимостям в поспешно написанных драйверах устройств. Желательно каким-то образом организовать разграничение доступа в ядре, чтобы не допустить эксплуатации уязвимостей.
Работа [42] развивает направление, намеченное в статье [41]. Она предусматривает спецификацию допустимого и недопустимого поведения ("белые" и "черные" списки — адреса, по которым можно или нельзя выполнять переходы, данные, к которым разрешается или запрещается обращаться, области, где нельзя выполнять машинные инструкции, и т.п.). Частично выполнение спецификаций можно проверить статически, остальное контролируется динамически, за счет вставки проверочного кода. Утверждается, что накладные расходы при этом не превышают 23%. Отметим, однако, что будущее не за такими, явно временными, решениями, а за модульными операционными системами, полноценными моделями безопасности для их компонентов и аппаратной поддержкой при проведении политики безопасности в жизнь.
Руткиты можно считать одной из разновидностей скрытного программного обеспечения, включающего, например, средства протоколирования пользовательских сеансов. Скрываться может как исполняемый код, так и используемые им ресурсы и ассоциированная информация. Например, вредоносный код можно поместить во флэш-память видеокарты, а для выполнения "впрыснуть" в существующий процесс. Ресурсы, такие как файлы и процессы, можно скрыть от пользователя, перехватывая системные вызовы по технологии руткитов. Пробовать выявить скрытное ПО можно по крайней мере двумя способами:
пытаться обнаружить скрывающие механизмы (рассмотренные выше подходы — из этой категории);
пытаться получить информацию о системе несколькими способами и отыскать различия в выдаваемых результатах (например, сравнить выдачи команд ls и echo * или информацию от ps и из таблицы процессов в ядре, естественно, предварительно приведя результаты к единому формату).
Раз скрытными ресурсами манипулируют, то можно надеяться, что в каком-нибудь (низкоуровневом) представлении они видны. В этом состоит основная идея подхода, предлагаемого в работе [43]. Может показаться, что искать симптомы вместо первопричины болезни — неправильно, но если симптомы выявить проще, то почему бы этого не сделать? "Сканеры сравнения" можно регулярно запускать на всех компьютерах корпоративной сети, на сканирование одного гигабайта дискового пространства, согласно приведенным в [43] данным, уходит порядка полуминуты, так что подобный подход представляется вполне практичным.
(Напомним, что в статье [2] рассматривается применение "дифференциального" метода для выявления потайных каналов.)
Разумеется, желательно не только не допускать установки руткитов или оперативно выявлять таковые, но и проводить самолечение скомпрометированных систем. Последнее — тема статьи [44]. Идея состоит в том, чтобы отслеживать изменения в таблице системных вызовов, появление скрытых файлов, процессов и сетевых взаимодействий, а по выявлении вредоносной активности — ликвидировать ее, восстанавливая корректное состояние таблицы системных вызовов, удаляя скрытые файлы, терминируя скрытые процессы, блокируя скрытые сетевые соединения. По иронии судьбы, прототип данного защитного средства реализован в виде загружаемого модуля ядра и, следовательно, сам может стать объектом атак руткитов, не говоря уже о проблеме полноты диагностики и лечения систем.
Вопрос о том, кто будет охранять охранников, принадлежит к числу вечных и трудноразрешимых. Если защищаемая и защищающая системы совпадают, нет никаких гарантий, что после компрометации защитные средства будут работать корректно, а осуществляемое ими лечение окажется эффективным и полным. Одним из способов изоляции средств защиты является упоминавшаяся выше технология виртуальных машин. Ее применение в контексте выявления подозрительной активности рассмотрено в работе [45]. К сожалению, в сетевой среде эта технология оказывается, с одной стороны, недостаточной, а с другой — накладной (и авторы работы [45], разумеется, осознают серьезность отмеченных проблем). Недостаточность состоит в том, что, несмотря на виртуализацию, система остается одним узлом сети, подверженным атакам на доступность и удаленной эксплуатации уязвимостей сетевых сервисов. Неэффективность объясняется необходимостью частых переключений между контекстами виртуальных машин и контролирующим их монитором.
(Заметим в скобках, что технология виртуальных машин — замечательное средство эффективной, экономически оправданной реализации приманок и ловушек, исчисляемых десятками тысяч, на нескольких аппаратных серверах, см. [46].)
(Также в скобках как курьез упомянем предложение авторов работы [47] учиться методам обфускации у разработчиков руткитов, однако в этой статье есть прекрасная обзорная врезка с изложением основных фактов и положений, относящихся к руткитам.)
Только аппаратная поддержка сулит прорыв в информационной безопасности, реализацию систем, устойчивых к атакам, способных оперативно, автоматически самовосстанавливаться. К сожалению, системы, подобные той, что описана в работе [48], — дело будущего, причем не очень близкого.
Заключение
В статье [2] совершенно справедливо подчеркивается, как важно правильно поставить задачу и рассматривать ее не изолированно, а в реальном окружении. Правильная постановка, связанная с контролируемым выполнением (ограничением) программ с учетом их семантики, важна для всех разновидностей скрытых и потайных каналов.
В то же время, проблему скрытых и потайных каналов с практической точки зрения никак нельзя отнести к числу самых острых. Побочные каналы — гораздо более реальная угроза для встроенных систем. Безопасность мобильных агентов — болевая точка технологии Интернет/Интранет. Наконец, руткиты и вообще скрытное программное обеспечение, — это опасная угроза, противостоять которой обычные пользователи и многие системные администраторы не в состоянии.
Только программными средствами проблем информационной безопасности не решить. На наш взгляд, в настоящее время наметилась тенденция к расширению аппаратной поддержки защитных средств. Когда подобная поддержка обретет реальные очертания — вопрос не одного года. Чтобы он получил реальное решение, нужны экономические и правовые предпосылки, а не только устрашающая статистика злоумышленной активности и оценки потерь от нее.
Первопричину проблем информационной безопасности следует искать в сложности современных систем. Бороться со сложностью — значит делать системы более безопасными. К сожалению, стремление опередить конкурентов, предложить систему с более богатой функциональностью заставляют производителей двигаться в противоположном направлении. В настоящее время не видно причин, способных эту тенденцию изменить. Системным интеграторам и потребителям остается надеяться только на себя, на свое умение выбирать максимально простую, продуманную архитектуру и поддерживать производственные системы в безопасном состоянии техническими и организационными мерами, тратя силы и средства на отражение реальных, а не надуманных угроз.
Литература
[1] Е.Е. Тимонина -- Скрытые каналы (обзор). -- Jet Info, 2002, 11
[2] А. Галатенко -- О скрытых каналах и не только. -- Jet Info, 2002, 11
[3] R.A. Kemmerer -- A Practical Approach to Identifying Storage and Timing Channels: Twenty Years Later. — Proceedings of the 18th Annual Computer Security Applications Conference (ACSAC'02). -- IEEE, 2002
[4] E. Tumoian , M. Anikeev -- Network Based Detection of Passive Covert Channels in TCP/IP. — Proceedings of the IEEE Conference on Local Computer Networks 30th Anniversary (LCN'05). -- IEEE, 2005
[5] S. Cabuk , C.E. Brodley , C. Shields -- IP Covert Timing Channels: Design and Detection. — Proceedings of the CCS'04. -- ACM, 2004
[6] P.A. Karger , H. Karth -- Increased Information Flow Needs for High-Assurance Composite Evaluations. — Proceedings of the Second IEEE International Information Assurance Workshop (IWIA'04). -- IEEE, 2004
[7] В.Б. Бетелин , С.Г. Бобков , В.А. Галатенко , А.Н. Годунов , А.И. Грюнталь , А.Г. Кушниренко , П.Н. Осипенко -- Анализ тенденций развития аппаратно-программного обеспечения и их влияния на информационную безопасность. — Сб. статей под ред. академика РАН В.Б. Бетелина. -- М.: НИИСИ РАН, 2004
[8] P. Efstathopoulos , M. Krohn , S. VanDeBogart , C. Frey , D. Ziegler , E. Kohler , D. Mazieres , F. Kaashoek , R. Morris -- Labels and Event Processes in the Asbestos Operating System. — Proceedings of the SOOP'05. -- ACM, 2005
[9] Y. Zhu , R. Bettati -- Anonymity v.s. Information Leakage in Anonymity Systems. — Proceedings of the 25th IEEE International Conference on Distributed Computing Systems (ICDCS'05). -- IEEE, 2005
[10] B. Graham , Y. Zhu , X. Fu , R. Bettati -- Using Covert Channels to Evaluate the Effectiveness of Flow Confidentiality Measures. — Proceedings of the 2005 11th International Conference on Parallel and Distributed Systems (ICPADS'05). -- IEEE, 2005
[11] Y. Zhu , R. Sivakumar -- Challenges: Communication through Silence in Wireless Sensor Networks. — Proceedings of the MobiCom'05. -- ACM, 2005
[12] R. Browne -- An Entropy Conservation Law for Testing the Completeness of Covert Channel Analysis. — Proceedings of the CCS'94. -- ACM, 1994
[13] S. Weber , P.A. Karger , A. Paradkar -- A Software Flaw Taxonomy: Aiming Tools At Security. — Proceedings of the Conference on Software Engineering for Secure Systems — Building Trustworthy Applications (SESS'05). -- ACM, 2005
[14] J.C. Wray -- An Analysis of Covert Timing Channels. -- IEEE, 1991
[15] В.Б. Бетелин , В.А. Галатенко , М.Т. Кобзарь , А.А. Сидак , И.А. Трифаленков -- Обзор профилей защиты, построенных на основе "Общих критериев". Специфические требования к сервисам безопасности. -- "Безопасность информационных технологий", 2003, 3
[16] K. Loepere -- Resolving Covert Channels withing a B2 Class Secure System. -- Honeywell Information Systems.
[17] J.J. Harmsen , W.A. Pearlman -- Capacity of Steganographic Channels. — Proceedings of the MM-SEC'05. -- ACM, 2005
[18] I.S. Moskowitz , L. Chang , R. Newman -- Capacity is the Wrong Paradigm. — Proceedings of the 2002 Workshop on New Security Paradigms. -- ACM, 2002
[19] M. Bauer -- New Covert Channels in HTTP. Adding Unwitting Web Browsers to Anonymity Sets. — Proceedings of the WPES'03. -- ACM, 2003
[20] K. Borders , A. Prakash -- Web Tap: Detecting Covert Web Traffic. — Proceedings of the CCS'04. -- ACM, 2004
[21] D. Slater -- A note on the Relationship Between Covert Channels and Application Verification. -- Computer Sciences Corporation, 2005
[22] K. Tiri , I. Verbauwhede -- Simulation Models for Side-Channel Information Leaks. — Proceedings of the DAC 2005. -- ACM, 2005
[23] J.R. Rao , P. Rohatgi , H Scerzer , S. Tinguely -- Partitioning Attacks: Or How to Rapidly Clone Some GSM Cards. — Proceedings of the 2002 IEEE Symposium on Security and Privacy (S&P'02). -- IEEE, 2002
[24] R. Muresan , C. Gebotys -- Current Flattening in Software nad Hardware for Security Applications. — Proceedings of the CODES+ISSS'04. -- ACM, 2004
[25] V. Roth , U. Pinsdorf , J. Peters -- A Distributed Content-Based Search Engine Based on Mobile Code. — Proceedings of the 2005 ACM Symposium on Applied Computing (SAC'05). -- ACM, 2005
[26] M. Carvalho , T. Cowin , N. Suri , M. Breedy , K. Ford -- Using Mobile Agents as Roaming Security Guards to Test and Improve Security of Hosts and Networks. — Proceedings of the 2004 ACM Symposium on Applied Computing (SAC'04). -- ACM, 2004
[27] T. Pedireddy , J.M. Vidal -- A Prototype MultiAgent Network Security System. — Proceedings of the AAMAS'03. -- ACM, 2003
[28] R. Menezes -- Self-Organization and Computer Security. — Proceedings of the 2005 ACM Symposium on Applied Computing (SAC'05). -- ACM, 2005
[29] J. Page , A. Zaslavsky , M. Indrawan -- Countering Agent Security Vulnerabilities using an Extended SENSE Schema. — Proceedings of the IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT'04). -- IEEE, 2004
[30] J. Page , A. Zaslavsky , M. Indrawan -- Countering Security Vulnerabilities in Agent Execution using a Self Sxecuting Security Examination. — Proceedings of the AAMAS'04. -- ACM, 2004
[31] J. Ameiller , S. Robles , J.A. Ortega-Ruiz -- Self-Protected Mobile Agents. — Proceedings of the AAMAS'04. -- ACM, 2004
[32] M. Christodorescu , S. Jha -- Testing Malware Detectors. — Proceedings of the ISSTA'04. -- ACM, 2004
[33] M. Christodorescu , S. Jha , S.A. Seshia , D. Song , R.E. Bryant -- Semantics-Aware Malware Detection. — Proceedings of the 2005 IEEE Symposium on Security and Privacy (S&P'05). -- IEEE, 2005
[34] J.A.M. McHugh , F.P. Deek -- An Incentive System for Reducing Malware Attacks. -- Communications of the ACM, 2005, 6
[35] J.V. Harrison -- Enhancing Network Security By Preventing User-Initiated Malware Execution. — Proceedings of the International Conference on Information Technology Coding and Computing (ITCC'05). -- IEEE, 2005
[36] A. Bohra , I. Neamtiu , P. Gallard , F. Sultan , L. Iftode -- Remote Repair of Operating System State Using Backdoors. — Proceedings of the International Conference on Autonomic Computing (ICAC'04). -- IEEE, 2004
[37] F. Sultan , A. Bohra , S. Smaldone , Y. Pan , P. Gallard , I. Neamtiu , L. Iftode -- Recovering Internet Service Sessions from Operating System Failures. -- IEEE Internet Computing, 2005, March/April
[38] J.B. Grizzard , S. Krasser , H.L. Owen , G.J. Conti , E.R. Dodson -- Towards an Approach for Automatically Repairing Compromised Network Systems. — Proceedings of the Third IEEE International Symposium on Network Computing and Applications (NCA'04). -- IEEE, 2004
[39] A. Goel , K. Po , K. Farhadi , Z. Li , E. de Lara -- The Taser Intrusion Recovery System. — Proceedings of the SOSP'05. -- ACM, 2005
[40] J. Levine , J. Grizzard , H. Owen -- A Methodology to Detect and Characterize Kernel Level Rootkit Exploits Involving Redirection of the System Call Table. — Proceedings of the Second IEEE International Information Assurance Workshop (IWIA'04). -- IEEE, 2004
[41] C. Kruegel , W. Robesrtson , G. Vigna -- Detecting Kernel-Level Rootkits Through Binary Analysis. — Proceedings of the 20th Annual Computer Security Applications Conference (ACSAC'04). -- IEEE, 2004
[42] H. Xu , W. Du , S.J. Chapin -- Detecting Exploit Code Execution in Loadable Kernel Modules. — Proceedings of the 20th Annual Computer Security Applications Conference (ACSAC'04). -- IEEE, 2004
[43] Y.-M. Wang , D. Beck , B. Vo , R. Roussev , C. Verbowski -- Detecting Stealth Software with Strider GhostBuster. — Proceedings of the 2005 International Conference on Dependable Systems and Networks (DSN'05). -- IEEE, 2005
[44] S. Ring , D. Esler , E. Cole -- Self-Healing Mechanisms for Kernel System Compromises. — Proceedings of the WOSS'04. -- ACM, 2004
[45] M. Laureano , C. Maziero , E. Jamhour -- Intrusion Detection in Virtual Machine Environments. — Proceedings of the 30th EUROMICRO Conference (EUROMICRO'04). -- IEEE, 2004
[46] M. Vrable , J. Ma , J. Chen , D. Moore , E. Vandekieft , A.C. Snoeren , G.M. Voelker , S. Savage -- Scalability, Fidelity, and Containment in the Potemkin Virtual Honeyfarm. — Proceedings of the SOSP'05. -- ACM, 2005
[47] S. Ring , E. Cole -- Taking a Lesson from Stealthy Rootkits. -- IEEE Security & Privacy, 2004, July/August
[48] W. Shi , H.-H.S. Lee , G. Gu , L. Falk -- An Intrusion-Tolerant and Self-Recoverable Network Service System Using A Security Enhanced Chip Multiprocessor. — Proceedings of the Second International Conference on Autonomic Computing (ICAC'05) -- IEEE, 2005
|