Прячем трафик: техника сокрытия IP-трафика с помощью секретных пассивных каналов. Скрытые каналы

02.08.2019

О каналах скрытых, потайных, побочных. И не только. (Часть 1-я)

В.А. Галатенко

О скрытых каналах

Издание Jet Info не первый раз обращается к теме скрытых каналов. В 2002 году ей был посвящен отдельный номер (см. , ), так что в данной работе предполагается, что читатель знаком с основами этой области знания; в противном случается рекомендуется перечесть статью (например, здесь - прим. ред. CITForum.ru). Тем не менее, автор с самого начала хотел бы заметить, что тематика скрытых каналов в ее традиционной трактовке представляется ему несколько надуманной, формальной. Пик исследований в области скрытых каналов приходится на середину 1980-х годов, когда была опубликована "Оранжевая книга" Министерства обороны США, в которой, начиная с класса безопасности B2, было введено требование анализа скрытых каналов. В результате бороться со скрытыми каналами стали, в основном, не ради реальной безопасности, а ради успешной сертификации. Кроме того, скрытые каналы из-за, в общем-то, случайной ассоциации с классами B2 и выше исследовались почти исключительно в контексте многоуровневой политики безопасности, с обязательным упоминанием субъектов HIGH и LOW, моделями невлияния и прочими премудростями. Все это бесконечно далеко от реальных проблем типичных современных информационных систем, да и публикуемые результаты по большей части носят очевидный характер и не представляют ни теоретического, ни, тем более, практического интереса. В статье объяснены концептуальные причины подобного положения дел.

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

