Санкт-Петербургский государственный университет информационных технологий, механики и оптики

advertisement
Санкт-Петербургский государственный университет
информационных технологий, механики и оптики
Факультет информационных технологий и программирования
Кафедра «Компьютерные технологии»
Лагунов И. А., Насонов Д. А., гр. 5538
Отчет по заданию
«Адаптивная маскировка IP трафика»
по курсу
«Защита информации»
Санкт-Петербург
2009
Содержание
Введение ........................................................................................................................... 3
1.
Постановка задачи .................................................................................................. 4
2.
Состав функций программного компонента ...................................................... 5
3.
Критерии оптимальности разработки ................................................................. 6
4.
Анализ проектных решений .................................................................................. 6
4.1 Механизмы фильтрации сетевого трафика .................................................................. 6
4.2 Реализация скрытого канала по времени ..................................................................... 8
5.
Обоснование выбора метода решения задачи ................................................. 8
6.
Алгоритм функционирования............................................................................... 8
6.1 Идея общего алгоритма адаптивной фильтрации ....................................................... 9
6.2 Идея алгоритма генерации ложных запросов .............................................................. 9
6.3 Пошаговое описание алгоритма адаптивной фильтрации ...................................... 10
6.4 Реализация скрытого канала по времени ................................................................... 11
7.
Технология разработки программы .................................................................. 12
8.
Порядок использования ...................................................................................... 12
8.1 Технические требования ................................................................................................. 12
8.2 Файлы конфигурации ..................................................................................................... 13
8.3 Пользовательский интерфейс ........................................................................................ 13
9.
Методика тестирования ....................................................................................... 15
9.1 Используемые средства................................................................................................... 15
9.2 Тестирование адаптивного фильтра ............................................................................ 16
Список источников ........................................................................................................ 17
Введение
Целью настоящей работы является реализация алгоритма адаптивной
маскировки IP трафика. Это необходимо для борьбы с так называемыми
скрытыми каналами (СК), которыми принято называть скрытую передачу
данных путем модуляции состояний технических ресурсов системы. В
частности, различают два типа СК: с модуляцией по времени и по памяти.
Адаптивная маскировка IP трафика призвана противодействовать скрытой
передаче данных при передаче пакетов в IP поток.
1. Постановка задачи
Для
решения
данной
задачи
применяются
разные
подходы,
отличающиеся как в технической реализации, так и в идеологическом плане.
1) Защита системы от СК может быть изначально спроектирована таким
образом, что наличие таких каналов исключается. К примеру, в связи с
применяемыми оргмерами и мониторингом системы, как в целом – отчёт по
трафику и узлам сети, так и в частности – проверка памяти, учёт процессорного
времени каждой ЭВМ в отдельности.
2) Другим крайним случаем, может быть, реализация полной постоянной
загрузки сети за счёт ложного трафика без возможности временных простоев,
или похожих методов устранения СК.
3) Однако, зачастую, принимая во внимания расход ресурсов, а так же
вероятность размещения вредоностного ПО для создания СК, применяют менее
эффективные методы. Большая часть из них основана на статистических
расчетах. В работах [1, 2] освещены подходы с использованием статистических
метрик по выявлению различий между временными интервалами. Идея состоит
в том, что по достаточно продолжительному «окну» потока данных можно
рассчитать метрики «отклонений». Как показывает практика, наименьшими
«отклонениями» обладают СК. Таким образом, можно обнаружить канал и
принять меры по его устранению (локализация и удаление вредоносной
программы с дальнейшим анализом).
4) Также применяется стахостическое моделирование с оценкой реальной
модели для исследования и выявления отклонений в поведении системы.
Общий смысл сводится к построению модели по критериям, полученным с
помощью истории мониторинга и сравнения текущего состояния с состоянием
постоенной модели.
5) Еще один способ, описанный в работе [3], заключается в применении
«pump»-а – промежуточного устройства, который расположен на канале связи
между LOW и HIGH уровнями системы и контролирует передачу пакетов,
модулируя их трансляцию за счёт дополнительной вероятностной переменной,
полученной из пересчетов среднего значения интервала передачи по
предыстории.
6) Последний алгоритм, изложенный в работе [4], также основан на
предыстории и вероятностном добавлении ложных пакетов для того, чтобы
сбить временную модуляцию вредоносной программы. Именно этот алгоритм
будет рассмотрен в дальнейшем в связи с тем, что только он из приведённых
выше решений соответствует условию поставленной задачи.
В итоге, конечная постановка задачи определяется так: выбран
определённый алгоритм генерации ложных пакетов, позволяющий по
предыстории ранее переданных данных вставить в сетевой поток ложные
пакеты, основываясь на допустимой пропускной способности (является
параметром конфигурации) скрытого канала. Так же требуется реализовать:
выравнивание пакетов на заданную длину (вставить в пакет пустые незначащие
символы); вставку ложного пакета в IP поток, генерируемого драйвером
сетевой карты в ОС Windows.
2. Состав функций программного компонента
Результатом проекта должен стать сетевой фильтр исходящих IP-пакетов,
который будет иметь следующие функции:
1) Генерация ложного IP-трафика с помощью адаптивного алгоритма (в
дальнейшем будем называть этот фильтр адаптивным).
2) Выравнивание длин пакетов на заданную величину.
Пользовательский
интерфейс
должен
предоставлять
следующие
возможности:
1) Управление фильтром: включение/выключение.
2) Выбор конкретного сетевого адаптера, через который будет проходить
фильтрация.
3) Настройка параметров алгоритма: допустимая пропускная способность
СК, длина очереди статистики и другие.
3. Критерии оптимальности разработки
Для данной работы можно выделить следующие актуальные критерии
оптимальности:
1) Производительность – является важным показателем по ряду причин:
во-первых, от скорости зависит то, насколько быстро мы будем
справляться с реальной нагрузкой сети, а, во-вторых, скорость может
быть критичным показателем, и данный фильтр окажется главным
проблемным узлом.
2) Сложность
разработки
–
целесообразно
использовать
готовые
интерфейсные библиотеки для самой процедуры дополнения IP-пакетов и
посылки ложных, однако остается нетривиальная часть реализации
адаптивного алгоритма.
3) Переносимость на другие платформы – разрабатываемый сетевой
фильтр не должен целиком опираться на какую-либо определенную
версию OC Windows, а должен быть переносимым на основные
поддерживаемые версии Windows (включая NT и XP).
4) Уровень защищенности от НСД – параметр, определяемый скорее
организационными мерами.
4. Анализ проектных решений
4.1 Механизмы фильтрации сетевого трафика
Существует несколько способов фильтрации сетевого трафика в OC
Windows, в частности, существуют два режима работы: фильтрация в
пользовательском режиме (user-mode traffic filtering) и фильтрация в режиме
ядра (kernel-mode traffic filtering).
Применение
второго
режима
будет
предпочтительнее,
так
как
существующие основные механизмы реализованы именно в режиме ядра.
Рассмотрим некоторые из них:
1) Kernel-mode sockets filter. Эта технология применима в Windows
NT/2000.
Основана
на
перехвате
всех
вызовов
из
msafd.dll
(самая
низкоуровневая user-mode DLL из состава Windows Sockets) к модулю ядра
afd.sys (kernel-mode часть WindowsSockets). Данная технология требует
аккуратного обращения с интерфейсами AFD, так как они изменяются в разных
версиях NT. AFD является TDI клиентом и реализует приём/отправку данных
через драйвер протокола. Msafd.dll сообщает AFD название протокола для
каждого сокета. Хотя данный способ удобен для шифрования потоков данных и
QoS (Quality of Service) доставляется специальное API .
2) TDI-filter driver. Технология применима как в Windows 9x/ME, так и в
WindowsNT/2000, хотя конкретные реализации сильно отличаются. Что
касается Windows NT/2000, то в случае TCP/IP фильтрации необходимо
перехватывать все вызовы, направленные устройствам созданным модулем
tcpip.sys (\Device\RawIp, \Device\Udp, \Device\Tcp). Технология достаточно
известная и используется в ряде коммерческих продуктов (например,
OutpostFirewall).
3) NDIS Intermediate Driver. Трудоемкая технология в плане инсталляции
и программирования. При каждом вызове реального адаптера сначала идет
обращение к виртуальному адаптеру. То есть мы накладываем наш
виртуальный адаптер на реальный.
Вся обработка поступивших вызовов идёт в MP* и Pt* функциях. Где
MP* – относится к Miniport, то есть к нашему виртуальному адаптеру, а Pt* – к
Protocol – протоколу, реализуемуму нашим адаптером. Если мы хотим
фильтровать TCP/IP, Protocol должен уметь обрабатывать IP-пакеты.
4) Windows 2000 Filter-Hook Driver. Метод, расширяющий возможности
system-supplied Internet Protocol (IP) filter driver, применим только в Windows
2000 и выше, ограничен в возможностях.
5) NDIS Hooking Filter Driver. Способ сводится к перехвату некоторых
функций NDIS библиотеки, которые в дальнейшем позволяют отследить
регистрацию всех протоколов, установленных в операционной системе, и
открытие ими сетевых интерфейсов. Используется в продукте ZoneAlarm.
4.2 Реализация скрытого канала по времени
Данная работа ставит своей целью создание учебной программы для
практического изучения работы адаптивной фильтрации, которая используется
для устранения скрытых каналов по времени. Поэтому целесообразно
модулировать сам скрытый канал, чтобы оценить качество разработанного
фильтра. Поскольку готовых реализаций в открытом доступе найти не удалось,
было принято решение создать также фильтр модуляции скрытого канала в
составе той же программы.
В данном случае была сделана попытка сымитировать настоящий
скрытый канал по времени (СВК). Реализация основана на статье [1] c
частичными упрощениями, так как первоначальная задача состояла в проверке
работоспособности адаптивного фильтра. Общий алгоритм работы описан в
разделе 6.4.
Отметим, что оба фильтра (фильтра модуляции СКВ и адаптивный
фильтр) должны работать максимально независимо. Поэтому они реализуются
в виде отдельных потоков и используют в качестве посредника специальный
буфер сетевых пакетов, реализующий циклическую очередь.
5. Обоснование выбора метода решения задачи
Одним из самых быстрых и популярных фреймворков является
WinpkFilter (его последняя версия 3.0), основанный в частности на NDIS
Hooking технологии.
Так как задача выбора непосредственного механизма
реализации не является
основной, то
предпочтение отдадим именно
WinpkFilter.
6. Алгоритм функционирования
В
данном
разделе
поставленной задачи.
опишем
выбранный
алгоритм
для
решения
6.1 Идея общего алгоритма адаптивной фильтрации
Устранение СК достигается механизмами генерации ложных запросов,
под которыми понимаются служебные запросы системы защиты информации
(СЗИ) к монитору обращений системы, неотличимые для потенциального
нарушителя от запросов обыкновенных пользователей. После завершения
обработки очередного запроса СЗИ запускается таймер, и разделяемый ресурс
переходит в состояние ожидания нового запроса.
При появлении очередного запроса до момента срабатывания таймера он
ставится в очередь и ожидает времени срабатывания таймера. Запрос
отклоняется при переполнении очереди.
По истечению времени срабатывания таймера и отсутствии запроса от
пользователя применяется адаптивный алгоритм генерации ложного запроса. В
случае наличия в очереди запроса от пользователя происходит выравнивание
пакета на заданную длину и его отправка.
6.2 Идея алгоритма генерации ложных запросов
Рассмотрим общее выражение для удельной пропускной способности:
C(P1, P)  -P0  Log 2 (P0)  P0  P  Log 2 (P0  P)  (P1  P0  P)  Log 2 (P1  P0  P) ,(1)
где P0 – коэффициент простоя маскируемого ресурса, P1 – коэффициент
загрузки ресурса (напомним, что P0=1–P1), P – вероятность маскировки
запроса. При изменении P0 и P1 на единичном интервале области определения
функция C(P1, P) непрерывна и может быть обращена относительно P, то есть
из (1) можно найти функцию P=P(C, P1).
По условию задачи допустимая пропускная способность скрытого канала
является параметром программы, пусть она будет СMAX, таким образом по
P(CMAX, P1) мы сможем найти ту минимальную вероятность, с которой должны
генерироваться ложные запросы в зависимости от текущего уровня загрузки
ресурса P1.
Существуют
два
подхода
к
генерации
маскирующих
запросов,
основанные на сборе статистики по имевшим место запросам к ресурсу за
достаточно продолжительный период времени.
Вычисление по (1) в реальном времени – минус здесь огромные
накладные расходы по пересчёту P(CMAX, P1) на каждом интервале модуляции.
И второй подход аппроксимации формулы для P, к примеру, биномом Ньютона
вида:
P(C MAX , P1) 
A *C
i[1, N]
i
i
N
P1i (1  P1) N-i ,
(2)
где коэффициенты {Ai} положительны и не превышают единичного значения,
N – произвольный параметр, характеризующий степень приближения исходной
функции.
Для построения модели, описывающей генерацию ложного запроса в
понятиях схемы случаев и алгебры логики удобно воспользоваться равенством:
P
A
i, jN
i
 G i  (G N - j ) ,
