
В предыдущей статье этого цикла мы закончили на превентивных мерах противодействия утечке информации по скрытым каналам. Как вы помните, данные меры могут быть достаточно эффективны, однако, у них есть серьезный минус – их введение существенно понижает характеристики легитимного канала связи и может затрагивать функциональные возможности сетевых протоколов. Особенно ярко это выражается для сетевых скрытых каналов по времени.
Поэтому, достаточно логичным выглядит подход, когда мы сначала следим за легитимным каналом связи, и только если обнаруживаем реальное существование скрытого канала в системе, вводим конкретные меры противодействия. В данной статье мы поговорим о том, как обнаруживают сетевые скрытые каналы по времени, для которых не стоит вводить превентивные меры, пока скрытый канал не был обнаружен.
Почему это сложно?
Скрытый канал по своей сути является незаметным. Мы пытаемся поймать рыбку в аквариуме, но саму рыбку мы никогда не увидим, мы можем лишь замечать ее следы – волны на поверхности воды, необычное поведение других рыб, неожиданные движения водорослей. Обнаружение скрытых каналов работает примерно так же – сам канал мы не видим, зато можем поймать его отпечатки в сетевом трафике – тонкие аномалии, выдающие присутствие нарушителя.
Однако, мы даже не знаем, на что конкретно нам смотреть – ведь схемы кодирования скрытой информации могут различаться достаточно сильно даже в рамках одного типа скрытых каналов. Помогает нам то, что пытаемся мы обнаружить все-таки именно скрытые каналы по времени, а значит от основополагающего принципа никуда не деться – информация так или иначе все равно будет кодироваться либо в длинах межпакетных интервалов, либо в самом факте присутствия/отсутствия сетевого пакета в конкретный момент времени.
Итак, функционирующий скрытый канал – это аномалия в потоке трафика. Аномалия возникает за счет закономерностей, которых в трафике быть не должно, ведь закладка «выстраивает» пакеты специальным образом. Значит, нам нужно либо уметь выявлять данные закономерности напрямую, либо выявлять аномалии путем сравнения тестируемой выборки с «эталонной». «Эталонным» мы будем называть трафик с гарантированным отсутствием в нем функционирующего скрытого канала. Внимательный читатель увидит здесь еще одну проблему. Ведь скрытый канал возникает за счет закладок, которые могут быть в любом программном или аппаратном обеспечении. И кто даст гарантию, что в системе в момент получения этого «эталонного» трафика не присутствует никаких закладок? А собрать эталонный трафик мы должны именно в нашей исследуемой системе, ведь аномалия в одной сети может быть нормальным поведением в другой – разное оборудование, разные приложения, разный график работы сотрудников, сезонные изменения нагрузки и так далее. К сожалению, эту проблему обойти нельзя, и приходится все равно принимать какое-то состояние сети как состояние без функционирующего скрытого канала.
Помимо этого, обнаружение требует времени. Естественно, любую аномалию будет видно лишь со временем, и если время реакции будет слишком долгим, то потенциально через такой скрытый канал уже утечет часть критичной информации.
Поэтому, ключевые показатели методов обнаружения – точность и скорость реакции. И уже следом идет универсальность, то есть количество скрытых каналов разного типа, обнаруживаемых в рамках одного конкретного метода.
История развития методов обнаружения
Для задач сравнения двух выборок (эталонный трафик и трафик, в котором потенциально присутствует передача скрытого сообщения) изначально применялись классические методы на основе математической статистики – критерий Пирсона и критерий Колмогорова-Смирнова.
Далее развитие получили статистические методы, разработанные специально для задачи обнаружения скрытых каналов, либо адаптированные для них. В этих методах извлекаемые из трафика последовательности значений длин межпакетных интервалов анализируются на предмет возможных закономерностей путем подсчета конкретного параметра (энтропии, дисперсии и других), при этом обязательно должно иметься некоторое пороговое значение, при превышении которого делается вывод о наличии функционирующего скрытого канала в системе.
Наконец, в настоящее время активно развиваются методы обнаружения, тесно связанные с применением машинного обучения и нейронных сетей – они используют в своей основе наработки от статистических методов, улучшая и дополняя их.
Обнаруживаем простейший скрытый канал по времени
Для примера давайте разберем достаточно простой статистический метод, направленный на обнаружение бинарного скрытого канала по времени на основе длин межпакетных интервалов. Имеется два диапазона значений длин межпакетных интервалов, один из них кодируется как скрытый символ «0», другой – «1». Для передачи скрытой информации закладка будет посылать пакеты с задержкой, попадающей в один из двух выбранных интервалов.
Все статистические методы начинаются одинаково – выделяем из трафика значения длин межпакетных интервалов и строим гистограмму, в которой представлено распределение числа пакетов в зависимости от значений этих длин.
Если мы будем следить за каналом связи достаточно долго, то на гистограмме будут видны два пика с максимальным числом переданных пакетов на одном из них и близким к
значением на другом. Оба пика будут сосредоточены возле выбранных на этапе кодирования временных интервалов. Среднее значение длин межпакетных интервалов
, в свою очередь, будет находиться между двумя данными пиками. При этом количество пакетов
в точке
будет мало.