В середине 1980-х годов была предложена систематическая методология выявления скрытых каналов по памяти (см. ), ключевым элементом которой является матрица разделяемых ресурсов. В сетевой среде, в Интернет, легальных разделяемых ресурсов сколько угодно - например, выделяемое пользователям пространство на общедоступных сайтах. Можно воспользоваться и полями заголовков IP-пакетов (скажем, контрольная сумма - превосходный кандидат на эту роль), и начальными порядковыми номерами при установке TCP-взаимодействия (см. ). Можно организовать и практичные скрытые каналы по времени, например, кодируя единицу отправкой пакета в определенный интервал времени, составляющий миллисекунды (см. ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дефекты, внесенные непреднамеренно, делятся на:

    ошибки проверки правильности данных (ошибки адресации, в том числе переполнение буферов, некачественные проверки значений параметров, неверное размещение проверок, неадекватная идентификация/аутентификация);

    ошибки абстракции (повторное использование объектов, раскрытие внутреннего представления);

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

    ненадлежащее использование подкомпонентов (утечка ресурсов, непонимание распределения ответственности);

    ошибки функциональности (дефекты обработки исключительных ситуаций, прочие дефекты безопасности).

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

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

О потайных каналах

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

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

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

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

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

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

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

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

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

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

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

О побочных каналах

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

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

Объектами атак с использованием побочных каналов чаще всего становятся криптографические компоненты информационных систем, точнее, их секретные ключи. Например, в статье описана атака разбиением на SIM-карты сотовых телефонов (точнее, на алгоритм COMP128, применяемый для аутентификации пользователей и выработки сеансовых ключей), проводимая путем измерения энергопотребления с целью клонирования этих карт. Атаку удалось отточить до такой степени, что для определения секретного 128-битного ключа оказывается достаточно всего восьми измерений с адаптивно выбираемыми входными данными! То есть злоумышленнику достаточно получить SIM-карту буквально на минуту.

Весьма наглядно опасность атак, основанных на дифференциальном анализе энергопотребления, проиллюстрирована в статье . В 1998 году Брюс Шнейер писал, что в галактике не хватит кремния, а у Солнца - времени жизни для реализации атаки методом грубой силы на секретный ключ (112 бит) алгоритма 3DES. Минимальная длина ключа в алгоритме AES - 128 бит, но успешная атака методом дифференциального анализа энергопотребления на незащищенную микросхему, реализующую AES, может быть проведена менее чем за три минуты - от начала измерений до завершения анализа.

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

Литература

Е.Е. Тимонина -- Скрытые каналы (обзор). -- Jet Info, 2002, 11

А. Галатенко -- О скрытых каналах и не только. -- Jet Info, 2002, 11

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

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

S. Cabuk , C.E. Brodley , C. Shields -- IP Covert Timing Channels: Design and Detection. - Proceedings of the CCS"04. -- ACM, 2004

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

В.Б. Бетелин, С.Г. Бобков, В.А. Галатенко, А.Н. Годунов, А.И. Грюнталь, А.Г. Кушниренко, П.Н. Осипенко -- Анализ тенденций развития аппаратно-программного обеспечения и их влияния на информационную безопасность. - Сб. статей под ред. академика РАН В.Б. Бетелина. -- М.: НИИСИ РАН, 2004

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

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

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

Y. Zhu , R. Sivakumar -- Challenges: Communication through Silence in Wireless Sensor Networks. - Proceedings of the MobiCom"05. -- ACM, 2005

R. Browne -- An Entropy Conservation Law for Testing the Completeness of Covert Channel Analysis. - Proceedings of the CCS"94. -- ACM, 1994

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

J.C. Wray -- An Analysis of Covert Timing Channels. -- IEEE, 1991

В.Б. Бетелин, В.А. Галатенко, М.Т. Кобзарь, А.А. Сидак, И.А. Трифаленков -- Обзор профилей защиты, построенных на основе "Общих критериев". Специфические требования к сервисам безопасности. -- "Безопасность информационных технологий", 2003, 3

K. Loepere -- Resolving Covert Channels withing a B2 Class Secure System. -- Honeywell Information Systems.

J.J. Harmsen , W.A. Pearlman -- Capacity of Steganographic Channels. - Proceedings of the MM-SEC"05. -- ACM, 2005

I.S. Moskowitz , L. Chang , R. Newman -- Capacity is the Wrong Paradigm. - Proceedings of the 2002 Workshop on New Security Paradigms. -- ACM, 2002

M. Bauer -- New Covert Channels in HTTP. Adding Unwitting Web Browsers to Anonymity Sets. - Proceedings of the WPES"03. -- ACM, 2003

K. Borders , A. Prakash -- Web Tap: Detecting Covert Web Traffic. - Proceedings of the CCS"04. -- ACM, 2004

D. Slater -- A note on the Relationship Between Covert Channels and Application Verification. -- Computer Sciences Corporation, 2005

K. Tiri , I. Verbauwhede -- Simulation Models for Side-Channel Information Leaks. - Proceedings of the DAC 2005. -- ACM, 2005

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

R. Muresan , C. Gebotys -- Current Flattening in Software nad Hardware for Security Applications. - Proceedings of the CODES+ISSS"04. -- ACM, 2004

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

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

T. Pedireddy , J.M. Vidal -- A Prototype MultiAgent Network Security System. - Proceedings of the AAMAS"03. -- ACM, 2003

R. Menezes -- Self-Organization and Computer Security. - Proceedings of the 2005 ACM Symposium on Applied Computing (SAC"05). -- ACM, 2005

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

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

J. Ameiller , S. Robles , J.A. Ortega-Ruiz -- Self-Protected Mobile Agents. - Proceedings of the AAMAS"04. -- ACM, 2004

M. Christodorescu , S. Jha -- Testing Malware Detectors. - Proceedings of the ISSTA"04. -- ACM, 2004

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

J.A.M. McHugh , F.P. Deek -- An Incentive System for Reducing Malware Attacks. -- Communications of the ACM, 2005, 6

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

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

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

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

A. Goel , K. Po , K. Farhadi , Z. Li , E. de Lara -- The Taser Intrusion Recovery System. - Proceedings of the SOSP"05. -- ACM, 2005

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

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

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

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

S. Ring , D. Esler , E. Cole -- Self-Healing Mechanisms for Kernel System Compromises. - Proceedings of the WOSS"04. -- ACM, 2004

M. Laureano , C. Maziero , E. Jamhour -- Intrusion Detection in Virtual Machine Environments. - Proceedings of the 30th EUROMICRO Conference (EUROMICRO"04). -- IEEE, 2004

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

S. Ring , E. Cole -- Taking a Lesson from Stealthy Rootkits. -- IEEE Security & Privacy, 2004, July/August

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

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

В первую очередь нужно определить что такое стеганография. Так вот, стеганография - это наука о скрытой передаче сообщений. То есть используя ее методы стороны пытаются скрыть сам факт передачи . В этом и состоит отличие этой науки от криптографии, которая пытается сделать недоступным для прочтения содержание сообщения . Стоит отметить, что профессиональное сообщество криптографов достаточно презрительно относится к стеганографии в силу близости ее идеологии к принципу «Security through obscurity» (не знаю как это правильно звучит по-русски, что-то вроде «Безопасность через незнание»). Этим принципом, к примеру, пользуются в компании Skype Inc. - исходный код популярной звонилки закрыт и никто толком не знает как именно осуществляется шифрование данных. Недавно, кстати, об этом сетовали в NSA, о чем известный специалист Брюс Шнайер написал у себя в блоге.

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

Тут мы вплотную подошли к Transmission Control Protocol (TCP). Объяснять все его детали, разумеетется, не имеет смысла - длинно, скучно, те кому надо и так знают. Вкратце же можно сказать, что TCP - это протокол транспортного уровня (т.е. работает «над» IP и «под» протоколами уровня приложений, к примеру HTTP, FTP или SMTP), который обеспечивает надежную доставку данных от отправителя к получателю. Надежная доставка означает, что если какой-то пакет потерялся или пришел с изменениями, то TCP позаботится о том, чтобы переслать этот пакет. Отметим, что под изменениями в пакете тут подразумевается не умышленное искажение данных, а ошибки в передаче возникающие на физическом уровне. К примеру, пока пакет шел по медным проводам пару бит поменяли свое значение на противоположное или вообще затерялись среди шума (кстати для Ethernet значение Bit Error Rate обычно принимают равным порядка 10 -8). Потеря пакетов в пути также относительно частое явление в интернете. Происходить она может, к примеру, из-за загруженности маршрутизаторов, которая приводит к переполнения буферов и как следствие отбросу всех вновь прибывающих пакетов. Обычно доля потерянных пакетов составляет около 0.1%, а при значении в пару процентов TCP вообще перестает нормально работать - у пользователя все будет жутко тормозить.

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

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

Введение

Попытки скрыть сам факт передачи информации имеют длинную историю. Способы сокрытия самого факта передачи информации получили название стеганография. Исторически для стеганографии применялись "невидимые" чернила, точечные фотовставки и т.д. Данное направление получило вторую жизнь в наше время в связи с широким использованием сетей передачи данных. Чтобы выделить методы стеганографии, связанные с электронным представлением данных, появился термин компьютерная стеганография. Однако в работе Шнайера стеганографические способы передачи по каналам связи получили название потайных каналов (subliminal channels). Наряду с этим появился термин "скрытый канал" (covert channel). Впервые понятие скрытого канала было введено в работе Лэмпсона в 1973 году. Канал называется скрытым, если он не проектировался, не предполагался для передачи информации в электронной системе обработки данных. Таким образом, термин скрытые каналы больше относится к внутрикомпьютерным телекоммуникациям. В работе Тсаи дано следующее определение скрытого канала. Если нам дана модель не дискреционной политики безопасности М и ее имплементация I(M) в операционной системе, то любая потенциальная связь между двумя субъектамиI(Sh) и I(Si) в I(M) называется скрытым каналом, если эта связь между субъектами Sh и Si в модели M не разрешена.
Поскольку все приведенные выше термины, касающиеся скрытой передачи информации, отличаются нюансами приложений, мы будем без ограничения общности способы скрытой передачи информации называть скрытыми каналами. Возвращаться к исходным терминам мы будем в тех особых случаях, когда выделение соответствующих каналов вытекает из контекста.

информационный поток

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

пример 1
Например, документ D записан в файл О пользователем U1, а пользователь U2 прочитал документ D в файле О. Таким образом информация, содержащаяся в документе D, перешла от пользователя U1 к пользователю U2 с помощью двух информационных потоков:
·U1 организовал информационный поток от себя к О с помощью операции write;
·U2 организовал информационный поток от О к себе с помощью операции read.
Более привычное определение информационного потока вводится через среднюю взаимную информацию. Объект О в информационной системе представляет собой конечное множество допустимых записей в данном языке, а состоянием объекта О является конкретная запись из этого конечного множества, которая находится в информационной системе в данный момент времени с именем О. Пусть X и Y два объекта в информационной системе и предположим, что в данный момент времени состояния объектов X и Y определяются совместным распределением вероятностей P(x, y) на конечном множестве пар

Обозначим


и аналогично


Средней взаимной информацией объектов Х и Y называется величина


Определение. Информационный поток между объектами Х и Y существует, если средняя взаимная информация I(X,Y)>0.
Можно доказать, что существование информационного потока эквивалентно условию, что существует пара (x,y) такая, что


Ясно, что если существует информационный поток от Х к Y, то существует такой же информационный поток от Y к Х.

пример 2
Пусть файл О1 является копией файла О2. Тогда P(x,y)=0при x не равном y. Если вероятность состояния х объекта О1 не равна 0, и вероятность состояния y объекта О2 не равна 0, то из эквивалентного определения информационного потока следует, что существует информационный поток от объекта О1 к объекту О2.
Отметим, что данное определение потока эквивалентно заданию совместного распределения на множествах состояний объектов Х и Y при условии, что меры, индуцируемые на Х и Y, не являются независимыми.
Рассмотрим еще одно определение информационного потока. В некоторых работах для анализа скрытых каналов вводится понятие зависимости. С точки зрения нашего анализа любая зависимость порождает канал передачи данных. Поэтому мы рассматриваем понятие зависимостей как один из способов определения информационного потока.
Определение. Информационным потоком от объектов {S} к объекту T можно считать тройку (T, {S}, G), где Т меняет свое состояние, если {S} меняет свое состояние при условии, что логическое выражение G принимает значение истина.

пример 3
При вхождении в систему пользователь называет свое имя И и вводит свой пароль П. Данный пароль после шифрования преобразуется в запись К(П), которая сравнивается со значением в таблице паролей, соответствующей данному имени И пользователя. В данном случае значение переменной Т, равное 1, если пользователю разрешено войти в систему, и 0 - в противном случае, зависит от введенных переменных И и П при выполнении логического условия, что в соответствующей строчке таблицы паролей К(П) введенного пароля совпадает с имеющейся там записью. В данном случае переменная S принимает значение имени пользователя И, переменная S1 принимает значение пароля К, а логическое условие G соответствует совпадению записей в таблице паролей.
К этому определению относятся все виды функциональных связей, в которых значение Т есть функция от некоторого набора переменных, куда входит {S}.
Обобщением данной схемы является модель информационного потока как конечного автомата, в котором источник сообщения посылает входное слово на вход автомата, а получатель сообщения видит выходную последовательность автомата. Следующими обобщениями являются модель канала как вероятностного автомата и модель детерминированного автомата со случайным входом.

политики безопасности

Будем следовать общепринятому определению политики безопасности (ПБ), приведенному в стандарте TCSEC.
Определение. Политика безопасности это набор норм, правил и практических приемов, которые регулируют управление, защиту и распределение ценной информации.
Многие политики безопасности выражаются через информационные потоки. Например, все информационные потоки в системе (в том числе потенциальные) делятся на два непересекающихся подмножества: разрешенные и неразрешенные потоки. Тогда система защиты должна обеспечивать поддержку разрешенных потоков и препятствовать запрещенным потокам. К политикам такого класса относится многоуровневая политика безопасности (MLS).
MLS принята всеми развитыми государствами мира. В секретном повседневном делопроизводстве госсектор России также придерживается этой политики.
Решетка ценностей SC является основой политики MLS. Линейно упорядоченное множество грифов секретности "несекретно" < "секретно" < "совершенно секретно" является простейшим примером такой решетки ценности. В более общем случае к грифам конфиденциальности добавляются подмножества тематических категорий из заданного набора категорий. В этом случае также получается решетка ценностей, в которой некоторые элементы упорядочены. Например, приведем сравнение двух элементов такой решетки: "секретно, кадры, финансы" < "совершенно секретно, кадры, финансы, материальное обеспечение". Классификация информационных ресурсов - это отображение с множества объектов системы О в множество узлов SC решетки ценности. То есть каждый объект системы классифицируется уровнем секретности и множеством тематических категорий. Отображение с: O -->SC считается заданным. Если c(Y) больше или равно с(X), то Y - более ценный объект, чем X.
Определение. Политика MLS считает информационный поток X-->Y разрешенным тогда и только тогда, когда c(Y) больше или равно c(X) в решетке SС.
Таким образом политика MLS имеет дело с множеством информационных потоков в системе и делит их на разрешенные и неразрешенные очень простым условием. Однако эта простота касается информационных потоков, которых в системе огромное количество. Поэтому приведенное выше определение неконструктивно. Хотелось бы иметь конструктивное определение на языке доступов. Рассмотрим класс систем с двумя видами доступов read и write (хотя могут быть и другие доступы, но они либо не определяют информационный поток, либо выражаются через write и read). Пусть процесс S в ходе решения своей задачи последовательно обращается к объектам O1, O2,..., Ol (некоторые из них могут возникнуть в ходе решения задачи). Пусть

Тогда из определения MLS следует, что при выполнении условий


соответствующие потоки информации, определяемые доступом read, будут идти в разрешенном политикой MLS направлении, а при


потоки, определяемые доступом write, будут идти в разрешенном направлении. Таким образом, в результате выполнения задачи процессом S, информационные потоки, с ним связанные, удовлетворяют политике MLS. Такого качественного анализа оказывается достаточно, чтобы классифицировать почти все процессы и принять решение о соблюдении или нет политики MLS. Если где-то политика MLS нарушается, то соответственный доступ не разрешается. Причем разрешенность цепочки (1) вовсе не означает, что субъект S не может создать объект O такой, что c(S)>c(O). Однако он не может писать туда информацию. При передаче управления поток информации от процесса S или к нему прерывается (хотя в него другие процессы могут записывать или считывать информацию как в объект). При этом, если правила направления потока при read и write выполняются, то MLS соблюдается, если нет, то соответствующий процесс не получает доступ. Таким образом, мы приходим к управлению потоками через контроль доступов. В результате для определенного класса систем получим конструктивное описание политики MLS.
Определение. В системе с двумя доступами read и write политика MLS определяется следующими правилами доступа


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

Если каждый из потоков разрешен, то свойства решетки позволяют утверждать, что разрешен сквозной поток O1-->Ok. Действительно, если информационный поток на каждом шаге разрешен, то


тогда по свойству транзитивности решетки


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

и удовлетворяет запрос на запись, если

Тогда согласно изложенному выше мандатный контроль реализует политику MLS. Однако метки конфиденциальности - это не единственный способ управления информационными потоками в компьютерных системах.
В системе с многоуровневой политикой безопасности, в которой информационные потоки сведены к доступам, возможны потоки более общего типа из рассмотренных в п. 2, которые могут нарушать политику безопасности MLS. Например, любой информационный поток между несравнимыми узлами решетки или сверху вниз, который существует, но не выражается через доступы read и write, будет нарушать политику безопасности MLS даже при корректной реализации мандатного контроля доступов. В простейшем случае, к которому мы будем апеллировать дальше, если система разделена, по крайней мере, на два уровня High и Low и в системе принята многоуровневая политика безопасности, разрешающая информационные потоки снизу вверх (от Low к High) и запрещающая потоки сверху вниз, то нарушитель может использовать скрытый канал для передачи информации от программно-аппаратного агента в среде High к программно-аппаратному агенту в среде Low. При этом скрытый канал должен защищать нарушителя от системы защиты, поддерживающей многоуровневую политику, основанную на определении потоков через доступы read и write. То есть скрытый канал должен быть невидим монитору обращений, системе аудита, аналитику, исследующему защищенность системы и т.д.
Потоки в MLS разрешены только между сравнимыми узлами снизу вверх. Данная политика защищает конфиденциальность информации. Точно так же, как многоуровневая политика, определяется политика защиты целостности Байба, только разрешенными в данной политике являются все потоки между сравнимыми узлами, направленные вниз.
Предположим, что опасности для нарушения секретности не существует, а единственная цель политики безопасности - защита от нарушений целостности информации. Пусть, по-прежнему, в информацию внесена решетка ценностей SС. В этой связи любой информационный поток X-->Y может воздействовать на целостность объекта Y. Если в Y более ценная информация, чем в X, то такой поток при нарушении целостности Y принесет более ощутимый ущерб, чем поток в обратном направлении от более ценного объекта Y к менее ценному X. Байба предложил в качестве политики безопасности для защиты целостности следующее.
Определение. В политике Байба информационный поток X-->Y разрешен тогда и только тогда, когда

Можно показать, что в широком классе систем эта политика эквивалентна следующей.
Определение. Для систем с доступами write и read политика Байба разрешает доступ в следующих случаях:


Очевидно, что для реализации этой политики также подходит мандатный контроль. Точно так же как и раньше при выполнении мандатного контроля доступов read и write возможно нарушение политики Байба с помощью скрытых каналов (информационных потоков более общего типа).
Помимо указанных политик следует назвать класс политик защиты связи, в которых информационный поток, передаваемый от отправителя к получателю, не должен быть перехвачен или искажен при различных допущениях относительно возможностей противника по искажению информационных потоков или по перехвату части передаваемой информации, или наоборот, по попыткам вклиниться в передаваемый информационный поток. Сюда следует отнести ряд стеганографических схем, в которых основная задача создать информационный поток, "невидимый" для наблюдателя, с определенным набором возможностей.
Еще одним примером является ситуация, когда производитель продает пользователю компьютерную систему для обработки данных, при этом производитель встроил программно-аппаратного агента для анализа данных, которые обрабатываются покупателем. Данная система может быть сделана таким образом, что программно-аппаратный агент соответствует уровню High, а легальный вычислительный процесс проходит на уровне Low. Для передачи агентом информации во вне системы необходимо построить скрытый канал между верхним и нижним уровнями с выходом во внешнюю среду (например, в Интернет). Аналогично агент должен получать инструкции с нижнего уровня скрытно, поскольку входные сообщения для легального вычислительного процесса и агента приходят по одному каналу.
Суммируем кратко выводы этого раздела. Для поддержки политики безопасности используются механизмы защиты, препятствующие нарушению политики безопасности. Одним из способов нарушения политики безопасности является создание скрытых информационных потоков, не выявляемых системами защиты. В случае многоуровневой политики скрытые каналы передают информацию с верхних уровней конфиденциальности на нижний уровень так, чтобы механизмы защиты не могли препятствовать нарушению политики защиты конфиденциальности. В политике Biba скрытый канал с нижнего уровня на верхний может передать команду "Троянскому коню" на уничтожение или модификацию информационных ресурсов, целостность которых защищает данная политика.
В связи с этим возникла проблема анализа скрытых каналов всюду, где возникают ограничения на информационные потоки. Любой такой анализ предполагает решение четырех взаимосвязанных задач:
1.Выявление скрытых каналов;
2.Оценка пропускной способности скрытых каналов и оценка опасности, которую несет их скрытое функционирование;
3.Выделение сигнала или получение какой-нибудь информации, передаваемой по скрытым каналам;
4.Противодействие реализации скрытого канала вплоть до его уничтожения.

примеры скрытых каналов

Традиционно скрытые каналы характеризуются как каналы по памяти или каналы по времени. В работе Кемерера определяются скрытые каналы по памяти как такие каналы, в которых информация передается через доступ отправителя на запись и получателя на чтение к одним и тем же ресурсам или объектам. Скрытый канал по времени характеризуется доступом отправителя и получателя к одному и тому же процессу или изменяемому во времени атрибуту.
Как и прежде будем полагать, что система разделена, по крайней мере, на два уровня High и Low и в системе принята многоуровневая политика безопасности, разрешающая информационные потоки снизу вверх (от Low к High) и запрещающая потоки сверху вниз. Нарушитель может использовать скрытый канал для передачи информации от программно-аппаратного агента в среде High к программно-аппаратному агенту в среде Low. При этом скрытый канал должен защищать нарушителя от системы защиты, поддерживающей многоуровневую политику.
Простейшим скрытым каналом по памяти является возможность показа на уровне Low названий директорий и файлов, созданных на уровне High. В данном случае информация может передаваться в именах файлов, которые выбираются в соответствии с заранее условленным кодом, в атрибутах файлов, в которых информация может кодироваться, размерами файлов, датами изменения файлов и т.д. И, наконец, существование файла с данным названием несет бит информации с верхнего уровня на нижний.
Другим примером канала по памяти является кодирование информации в сохраняемых настройках каких-либо ресурсов общего пользования субъектов уровней High и Low. Настройки, проведенные на уровне High, доступны наблюдению на уровне Low и, следовательно, могут нести информацию, выраженную заранее условленным кодом.
Скрытые каналы по времени впервые стали серьезно рассматриваться с 1976 г., когда один из создателей защищенной операционной системы Multics Миллен продемонстрировал своим коллегам скрытый канал по времени, реализованный на изолированных машинах High и Low. Обе машины были подсоединены к некоторым общим ресурсам ROM, других каналов или связей между ними не было. В подсистемах High и Low находились "Троянские кони". На уровне High "Троянский конь" при нажатии букв на клавиатуре модулировал специальным кодом интервалы времен занятости библиотеки ROM. Время занятости библиотеки верхним уровнем сканировалось запросами в библиотеку "Троянским конем" нижнего уровня. Получившийся скрытый канал по времени позволял в реальном времени печатать информацию, получаемую через скрытый канал с клавиатуры подсистемы уровня High.
Рассмотрим еще один пример скрытого канала по времени. Пусть в программно-аппаратной схеме, реализующей интерфейс RS 232 между Low и High, нет передатчика на уровне High и нет приемника на уровне Low. Вместе с тем для передачи байт с нижнего уровня на верхний машина верхнего уровня выставляет сигнал готовности к приему информации. Очередной байт передается только тогда, когда выставлен сигнал готовности приема. Тогда задержка в выставлении сигнала после очередного переданного байта считается таймером на нижнем уровне и может таким образом передавать информацию от программно-аппаратного агента на верхнем уровне к программно-аппаратному агенту на нижнем уровне. Для этого агент на верхнем уровне кодирует сообщение различными по длине интервалами задержки выставления сигнала, а агент на нижнем уровне считывает эти сообщения с помощью таймера.
Скрытый канал передачи информации через Интернет строится с помощью вписывания сообщения вместо последнего бита оцифрованного изображения, которое передается в качестве легального сообщения. Поскольку последний бит мало влияет на качество изображения, передача информации оказывается скрытой от субъекта, ведущего перехват и допускающего передачу только легальных изображений. Хорошо известен метод борьбы с данным методом стеганографии, заключающийся в изменении формата изображения, например, с помощью компрессии. Данный метод уничтожает скрытый канал указанного вида.
Еще одним примером скрытого канала в аналогичной задаче является скрытый канал в TCP/IP протоколе. Поле ISN в TCP-протоколе служит для организации связи клиента с удаленным сервером. Размер этого поля 32 бита. Используя это поле в 5 пакетах, было скрытно передано слово Hello.
Особо следует выделить два примера каналов по времени, использующих возможности изменять длительности занятости в работе центрального процессора. В первом примере отправитель информации меняет время занятости CPU в течение каждого фрагмента времени, выделенного для его работы. Например, для передачи 0 и 1 одна длина промежутка времени кодирует 1, а другая - 0. В другом случае отправитель использует промежутки времени между обращениями к процессору

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

Модели скрытых каналов используются для разработки методов выявления скрытых каналов или, наоборот, для обоснования невозможности выявить подобные каналы. Традиционный метод выявления скрытых каналов опирается на модель зависимости. Как определялось выше зависимости представляют из себя тройки (T, {S}, G), в которых изменение параметра Т определяется изменением исходных параметров {S}, когда логическое выражение G принимает значение истина.
Пусть в рассмотренном ранее примере скрытого канала при использовании однонаправленного канала RS-232 условие G принимает значение истина, когда при передаче появляется фиксированный байт. В этом случае S есть время задержки выставления сигнала о возможности приема следующего байта. Агент нижнего уровня измеряет время задержки выставления сигнала на таймере Т только тогда, когда передан байт, обращающий логическое выражение G в истину. Поиск данного скрытого канала наблюдателем за временами задержки выставления сигнала значительно сложнее, чем в приведенном ранее примере. Однако статистическими методами сам факт такой передачи можно распознать.
С методом зависимостей тесно связан метод поиска скрытых каналов на основе матрицы разделяемых ресурсов. В этом методе предполагается, что система полностью описывается переменными a, b, c, d, ... Анализ операций ОР1 проводится в матрице следующим образом. Строчки матрицы соответствуют атрибутам разделяемых ресурсов (в нашем примере a, b, c, d, ...). Столбцы матрицы соответствуют операциям системы (ОР1 в нашем примере). Значения в клетках матрицы соответствуют действиям оператора над соответствующим атрибутом. Тогда матрица в нашем примере примет вид.
Разделяемый ресурсОР1
awrite
bread
cread
dread
Данная матрица показывает потенциальные информационные потоки между переменными. Для анализа таких матриц были созданы пакеты прикладных программ.
Следующий вопрос, который возникает в таких задачах, можно ли создать "невидимые" для контролирующего субъекта скрытые каналы. В работе А.Грушо доказано, что если противник знает схему контроля в системе защиты, то при выполнении определенных условий возможно построение невидимого для системы защиты срытого канала управления программно-аппаратным агентом в компьютерной среде. При этом "невидимость" понимается в абсолютном смысле, то есть доказывается невозможность выявления такого канала любыми методами и средствами. Аналогично в работе А.Грушо при условии знания противником системы защиты доказывается возможность построения "невидимого" скрытого канала при общении программно-аппаратных агентов в открытой среде между собой. Полученные в этой работе результаты также носят абсолютный характер, то есть доказывается, что скрытый канал невозможно выявить любыми методами и средствами.
При использовании метода зависимостей следует отметить следующее:

  • Предложенный аппарат и некоторые его реализации (например, метод матриц разделяемых ресурсов (SRM) является конструктивным инструментом поиска скрытых каналов;
  • Не все скрытые каналы могут быть описаны с помощью данного метода.

В частности, существуют скрытые статистические каналы, которые не выявляются с помощью метода выявления зависимостей. Например, если Т и S связаны между собой статистической зависимостью, то метод зависимостей может не выявить детерминированную связь между этими параметрами. Пусть в рассмотренном ранее примере скрытого канала при однонаправленном интерфейсе RS-232 условие G по-прежнему соответствует появлению в передаче фиксированного байта. В случаях, когда G истина, агент на уровне High генерирует случайную величину с распределением Р1, если он хочет передать вниз единицу. Если агент хочет передать ноль или не передает сообщение вообще, то задержка выставления сигнала происходит в соответствии с распределением Р0. Агент нижнего уровня накапливает средние значения времен задержки только при передаче указанного выше байта. Идентификация единицы или нуля производится агентом нижнего уровня с помощью статистического критерия. При этом контролирующий субъект, наблюдающий за задержками выставляемого сигнала на верхнем уровне, не знает при каком байте происходит изменение распределения времени задержки. Поэтому возможности выявления данного канала контролирующим субъектом значительно ниже возможности агента нижнего уровня распознать передаваемый сигнал. Одной из важнейших задач анализа скрытых каналов является оценка их пропускной способности. Пропускная способность скрытых каналов вычисляется методами теории информации. Часто пропускная способность скрытых каналов измеряется отношением количества скрытно переданной информации к количеству информации в легальном маскирующем скрытую передачу процессе или контейнере. Например в обычном цифровом изображении, содержащем 2,5 мегабит информации, манипуляцией последнего бита безопасно можно передать только 100 бит скрытого сообщения. С другой стороны, скрытый канал потайного копирования интересующего файла на дискету обладает пропускной способностью, равной объему копируемого файла.
В силу того, что скрытые каналы обладают, как правило, небольшой пропускной способностью, может сложиться мнение, что они не представляют опасности. Часто в таких случаях устанавливается порог на пропускную способность, ниже которого канал считается не опасным. Однако не следует забывать, что оценки пропускной способности, носят асимптотический характер и подход, связанный с ограничением пропускной способности, может оказаться неэффективным в реальных приложениях.

борьба со скрытыми каналами

Перехват информации, передаваемой по скрытым каналам, представляет большую сложность. Кажется, что здесь возникают только технологические сложности, связанные с регистрацией и анализом быстро протекающих процессов в компьютерных системах. Вместе с тем доказано, что возможно создание производителем закладок в аппаратных системах, которые могут общаться между собой "невидимо" для большинства средств защиты.
В случае использования методов стеганографии решение задачи выделения скрытых сообщений представляется более оптимистичным. Примером успешного выявления стеганографических вставок является использование скрытого канала в поле ISN протокола TCP, упоминавшегося выше.
Наиболее эффективным способом борьбы со скрытыми каналами является их уничтожение. Например, в приведенных выше примерах скрытых каналов спуска информации при использовании интерфейса RS-232 встраивание между уровнями High и Low устройства, транслирующего байты и рандомизирующего задержку выставления сигнала на верхнем уровне, видимую на нижнем уровне, позволяет полностью уничтожить любой детерминированный скрытый канал по времени и существенно испортить скрытый статистический канал. Аналогичные методы успешно используются для защиты от скрытых каналов при скрытой передаче информации через открытые системы.
К тематике скрытых информационных потоков близко подходит проблема "скрытого влияния". Для пояснения проблемы остановимся на скрытых каналах, которые физически не существуют. Для объяснения этой парадоксальной ситуации рассмотрим двухуровневую систему, в которой уровень High соответствует аналитической подсистеме, вырабатывающей варианты некоторого решения. Уровень Low соответствует подсистеме сбора информации из открытых источников и открытых сетей. Пусть подсистемы Low и High связаны однонаправленным каналом от Low к High, который позволяет реплицировать на верхнем уровне собранные на нижнем уровне данные. Пусть объект Y принадлежит уровню High, а объект X принадлежит уровню Low. Пусть совместное распределение состояний (х, у) объектов Y и Х не равно произведению индуцированных вероятностей РX(х) и РY(у). Тогда, как было отмечено ранее, согласно математической теории связи, от Х к Y существует информационный поток, который измеряется средней взаимной информацией I(X, Y). Но тогда точно такой же информационный поток существует от Y к Х, измеряемый той же величиной. В случае однонаправленного канала такая симметрия имеет очень простую интерпретацию. На нижнем уровне, реплицируя объект Х на верхний уровень, известно, что на верхнем уровне существует объект Y в точности с тем же состоянием, что и Х. Если какой-то объект Z связан с объектом Y на верхнем уровне, и известно, что существует объект с данным видом связи, то естественно возникает информационный поток между Х и Z. Причем этот информационный поток также симметричен, что означает возможность получения некоторой информации об объекте верхнего уровня, не имея физического канала от Z к Х. Для того, чтобы лучше понять суть таких каналов, представим себе, что на верхнем уровне секретное решение принимается с помощью некоторого известного алгоритма только на основании информации, реплицированной с нижнего уровня. Зная это противник на нижнем уровне может из той же информации с помощью того же алгоритма получить точно такое же решение. Для офицера информационной безопасности это значит, что секретная информация верхнего уровня стала известна на нижнем уровне, что можно интерпретировать как существование некоторого скрытого канала, передающего информацию с верхнего уровня на нижний и несанкционированно снижающего гриф информации. Сам факт существования этого канала определяется симметрией информационного потока от объектов нижнего уровня на верхний. В общем случае те же рассуждения приводят нас к тому, что на нижнем уровне становятся известными некоторые вероятностные характеристики решения, принимаемого на верхнем уровне. Таким образом интерпретируется парадоксальный факт существования скрытого канала с верхнего уровня на нижний, хотя физически этот канал не существует. Из указанного примера следует два важных вывода. Первый вывод состоит в том, что многоуровневая политика не является гарантией безопасности, так как секретная информация верхнего уровня может стать известной на нижнем уровне независимо от способа реализации многоуровневой политики. Второй вывод состоит в том, что наиболее общая вероятностная трактовка информационного потока не позволяет просто разделить множество информационных потоков на разрешенные и не разрешенные.

Елена Тимонина, доцент кафедры математической и программной защиты информации факультета защиты информации РГГУ.

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

Забросить shell-код на удаленную машину и застолбить там back-door — это только половина дела. А что делать дальше, мы подумали? Необходимо скрыть свой IP-адрес и обойти все брандмауэры, не оставляя никаких следов в логах, анализируемых как вручную, так и автоматизированными системами определения вторжения. Существует множество утилит, прячущих левые сетевые соединения от глаз администраторов, однако на физическом уровне весь «хакерский» трафик элементарно обнаруживается и пресекается практически любым брандмауэром, чего атакующему допускать ни в коем случае нельзя. В идеале необходимо пробить тоннель, открыв секретный канал связи, не создающий никаких дополнительных соединений и не
генерирующий никакого избыточного трафика, чтобы даже самый строгий разбор дампов, награбленных сетевым анализатором, не выявил ничего подозрительного.

Над решением этой проблемы бились лучшие хакерские умы. Сначала идея получила чисто теоретическое обоснование (Andrew Hintz, Craig Rowland) с чисто лабораторной реализацией, непригодной для практического использования. Затем к делу подключилась Жанна Рутковская, разработавшая специальный протокол с кодовым названием NUSHU и вполне жизнеспособные модули, ориентированные на работу в Linux Kernel 2.4. Жанна вручила нам мощное средство для управления удаленными shell’ами, от которого практически невозможно разработать адекватную защиту. Осталось только разобраться, как этим средством воспользоваться.

Скрытые пассивные каналы: основные концепции

С недавних пор в хакерском лексиконе появилось понятие «скрытых пассивных каналов » (Passive Covert Channels , или сокращенно PCC ). Они представляют собой разновидность обычных скрытых каналов (Covert Channels ), однако, в отличие от последних, не только не устанавливают своих соединений, но и вообще не генерируют никакого собственного трафика! Передача информации осуществляется исключительно путем модификации пакетов, пролетающих мимо атакованного узла.

Соль в том, что эти пакеты направляются не к хакеру, а шуруют своими путями на различные узлы интернета, например, www.google.com, за счет чего достигается высочайшая степень анонимности. Естественно, возникает резонный вопрос: как хакер сможет добраться до содержимого пакетов, идущих мимо него? Для этого необходимо подломать один из промежуточных маршрутизаторов (как правило, принадлежащих провайдеру, обслуживающему атакуемую организацию) и установить на него специальный модуль, анализирующий заголовки TCP/IP-пакетов на предмет наличия скрытой информации или ее внедрения.

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

Рассмотрим схему взаимодействия с целевым узлом (жертвой) по скрытому пассивному каналу. Хакер (обозначенный буквой Х) каким-то совершенно не относящимся к обсуждаемой теме образом забрасывает на целевой узел (обозначенный буквой A) shell-код, захватывающий управление и устанавливающий back-door вместе со специальным модулем, обеспечивающим функционирование PCC-канала. Теперь все TCP/IP-пакеты, отправляемые жертвой во внешний мир, содержат незначительные изменения, кодирующие, например, пароли или другую конфиденциальную информацию.

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

Таким образом, мы получаем защищенный канал A-B и открытый B-X, однако хакеру ничего не стоит общаться с узлом B через анонимный proxy-сервер или даже выстроить цепочку из нескольких защищенных хостов. К тому же, выбор маршрутизатора B необязателен. Главное, чтобы маршрутизатор располагался между целевым узлом А и одним из узлов, с которыми общается жертва.

Во власти протокола IP

Возьмем протокол IP и попробуем создать на его основе скрытый пассивный канал. Среди множества полезных и бесполезных полей заголовка наше внимание привлекает 16-битовое поле Identification , генерируемое операционной системой случайным образом и используемое для идентификации дейтаграммы в случае ее фрагментации. Узел-получатель группирует фрагменты с одинаковыми IP-адресами источника/назначения, типом протокола и, разумеется, идентификатором.

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

Фишка в том, что PCC-модуль может беспрепятственно модифицировать поле идентификатора по своему вкусу, передавая с каждым IP-пакетом 16 бит полезных данных. Это в теории. На практике же нам потребуется выделить несколько бит для маркировки своих пакетов, иначе PCC-приемник ни за что не сможет отличить их от остальных. Пусть в 12 младших битах передаются полезные данные, а в четырех старших — их контрольная сумма. Тогда PCC-приемнику останется всего лишь взять 12 бит, рассчитать их CRC и сравнить с оставшимися четырьмя битами. Если они совпадут, значит, это наш пакет, если же нет — пускай идет себе лесом.

Также следует позаботиться о нумерации пакетов, поскольку порядок следования IP-пакетов в общем случае не совпадает с порядком их отправки. А для этого также требуются биты, в результате чего реальная информационная емкость IP-заголовка стремится к одному байту, что, в общем-то, не так уж и плохо. Для передачи небольших объемов данных (типа паролей) вполне сойдет. Главное — не забывать о том, что идентификатор должен: а) быть уникальным; б) выглядеть случайным. Поэтому необходимо прибегнуть к скремблированию, то есть к наложению на передаваемый текст некоторой псевдослучайной последовательности данных (известной как PCC-отправителю, так и PCC-получателю) через оператор XOR.

Кроме идентификатора, можно (с некоторой осторожностью) менять поля TTL (Time To Live – максимальное время жизни пакета), тип сервиса (TOS) и протокола (protocol). Однако это слишком заметно и легко обнаруживается просмотром дампов, полученных любым снифером.

Наш извозчик — протокол TCP

При установке TCP-соединения передающая сторона (узел A) устанавливает флаг SYN и выбирает произвольный 32-битный номер последовательности (Sequence Number, или сокращенно SEQ). Если принимающая сторона (узел B) согласна принять узел А в свои объятия, она отправляет ему пакет с установленным флагом ACK и номером подтверждения (Acknowledgment Number), равным SEQ+1, а также генерирует свой собственный номер последовательности, выбираемый случайными образом. Узел A, получив подтверждение, поступает аналогичным образом, что наглядно демонстрирует следующая схема:

узел A —— SYN(ISN) ————> узел B
узел A <—— SYN(ISN+1)/ACK —— узел B
узел A —— ACK —————-> узел B

ISN – это начальный номер последовательности (Initial Sequence Number ), уникальный для каждого TCP/IP-соединения. С момента установки соединения номера последовательности планомерно увеличиваются на количество принятых/отправленных байт. Впрочем, не будем углубляться в теорию. Остановимся на том факте, что 32-битное поле ISN можно изменять псевдослучайным образом, «промодулированным» секретными данными и… никто ничего не заметит! Конечно, пропускная способность упадет до четырех байт на каждое TCP-соединение, устанавливаемое узлом-жертвой, а TCP-соединений устанавливается не так уж и много (особенно если мы имеем дело не с нагруженным сервером, а с рабочей станцией). Тем не менее, для
перекачки паролей и удаленного управления через командную строку даже такой скромной пропускной способности вполне достаточно.

Жанна Рутковская , решив не ограничивать себя лабораторными опытами, разработала протокол NUSHU , создающий скрытые пассивные каналы посредством модификации ISN с последующим шифрованием последнего алгоритмом DES на основе идентификатора IP-пакета (IP.id), порта-источника (TCP.sport) и IP-адреса назначения (IP.daddr).

Сеанс практической магии

Идем на сайт Жанны Рутковской — invisiblethings.org , видим раздел с инструментами tools, находим в нем «NUSHU — passive covert channel engine for Linux 2.4 kernels » и качаем архив исходных текстов — invisiblethings.org/tools/nushu/nushu.tar.gz (всего 18 Кб). Распаковываем, компилируем. Компиляция осуществляется стандартно. Просто запускаем утилиту make и получаем три модуля ядра: nushu_receiver.o (приемник), nushu_sender.o (передатчик) и nushu_hider.o.

Механизм шифрования ISN в протоколе NUSHU

Приемник устанавливается на поломанный маршрутизатор, передатчик — на целевой узел жертвы. Для организации двухсторонней связи приемник и передатчик устанавливаются на оба узла. Модуль nushu_hider.o в организации скрытого канала не участвует и предназначен для обмана штатных анализаторов (типа tcpdump), не позволяя им обнаруживать факт изменения ISN.

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

  • dev=, где device – сетевое устройство, с которым предполагается работать (например, eth0);
  • cipher=, где 0 означает передачу без шифрования, а 1 предписывает использование DES;
  • key="string", где string — произвольная строка-маркер, идентичная строке-маркеру, установленной на модуле-приемнике (используется только в том случае, если шифрование выключено, иначе игнорируется);
  • src_ip= — IP-адрес узла, на котором установлен передатчик.

Модуль-приемник, помимо описанных выше ключей dev, cipher и key, обрабатывает аргумент exclude_ip=<172.16.*.*>, задающий список неприкосновенных IP-адресов, при отправке пакетов на которые протокол NUSHU задействован не будет, поскольку ISN останется неизменным (этот параметр является опциональным).

Модуль nushu_hider.o загружается без каких-либо параметров и только в том случае, если в этом возникает необходимость.

Хорошо, все модули успешно загружены, ядро функционирует нормально и в панику, судя по всему, впадать не собирается. Что делать дальше? А ничего! Ведь это только движок, обеспечивающий функционирование PCC-каналов . К нему можно прикрутить кейлоггер или удаленный shell, но это уже придется делать самостоятельно. А как?! Ни readme, ни сопроводительные презентации не дают ответа на этот вопрос, поэтому приходится зарываться в исходные тексты и разбирать их на отдельные байты.

Начнем с передатчика, реализованного в файле sender.c. В процедуре init_module(), отвечающей за инициализацию модуля, сразу же бросаются в глаза следующие строки:


create_proc_read_entry ("info", 0, proc_de, cc_read_proc_info, NULL);
struct proc_dir_entry * wpde = create_proc_entry ("message_to_send", 0, proc_de);

Все ясно! Модуль использует псевдофайловую систему /proc, создавая директорию nushu, а в ней — два файла: info и message_to_send, с которыми можно работать с прикладного уровня, как с обычными устройствами (если быть точнее, псевдоустройствами).Аналогичным образом обстоят дела и с приемником, реализованным в файле receiver.c, ключевой фрагмент которого приведен ниже:

Struct proc_dir_entry *proc_de = proc_mkdir ("nushu", NULL);
create_proc_read_entry ("message_received", 0, proc_de, cc_read_proc_message, NULL);
create_proc_read_entry ("info", 0, proc_de, cc_read_proc_info, NULL);

Как видно, вместо устройства message_to_send на этот раз создается message_received, из которого можно читать получаемые сообщения через стандартные функции ввода/вывода. В общем, имея на руках исходные тексты, со всеми этими причиндалами совсем несложно разобраться, тем более что их суммарный объем составляет всего 69 Кб.

Заключение

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

Может ли атакованный администратор обнаружить скрытые пассивные каналы хотя бы теоретически? Скрупулезный анализ сетевого трафика позволяет выявить некоторую ненормальность распределения ISN, но для этого требуется обработать сотни тысяч «хакнутых» пакетов, сравнивая их с оригиналами. Потому намного проще выявить посторонний ядерный модуль, отвечающий за создание и поддержку PCC-каналов, используя общие методики верификации целостности системы. Однако это уже совсем другой разговор, к которому мы еще вернемся.

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

Появился термин «скрытый канал» (covert channel). Впервые понятие скрытого канала было введено в работе Лэмпсона в 1973 году. Канал называется скрытым, если он не проектировался, не предполагался для передачи информации в электронной системе обработки данных. Таким образом, термин скрытые каналы больше относится к внутрикомпьютерным телекоммуникациям.

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

В любом наборе информации, будь то исполняемая программа, графическое изображение или сетевой протокол есть пути переноса дополнительных «скрытых» данных. Такая возможность есть и практически на всех уровнях модели OSI. Широко известны инструменты туннелирования, использующие служебные заголовки протоколов сетевого уровняTCP/UDP.

Основное поле для использования скрытых каналов это локальные сети, имеющие доступ в Интернет.

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

Традиционно скрытые каналы характеризуются как каналы по памяти или каналы по времени/

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

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

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

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

Скрытые каналы по времени впервые стали серьезно рассматриваться с 1976 г., когда один из создателей защищенной операционной системы Multics Миллен продемонстрировал своим коллегам скрытый канал по времени, реализованный на изолированных машинах High и Low. Обе машины были подсоединены к некоторым общим ресурсам ROM, других каналов или связей между ними не было. В подсистемах High и Low находились «Троянские кони». На уровне High «Троянский конь» при нажатии букв на клавиатуре модулировал специальным кодом интервалы времен занятости библиотеки ROM. Время занятости библиотеки верхним уровнем сканировалось запросами в библиотеку «Троянским конем» нижнего уровня. Получившийся скрытый канал по времени позволял в реальном времени печатать информацию, получаемую через скрытый канал с клавиатуры подсистемы уровня High.

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

Примером скрытого канала в аналогичной задаче является скрытый канал в TCP/IP протоколе. Поле ISN в TCP-протоколе служит для организации связи клиента с удаленным сервером. Размер этого поля 32 бита. Используя это поле, например в n пакетах, можно осуществить скрытую передачу.

Один из способов организации скрытого канала - перестановка сетевых пакетов определенным образом. При этом на основе заранее оговоренных признаков передается последовательность бит.

Еще один способ организации скрытого канала - использование алгоритмов электронной цифровой подписи. С.В. Белим и А.М. Федосеев в 2007 г. провели исследование и доказали возможность создания скрытых каналов в рамках алгоритма электронной цифровой подписи ГОСТ Р 34.10-2001.

Особо следует выделить два примера каналов по времени, использующих возможности изменять длительности занятости в работе центрального процессора. В первом примере отправитель информации меняет время занятости CPU в течение каждого фрагмента времени, выделенного для его работы. Например, для передачи 0 и 1 одна длина промежутка времени кодирует 1, а другая - 0. В другом случае отправитель использует промежутки времени между обращениями к процессору.

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

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

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

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

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

В 2008м году в Российской Федерации был принят ГОСТ Р 53113.1 «Информационная технология. Защита информационных технологий и автоматизированных систем от угроз информационной безопасности, реализуемых с использованием скрытых каналов. Часть 1. Общие положения.»

В 2009 году принимается ГОСТ Р 53113.2 «Защита информационных технологий и автоматизированных систем от угроз информационной безопасности, реализуемых с использованием скрытых каналов. Часть 2. Рекомендации по организации защиты информации, информационных технологий и автоматизированных систем от атак с использованием скрытых каналов.»