ОБХОД ШТАТНОГО МЕЖСЕТЕВОГО ЭКРАНА WINDOWS XP*
М.В. Левыкин
Проблема создания «невидимых» агентов является ключевой задачей защиты информации. Скрытая передача данных - это одна из подзадач разработки «невидимых» агентов. При этом под скрытой передачей данных наиболее часто понимается создание стеганографических схем в сетевых протоколах передачи данных (скрытых каналах1). В данной же работе рассматривается возможность создания легального канала связи в Windows, который осуществлял бы сетевое взаимодействие «невидимо» для штатных средств фильтрации пакетов. При этом обосновывается возможность создания такого канала связи.
Ключевые слова: межсетевой экран (МЭ), брандмауэр, сетевая архитектура, условие невлияния, ОС Windows, драйвер.
Введение
Бурное развитие телекоммуникационных технологий, снижение стоимости оборудования локальных сетей и услуг доступа в глобальные сети создали благоприятные условия для повсеместного внедрения современных информационных технологий во многие сферы хозяйственной деятельности. На сегодняшний день уже достаточно сложно найти даже небольшое предприятие, в офисе которого не развернута локальная сеть, которое не использует в своей деятельности сеть Интернет, которое не использует Windows. По мере усложнения применяемых информационных технологий все труднее становится контролировать процессы, происходящие в информационной системе предприятия.
* Работа выполнена при поддержке РФФИ, грант №07-07-00236.
Известно также, что самой распространенной ОС в мире является семейство Windows, ее доля на рынке персональных компьютеров составляет около 92%. По сути, Windows и ее средства защиты и контроля применяются повсеместно в силу распространенности. Однако при всем вышеизложенном Windows - коммерческая ОС и остается во многом не изученной и закрытой.
Такое положение дел, в свою очередь, привело к вполне закономерному росту интереса к вопросам защиты информации в компьютерных сетях Windows, в организации контроля за сетевой активностью данной ОС.
Цели и задачи
Цель данной работы - доказать возможность создания каналов связи в обход штатного средства фильтрации пакетов - брандмауэра Windows.
Для достижения поставленной цели необходимо решить следующие задачи:
- описать сетевую архитектуру Windows;
- описать работу штатных средств фильтрации пакетов и их место в общей сетевой архитектуре;
- обосновать возможность построения каналов связи в обход штатных средств фильтрации.
Анализ использованных источников и литературы
При написании работы была использована литература по двум основным тематикам: сетевой архитектуре Windows и Модели невлияния. Необходимо заметить, что документации по сетевой архитектуре Windows достаточно много. Она хорошо представлена в документации для разработчиков драйверов DDK (Driver Development Kit), в книгах Марка Руссиновича и Дэвида Соломона.
Модель невлияния и «невидимость» агентов хорошо описаны в статьях А.А. Грушо и Е.Е. Тимониной.
Сетевая архитектура Windows
Windows создавалась с учетом необходимости работы в сети, поэтому в операционную систему включена всесторонняя поддержка сетей, интегрированная с подсистемой ввода-вывода и Windows API (Application Programming Interface). К четырем базовым типам сетевого программного обеспечения относятся сервисы,
API, протоколы и драйверы устройств сетевых адаптеров. Все они располагаются один над другим, образуя сетевой стек. Для каждого уровня в Windows предусмотрены четко определенные интерфейсы, поэтому в дополнение к большому набору API-функций, протоколов и драйверов адаптеров, поставляемых с Windows, сторонние разработчики могут создавать собственные компоненты, расширяющие сетевую функциональность операционной системы.
Рассмотрим сетевой стек Windows снизу доверху. Сначала мы поговорим о том, как сетевые компоненты Windows соотносятся с уровнями эталонной модели OSI (Open Systems Interconnection). Далее мы кратко опишем сетевые API, доступные в Windows. Особое внимание мы обратим на то, как устроены драйверы протоколов, так как они реализованы на самом низком уровне сетевой архитектуры Windows. Затем покажем, каким образом можно обойти штатные средства фильтрации пакетов в Windows.
Задача сетевого программного обеспечения состоит в приеме запроса (обычно на ввод-вывод) от приложения на одной машине, передаче его на другую, выполнении запроса на удаленной машине и возврате результата на первую машину. В ходе этих операций запрос неоднократно трансформируется. Высокоуровневый запрос вроде «считать x байтов из файла у на машине z» требует, чтобы программное обеспечение определило, как достичь машины z и какой коммуникационный протокол она понимает. Затем запрос должен быть преобразован для передачи по сети - например, разбит на короткие пакеты данных. Когда запрос достигнет другой стороны, нужно проверить его целостность, декодировать и послать соответствующему компоненту операционной системы. По окончании обработки запрос должен быть закодирован для обратной передачи по сети.
Эталонная модель OSI
Чтобы помочь поставщикам в стандартизации и интеграции их сетевого программного обеспечения, международная организации но стандартизации (ISO) определила программную модель пересылки сообщений между компьютерами. Эта модель получила название Эталонной модели OSI. В ней определено семь уровней программного обеспечения.
Прикладной Прикладной
Презентационный Презентационный
Сеансовый Сеансовый
Транспортный Транспортный
Сетевой Сетевой
Канальный Канальный
Физический Физический
) [ Несущая среда 1 1
Рис. 1. Эталонная модель OSI
Эталонная модель 081 - идеал, точно реализованный лишь в очень немногих системах, но часто используемый при объяснении основных принципов работы сети. Каждый уровень на одной из машин считает, что он взаимодействует с тем же уровнем на другой машине. На данном уровне обе машины «разговаривают» на одном языке, или протоколе. Но в действительности сетевой запрос должен сначала пройти до самого нижнего уровня на первой машине, затем он передается по несущей среде и уже на второй машине вновь поднимается до уровня, который его поймет и обработает.
Задача каждого уровня в том, чтобы предоставлять сервисы более высоким уровням и скрывать от них конкретную реализацию этих сервисов.
Краткое описание уровней эталонной модели OSI
Прикладной уровень. Обрабатывает передачу данных между двумя сетевыми приложениями, включая проверку прав доступа, идентификацию взаимодействующих машин и инициацию обмена данными.
Презентационный уровень. Отвечает за форматирование данных, в том числе решает, должны ли строки заканчиваться парой символов «возврат каретки/перевод строки» (CR/LF) или только символом «возврат каретки» (CR), надо ли сжимать данные, кодировать и т. д.
Сеансовый уровень. Управляет соединением взаимодействующих приложений, включая высокоуровневую синхронизацию и контроль за тем, какое из них «говорит», а какое «слушает».
Транспортный уровень. На передающей стороне разбивает сообщения на пакеты и присваивает им порядковые номера, гарантирует прием пакетов в должном порядке. Кроме того, изолирует сеансовый уровень от влияния изменений в составе оборудования.
Сетевой уровень. Создает заголовки пакетов, отвечает за маршрутизацию, контроль трафика и взаимодействие с межсетевой средой. Это самый высокий из уровней, который понимает топологию сетей, т. е. физическую конфигурацию машин в них, ограничения пропускной способности этих сетей и т. д.
Канальный уровень. Пересылает низкоуровневые кадры данных, ждет подтверждений об их приеме и повторяет передачу кадров, потерянных в ненадежных линиях связи.
Физический уровень. Передает биты по сетевому кабелю или другой физической несущей среде.
Как уже говорилось, каждый сетевой уровень считает, что он взаимодействует с эквивалентным уровнем на другой машине, который использует тот же протокол. Набор протоколов, передающих запросы по сетевым уровням, называется стек протоколов.
На рис. 2. представлена общая схема сетевых компонентов Windows, их соответствие уровням модели OSI, а также протоколы, используемые различными уровнями. Как видите, между уровнями OSI и реальными сетевыми компонентами нет точного соответствия. Некоторые компоненты охватывают несколько уровней. Ниже приводится список сетевых компонентов с кратким описанием.
Сетевые API. Обеспечивают независимое от протоколов взаимодействие приложений через сеть. Сетевые API реализуются либо в режиме ядра и пользовательском режиме, либо только в пользовательском режиме. Некоторые сетевые API являются оболочками других API и реализуют специфическую модель программирования или предоставляют дополнительные сервисы. (Термином «сетевые АР1» обозначаются любые программные интерфейсы, предоставляемые сетевым программным обеспечением.)
Клиенты TDI (Transport Driver Interface). Драйверы устройств режима ядра, обычно реализующие ту часть сетевого API, которая работает в режиме ядра. Клиенты TDI называются так из-за того, что пакеты запросов ввода-вывода IRP(I/O Request Packet), которые они посылают драйверам протоколов, форматируются по стандарту Transport Driver Interface (документированному в DDK(Driver Development Kit)). Этот стандарт определяет общий интерфейс программирования драйверов устройств режима ядра.
Обход штатного межсетевого экрана Windows XP Сетевые компоненты Windows
Прикладной
Сетевое приложение
Презентационный DLL се- тевое API
Сеансовый Драйвер сетевого API — клиент TOI
Транспортный Драйвер протокола - транспорт TD1
Сетевой (TCP/IP, NETBEUI, IPK/SPX)
Канальный NDIS библиотека NDIS минипорт
Физический
Ethernet, IrDA, ATMf
- HAL
Рис. 2. Модель OSI и сетевые компоненты Windows
Транспорты TDI. Представляют собой драйверы протоколов режима ядра и часто называются транспортами, NDIS-драйверами протоколов или драйверами протоколов. Они принимают IRP от клиентов TDI и обрабатывают запросы, представленные этими IRP. Обработка запросов может потребовать взаимодействия через сеть с другим равноправным компьютером; в таком случае транспорт TDI добавляет к IRP данным заголовки, специфичные для конкретного протокола (TCP, UDP, IPX), и взаимодействует с драйверами адаптеров через функции NDIS (также документированные в DDK). В общем, транспорты TDI связывают приложения через сеть, выполняя такие операции: сегментация сообщений, их восстановление, упорядочивание, подтверждение и повторная передача.
Библиотека NDIS (Ndis.sys). Инкапсулирует функциональность для драйверов адаптеров, скрывая от них специфику среды Windows, работающей в режиме ядра. Библиотека NDIS экспортирует функции для транспортов TDI, а также функций поддержки для драйверов адаптеров.
Минипорт-драйверы NDIS. Драйверы режима ядра, отвечающие за организацию интерфейсов между транспортами TDI и конкретными сетевыми адаптерами. Минипорт-драйверы NDIS пишутся так, чтобы они были заключены в оболочку библиотеки NDIS. Такая инкапсуляция обеспечивает межплатформенную совместимость с потребительскими версиями Microsoft Windows. Минипорт-драйверы NDIS не обрабатывают IRP, а регистрируют интерфейс таблицы вызовов библиотеки NDIS, которая содержит указатели на функции, соответствующие функциям, экспортируемым библиотекой NDIS для транспортов TDI.
Минипорт-драйверы NDIS взаимодействуют с сетевыми адаптерами, используя функции библиотеки NDIS, которые вызывают соответствующие функции HAL (Hardware Abstraction Layer). Фактически четыре нижних сетевых уровня часто обозначают собирательным термином «транспорт», а компоненты, расположенные на трех верхних уровнях, - термином «пользователи транспорта»2.
Ряд сетевых сервисов Windows расширяет базовые сетевые возможности драйвера TCP/IP за счет применения драйверов-надстроек, интегрируемых с драйвером TCP/IP через закрытые интерфейсы. К числу таких сервисов относятся трансляция сетевых адресов (NAT), IP-фильтрация, подключение IP-ловушек (IP-hooking) и IP-Sec. На рис. 3. показано, как эти расширения связаны с драйвером TCP/IP. Нас наиболее интересует IP-фильтрация.
Рис. 3. Архитектура расширений TCP/IP
Трансляция сетевых адресов
Трансляция сетевых адресов (network address translation, NAT) представляет собой сервис маршрутизации, позволяющий отображать несколько закрытых IP-адресов на один общий IP-адрес, видимый в Интернете. Без NAT для коммуникационной связи с Интернетом каждому компьютеру в локальной сети (LAN) пришлось бы назначать свой IP-адрес, видимый в Интернете. NAT дает возможность назначить такой IP-адрес только одному из компьютеров в локальной сети и подключать остальные компьютеры к Интернету через него. NAT по мере необходимости транслирует LAN-адреса в общий IP-адрес, перенаправляя пакеты из Интернета на соответствующий компьютер в локальной сети.
Компоненты NAT в Windows - драйвер устройства NAT (\Windows\System32\Drivers\Ipnat.sys), взаимодействующий со стеком TCP/IP, а также редакторы, с помощью которых возможна дополнительная обработка пакетов (помимо трансляции адресов и портов).
IP-фильтрация
В Windows 2000, Windows ХР и Windows Server 2003 есть базовые средства IP-фильтрации, позволяющие пропускать пакеты только неопределенным портам или IP- протоколам.
В Windows ХР введен персональный брандмауэр — Windows Firewall, возможности которого шире, чем у базовых средств фильтрации. Windows Firewall реализует брандмауэр с поддержкой состояний (stateful firewall), который отслеживает и различает трафик, генерируемый TCP/IP, и трафик, поступающий из LAN и Интернета. Когда вы включаете Windows Firewall для какого-либо сетевого интерфейса, весь незатребованный входящий трафик по умолчанию отбрасывается. Приложение или пользователь может определить исключения, чтобы сервисы, работающие на данном компьютере (вроде службы доступа к общим файлам и принтерам), были доступны с других компьютеров.
Сервис Windows Firewall/ICS (Internet Connection Sharing), выполняемый в процессе Svchost, передает правила исключения, определенные через пользовательский интерфейс Windows Firewall, драйверу IPNat. В режиме ядра Windows Firewall реализован в том же драйвере (\Windows\System32\Drivers\Ipnat.Sys), который реализует трансляцию сетевых адресов (NAT). Драйвер NAT регистрируется в драйвере TCP/IP как драйвер ловушки
брандмауэра (firewall hook). Драйвер TCP/IP выполняет функции обратного вызова каждой зарегистрированной ловушки брандмауэра в ходе обработки входящих и исходящих IP-пакетов. Функция обратного вызова может выступать в роли NAT, модифицируя адреса источника и получателя в пакете, или в роли брандмауэра, возвращая код состояния, указывающий TCP/IP отбросить пакет.
IP-фильтр и ловушка фильтра
В Windows ХР и Windows Server 2003 включен API фильтрации пакетов пользовательского режима, а также драйвер фильтра IP, \Windows\System32\Drivers\Ipfltrdrv.sys, которые позволяют приложениям управлять входящими и исходящими пакетами. Кроме того, драйвер фильтра IP дает возможность максимум одному драйверу регистрироваться в качестве драйвера ловушки фильтра (filter hook). TCP/IP - по аналогии с тем, как он взаимодействует с драйверами ловушек брандмауэра, - выполняет функцию, которую указывает драйвер фильтра IP, а это позволяет IP-фильт-ру отбрасывать или модифицировать пакеты. В свою очередь IP-фильтр обращается к функции обратного вызова, заданной драйвером ловушки фильтра, и тем самым передает изменения или запрос на отклонение пакета драйверу TCP/IP.
Функциональность ловушки фильтра, предоставляемая системой, дает возможность сторонним разработчикам добавлять новые средства трансляции, брандмауэра, протоколирования и т. д.3
Обход брандмауэра Windows
Согласно сетевой архитектуре Windows дополнительные сервисы фильтрации пакетов и создание IP-ловушек, реализованные в штатном брандмауэре Windows, находятся на уровне более высоком, чем NDIS библиотека.
Еще раз рассмотрим общую схему сетевой архитектуры Windows и средств фильтрации пакетов в ней, представленную на рис. 4. Из схемы видно: создание NDIS драйвера позволяет получать доступ ко всем пакетам данного хоста до обработки этих пакетов брандмауэра Windows.
Таким образом, если выполняется условие невлияния4, т. е. субъект на уровне Low (драйвер NDIS) может выполнять все свои действия и способен «видеть» действия субъекта на уровне High (брандмауэр Windows), но любой субъект на уровне High не может «видеть» никаких действий или их результатов на уровне Low, то
m
Приложения, управляющие фильтрацией пакетов
Драйверы ловушек брандмауэра
API фильтрации пакетов
NDIS драйвер
Рис. 4. Обход штатных средств фильтрации Windows
Штатные средства фильтрации
High Low
Агент злоумышленника
О сч
тогда система удовлетворяет условию невлияния. Если враждебный агент находится на уровне Low, а механизмы защиты находятся на уровне High и выполняются условия невлияния, то агент не может быть «увиден» средствами защиты. Следовательно, любая реализация NDIS драйвера приводит к возможности обхода штатного МЭ Windows.
Заключение
В результате проведенного исследования были решены поставленные задачи и получены следующие основные результаты: описана сетевая архитектура Windows;
описана работа штатных средств фильтрации пакетов и их место в общей сетевой архитектуре;
приведено теоретическое обоснование возможности построения каналов связи в обход штатных средств фильтрации Windows. На основе полученных результатов был сделан следующий вывод: При построении средств фильтраций пакетов в ОС Windows реализация фильтра должна быть на уровне NDIS драйвера. Иначе будет выполняться условие «невидимости», что приводит к возможности обхода фильтрующего средства.
Примечания
См.: Тимонина Е.Е. Скрытые каналы (обзор) // Jet Info: Изд-во компании «Джет Инфо Паблишен». 14(114), 2004.
Руссинович M, Соломон Д. Внутреннее устройство Microsoft Windows:
Windows Server 2003, Windows XP и Windows 2000. Мастер-класс: Пер. с. англ.
4-е изд. М.: Изд-во «Русская редакция»; СПб.: Питер, 2006.
См.: Холлунг Г., Батлер Дж. Руткиты: внедрение в ядро Windows. СПб.: Питер,
2007.
Грушо А.А, Шумицкая ЕЛ. Модель невлияния и скрытые каналы. Дискрет. матем., 2002, 14:1. С. 11-16.
1
2
3
4