(3)
непосредственно следующим из выбранной в (2) схемы аппроксимации P(CMAX,
P1). В выражении (3): (символ двойной черты над выражением) – предикат
реализации события из случайной выборки, вероятность которого равна
значению выражения; G k   P1  событие, связанное с одновременным
k
наблюдением события P1 в течении k выборок.
6.3 Пошаговое описание алгоритма адаптивной фильтрации
В этом разделе изложим основные шаги реализуемого алгоритма.
1) Инициализируем очередь для приходящих запросов (ОЗ) и циклическую
очередь для ведения статистики (ОС) длины N. С учетом допустимой
пропускной способности скрытого канала CMAX и величины N вычисляем
коэффициенты {Ai} в выражении (2) пункта 6.2 с помощью стандартного
метода наименьших квадратов.
2) Запускаем таймер на время, равное интервалу модуляции.
3) При получении запроса от пользователя кладем его в ОЗ либо отклоняем
в случае ее переполнения.
4) При срабатывании таймера проверяем ОЗ. При наличии в ней запроса
переходим к шагу 5, иначе к шагу 6.
5) Забираем запрос из ОЗ и формируем IP пакет заданной длины, при
необходимости вставляя в него незначащие символы. Добавляем в ОС
логическую “1”. Отправляем пакет и переходим к шагу 2.
6) Формируем случайную выборку значений P1 из ОС размером N.
Определяем число запросов (логических “1” в выборке) i из числа возможных
N. Генерируем и отправляем IP-пакет с ложным запросом с вероятностью,
равной коэффициенту Ai. Добавляем в ОС логический “0”. Переходим к шагу 2.
6.4 Реализация скрытого канала по времени
В этом разделе опишем общий алгоритм работы фильтра модуляции
СВК, описанного в разделе 4.2.
Изначально задаются определенные параметры: длина фрейма, период
модуляции, размер буфера очереди и т.д. По ним происходит запуск СВК и
модуляция
скрытой
передаваемой
технологии WinpkFilter,
информации
к примеру,
на
основе
выбранной
при передаче слова «test» будут
выполнены следующие шаги:
1) Накопление необходимого количества пакетов из драйвера, для
передачи 1 фрейма.
2) Посылка стартового сигнала StartOfFrame.
3) Передача данных оставшейся длины фрейма. Отправка символов
закодированных в двоичном 8-разрядном формате (ASCII-code).
4) Повторение этапов 2-3, пока не будет завершена передача слова «test».
7. Технология разработки программы
В этом разделе перечислим и опишем программные интерфейсы, а также
опишем общий порядок разработки программы.
Шаблон примерно такой:
Класс … используется для … и предоставляет следующий интерфейс.
Функция
Описание
8. Порядок использования
В этом разделе содержатся основные инструкции по использованию
разработанной программы, описание конфигурационных файлов и элементов
графического пользовательского интерфейса. Более подробные инструкции
приведены в разделе «Методика тестирования».
8.1 Технические требования
Для использования данной программы необходим специальный сетевой
драйвер, входящий в состав пакета WinpkFitler v3.0.4. Этот пакет можно
загрузить
из
Интернета
по
следующему
адресу:
http://ntoskrnl.com/downloads/winpkflt_rtl.zip.
Само ПО включает следующий набор файлов, которые должны
находиться в одной директории:
 adpt-ip-filter.exe – исполнимый файл, запускающий программу;
 ndisapi.dll – библиотека, содержащая интерфейс упомянутого выше