Если же мы будем следить за каналом связи, когда закладка неактивна, то у нас получится нормальное распределение, представленное ниже.

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

Возникает вопрос, как выбрать границу, после которой будем считать, что присутствует активный скрытый канал? Здесь универсальных решений нет. Основываем это решение на математической модели скрытого канала, который мы пытаемся обнаружить, и на политике безопасности организации.
Другие статистические методы обнаружения
Если мы будем наблюдать за каналом долгое время, при этом закладка будет работать лишь небольшой отрезок времени, то все закономерности, создаваемые закладкой, растворятся в общем потоке трафика. С этим нам может помочь разбиение всего наблюдаемого интервала на отрезки и анализ как каждого отрезка в отдельности, так и всех отрезков совокупности. Именно так работает метод обнаружения на основе дисперсии.
Строим уже знакомую нам гистограмму, разделяем ее на N непересекающихся окон по w пакетов в каждом окне. Для каждого окна вычисляем разброс значений длин межпакетных интервалов через дисперсию. Далее считаем попарные относительные разности дисперсий , и наконец вычисляем разброс этих относительных разностей через еще одну дисперсию. В случае малого значения данной финальной дисперсии мы делаем предположение, что в окнах присутствуют зависимости, а значит присутствует активный скрытый канал.
Подсчет относительных разностей мы встречаем и в методе «эпсилон-схожести» (ε-similarity). Строим гистограмму w отсортированных по возрастанию значений длин межпакетных интервалов. Вычисляем относительные разности между попарно расположенными точками: . Выбираем параметр
и подсчитываем количество относительных разностей
таких, что
. Вычисляем основную метрику метода обнаружения – меру схожести
. Наконец, принимаем решение о наличии скрытого канала при
. Здесь мы видим уже два параметра, которые мы должны установить сами –
и
. Дальнейший анализ метода и то, как выбирать данные параметры, можно найти к примеру в этой статье.
Существует и ряд методов, которые берут уже известные математические сущности и применяют их к задаче обнаружения скрытых каналов. Например, условную энтропию, которая также показывает наличие либо отсутствие закономерностей в последовательности значений длин межпакетных интервалов, или даже колмогоровскую сложность.
Колмогоровская сложность строки
– наиболее краткая универсальная компьютерная программа, которая производит данную строку.
обеспечивает максимально возможное сжатие строки
. Пусть
– строка, полученная из строки
c помощью некоторой функции сжатия. Тогда сжимаемость строки будет равна
, где
– длина строки. Пусть длина межпакетного интервала равна 0.0247 секунды. Тогда строковое представление получается путем отбрасывания первых нулей и округлением оставшегося числа до двузначного. При этом к началу числа приписывается буква, которое определяет количество нулей после запятой. A соответствует одному нулю, B – двум и так далее. То есть, строковым представлением числа 0.0247 будет А25. Длины межпакетных интервалов представляются в виде строки, после чего считается ее сжимаемость. При этом сжимаемость для строки, полученной из длин межпакетных интервалов для канала связи, в котором присутствует скрытый канал с шумом, будет выше, чем сжимаемость для аналогичной строки без присутствия скрытого канала.
Машинное обучение в задаче обнаружения скрытых каналов
Свое дальнейшее развитие статистические методы получили в рамках подходов с использованием методов машинного обучения. Ведь ту статистику, которая собирается с помощью статистических методов, можно использовать в качестве признаков при обучении и работе модели искусственного интеллекта.
Существует три различных сценария работы таких ML-детекторов, связанных с тем, какие датасеты у нас имеются для обучения модели.
В первом сценарии у нас имеется и «эталонный» трафик, то есть трафик с гарантированным отсутствием скрытого канала, и «скрытый» трафик, то есть трафик с гарантированным присутствием скрытого канала, причем мы точно знаем тип скрытого канала и схему кодирования. Звучит не очень реалистично, и это идеальный для нас случай, ведь это классическое обучение с учителем. Этот сценарий подходит только для лабораторных тестов, ведь «скрытый» трафик в реальной системе мы получить не сможем.
Во втором сценарии мы имеем на руках только «эталонный» трафик. Более правдоподобный случай, ведь можно предположить наличие какой-то точки отсчета, когда в системе не было закладок, и мы сняли дамп трафика как раз в этот момент. При этом, мы не знаем заранее, какой скрытый канал будет использоваться для утечки информации. Здесь будут применяться алгоритмы обнаружения аномалий.
Наконец, самым реалистичным будет третий сценарий, когда у нас нет ни «эталонного», ни «скрытого» трафика. Мы пришли защищать систему, в которой возможно уже имеются закладки, и мы не знаем, в какой момент времени они активны. Тут на помощь приходят алгоритмы кластеризации. Алгоритмы ищут структуры в данных без каких-либо меток. Если данные хорошо кластеризуются, то скорее всего в потоке трафика есть зависимости, а значит, вероятно присутствие скрытого канала.
Известные результаты по обнаружению скрытых каналов с использованием ML-детекторов
Одной из первых заметных работ в этом направлении стала статья, в которой предложен вектор из четырех признаков – результат теста Колмогорова-Смирнова, оценка регулярности, энтропия и скорректированная условная энтропия (CCE). На основе этих четырёх чисел SVM-классификатор разделяет трафик на «обычный» и «скрытый». Авторы тестировали систему на четырёх различных типах скрытых каналов и показали, что она способна обобщаться – то есть обнаруживать не только те каналы, на которых обучалась.
Для первого сценария отлично показали себя и деревья решений. В другой статье использовалось четыре статистических признаков – среднее, дисперсия, асимметрия и эксцесс распределения межпакетных интервалов.
Известны работы по использованию глубокого обучения для задачи обнаружения скрытых каналов. Так, в данной статье использовалась LSTM. Модель обучается на нормальном трафике и обнаруживает аномалии в паттернах, растянутых во времени. Это особенно актуально для очень медленных каналов: если канал передаёт по одному биту в несколько секунд, его сигнал «размазан» по длинному отрезку времени, и именно LSTM может уловить эту длинную зависимость, которую обычные методы просто не видят.
Бывают и более нестандартные подходы. Например, как вам идея превратить поток межпакетных интервалов в цветное изображение и применить CNN, которые обычно используются в компьютерном зрении? Алгоритм SnapCatch конвертирует временные паттерны трафика в изображения, после чего CNN ищет в них «визуальные» следы скрытого канала.
Общий подход ML-детектора
Независимо от выбранного алгоритма, работа любого ML-детектора скрытых каналов включает три этапа:
Снятие дампа трафика и извлечение массива значений длин межпакетных интервалов.
Формирование вектора признаков. Из полученного массива вычисляются различные статистические характеристики, как стандартные математические, так и признаки, полученные из различных статистических методов обнаружения скрытых каналов.
Обучение модели и принятие решения. В зависимости от наличия обучающих данных классификатор, детектор аномалий или кластеризатор выносит вердикт о наличии либо отсутствии скрытого канала в системе.
Направление по обнаружению сетевых скрытых каналов на основе искусственного интеллекта – крайне актуально на сегодняшний момент. Впрочем, как и задача защиты от утечки информации по скрытым каналам в целом. Ведь это все еще крайне эффективный, пусть и дорогой, способ извлечь незаметно любую чувствительную информацию в системе. А значит, мы увидим как совершенствование методов построения скрытых каналов, так и методов противодействия им.
На этом наш цикл статей по скрытым каналам подходит к концу. Надеемся, вам было интересно погрузиться в данную тему!
А тем, кто только подключился, вот ссылки на предыдущие статьи цикла:


















