распределенные атаки на распределенные системы
Многоагентные системы создавались для интеграции неоднородных приложений. Но и противник также нуждается в интеграции и координации своих действий для того, чтобы атаковать распределенную систему. Противник может также строить свою многоагентную систему для проведения распределенной атаки на распределенную систему. Чтобы оценить опасность таких атак, мы рассмотрим требования, которым должна удовлетворять такая враждебная многоагентная система. Мы также анализируем возможность выполнения этих требований.
введение
Рассмотрим сеть, состоящую из узлов и каналов между ними. Распределенную информационную систему можно представить как приложения в узлах сети, связанные некоторой интегрирующей системой, которая позволяет координировать использование различных приложений в решении задач. Интеграция может быть достигнута с помощью многоагентной системы (МАС).
Некоторые МАС описаны в научной литературе, например, стандарт FIPA для интеллектуальных агентов. System Research Institute опубликовал свои результаты в Open Agent Architecture. Много работ посвящено COUGAAR. МАС присутствует и в GRID.
Мы предполагаем наличие злоумышленника и то, что распределенная система может подвергнуться его атаке для нанесения ущерба владельцу информации и системы.
Для предотвращения ущерба мы должны выяснить, каким образом противник может атаковать распределенную систему. Это поможет понять, как определить безопасность распределенной системы и каким образом она может быть достигнута.
Любая атака может быть разбита на два этапа. Первый включает сбор информации об атакуемой системе и организацию атаки, второй — проведение самой атаки. На первом этапе разрабатывается план для всех участников атаки с информацией о том, что следует делать в определенных обстоятельствах во время проведения атаки. На втором этапе атаки противник стремится получить доступ к уязвимым точкам, через которые наносится ущерб, а затем скрывает следы атаки, чтобы предотвратить обвинения против атакующих.
Мы предполагаем, что любая атака на отдельный хост распределенной системы не приводит к фатальному ущербу. Атака должна быть распределенной, то есть представлять собой распределенную атаку как скоординированные действия, произведенные в различных подсистемах распределенной информационной системы с целью нанесения ущерба.
Рассмотрим, что необходимо использовать противнику для выполнения распределенной атаки.
Подразумевается, что в распределенной системе существуют некоторые механизмы безопасности - аудит или системы обнаружения вторжений, контроль целостности, контроль доступов, межсетевые экраны и др. Как минимум, первый этап атаки должен быть невидимым для механизмов защиты. При организации атаки необходим механизм интеграции деятельности всех противников. Рассмотрим ситуацию, когда они представлены программно- аппаратными агентами. Тогда интеграция действий противника в атаке может осуществляться с помощью враждебной многоагентной системы (ВМАС). Чтобы решать задачи по интеграции деятельности злоумышленника, ВМАС должна представлять собой сеть. Для этого необходимы коммуникации между агентами, и каналы должны быть скрытыми от средств защиты.
В настоящей статье авторы пытаются найти ответ на вопрос, могут ли данные свойства быть выполнены.
В основу ВМАС заложены три хорошо известные модели. Первая — это модель невлияния. Если выполняются условия невлияния, то можно доказать, что агенты невидимы для механизмов защиты. Примеры реализации невидимых агентов будут приведены далее.
Вторая модель — модель скрытых каналов. Она определяет возможность существования коммуникаций, невидимых для механизмов защиты. Скрытые каналы в открытых сетях часто называют стеганографией. В рассматриваемой задаче скрытые от средств защиты каналы должны существовать в условиях, когда используются механизмы защиты, которые, не видя скрытый канал, могут препятствовать его существованию. В таких случаях мы говорим о скрытых каналах, преодолевающих защиту.
Третья модель — Open Agent Architecture (OAA). Она показывает, как ВМАС может быть сделана интеллектуальной.
Мы не строили большую ВМАС, но проведенные эксперименты подтверждают все положения настоящей статьи.
невидимые агенты
В стандарте FIPA агент определяется как сущность, способная вести себя автономно, выполнять план и распознавать другие сущности в протоколах, в которых они участвуют. Есть по крайней мере два протокола, в которых каждый агент ВМАС является участником. Первый — протокол взаимодействия агентов противника. Второй — это легальный протокол, содержащий агента в виде встроенного в некоторую область кода и процесса, использующего ресурсы компьютера.
Пусть компьютерная система разделена на два уровня — High и Low. Если субъект на уровне High может выполнять все свои действия и способен видеть действия субъекта на уровне Low, но любой субъект на уровне Low не может видеть никаких действий или их результатов на уровне High, то тогда система удовлетворяет условию невлияния. Если враждебный агент находится на уровне High, а механизмы защиты находятся на уровне Low, и выполняются условия невлияния, то агент не может быть увиден средствами защиты.
Мы должны ответить на вопрос, каким образом агент, будучи участником легального протокола, остается невидимым для механизмов защиты. Рассмотрим следующую примитивную схему, моделирующую механизмы невидимости.
На Рис. 1 приведена нормальная схема работы компьютера. Отметим, что процессор только выполняет команды, и ему все равно, кто их передает.
Рис 1. Схема работы компьютера.
На Рис. 2 агент видит, что хотят сделать программы, куда обратиться, что и как обработать. Тогда программный агент может использовать процессор до работы легальных программ. То есть агент может подправить все так, как нужно ему, затем обработать реальный запрос и передать легальным программам ту информацию, которую ему нужно.
Рис. 2. Враждебный агент в схеме компьютера.
Эта модель описывает теоретическую возможность работы невидимого агента. На практике можно разместить агента в ядре операционной системы таким образом, что он будет контролировать и модифицировать всю деятельность системы безопасности. Данная конструкция реализует метод man-in-the- middle, она была реализована в некоторых практических разработках. Программы такого типа можно найти в Интернете. Они называются руткиты (rootkits).
Большинство реализаций современных руткитов могут прятать от пользователя файлы, папки и ключи реестра, скрывать запущенные программы, системные службы, драйверы и сетевые соединения. То есть злоумышленник имеет возможность создавать файлы и ключи реестра, запускать программы, работать с сетью, и эта активность не будет обнаружена пользователями, в том числе и администратором системы.
В настоящее время известно около двух десятков подобных проектов, в рамках которых разрабатываются способы маскировки файлов, работающих процессов, сеансов межсетевого взаимодействия и т.п. Приведем несколько примеров.
Hacker Defender является программным агентом, функционирующим на платформах Windows NT 4.0/2000/XP, а также на более поздних версиях систем на базе NT. Основная идея данной программы состоит в перезаписи некоторых сегментов памяти во всех запущенных процессах. При этом описанные действия не должны оказывать влияния на стабильность работы системы или работающих процессов. Программа может быть абсолютно невидима для всех остальных процессов, в том числе и для средств защиты. Тем самым противник имеет возможность скрывать файлы, процессы, системные службы и драйверы, ключи реестра и их значения, открытые порты. Программа также осуществляет маскировку своих действий в памяти и прячет идентификаторы скрываемых процессов. Кроме того, этот агент инсталлирует скрытый blackdoor, регистрируется как скрытый системный сервис и инсталлирует скрытый системный драйвер. Технология blackdoor позволяет внедрять редиректор (сетевое программное обеспечение, эмулирующее доступ прикладных программ к удаленной файловой системе как к локальной).
После запуска программы Hacker Defender перечисляет все доступные для нее процессы в системе, а затем пытается перехватить определенные вызовы API. Перехват заключается в замене первых байт кода функции на безусловный переход к новому коду функции, предварительно сохраненному в адресном пространстве программы. Для этого выясняется адрес необходимой функции, затем в памяти программы отводится место под код нового варианта функции и ее первоначального кода, который сохраняется для дальнейшего использования. Таким образом, когда пользовательская программа вызывает функцию API, например, NtQuerySystemInformation, вызов передается функции предобработки данных. Затем может быть вызвана исходная функция, которая, в свою очередь, вернет результаты функции постобработки. Функция постобработки модифицирует данные, которые вернула исходная функция, например, удаляя некоторые записи.
Процесс перехвата вызовов API изображен на Рис. 3.
Рис. 3. Процесс перехвата вызовов функции API.
Получается, что программы, которые будут использовать перехваченные вызовы API, получат информацию не о реальном положении дел в системе, а уже обработанные агентом данные. Hacker Defender перехватывает функции запуска новых процессов, что позволяет агенту передавать нужный код через новые программы, запускаемые пользователем.
FU также является известным программным агентом, исходный код которого опубликован 03.09.2004. FU состоит из двух компонент: драйвера Windows 2000/XP (msdirectx.sys) и собственно исполняемого файла (fu.exe). Если драйвер успешно установлен, то противнику необходимо просто запустить файл fu.exe на исполнение. Заметим, что при этом противнику вовсе не нужно обладать какими-либо особыми правами, в том числе и правом запуска приложений. Данная программа непосредственно манипулирует объектами ядра операционной системы. FU модифицирует список PsActiveProcessList, содержащий список активных процессов, информацию из которого получает ZwQuerySystemInformation. При этом процесс остается существовать в качестве "свободного" потока и будет нормально функционировать, поскольку распределение процессорного времени Windows основано на потоках, а не на процессах. FU позволяет нарушителю скрывать файлы, каталоги и процессы, а также изменять привилегии процесса, поднимая его до уровня администратора.
AFX Rootkit представляет собой программного агента, который функционирует на платформах Windows NT/2000/XP/2003. Текущая версия данной программы позволяет нарушителю скрывать процессы и их идентификаторы, файлы и директории, значения системного реестра, сервисы, сетевые соединения TCP/UDP, иконки в панели задач. При установке этого агента создается директория с уникальным именем, в которой противник сможет размещать необходимые ему данные, в том числе исполняемый файл (root.exe). Заметим, что данная директория абсолютно невидима для других процессов, однако все программы внутри директории не являются скрытыми друг от друга.
Невидимый агент может сделать другие файлы или процессы невидимыми. Более того, невидимый процесс может решить проблему построения невидимых коммуникаций между агентами противника в рамках одного компьютера.
Доказано, что если есть сеть автоматов, каждый из которых удовлетворяет условию невлияния, и коммуникации на уровне High невидимы для механизмов безопасности, тогда сеть автоматов также удовлетворяет условию невлияния.
скрытые каналы
Итак, мы описали, каким образом можно построить невидимый канал между агентами на уровне High компьютерной системы с одной операционной системой. Но распределенная система основана на сети, в которой уровень Low, как правило, находится под контролем системы безопасности. Например, можно использовать снифферы. Здесь нет канала на уровне High. Тогда невидимость канала между агентами противника, использующими уровень Low, означает, что агенты уровня High могут прятать информацию в легальных каналах уровня Low. Здесь возникают три проблемы. Первая — спрятать спуск информации с уровня High на уровень Low от механизмов защиты. Вторая — это преодоление механизмов защиты, предназначенных для уничтожения скрытых каналов. И третья проблема — способность агентов быть интеллектуальными и использовать стойкие методы стеганографии. Первая проблема может быть решена, так как организация встраивания информации уровня High в предложенных далее скрытых каналах возможна с помощью программно-аппаратных агентов в компьютерной среде. В самом деле, предположим, что функция организации скрытого канала для связи с внешней средой реализуется программно-аппаратным агентом. Тогда данный агент находится в конкретном компьютере под охраной другого агента, который делает его невидимым для средств защиты.
Показать, что функции построения скрытого канала доступны для программно-аппаратного агента, помогут примеры решения второй проблемы — преодоление механизмов защиты, предназначенных для уничтожения скрытых каналов.
Рассмотрим схему сети на рис. 4.
Рис. 4. Схема глобальной сети.
Пусть имеется m+1 сегментов локальных вычислительных сетей, S0, S1,...,Sm, в каждом из которых есть рабочие станции со своими локальными адресами и шлюзы, соединяющие локальные сети с глобальной сетью (например, Интернет). Пусть s0, s1, ..., sm — адреса шлюзов сегментов локальных вычислительных сетей S0, S1, ..., Sm, которые представляют эти сегменты в глобальной сети. Мы считаем, что для общения между собой рабочие станции различных сегментов используют виртуальную частную сеть (VPN), которая работает на основе протокола IPSec следующим образом. Пакет от рабочей станции с адресом a в сегменте Si должен быть передан на рабочую станцию с адресом b в сегменте Sj. Пакет передается так:
- от машины с адресом a к локальному шлюзу LG(i) в сегменте Si;
- далее пакет от LG(i) попадает на узел защиты G(i), в котором пакет шифруется и инкапсулируется в пакет (пакеты) с адресом отправителя Si и адресом получателя Sj, пакеты имеют одинаковую длину и другие одинаковые параметры;
- инкапсулированный пакет из G(i) попадает на хост глобальной сети PC(i), который направляет его через глобальную сеть на аналогичный хост PC(j);
- далее пакет направляется на узел защиты G(j), на выходе которого восстанавливается исходный пакет, посланный от a к b; этот пакет поступает на локальный шлюз LG (j);
- LG (j) отправляет пакет к абоненту b в сегменте Sj.
В глобальной сети и в каждом сегменте S0, S1 ,..., Sm имеются программно-аппаратные агенты противника, которые для выполнения враждебных функций должны получать инструкции от программно-аппаратного агента противника из глобальной сети (ПГС). Будем считать, что противник из глобальной сети через своих агентов полностью контролирует хосты PC(k), k = 0, 1, ..., m. Программно-аппаратные агенты внутри сегментов локальной сети S0, S1, ..., Sm контролируют соответственно компьютеры LG(j), j = 0, 1, ..., m. Мы считаем, что узлы защиты G(i) устроены так, что никто из злоумышленников не может их контролировать. Таким образом, управление программно-аппаратным агентом в любом из сегментов со стороны противника из глобальной сети связано с построением канала связи от PC(j) к LG(j). Утечка информации связана с построением канала от LG(j) к PC(j). Ни один из хостов глобальной сети не знает внутренние адреса сегментов. В силу того, что шифрование и формирование пакетов для отправки через глобальную сеть происходит на узлах защиты, противник не может построить канал взаимодействия с программно-аппаратным агентом сегмента, используя шифртекст или служебные атрибуты пакетов. Таким образом, мы предполагаем, что единственными зависимыми параметрами, известными на PC(j) и LG(j) для входного потока пакетов, являются адреса отправителя пакетов. При передаче пакетов от LG(j) к PC(j) единственными зависимыми параметрами являются адреса их получателей. Эта зависимость связывает внутренние адреса каждого сегмента и внешний адрес s соответствующего шлюза.
Скрытый канал, не требующий обучения, строится следующим образом. Возьмем часто встречающиеся адреса s1 и s2 из множества S = {s1, ..., sm}. Модулируем поток пакетов из PC(0) в G(0) следующим образом. Опишем, например, код для 1. При передаче 1 любой очередной пакет с исходящим адресом s1 передается после передачи нечетного числа пакетов с другими адресами. Поэтому все расстояния между пакетами с исходящими адресами s1 являются четными. Рассмотрим последовательность расстояний между исходящими адресами, полученными в LG(0). Все расстояния между адресами пакетов из сегмента S1 — четные (кроме ошибок вида потери или вставки пакета, которые мы считаем достаточно редкими). Агент в LG(0), обладая достаточными вычислительными ресурсами и памятью, считает четность или нечетность расстояний между повторяющимися адресами и выявляет отклонение четных расстояний от случайного распределения длин расстояний между повторяющимися адресами из S1. Аналогично, пакет с исходящим адресом s2 передается через нечетное число пакетов с другими адресами. Таким образом, преобладание четных расстояний между адресами из S1 и четных расстояний между адресами из S2 определяет 1 в коде.
Аналогично строится код для передачи 0 и x, означающий конец передачи кода 1 или 0.
Пропускная способность данного канала однозначно связана с другим параметром, связанным с данным способом скрытой передачи информации. Это число N переданных пакетов для восстановления одного бита переданной информации. Полученные асимптотические оценки показывают, что вероятность правильно принять сигнал 1 или 0 или x агентом в LG(0) стремится к 1 при N стремящемся к бесконечности.
Пусть адреса упорядочены s1 < s2 < ... < sm. Рассмотрим другой метод общения агентов. Этот метод требует обучения. Процедура обучения необходима для того, чтобы максимально полно восстановить на LG(0) порядок.
Процедура обучения состоит в следующем. РС(0) получив очередные k пакетов с адресами si1, si2, ..., sik, упорядочивает их в соответствии с возрастанием и посылает данные пакеты на узел защиты для последующей передачи LG(0). Мы доказали, что LG(0) в реальном масштабе времени может проводить сопоставление полученных данных и восстанавливать порядок. Тогда можно передавать информацию упорядоченными k-группами адресов, переставляя их на РС(0) в нужном порядке.
Возможны и другие каналы преодоления IPSec, но они более уязвимы к уничтожению. Например, можно модулировать передачу длинами пакетов, если IPSec не производит выравнивания длин пакетов.
Рассмотрим скрытые каналы, преодолевающие proxy-серверы.
Прежде, чем подробно объяснить механизмы преодоления защиты, опишем общую идею. proxy-сервер, в отличие от IPSec, устанавливает ТСР-соединения с непосредственно связанными с ним абонентами. При этом данные, передаваемые пакетами, собираются на proxy-сервере, а затем передаются при образовании ТСР-соединения с таким же сервером на приемном конце. Сложность преодоления надежно защищенного proxy-сервера состоит в том, что враждебный агент может манипулировать или наблюдать манипуляции с пакетами, а не с данными. Однако в основе преодоления proxy-сервера лежит простая идея управления порядком данных с помощью задержек пакетов, передающих эти данные. Более подробно рассмотрим следующую модель. Пусть, как и раньше, имеется m+1 сегментов локальных вычислительных сетей S0, S1, ..., Sm, в каждом из которых имеются рабочие станции со своими локальными адресами и шлюзы, используемые для соединения локальных сетей с глобальной сетью (например, Интернет). Пусть s0< s1 <...< sm упорядоченные адреса шлюзов сегментов локальных вычислительных сетей S0, S1, ..., Sm, представляющих эти сегменты в глобальной сети. Мы считаем, что для общения между собой рабочие станции различных сегментов используют виртуальную частную сеть (VPN), которая работает следующим образом. Данные от рабочей станции с адресом a в сегменте Si должны быть переданы на рабочую станцию с адресом b в сегменте Sj. Схема связи изображена на рис. 4, а связь организуется следующим образом.
. От машины с адресом a пакеты с передаваемыми данными, посылаются к внутреннему шлюзу — машине LG(i) в сегменте Si.
. Далее пакеты попадают на шлюз — узел защиты G(i). Он работает как proxy-сервер, который устанавливает соединение с машиной с адресом а и восстанавливает данные, передаваемые от рабочей станции с адресом а на рабочую станцию с адресом b. Восстановленные данные, поступающие на proxy-сервер от абонентов сегмента Si, выстраиваются в очередь в соответствии с порядком их восстановления на proxy-сервере. Далее proxy- сервер шифрует данные в очереди на ключе получателя — proxy-сервера G(j), в сегменте которого находится получатель данных. После этого G(i) устанавливает соединение с G(j) и передает туда пакеты, содержащие зашифрованные данные.
. Пакет из G(i) попадает на хост глобальной сети PC(i), который направляет его через глобальную сеть на аналогичный хост PC(j).
. Далее пакет направляется на узел защиты G(j), где восстанавливаются и выстраиваются в очередь данные, передаваемые на Sj. При подходе соответствующих данных в этой очереди proxy-сервер УЗ(j) расшифровывает их и устанавливает соединение в сегменте Sj с рабочей станцией с адресом b. Данные передаются пакетами через внутренний шлюз LG(j).
. LG(j) отправляет пакеты к абоненту b в сегменте Sj.
Как и раньше, в глобальной сети и в каждом сегменте S0, S1, ..., Sm имеются программно-аппаратные агенты противника, которые для выполнения своих враждебных функций должны получать инструкции от программно-аппаратного агента противника из глобальной сети (ПГС). Будем считать, что ПГС полностью контролирует компьютеры PC(j), j = 0, 1, ..., m. Программно-аппаратные агенты противника внутри сегментов локальной сети S0, S1, ..., Sm контролируют соответственно компьютеры соответственно LG(j), j = 0, 1, ..., m. Мы считаем, что узлы защиты G(i) сделаны правильно так, что никто из противников не может их контролировать. Таким образом, управление программно-аппаратным агентом в любом из сегментов со стороны противника из глобальной сети связано с построением канала связи от PC(j) к LG(j). Утечка информации связана с построением канала от LG(j) к PC(j).
Как и раньше мы предполагаем, что единственными зависимыми параметрами, известными на PC(j) и LG(j) для входного потока пакетов, являются адреса отправителя пакетов. При передаче пакетов от LG(j) к PC(j) единственными зависимыми параметрами являются адреса получателей пакетов. Эта зависимость выражается в связи множества внутренних адресов каждого сегмента и внешнего адреса s соответствующего шлюза и считается в данной задаче известной.
LG(i) может влиять на порядок очереди отправляемых данных следующим образом. Протокол ТСР гарантирует восстановление данных. Если какой-то пакет не получен, то протокол ТСР передает запрос на получение пропущенных данных. Пусть на proxy-сервере установлено два соединения с абонентами сегмента а1 и а2, которые передают данные А1 и А2 соответственно на proxy-сервер G(i). Естественно, что те данные, которые восстановлены первыми, будут первыми поставлены в очередь на передачу в глобальную сеть. Пусть агент в LG(i) хочет, чтобы последовательность данных в очереди на отправку была: А1 А2. Если пакеты, передающие А1, заканчиваются быстрее, чем пакеты, передающие А2 (агент наблюдает поток пакетов и может осуществлять их задержку, чтобы убедиться в том, что передача данных закончена), то агент не предпринимает никаких действий. Если пакеты, передающие А2, заканчиваются быстрее, чем пакеты, передающие А1, то агент на LG(i) задерживает или уничтожает один из пакетов (например, последний) из серии пакетов, передаваемых от а2. После этого он выжидает, когда закончится поток пакетов, передающих файл А1, и посылает последний пакет с данными А2. Тогда, если верно его предположение о том, что серия пакетов от а1 одному абоненту в другом сегменте содержала данные одного соединения А1, а аналогичная серия от а2 одному абоненту в другом сегменте содержала данные другого соединения А2, то указанная процедура поменяет естественный порядок данных в очереди на G(i) на требуемый порядок данных. Разумеется, такая же процедура перестановки на узле G(j) возможна и на потоке входящих данных с помощью агента на PC(j). Отметим, что указанная процедура носит вероятностный характер. Ясно, что вероятность правильной перестановки увеличивается для больших серий пакетов, передаваемых при отправке больших файлов.
Несмотря на возможность ошибки, можно построить язык скрытой передачи данных, использующий данный алгоритм перестановки данных в очереди. Пусть агент в LG(0) передает информацию агенту в РС(0) в глобальной сети. Тогда агент в LG(0) знает, какие данные идут на адрес получателя sj, j = 1, ..., m, серверов G(j). С помощью алгоритма перестановки данных в очереди агент в LG(0) упорядочивает очередные пары пришедших данных. Блоки полученной последовательности данных разбиваются на пакеты. Серии этих пакетов передаются по соответствующим адресам. В серии пакетов могут вкрапливаться отдельные пакеты, связанные, например, с установлением других соединений. Поэтому агент в РС(0) не должен учитывать эти вкрапления. Полученные таким образом серии однозначно соответствуют переданной единице. Передача нуля осуществляется последовательностью непересекающихся монотонно убывающих пар адресов. Последовательность с непересекающимися чередующимися возрастающими и убывающими парами адресов однозначно определяет символ х, соответствующий разделительному символу. При этом мы предполагаем, что proxy-сервер последовательно устанавливает соединения с другими proxy-серверами в соответствии с получившейся в буфере очередью данных. При этом данные, передаваемые по одному адресу, передаются в одном соединении.
В связи с описанными скрытыми каналами решена задача оценки r для устойчивого выделения 1, 0 и х, а также устойчивости передачи к сбоям. В модели потока, создаваемого протоколом ТСР, для создания скрытого канала могут быть использованы задержки подтверждения. Отправив один или несколько пакетов с данными, узел ожидает подтверждения их получения, и лишь затем продолжает передачу. Число пакетов, которые могут быть переданы подряд без ожидания подтверждения, определяется размером "окна" принимающей стороны (этот параметр используется для управления скоростью передачи и задает объем данных, которые получатель способен принять, не прерывая передачу. Таким образом, в Интернете задержки между пакетами, отправленными подряд, определяются параметрами канала передачи пакетов.
Задержки же между пакетами, перед отправкой которых узел ожидал подтверждения поставки предыдущих пакетов, в большей степени определяются скоростью обработки пакетов узлами, а также особенностями протокола уровня приложений (задержка отправки пакетов может быть вызвана ожиданием какого-либо события приложением). Поэтому возможна манипуляция ПГС задержками подтверждений, которая может быть использована в статистическом скрытом канале низкой пропускной способности.
Для построения скрытого канала возможно использование модуляции скорости передачи информации через Интернет. Как и в предыдущем случае, такой скрытый канал преодолевает IPSec.
В связи с тем, что пропускная способность каналов Интернет не безгранична, а число пользователей сети неуклонно растет, поставщиками услуг Интернета повсеместно применяются ограничения пропускной способности предоставляемых пользователям каналов связи. Поскольку при этом обычно абонент соединен с оператором скоростной линией связи (например, локальной сетью), ограничение скорости передачи производится искусственно, программными средствами шлюза. Как правило, алгоритм ограничения скорости основан на следующей схеме: поступающие по "быстрому" каналу на шлюз пакеты помещаются в буфер, а затем постепенно отправляются по "медленному" каналу. При этом фактически пропускная способность "медленного" канала может быть выше заданного ограничения. Задержки при отправке пакетов, помещенных в буфер, выбираются таким образом, чтобы средняя скорость передачи соответствовала установленным ограничениям.
Чаще всего наибольшая нагрузка на канал связи возникает при последовательной передаче больших объемов данных. При этом для ускорения передачи протокол ТСР формирует пакеты определенной длины (как правило, 1500 байт) и полностью использует приемное "окно" получателя. В потоке возникают серии пакетов, отправленных с минимальными (для физического канала) интервалами. После обработки алгоритмом ограничения скорости эти интервалы увеличиваются для обеспечения заданной средней скорости. Изменение скорости передачи происходит за счет манипуляции интервалами между пакетами. Тогда шлюз, через который проходят пакеты, имеет возможность встраивать в поток пакетов скрытую информацию с помощью манипуляции скоростями. Для того чтобы интервалы между пакетами, определяющие скорость передачи, не изменились на маршруте от данного шлюза до получателя, серия пакетов не должна полностью помещаться в буфер ни на одном из шлюзов на этом маршруте. В противном случае скрытая информация, содержащаяся в потоке, окажется искаженной.
Во избежание искажения интервалов для прохождения медленного канала при модуляции необходимо выбирать интервалы таким образом, чтобы они были не короче интервалов, соответствующих самому медленному каналу на маршруте. Оценка скорости самого медленного канала может быть произведена путем измерения средней скорости передачи.
Опишем способ скрытой передачи информации агенту, контролирующему единую точку входа.
Рассмотрим схему аутентификации пользователя, обращающегося по протоколу LDAP на сервер директорий. Предположим, что там есть программно- аппаратный агент нарушителя безопасности, который знает, как работает справочная служба, но не имеет предметно-ориентированной информации и знаний по использованию своих возможностей. Можем считать, что потенциал такого агента сравним с возможностями администратора сервера в том случае, если он обладает предметно-ориентированной информацией и имеет конкретное задание по администрированию информации на сервере. Пусть сервер аутентификации обслуживает большую распределенную сеть с большим числом пользователей и разграниченными правами доступа к ресурсам системы. Для того чтобы войти в сеть и получить права доступа к определенным ресурсам, пользователь посылает на сервер аутентификации пароль, передается по транспортной сети в шифрованном виде, причем система шифрования не зависит от идентификатора пользователя. Пусть нарушитель безопасности является легальным пользователем систем. Он может подключиться к сети на своем компьютере в случае успешной аутентификации на сервере и хочет получить доступ к запрещенным для него ресурсам системы. Права доступа к ресурсам для любого пользователя записаны в дереве директорий сервера аутентификации. Если злоумышленник пытается получить доступ к запрещенным для него ресурсам, это отражается в данных аудита. Для решения задач нарушителя безопасности самым простым способом является передача специального пароля, известного его программно-аппаратному агенту на сервере аутентификации, с запросом необходимых для него запрещенных прав к ресурсам системы. В этом случае программно-аппаратный агент дает права пользователю на требуемые ресурсы и может очистить данные аудита на сервере идентификации/аутентификации. Однако, имея распределенную систему аудита, доступ к запрещенной для этого пользователя информации будет отражен в других системах аудита, например, в данных аудита СУБД. При правильно работающей системе анализа данных аудита служба безопасности получит информацию о том, что данный пользователь с данной рабочей станции получил ценную информацию. Поэтому, войдя на рабочую станцию от своего имени, нарушитель безопасности должен обращаться со специальным паролем к агенту на сервере аутентификации, называя вымышленный идентификатор, то есть от чужого имени.
Таким образом, приходим к задаче создания в системе с помощью программно-аппаратного агента на сервере аутентификации ложного пользователя с большими правами по доступу к ресурсам системы. При наличии специального пароля, известного программно-аппаратному агенту, эта задача легко решается. Чтобы предотвратить такую угрозу, между системой приема сообщений от пользователя и сервером аутентификации установим узел защиты, который шифрует истинные значения идентификаторов и паролей. Пусть в дереве директорий в качестве имен используются шифртексты идентификаторов. Тогда программно-аппаратный агент не сможет получить специальный пароль от нарушителя безопасности и приписать ему особые права.
Однако эта защита может быть преодолена следующим образом. Нарушитель безопасности посылает любой настоящий идентификатор и случайный пароль к нему. После шифрования на узле защиты в дереве пользователей идентифицируется некоторый пользователь по присланному идентификатору. Естественно, присланный пароль этого пользователя отличается от истинного пароля. Выявляя этот факт, программно-аппаратный агент принимает решение о создании нового пользователя, который является листом в дереве директории для истинного пользователя, а его идентификатор соответствует присланному паролю, зашифрованному узлом защиты. После этого он посылает на компьютер нарушителя безопасности сигнал о неправильной аутентификации полученного идентификатора пользователя. Получив этот сигнал, нарушитель безопасности посылает на сервер аутентификации идентификатор, в котором присутствует выбранное до того имя легального пользователя, дополненное переданным ранее паролем. Для данного пользователя он выдумывает специальный пароль и передает его для аутентификации ложного пользователя. Агент нарушителя находит имя ложного пользователя, созданного им на предыдущем шаге, и в качестве аутентификатора записывает шифртекст переданного пароля. Затем он посылает сигнал о правильной аутентификации, приписывает данному пользователю максимальные права, стирает данные аудита о создании нового пользователя и о присвоении ему прав, временно заканчивает свое функционирование и маскирует свое присутствие.
Потом в системе появляется ложный пользователь с большими правами. Доступ происходит по легальной процедуре идентификации и аутентификации с любой машины сети. Ложный пользователь может существовать столько времени, сколько потребуется службе безопасности на выяснение по другим данным аудита или определение по другим косвенным данным наличия в сети дополнительного получателя ценной информации. В случае контроля директории ложный пользователь может быть обнаружен в дереве директорий и уничтожен. Тогда процедура создания нового ложного пользователя должна повториться.
В случае ошибки, когда ложный пользователь создается случайно (входящий пользователь неправильно называет свой пароль), доступ к этому пользователю никто не будет иметь, и он останется незаметным. Если процедура образования ложного пользователя не завершена, агент через некоторое время его уничтожит.
Интеллектуальный программно-аппаратный агент нарушителя на сервере аутентификации может быть настроен на получение инструкций через скрытый канал. Допустим, нарушителем безопасности является группа k легальных пользователей системы, которые знают фиксированное число m, известное также программно-аппаратному агенту. Нарушители безопасности инициируют вход в систему и выход из нее так, чтобы иметь возможность первыми из пользователей за ограниченное время набрать по m вхождений в систему.
Пусть агент обладает достаточными вычислительными возможностями для оценки промежутка времени, необходимого для m вхождений в систему любых других пользователей. Если это время не превосходит заданного порога, то агент выделяет данную группу пользователей как своего союзника. После m вхождений и выходов из системы группа нарушителей продолжает работать в обычном режиме и при этом начинается выработка языка общения агента с группой нарушителей. Если в заданном промежутке группа нарушителей вошла в систему ровно один раз, то их перестановке (порядки появления на сервере) соответствует двоичный вектор длины k. Этот вектор передается агентом к членам группы нарушителей в форме ответов о правильной или неправильной аутентификации. Достаточно сделать первую посылку вектора из всех 0 в ответ на заведомо ложные пароли, так как все двоичные вектора можно считать лексикографически упорядоченными. Тогда 2k перестановок порядка вхождения в систему данной группы воссоздадут у агента и членов группы нарушителей код, который можно использовать при дальнейшем общении агента и группы нарушителей. Любая другая комбинация вхождений в систему уже не будет считаться у агента значимой.
Рассмотрим скрытый канал через Интернет с помощью HTML. В данном случае речь пойдет о задаче построения скрытого канала между далеко расположенными корреспондентами.
Пусть пользователь А хочет передать короткое сообщение пользователю B через Интернет. Предположим, что пользователь А имеет доступ к браузеру, а пользователь B имеет доступ к аудиту обращений на некоторую страницу Интернет. Все обращения пользователя А к информационным ресурсам Сети отслеживаются контролером U. Задача состоит в том, чтобы построить скрытый от U канал передачи информации от пользователя А к пользователю B. В литературе описано множество скрытых каналов для решения этой задачи. Однако доказать стойкость сокрытия факта передачи от контролера U эти методы не позволяют. Предлагаемый здесь метод позволяет доказывать такую стойкость для небольших сообщений. Однако ограниченные рамки статьи не позволяют привести это доказательство.
Изложим содержание метода. С помощью последовательности гипертекстовых ссылок пользователь А попадает на сайт, к которому имеет доступ абонент В, и выбирает оговоренный секретным ключом документ. Пусть R1, ..., RN — последовательность возможных гипертекстовых ссылок в этом документе. Тогда скрытое сообщение от пользователя А к пользователю В можно закодировать перестановкой вызовов этих гиперссылок Rj1, ..., RjN. Перестановка определяется с помощью вызовов и меток времени, находящихся в журнале аудита.
Если B1, ..., BN сайты, в которых абонент В может получить доступ к данным аудита, то перестановками Bi1, ..., BiN можно кодировать допустимые сообщения.
Пусть вместо пользователя В на сервере находится программно-аппаратный агент В1, связанный с пользователем В, который отслеживает порядок вызова гиперссылок в определенном тексте. Тогда построенная этим агентом перестановка может быть передана пользователю В, который может находиться где угодно и может общаться со своим агентом с помощью произвольного скрытого канала. Такое взаимодействие возможно с помощью протокола HTTP. Маршрут передачи информации может быть еще более сложным для создания неотслеживаемости взаимодействия пользователей А и В.
Возникает вопрос о способе кодирования сообщения с помощью перестановок. Один из вариантов кодирования можно построить следующим образом. Рассматривая некоторую нумерацию перестановок, относим номеру данной перестановки двоичное представление этого номера. Тогда сообщение можно писать на любом доступном языке, используя для его кодирования двоичные векторы. Использование данного метода ограничено вычислительными возможностями при нумерации перестановок. Приведем некоторые значения числа перестановок, показывающие возможности кодирования сообщений для различных N: 5! = 120, а 10! = 3628800.
распределенные атаки с помощью вмас
Чтобы осуществить распределенную атаку, должна быть построена невидимая сеть агентов. В предыдущих разделах мы обсуждали, каким образом это можно сделать. На всех шагах распределенной атаки ВМАС должна быть интеллектуальной.
Для моделирования интеллектуальных свойств ВМАС мы использовали результаты исследований по Open Agent Architecture. Пусть существует три класса агентов в ВМАС. Первый класс состоит из агентов-посредников. Второй класс включает в себя мета-агентов. Третий класс составляют агенты интерфейса с внешними сетями.
Агент-посредник представляет собой специализированного служебного агента, который отвечает за координацию взаимодействия агентов, их связь и кооперацию, а также за невидимость мета-агентов, связанных с ним. Невидимость агентов-посредников может быть реализована методами, описанными в соответствующем разделе выше. В некоторых случаях посредник обеспечивает хранение данных для других типов агентов, то есть предоставляет им функции blackboard для их взаимодействия. Посредники должны быть связаны между собой в некоторый кластер. В частном случае это может быть иерархическая структура.
Предположим, что посредники могут взаимодействовать друг с другом в определенной последовательности. Если мета-агент А выполняет план Р и ему необходим сервис S, то он обращается к агенту-посреднику F за сервисом. Агент-посредник F посылает сообщение другим агентам-посредникам о необходимости сервиса S. Каждый агент-посредник F' делает запрос своим мета-агентам на сервис S. Если F' получает отказ, то он передает запрос F на сервис S следующему агенту-посреднику F'' и т.д. Если F' получает положительный ответ от одного из своих мета-агентов, то он передает этот положительный ответ F. Пропускная способность такого канала может быть низкой, но первый шаг атаки не нуждается в скорости. Все мета-агенты связаны между собой через агентов-посредников. Каждый мета-агент имеет своего агента-посредника для взаимодействия в ВМАС. Мета-агенты исполняют роль ассистентов посредников при координации деятельности всех агентов. Мета-агенты могут быть сделаны невидимыми с помощью своих агентов- посредников. Агент-посредник и мета-агент могут играть роль man-in-the-middle в легальном протоколе. Это путь контроля и модификации любого легального протокола внутри одного компьютера.
Агенты-посредники и агенты интерфейса играют роль man-in-the-middle в легальных протоколах связи. Основная проблема здесь — сделать их быстро работающими. Агенты интерфейса могут связываться друг с другом с помощью скрытых каналов, если они находятся в различных сегментах сети под охраной своих агентов-посредников.
Мета-агенты могут создаваться и могут уничтожаться. Коды агентов могут передаваться через агентов-посредников или агентов интерфейса. Рассмотрим, каким образом ВМАС работает в распределенной атаке.
Мета-агенты используют методы распознавания для сканирования окружающей среды. Они находят точки для модификации информации и для выстраивания man-in-the-middle. Мета-агенты могут иметь информацию о выполнении атаки или могут ее не иметь. В последнем случае они должны найти сервис в форме, содержащей план, что делать дальше. План атаки может передаваться по сети.
Когда каждый агент, являющийся участником атаки, имеет свой план, тогда первый шаг атаки закончен. Низкая пропускная способность скрытых каналов определяет слабую синхронизацию распределенной атаки. Поэтому агент противника проходит активную фазу атаки почти автономно.
Если распределенная система разрушается, то это приводит к ущербу, но в таком случае и ВМАС также разрушается. После восстановления распределенной системы ВМАС должна создаваться с самого начала. Поэтому противник должен предпочесть нанесение ущерба с помощью ошибочных вычислений или Византийского поведения.
Рассмотрим пример. На первом шаге ВМАС находит точки доставки данных приложениям. Тогда мета-агенты готовят планы модификации входных или выходных данных для выбранных приложений. Планы могут также содержать генератор случайных чисел для выбора момента модификации данных. Реализация атаки состоит в случайной модификации входных или выходных данных с помощью "невидимого" агента противника. Распределенная система делает ошибки, но все тесты приложений и связи не находят сбоев. Медленное изменение интенсивности ошибок может привести к разрушению отдельных приложений.
заключение
Безопасность определяется знанием возможных атак. Наиболее опасные атаки на распределенные системы — это распределенные атаки. Такие атаки могут осуществляться враждебными многоагентными системами. ВМАС может быть невидимой и интеллектуальной. Координация агентов в ВМАС также может быть невидимой и осуществляться с помощью скрытых каналов.
Эти условия могут удовлетворяться с помощью реализации модели невлияния, скрытых каналов и соответствующей организацией агентов противника.
А.А. Грушо, доктор физико-математических наук.
введение
Рассмотрим сеть, состоящую из узлов и каналов между ними. Распределенную информационную систему можно представить как приложения в узлах сети, связанные некоторой интегрирующей системой, которая позволяет координировать использование различных приложений в решении задач. Интеграция может быть достигнута с помощью многоагентной системы (МАС).
Некоторые МАС описаны в научной литературе, например, стандарт FIPA для интеллектуальных агентов. System Research Institute опубликовал свои результаты в Open Agent Architecture. Много работ посвящено COUGAAR. МАС присутствует и в GRID.
Мы предполагаем наличие злоумышленника и то, что распределенная система может подвергнуться его атаке для нанесения ущерба владельцу информации и системы.
Для предотвращения ущерба мы должны выяснить, каким образом противник может атаковать распределенную систему. Это поможет понять, как определить безопасность распределенной системы и каким образом она может быть достигнута.
Любая атака может быть разбита на два этапа. Первый включает сбор информации об атакуемой системе и организацию атаки, второй — проведение самой атаки. На первом этапе разрабатывается план для всех участников атаки с информацией о том, что следует делать в определенных обстоятельствах во время проведения атаки. На втором этапе атаки противник стремится получить доступ к уязвимым точкам, через которые наносится ущерб, а затем скрывает следы атаки, чтобы предотвратить обвинения против атакующих.
Мы предполагаем, что любая атака на отдельный хост распределенной системы не приводит к фатальному ущербу. Атака должна быть распределенной, то есть представлять собой распределенную атаку как скоординированные действия, произведенные в различных подсистемах распределенной информационной системы с целью нанесения ущерба.
Рассмотрим, что необходимо использовать противнику для выполнения распределенной атаки.
Подразумевается, что в распределенной системе существуют некоторые механизмы безопасности - аудит или системы обнаружения вторжений, контроль целостности, контроль доступов, межсетевые экраны и др. Как минимум, первый этап атаки должен быть невидимым для механизмов защиты. При организации атаки необходим механизм интеграции деятельности всех противников. Рассмотрим ситуацию, когда они представлены программно- аппаратными агентами. Тогда интеграция действий противника в атаке может осуществляться с помощью враждебной многоагентной системы (ВМАС). Чтобы решать задачи по интеграции деятельности злоумышленника, ВМАС должна представлять собой сеть. Для этого необходимы коммуникации между агентами, и каналы должны быть скрытыми от средств защиты.
В настоящей статье авторы пытаются найти ответ на вопрос, могут ли данные свойства быть выполнены.
В основу ВМАС заложены три хорошо известные модели. Первая — это модель невлияния. Если выполняются условия невлияния, то можно доказать, что агенты невидимы для механизмов защиты. Примеры реализации невидимых агентов будут приведены далее.
Вторая модель — модель скрытых каналов. Она определяет возможность существования коммуникаций, невидимых для механизмов защиты. Скрытые каналы в открытых сетях часто называют стеганографией. В рассматриваемой задаче скрытые от средств защиты каналы должны существовать в условиях, когда используются механизмы защиты, которые, не видя скрытый канал, могут препятствовать его существованию. В таких случаях мы говорим о скрытых каналах, преодолевающих защиту.
Третья модель — Open Agent Architecture (OAA). Она показывает, как ВМАС может быть сделана интеллектуальной.
Мы не строили большую ВМАС, но проведенные эксперименты подтверждают все положения настоящей статьи.
невидимые агенты
В стандарте FIPA агент определяется как сущность, способная вести себя автономно, выполнять план и распознавать другие сущности в протоколах, в которых они участвуют. Есть по крайней мере два протокола, в которых каждый агент ВМАС является участником. Первый — протокол взаимодействия агентов противника. Второй — это легальный протокол, содержащий агента в виде встроенного в некоторую область кода и процесса, использующего ресурсы компьютера.
Пусть компьютерная система разделена на два уровня — High и Low. Если субъект на уровне High может выполнять все свои действия и способен видеть действия субъекта на уровне Low, но любой субъект на уровне Low не может видеть никаких действий или их результатов на уровне High, то тогда система удовлетворяет условию невлияния. Если враждебный агент находится на уровне High, а механизмы защиты находятся на уровне Low, и выполняются условия невлияния, то агент не может быть увиден средствами защиты.
Мы должны ответить на вопрос, каким образом агент, будучи участником легального протокола, остается невидимым для механизмов защиты. Рассмотрим следующую примитивную схему, моделирующую механизмы невидимости.
На Рис. 1 приведена нормальная схема работы компьютера. Отметим, что процессор только выполняет команды, и ему все равно, кто их передает.
Рис 1. Схема работы компьютера.
На Рис. 2 агент видит, что хотят сделать программы, куда обратиться, что и как обработать. Тогда программный агент может использовать процессор до работы легальных программ. То есть агент может подправить все так, как нужно ему, затем обработать реальный запрос и передать легальным программам ту информацию, которую ему нужно.
Рис. 2. Враждебный агент в схеме компьютера.
Эта модель описывает теоретическую возможность работы невидимого агента. На практике можно разместить агента в ядре операционной системы таким образом, что он будет контролировать и модифицировать всю деятельность системы безопасности. Данная конструкция реализует метод man-in-the- middle, она была реализована в некоторых практических разработках. Программы такого типа можно найти в Интернете. Они называются руткиты (rootkits).
Большинство реализаций современных руткитов могут прятать от пользователя файлы, папки и ключи реестра, скрывать запущенные программы, системные службы, драйверы и сетевые соединения. То есть злоумышленник имеет возможность создавать файлы и ключи реестра, запускать программы, работать с сетью, и эта активность не будет обнаружена пользователями, в том числе и администратором системы.
В настоящее время известно около двух десятков подобных проектов, в рамках которых разрабатываются способы маскировки файлов, работающих процессов, сеансов межсетевого взаимодействия и т.п. Приведем несколько примеров.
Hacker Defender является программным агентом, функционирующим на платформах Windows NT 4.0/2000/XP, а также на более поздних версиях систем на базе NT. Основная идея данной программы состоит в перезаписи некоторых сегментов памяти во всех запущенных процессах. При этом описанные действия не должны оказывать влияния на стабильность работы системы или работающих процессов. Программа может быть абсолютно невидима для всех остальных процессов, в том числе и для средств защиты. Тем самым противник имеет возможность скрывать файлы, процессы, системные службы и драйверы, ключи реестра и их значения, открытые порты. Программа также осуществляет маскировку своих действий в памяти и прячет идентификаторы скрываемых процессов. Кроме того, этот агент инсталлирует скрытый blackdoor, регистрируется как скрытый системный сервис и инсталлирует скрытый системный драйвер. Технология blackdoor позволяет внедрять редиректор (сетевое программное обеспечение, эмулирующее доступ прикладных программ к удаленной файловой системе как к локальной).
После запуска программы Hacker Defender перечисляет все доступные для нее процессы в системе, а затем пытается перехватить определенные вызовы API. Перехват заключается в замене первых байт кода функции на безусловный переход к новому коду функции, предварительно сохраненному в адресном пространстве программы. Для этого выясняется адрес необходимой функции, затем в памяти программы отводится место под код нового варианта функции и ее первоначального кода, который сохраняется для дальнейшего использования. Таким образом, когда пользовательская программа вызывает функцию API, например, NtQuerySystemInformation, вызов передается функции предобработки данных. Затем может быть вызвана исходная функция, которая, в свою очередь, вернет результаты функции постобработки. Функция постобработки модифицирует данные, которые вернула исходная функция, например, удаляя некоторые записи.
Процесс перехвата вызовов API изображен на Рис. 3.
Рис. 3. Процесс перехвата вызовов функции API.
Получается, что программы, которые будут использовать перехваченные вызовы API, получат информацию не о реальном положении дел в системе, а уже обработанные агентом данные. Hacker Defender перехватывает функции запуска новых процессов, что позволяет агенту передавать нужный код через новые программы, запускаемые пользователем.
FU также является известным программным агентом, исходный код которого опубликован 03.09.2004. FU состоит из двух компонент: драйвера Windows 2000/XP (msdirectx.sys) и собственно исполняемого файла (fu.exe). Если драйвер успешно установлен, то противнику необходимо просто запустить файл fu.exe на исполнение. Заметим, что при этом противнику вовсе не нужно обладать какими-либо особыми правами, в том числе и правом запуска приложений. Данная программа непосредственно манипулирует объектами ядра операционной системы. FU модифицирует список PsActiveProcessList, содержащий список активных процессов, информацию из которого получает ZwQuerySystemInformation. При этом процесс остается существовать в качестве "свободного" потока и будет нормально функционировать, поскольку распределение процессорного времени Windows основано на потоках, а не на процессах. FU позволяет нарушителю скрывать файлы, каталоги и процессы, а также изменять привилегии процесса, поднимая его до уровня администратора.
AFX Rootkit представляет собой программного агента, который функционирует на платформах Windows NT/2000/XP/2003. Текущая версия данной программы позволяет нарушителю скрывать процессы и их идентификаторы, файлы и директории, значения системного реестра, сервисы, сетевые соединения TCP/UDP, иконки в панели задач. При установке этого агента создается директория с уникальным именем, в которой противник сможет размещать необходимые ему данные, в том числе исполняемый файл (root.exe). Заметим, что данная директория абсолютно невидима для других процессов, однако все программы внутри директории не являются скрытыми друг от друга.
Невидимый агент может сделать другие файлы или процессы невидимыми. Более того, невидимый процесс может решить проблему построения невидимых коммуникаций между агентами противника в рамках одного компьютера.
Доказано, что если есть сеть автоматов, каждый из которых удовлетворяет условию невлияния, и коммуникации на уровне High невидимы для механизмов безопасности, тогда сеть автоматов также удовлетворяет условию невлияния.
скрытые каналы
Итак, мы описали, каким образом можно построить невидимый канал между агентами на уровне High компьютерной системы с одной операционной системой. Но распределенная система основана на сети, в которой уровень Low, как правило, находится под контролем системы безопасности. Например, можно использовать снифферы. Здесь нет канала на уровне High. Тогда невидимость канала между агентами противника, использующими уровень Low, означает, что агенты уровня High могут прятать информацию в легальных каналах уровня Low. Здесь возникают три проблемы. Первая — спрятать спуск информации с уровня High на уровень Low от механизмов защиты. Вторая — это преодоление механизмов защиты, предназначенных для уничтожения скрытых каналов. И третья проблема — способность агентов быть интеллектуальными и использовать стойкие методы стеганографии. Первая проблема может быть решена, так как организация встраивания информации уровня High в предложенных далее скрытых каналах возможна с помощью программно-аппаратных агентов в компьютерной среде. В самом деле, предположим, что функция организации скрытого канала для связи с внешней средой реализуется программно-аппаратным агентом. Тогда данный агент находится в конкретном компьютере под охраной другого агента, который делает его невидимым для средств защиты.
Показать, что функции построения скрытого канала доступны для программно-аппаратного агента, помогут примеры решения второй проблемы — преодоление механизмов защиты, предназначенных для уничтожения скрытых каналов.
Рассмотрим схему сети на рис. 4.
Рис. 4. Схема глобальной сети.
Пусть имеется m+1 сегментов локальных вычислительных сетей, S0, S1,...,Sm, в каждом из которых есть рабочие станции со своими локальными адресами и шлюзы, соединяющие локальные сети с глобальной сетью (например, Интернет). Пусть s0, s1, ..., sm — адреса шлюзов сегментов локальных вычислительных сетей S0, S1, ..., Sm, которые представляют эти сегменты в глобальной сети. Мы считаем, что для общения между собой рабочие станции различных сегментов используют виртуальную частную сеть (VPN), которая работает на основе протокола IPSec следующим образом. Пакет от рабочей станции с адресом a в сегменте Si должен быть передан на рабочую станцию с адресом b в сегменте Sj. Пакет передается так:
- от машины с адресом a к локальному шлюзу LG(i) в сегменте Si;
- далее пакет от LG(i) попадает на узел защиты G(i), в котором пакет шифруется и инкапсулируется в пакет (пакеты) с адресом отправителя Si и адресом получателя Sj, пакеты имеют одинаковую длину и другие одинаковые параметры;
- инкапсулированный пакет из G(i) попадает на хост глобальной сети PC(i), который направляет его через глобальную сеть на аналогичный хост PC(j);
- далее пакет направляется на узел защиты G(j), на выходе которого восстанавливается исходный пакет, посланный от a к b; этот пакет поступает на локальный шлюз LG (j);
- LG (j) отправляет пакет к абоненту b в сегменте Sj.
В глобальной сети и в каждом сегменте S0, S1 ,..., Sm имеются программно-аппаратные агенты противника, которые для выполнения враждебных функций должны получать инструкции от программно-аппаратного агента противника из глобальной сети (ПГС). Будем считать, что противник из глобальной сети через своих агентов полностью контролирует хосты PC(k), k = 0, 1, ..., m. Программно-аппаратные агенты внутри сегментов локальной сети S0, S1, ..., Sm контролируют соответственно компьютеры LG(j), j = 0, 1, ..., m. Мы считаем, что узлы защиты G(i) устроены так, что никто из злоумышленников не может их контролировать. Таким образом, управление программно-аппаратным агентом в любом из сегментов со стороны противника из глобальной сети связано с построением канала связи от PC(j) к LG(j). Утечка информации связана с построением канала от LG(j) к PC(j). Ни один из хостов глобальной сети не знает внутренние адреса сегментов. В силу того, что шифрование и формирование пакетов для отправки через глобальную сеть происходит на узлах защиты, противник не может построить канал взаимодействия с программно-аппаратным агентом сегмента, используя шифртекст или служебные атрибуты пакетов. Таким образом, мы предполагаем, что единственными зависимыми параметрами, известными на PC(j) и LG(j) для входного потока пакетов, являются адреса отправителя пакетов. При передаче пакетов от LG(j) к PC(j) единственными зависимыми параметрами являются адреса их получателей. Эта зависимость связывает внутренние адреса каждого сегмента и внешний адрес s соответствующего шлюза.
Скрытый канал, не требующий обучения, строится следующим образом. Возьмем часто встречающиеся адреса s1 и s2 из множества S = {s1, ..., sm}. Модулируем поток пакетов из PC(0) в G(0) следующим образом. Опишем, например, код для 1. При передаче 1 любой очередной пакет с исходящим адресом s1 передается после передачи нечетного числа пакетов с другими адресами. Поэтому все расстояния между пакетами с исходящими адресами s1 являются четными. Рассмотрим последовательность расстояний между исходящими адресами, полученными в LG(0). Все расстояния между адресами пакетов из сегмента S1 — четные (кроме ошибок вида потери или вставки пакета, которые мы считаем достаточно редкими). Агент в LG(0), обладая достаточными вычислительными ресурсами и памятью, считает четность или нечетность расстояний между повторяющимися адресами и выявляет отклонение четных расстояний от случайного распределения длин расстояний между повторяющимися адресами из S1. Аналогично, пакет с исходящим адресом s2 передается через нечетное число пакетов с другими адресами. Таким образом, преобладание четных расстояний между адресами из S1 и четных расстояний между адресами из S2 определяет 1 в коде.
Аналогично строится код для передачи 0 и x, означающий конец передачи кода 1 или 0.
Пропускная способность данного канала однозначно связана с другим параметром, связанным с данным способом скрытой передачи информации. Это число N переданных пакетов для восстановления одного бита переданной информации. Полученные асимптотические оценки показывают, что вероятность правильно принять сигнал 1 или 0 или x агентом в LG(0) стремится к 1 при N стремящемся к бесконечности.
Пусть адреса упорядочены s1 < s2 < ... < sm. Рассмотрим другой метод общения агентов. Этот метод требует обучения. Процедура обучения необходима для того, чтобы максимально полно восстановить на LG(0) порядок.
Процедура обучения состоит в следующем. РС(0) получив очередные k пакетов с адресами si1, si2, ..., sik, упорядочивает их в соответствии с возрастанием и посылает данные пакеты на узел защиты для последующей передачи LG(0). Мы доказали, что LG(0) в реальном масштабе времени может проводить сопоставление полученных данных и восстанавливать порядок. Тогда можно передавать информацию упорядоченными k-группами адресов, переставляя их на РС(0) в нужном порядке.
Возможны и другие каналы преодоления IPSec, но они более уязвимы к уничтожению. Например, можно модулировать передачу длинами пакетов, если IPSec не производит выравнивания длин пакетов.
Рассмотрим скрытые каналы, преодолевающие proxy-серверы.
Прежде, чем подробно объяснить механизмы преодоления защиты, опишем общую идею. proxy-сервер, в отличие от IPSec, устанавливает ТСР-соединения с непосредственно связанными с ним абонентами. При этом данные, передаваемые пакетами, собираются на proxy-сервере, а затем передаются при образовании ТСР-соединения с таким же сервером на приемном конце. Сложность преодоления надежно защищенного proxy-сервера состоит в том, что враждебный агент может манипулировать или наблюдать манипуляции с пакетами, а не с данными. Однако в основе преодоления proxy-сервера лежит простая идея управления порядком данных с помощью задержек пакетов, передающих эти данные. Более подробно рассмотрим следующую модель. Пусть, как и раньше, имеется m+1 сегментов локальных вычислительных сетей S0, S1, ..., Sm, в каждом из которых имеются рабочие станции со своими локальными адресами и шлюзы, используемые для соединения локальных сетей с глобальной сетью (например, Интернет). Пусть s0< s1 <...< sm упорядоченные адреса шлюзов сегментов локальных вычислительных сетей S0, S1, ..., Sm, представляющих эти сегменты в глобальной сети. Мы считаем, что для общения между собой рабочие станции различных сегментов используют виртуальную частную сеть (VPN), которая работает следующим образом. Данные от рабочей станции с адресом a в сегменте Si должны быть переданы на рабочую станцию с адресом b в сегменте Sj. Схема связи изображена на рис. 4, а связь организуется следующим образом.
. От машины с адресом a пакеты с передаваемыми данными, посылаются к внутреннему шлюзу — машине LG(i) в сегменте Si.
. Далее пакеты попадают на шлюз — узел защиты G(i). Он работает как proxy-сервер, который устанавливает соединение с машиной с адресом а и восстанавливает данные, передаваемые от рабочей станции с адресом а на рабочую станцию с адресом b. Восстановленные данные, поступающие на proxy-сервер от абонентов сегмента Si, выстраиваются в очередь в соответствии с порядком их восстановления на proxy-сервере. Далее proxy- сервер шифрует данные в очереди на ключе получателя — proxy-сервера G(j), в сегменте которого находится получатель данных. После этого G(i) устанавливает соединение с G(j) и передает туда пакеты, содержащие зашифрованные данные.
. Пакет из G(i) попадает на хост глобальной сети PC(i), который направляет его через глобальную сеть на аналогичный хост PC(j).
. Далее пакет направляется на узел защиты G(j), где восстанавливаются и выстраиваются в очередь данные, передаваемые на Sj. При подходе соответствующих данных в этой очереди proxy-сервер УЗ(j) расшифровывает их и устанавливает соединение в сегменте Sj с рабочей станцией с адресом b. Данные передаются пакетами через внутренний шлюз LG(j).
. LG(j) отправляет пакеты к абоненту b в сегменте Sj.
Как и раньше, в глобальной сети и в каждом сегменте S0, S1, ..., Sm имеются программно-аппаратные агенты противника, которые для выполнения своих враждебных функций должны получать инструкции от программно-аппаратного агента противника из глобальной сети (ПГС). Будем считать, что ПГС полностью контролирует компьютеры PC(j), j = 0, 1, ..., m. Программно-аппаратные агенты противника внутри сегментов локальной сети S0, S1, ..., Sm контролируют соответственно компьютеры соответственно LG(j), j = 0, 1, ..., m. Мы считаем, что узлы защиты G(i) сделаны правильно так, что никто из противников не может их контролировать. Таким образом, управление программно-аппаратным агентом в любом из сегментов со стороны противника из глобальной сети связано с построением канала связи от PC(j) к LG(j). Утечка информации связана с построением канала от LG(j) к PC(j).
Как и раньше мы предполагаем, что единственными зависимыми параметрами, известными на PC(j) и LG(j) для входного потока пакетов, являются адреса отправителя пакетов. При передаче пакетов от LG(j) к PC(j) единственными зависимыми параметрами являются адреса получателей пакетов. Эта зависимость выражается в связи множества внутренних адресов каждого сегмента и внешнего адреса s соответствующего шлюза и считается в данной задаче известной.
LG(i) может влиять на порядок очереди отправляемых данных следующим образом. Протокол ТСР гарантирует восстановление данных. Если какой-то пакет не получен, то протокол ТСР передает запрос на получение пропущенных данных. Пусть на proxy-сервере установлено два соединения с абонентами сегмента а1 и а2, которые передают данные А1 и А2 соответственно на proxy-сервер G(i). Естественно, что те данные, которые восстановлены первыми, будут первыми поставлены в очередь на передачу в глобальную сеть. Пусть агент в LG(i) хочет, чтобы последовательность данных в очереди на отправку была: А1 А2. Если пакеты, передающие А1, заканчиваются быстрее, чем пакеты, передающие А2 (агент наблюдает поток пакетов и может осуществлять их задержку, чтобы убедиться в том, что передача данных закончена), то агент не предпринимает никаких действий. Если пакеты, передающие А2, заканчиваются быстрее, чем пакеты, передающие А1, то агент на LG(i) задерживает или уничтожает один из пакетов (например, последний) из серии пакетов, передаваемых от а2. После этого он выжидает, когда закончится поток пакетов, передающих файл А1, и посылает последний пакет с данными А2. Тогда, если верно его предположение о том, что серия пакетов от а1 одному абоненту в другом сегменте содержала данные одного соединения А1, а аналогичная серия от а2 одному абоненту в другом сегменте содержала данные другого соединения А2, то указанная процедура поменяет естественный порядок данных в очереди на G(i) на требуемый порядок данных. Разумеется, такая же процедура перестановки на узле G(j) возможна и на потоке входящих данных с помощью агента на PC(j). Отметим, что указанная процедура носит вероятностный характер. Ясно, что вероятность правильной перестановки увеличивается для больших серий пакетов, передаваемых при отправке больших файлов.
Несмотря на возможность ошибки, можно построить язык скрытой передачи данных, использующий данный алгоритм перестановки данных в очереди. Пусть агент в LG(0) передает информацию агенту в РС(0) в глобальной сети. Тогда агент в LG(0) знает, какие данные идут на адрес получателя sj, j = 1, ..., m, серверов G(j). С помощью алгоритма перестановки данных в очереди агент в LG(0) упорядочивает очередные пары пришедших данных. Блоки полученной последовательности данных разбиваются на пакеты. Серии этих пакетов передаются по соответствующим адресам. В серии пакетов могут вкрапливаться отдельные пакеты, связанные, например, с установлением других соединений. Поэтому агент в РС(0) не должен учитывать эти вкрапления. Полученные таким образом серии однозначно соответствуют переданной единице. Передача нуля осуществляется последовательностью непересекающихся монотонно убывающих пар адресов. Последовательность с непересекающимися чередующимися возрастающими и убывающими парами адресов однозначно определяет символ х, соответствующий разделительному символу. При этом мы предполагаем, что proxy-сервер последовательно устанавливает соединения с другими proxy-серверами в соответствии с получившейся в буфере очередью данных. При этом данные, передаваемые по одному адресу, передаются в одном соединении.
В связи с описанными скрытыми каналами решена задача оценки r для устойчивого выделения 1, 0 и х, а также устойчивости передачи к сбоям. В модели потока, создаваемого протоколом ТСР, для создания скрытого канала могут быть использованы задержки подтверждения. Отправив один или несколько пакетов с данными, узел ожидает подтверждения их получения, и лишь затем продолжает передачу. Число пакетов, которые могут быть переданы подряд без ожидания подтверждения, определяется размером "окна" принимающей стороны (этот параметр используется для управления скоростью передачи и задает объем данных, которые получатель способен принять, не прерывая передачу. Таким образом, в Интернете задержки между пакетами, отправленными подряд, определяются параметрами канала передачи пакетов.
Задержки же между пакетами, перед отправкой которых узел ожидал подтверждения поставки предыдущих пакетов, в большей степени определяются скоростью обработки пакетов узлами, а также особенностями протокола уровня приложений (задержка отправки пакетов может быть вызвана ожиданием какого-либо события приложением). Поэтому возможна манипуляция ПГС задержками подтверждений, которая может быть использована в статистическом скрытом канале низкой пропускной способности.
Для построения скрытого канала возможно использование модуляции скорости передачи информации через Интернет. Как и в предыдущем случае, такой скрытый канал преодолевает IPSec.
В связи с тем, что пропускная способность каналов Интернет не безгранична, а число пользователей сети неуклонно растет, поставщиками услуг Интернета повсеместно применяются ограничения пропускной способности предоставляемых пользователям каналов связи. Поскольку при этом обычно абонент соединен с оператором скоростной линией связи (например, локальной сетью), ограничение скорости передачи производится искусственно, программными средствами шлюза. Как правило, алгоритм ограничения скорости основан на следующей схеме: поступающие по "быстрому" каналу на шлюз пакеты помещаются в буфер, а затем постепенно отправляются по "медленному" каналу. При этом фактически пропускная способность "медленного" канала может быть выше заданного ограничения. Задержки при отправке пакетов, помещенных в буфер, выбираются таким образом, чтобы средняя скорость передачи соответствовала установленным ограничениям.
Чаще всего наибольшая нагрузка на канал связи возникает при последовательной передаче больших объемов данных. При этом для ускорения передачи протокол ТСР формирует пакеты определенной длины (как правило, 1500 байт) и полностью использует приемное "окно" получателя. В потоке возникают серии пакетов, отправленных с минимальными (для физического канала) интервалами. После обработки алгоритмом ограничения скорости эти интервалы увеличиваются для обеспечения заданной средней скорости. Изменение скорости передачи происходит за счет манипуляции интервалами между пакетами. Тогда шлюз, через который проходят пакеты, имеет возможность встраивать в поток пакетов скрытую информацию с помощью манипуляции скоростями. Для того чтобы интервалы между пакетами, определяющие скорость передачи, не изменились на маршруте от данного шлюза до получателя, серия пакетов не должна полностью помещаться в буфер ни на одном из шлюзов на этом маршруте. В противном случае скрытая информация, содержащаяся в потоке, окажется искаженной.
Во избежание искажения интервалов для прохождения медленного канала при модуляции необходимо выбирать интервалы таким образом, чтобы они были не короче интервалов, соответствующих самому медленному каналу на маршруте. Оценка скорости самого медленного канала может быть произведена путем измерения средней скорости передачи.
Опишем способ скрытой передачи информации агенту, контролирующему единую точку входа.
Рассмотрим схему аутентификации пользователя, обращающегося по протоколу LDAP на сервер директорий. Предположим, что там есть программно- аппаратный агент нарушителя безопасности, который знает, как работает справочная служба, но не имеет предметно-ориентированной информации и знаний по использованию своих возможностей. Можем считать, что потенциал такого агента сравним с возможностями администратора сервера в том случае, если он обладает предметно-ориентированной информацией и имеет конкретное задание по администрированию информации на сервере. Пусть сервер аутентификации обслуживает большую распределенную сеть с большим числом пользователей и разграниченными правами доступа к ресурсам системы. Для того чтобы войти в сеть и получить права доступа к определенным ресурсам, пользователь посылает на сервер аутентификации пароль, передается по транспортной сети в шифрованном виде, причем система шифрования не зависит от идентификатора пользователя. Пусть нарушитель безопасности является легальным пользователем систем. Он может подключиться к сети на своем компьютере в случае успешной аутентификации на сервере и хочет получить доступ к запрещенным для него ресурсам системы. Права доступа к ресурсам для любого пользователя записаны в дереве директорий сервера аутентификации. Если злоумышленник пытается получить доступ к запрещенным для него ресурсам, это отражается в данных аудита. Для решения задач нарушителя безопасности самым простым способом является передача специального пароля, известного его программно-аппаратному агенту на сервере аутентификации, с запросом необходимых для него запрещенных прав к ресурсам системы. В этом случае программно-аппаратный агент дает права пользователю на требуемые ресурсы и может очистить данные аудита на сервере идентификации/аутентификации. Однако, имея распределенную систему аудита, доступ к запрещенной для этого пользователя информации будет отражен в других системах аудита, например, в данных аудита СУБД. При правильно работающей системе анализа данных аудита служба безопасности получит информацию о том, что данный пользователь с данной рабочей станции получил ценную информацию. Поэтому, войдя на рабочую станцию от своего имени, нарушитель безопасности должен обращаться со специальным паролем к агенту на сервере аутентификации, называя вымышленный идентификатор, то есть от чужого имени.
Таким образом, приходим к задаче создания в системе с помощью программно-аппаратного агента на сервере аутентификации ложного пользователя с большими правами по доступу к ресурсам системы. При наличии специального пароля, известного программно-аппаратному агенту, эта задача легко решается. Чтобы предотвратить такую угрозу, между системой приема сообщений от пользователя и сервером аутентификации установим узел защиты, который шифрует истинные значения идентификаторов и паролей. Пусть в дереве директорий в качестве имен используются шифртексты идентификаторов. Тогда программно-аппаратный агент не сможет получить специальный пароль от нарушителя безопасности и приписать ему особые права.
Однако эта защита может быть преодолена следующим образом. Нарушитель безопасности посылает любой настоящий идентификатор и случайный пароль к нему. После шифрования на узле защиты в дереве пользователей идентифицируется некоторый пользователь по присланному идентификатору. Естественно, присланный пароль этого пользователя отличается от истинного пароля. Выявляя этот факт, программно-аппаратный агент принимает решение о создании нового пользователя, который является листом в дереве директории для истинного пользователя, а его идентификатор соответствует присланному паролю, зашифрованному узлом защиты. После этого он посылает на компьютер нарушителя безопасности сигнал о неправильной аутентификации полученного идентификатора пользователя. Получив этот сигнал, нарушитель безопасности посылает на сервер аутентификации идентификатор, в котором присутствует выбранное до того имя легального пользователя, дополненное переданным ранее паролем. Для данного пользователя он выдумывает специальный пароль и передает его для аутентификации ложного пользователя. Агент нарушителя находит имя ложного пользователя, созданного им на предыдущем шаге, и в качестве аутентификатора записывает шифртекст переданного пароля. Затем он посылает сигнал о правильной аутентификации, приписывает данному пользователю максимальные права, стирает данные аудита о создании нового пользователя и о присвоении ему прав, временно заканчивает свое функционирование и маскирует свое присутствие.
Потом в системе появляется ложный пользователь с большими правами. Доступ происходит по легальной процедуре идентификации и аутентификации с любой машины сети. Ложный пользователь может существовать столько времени, сколько потребуется службе безопасности на выяснение по другим данным аудита или определение по другим косвенным данным наличия в сети дополнительного получателя ценной информации. В случае контроля директории ложный пользователь может быть обнаружен в дереве директорий и уничтожен. Тогда процедура создания нового ложного пользователя должна повториться.
В случае ошибки, когда ложный пользователь создается случайно (входящий пользователь неправильно называет свой пароль), доступ к этому пользователю никто не будет иметь, и он останется незаметным. Если процедура образования ложного пользователя не завершена, агент через некоторое время его уничтожит.
Интеллектуальный программно-аппаратный агент нарушителя на сервере аутентификации может быть настроен на получение инструкций через скрытый канал. Допустим, нарушителем безопасности является группа k легальных пользователей системы, которые знают фиксированное число m, известное также программно-аппаратному агенту. Нарушители безопасности инициируют вход в систему и выход из нее так, чтобы иметь возможность первыми из пользователей за ограниченное время набрать по m вхождений в систему.
Пусть агент обладает достаточными вычислительными возможностями для оценки промежутка времени, необходимого для m вхождений в систему любых других пользователей. Если это время не превосходит заданного порога, то агент выделяет данную группу пользователей как своего союзника. После m вхождений и выходов из системы группа нарушителей продолжает работать в обычном режиме и при этом начинается выработка языка общения агента с группой нарушителей. Если в заданном промежутке группа нарушителей вошла в систему ровно один раз, то их перестановке (порядки появления на сервере) соответствует двоичный вектор длины k. Этот вектор передается агентом к членам группы нарушителей в форме ответов о правильной или неправильной аутентификации. Достаточно сделать первую посылку вектора из всех 0 в ответ на заведомо ложные пароли, так как все двоичные вектора можно считать лексикографически упорядоченными. Тогда 2k перестановок порядка вхождения в систему данной группы воссоздадут у агента и членов группы нарушителей код, который можно использовать при дальнейшем общении агента и группы нарушителей. Любая другая комбинация вхождений в систему уже не будет считаться у агента значимой.
Рассмотрим скрытый канал через Интернет с помощью HTML. В данном случае речь пойдет о задаче построения скрытого канала между далеко расположенными корреспондентами.
Пусть пользователь А хочет передать короткое сообщение пользователю B через Интернет. Предположим, что пользователь А имеет доступ к браузеру, а пользователь B имеет доступ к аудиту обращений на некоторую страницу Интернет. Все обращения пользователя А к информационным ресурсам Сети отслеживаются контролером U. Задача состоит в том, чтобы построить скрытый от U канал передачи информации от пользователя А к пользователю B. В литературе описано множество скрытых каналов для решения этой задачи. Однако доказать стойкость сокрытия факта передачи от контролера U эти методы не позволяют. Предлагаемый здесь метод позволяет доказывать такую стойкость для небольших сообщений. Однако ограниченные рамки статьи не позволяют привести это доказательство.
Изложим содержание метода. С помощью последовательности гипертекстовых ссылок пользователь А попадает на сайт, к которому имеет доступ абонент В, и выбирает оговоренный секретным ключом документ. Пусть R1, ..., RN — последовательность возможных гипертекстовых ссылок в этом документе. Тогда скрытое сообщение от пользователя А к пользователю В можно закодировать перестановкой вызовов этих гиперссылок Rj1, ..., RjN. Перестановка определяется с помощью вызовов и меток времени, находящихся в журнале аудита.
Если B1, ..., BN сайты, в которых абонент В может получить доступ к данным аудита, то перестановками Bi1, ..., BiN можно кодировать допустимые сообщения.
Пусть вместо пользователя В на сервере находится программно-аппаратный агент В1, связанный с пользователем В, который отслеживает порядок вызова гиперссылок в определенном тексте. Тогда построенная этим агентом перестановка может быть передана пользователю В, который может находиться где угодно и может общаться со своим агентом с помощью произвольного скрытого канала. Такое взаимодействие возможно с помощью протокола HTTP. Маршрут передачи информации может быть еще более сложным для создания неотслеживаемости взаимодействия пользователей А и В.
Возникает вопрос о способе кодирования сообщения с помощью перестановок. Один из вариантов кодирования можно построить следующим образом. Рассматривая некоторую нумерацию перестановок, относим номеру данной перестановки двоичное представление этого номера. Тогда сообщение можно писать на любом доступном языке, используя для его кодирования двоичные векторы. Использование данного метода ограничено вычислительными возможностями при нумерации перестановок. Приведем некоторые значения числа перестановок, показывающие возможности кодирования сообщений для различных N: 5! = 120, а 10! = 3628800.
распределенные атаки с помощью вмас
Чтобы осуществить распределенную атаку, должна быть построена невидимая сеть агентов. В предыдущих разделах мы обсуждали, каким образом это можно сделать. На всех шагах распределенной атаки ВМАС должна быть интеллектуальной.
Для моделирования интеллектуальных свойств ВМАС мы использовали результаты исследований по Open Agent Architecture. Пусть существует три класса агентов в ВМАС. Первый класс состоит из агентов-посредников. Второй класс включает в себя мета-агентов. Третий класс составляют агенты интерфейса с внешними сетями.
Агент-посредник представляет собой специализированного служебного агента, который отвечает за координацию взаимодействия агентов, их связь и кооперацию, а также за невидимость мета-агентов, связанных с ним. Невидимость агентов-посредников может быть реализована методами, описанными в соответствующем разделе выше. В некоторых случаях посредник обеспечивает хранение данных для других типов агентов, то есть предоставляет им функции blackboard для их взаимодействия. Посредники должны быть связаны между собой в некоторый кластер. В частном случае это может быть иерархическая структура.
Предположим, что посредники могут взаимодействовать друг с другом в определенной последовательности. Если мета-агент А выполняет план Р и ему необходим сервис S, то он обращается к агенту-посреднику F за сервисом. Агент-посредник F посылает сообщение другим агентам-посредникам о необходимости сервиса S. Каждый агент-посредник F' делает запрос своим мета-агентам на сервис S. Если F' получает отказ, то он передает запрос F на сервис S следующему агенту-посреднику F'' и т.д. Если F' получает положительный ответ от одного из своих мета-агентов, то он передает этот положительный ответ F. Пропускная способность такого канала может быть низкой, но первый шаг атаки не нуждается в скорости. Все мета-агенты связаны между собой через агентов-посредников. Каждый мета-агент имеет своего агента-посредника для взаимодействия в ВМАС. Мета-агенты исполняют роль ассистентов посредников при координации деятельности всех агентов. Мета-агенты могут быть сделаны невидимыми с помощью своих агентов- посредников. Агент-посредник и мета-агент могут играть роль man-in-the-middle в легальном протоколе. Это путь контроля и модификации любого легального протокола внутри одного компьютера.
Агенты-посредники и агенты интерфейса играют роль man-in-the-middle в легальных протоколах связи. Основная проблема здесь — сделать их быстро работающими. Агенты интерфейса могут связываться друг с другом с помощью скрытых каналов, если они находятся в различных сегментах сети под охраной своих агентов-посредников.
Мета-агенты могут создаваться и могут уничтожаться. Коды агентов могут передаваться через агентов-посредников или агентов интерфейса. Рассмотрим, каким образом ВМАС работает в распределенной атаке.
Мета-агенты используют методы распознавания для сканирования окружающей среды. Они находят точки для модификации информации и для выстраивания man-in-the-middle. Мета-агенты могут иметь информацию о выполнении атаки или могут ее не иметь. В последнем случае они должны найти сервис в форме, содержащей план, что делать дальше. План атаки может передаваться по сети.
Когда каждый агент, являющийся участником атаки, имеет свой план, тогда первый шаг атаки закончен. Низкая пропускная способность скрытых каналов определяет слабую синхронизацию распределенной атаки. Поэтому агент противника проходит активную фазу атаки почти автономно.
Если распределенная система разрушается, то это приводит к ущербу, но в таком случае и ВМАС также разрушается. После восстановления распределенной системы ВМАС должна создаваться с самого начала. Поэтому противник должен предпочесть нанесение ущерба с помощью ошибочных вычислений или Византийского поведения.
Рассмотрим пример. На первом шаге ВМАС находит точки доставки данных приложениям. Тогда мета-агенты готовят планы модификации входных или выходных данных для выбранных приложений. Планы могут также содержать генератор случайных чисел для выбора момента модификации данных. Реализация атаки состоит в случайной модификации входных или выходных данных с помощью "невидимого" агента противника. Распределенная система делает ошибки, но все тесты приложений и связи не находят сбоев. Медленное изменение интенсивности ошибок может привести к разрушению отдельных приложений.
заключение
Безопасность определяется знанием возможных атак. Наиболее опасные атаки на распределенные системы — это распределенные атаки. Такие атаки могут осуществляться враждебными многоагентными системами. ВМАС может быть невидимой и интеллектуальной. Координация агентов в ВМАС также может быть невидимой и осуществляться с помощью скрытых каналов.
Эти условия могут удовлетворяться с помощью реализации модели невлияния, скрытых каналов и соответствующей организацией агентов противника.
А.А. Грушо, доктор физико-математических наук.
Сетевые решения. Статья была опубликована в номере 05 за 2006 год в рубрике технологии