сетевого драйвера;
 main.ico – файл с иконкой для программы;
 application.properties – файл с изменяемыми параметрами программы;
 data.in – файл с данными для передачи по скрытому каналу, его имя
конфигурируется в предыдущем файле.
8.2 Файлы конфигурации
Разработанная
программа
использует
файлы
конфигурации,
позволяющие варьировать параметры системы. Эти файлы упомянуты в
предыдущем разделе 8.1: application.properties и data.in.
Файл
application.properties
содержит
строковые
и
целочисленные
параметры системы в виде <имя параметра> = <значение параметра>, для
строковых параметров значение берется в кавычки с одним пробелом перед
закрывающей.
Имя параметра
Описание
длина пакета (значение MTU)
интервал
модуляции
для
адаптивного
packetInterval
фильтра, скрытый канал использует этот же
интервал, увеличенный в 3 раза
размер буфера – очереди пакетов между
packetQueueSize
скрытым каналом и адаптивным фильтром
logFileName
имя лог-файла
длина сохраняемой истории пакетов –
packetHistoryLength
статистика для адаптивного фильтра
величина
допустимой
пропускной
maxAllowableCovertChannelCapacit способности канала, увеличенная в 100 раз для
y
целочисленности: 100 * СMAX
число точек для аппроксимации функции
precalculatedPointNumber
вероятности ложного пакета и метода
наименьших квадратов
имя файла с данными для скрытого канала (по
inputDataFileName
умолчанию “data.in”)
packetLength
Файл,
именованный
значением
параметра
inputDataFileName,
содержит произвольную строку с данными для кодирования и передачи по
скрытому каналу.
8.3 Пользовательский интерфейс
Графический пользовательский интерфейс программы довольно прост и
представляет из себя контекстное меню, вызываемое из области уведомлений
на панели задач (см. рис. 1). Меню предоставляет следующие пункты:
 Enable Adaptive IP Filter – включение/выключение адаптивного
фильтра.
 Enable
Covert
Channel
Filter –
включение/выключение
модуляции скрытого канала.
 Reload properties file – динамическая перезагрузка параметров
программы из файла конфигурации application.properties. Часть
параметров меняется мгновенно, часть – только после выключения
фильтра, использующего эти параметры.
 WAN Network Interface (IP), Подключение по локальной
сети и другие – список сетевых адаптеров в системе. Позволяется
выбрать один из этих адаптеров за исключением виртуальных,
относящихся к установленному сетевому драйверу (при попытке выбора
такого адаптера появится сообщение с просьбой выбрать другой адаптер).
 Exit – завершает работу программы, освобождая используемые ресурсы.
Рис. 1 Пользовательский интерфейс программы
Таким образом, порядок использования программы следующий:
1. Запуск приложения.
2. Выбор адаптера, для которого хотим запустить фильтры.
3. Включение/выключение фильтров.
4. Настройка параметров приложения через конфигурационный файл может
производиться на любом этапе, после чего необходимо выбрать пункт меню
«Reload properties file».
5. Завершение работы приложения через пункт меню «Exit».
6. Анализ созданных программой лог-файлов с информацией о времени
отправки каждого пакета (как альтернатива непосредственному просмотру
генерируемого трафика с помощью программы-снифера).
9. Методика тестирования
9.1 Используемые средства
Для тестирования была построена следующая система программных
компонент: механизм моделирования скрытого канала; адаптивный фильтр
(АФ), решающий основные поставленные задачи, сканер Wireshark, MathCad.
Механизм моделирования скрытого канала
состоит из двух частей:
серверная часть – встроена в основное решение и описана в предыдущих
разделах, а также клиентская часть, реализованная на Java.
Клиентская часть реализована в виде standalone приложения на Java. Для
имитации идеального СВК было решено уменьшить до минимума все
технические особенности и условности, связанные с передачей пакетов по сети
и перехвата их в точке назначения. Поэтому проверка работы скрытого канала
и эффективности его устранения осуществляется на основе лог-файла,
создаваемого основным программным модулем. Таким образом, основной
программный модуль производит журналирование посылаемых пакетов в логфайл. Далее этот файл анализируется клиентом, который по временной
модуляции пытается восстановить исходное сообщение.
Для проверки дополнения пакетов был использован сканер Wireshark,
позволяющий получить детальную информацию о входящих выходящих
пакетах в ЭВМ.
Так же для графической интерпретации результатов моделирования СВК
и
результатов
применения
адаптивного
возможности математического пакета MathCad.
фильтра
были
использованы
9.2 Тестирование адаптивного фильтра
Первым этапом является запуск системы с выключенным АФ и проверка
ее работоспособности как таковой. Для этого мы запускаем основной модуль и
активируем «Enable
Covert
Channel
Filter». Создаем сетевую
активность (к примеру, заходим в интернет). Ждём достаточный промежуток
времени или смотрим в журналируемый файл, пока не пойдут одни единицы
(StartOfFrame-ы), рис. Далее останавливаем процесс и запускаем клиента для
проверки полученных при модуляции данных рис, убедившись, что всё
правильно, и построив графическое представление в MadCad-е рис, переходим
ко второму этапу.
Вторым этапом является проверкой адаптивного фильтра на основную
функциональность, а именно устранения СВК. Для этого необходимо запустить
основной модуль и через меню приложения выбрать сначала «Enable
Adaptive IP Filter», а затем «Enable Covert Channel Filter».
Далее выполняем действия по загрузки сети пакетами
(пользуемся
интернетом), до момента отправки всей информации. Останавливаем основной
модуль и запускаем клиента для обработки журналируемого файла. Как
результат мы не должны обнаружить ситуации полученной на первом этапе, а
именно правильного декодирования информации рис. Далее строим графики и
сравниваем результаты рис, учитывая, что задача стояла реализовать
адаптивный метод – поведение графика не должно крайне резко измениться.
Так же можно оценить и загрузку сети (переданные лишние пакеты по
отношению к общему количеству):
Третьим этапом является проверка выравнивания пакетов адаптивным
фильтром по конкретной длине. Для этого повторяем второй этап, только
изначально запускаем сканер Wireshark, и отслеживая исходящий трафик,
убеждаемся, что пакеты действительно выровнены рис.
Список источников
1. Serdar Cabuk, Carla E. Brodley, Clay Shields IP Covert Timing Channels:
Design and Detection // 11th ACM Conference on Computer & Communications
Security. 2004. PP. 178–187.
2. Vincent Berk, Annarita Giani, George Cybenko Detection of Covert Channel
Encoding in Network Packet Delays. 2005.
3. Myong H. Kang, Ira S. Moskowitz A Pump for Rapid, Reliable, Secure
Communication // 1st ACM Conference on Computer & Communications Security.
1993. PP. 119–129.
4. Тарасюк М. В. Адаптивная маскировка скрытых каналов в открытых
системах с многоуровневым доступом.
Download