- •Введение
- •1 Анализ основных типов мэ и способов их применения
- •1.1 Типы межсетевых экранов
- •1.1.1 Фильтры пакетов
- •1.1.2 Фильтры пакетов с контекстной проверкой
- •1.1.3 Сервер уровня соединения
- •1.1.4 Серверы прикладного уровня
- •1.2 Способы применения межсетевых экранов
- •1.Стандартные схемы защиты отдельной локальной сети.
- •1.2.1 Стандартные схемы защиты отдельной локальной сети
- •1.2.2 Применение в составе средств коллективной защиты
- •1.3 Персональные межсетевые экраны
- •1.4 Обобщенная концепция применения межсетевых экранов
- •1.5 Обзор персональных межсетевых экранов, доступных на рынке
- •2 Классификация уязвимостей сетевых экранов, создающих предпосылки их компрометации
- •2.1 Уязвимости сетевых протоколов
- •2.1.1 Снифферы пакетов
- •2.1.2 Уязвимость маршрутизации от источника
- •2.1.4 Атаки типа “отказ в обслуживании”
- •2.1.5 Атаки syn flood
- •2.1.6 Атака Smurf
- •2.1.7 Атака Tribe Flood Network
- •2.1.8 Атака WinFreeze.
- •2.1.9 Атака Loki.
- •2.1.10 Arp атаки
- •2.1.11 Фрагментация
- •2.2 Уязвимости операционных систем
- •2.2.1 Получение прав другого пользователя
- •2.2.2 Нелегальное подключение к системе
- •2.2.3 Человеческий фактор
- •2.2.4 Совместимость с другими операционными системами
- •2.2.5 Парольные атаки
- •2.2.6 Вирусы и приложения типа "троянский конь"
- •2.3 Уязвимости программной реализации сетевых экранов
- •2.3.1 Атаки через туннели в межсетевом экране
- •2.3.2 Атаки вследствие неправильной конфигурации межсетевого экрана
- •2.3.3 Атаки осуществляемые в обход межсетевого экрана
- •2.3.4 Атаки осуществляемые из доверенных узлов и сетей
- •2.3.5 Атаки путем подмены адреса источника
- •2.3.6 Атаки на сам межсетевой экран
- •2.3.7 Атаки на подсистему аутентификации межсетевого экрана
- •2.4 Выводы
- •3 Исследование архитектуры и функционирования мэ на примере предложенного по
- •3.1 Исследование механизмов взаимодействия средств сетевой безопасности с операционной системой
- •3.1.1 Подходы к организации фильтрования трафика в ос Windows
- •3.3 Выводы
- •4 Разработка алгоритмов для проверки уязвимостей средств сетевой безопасности
- •4.1 Обобщённый алгоритм воздействия на средства сетевой безопасности
- •4.3.2.1 Инвентаризация Windows nt/2000/xp
- •4.3.2.3 Инвентаризация unix
- •4.3.3 Проникновение в сеть и захват контроля над хостом
- •4.3.3.1 Взлом хоста с ос Windows
- •4.3.3.2 Взлом хоста с ос Unix
- •4.4 Разработка алгоритмов воздействия на средства сетевой защиты изнутри защищенной сети
- •4.4.1 «Инъекции» кода
- •4.4.2 Использование виртуальной машины
- •4.4.3 Использование уязвимостей ActiveX
- •4.5 Разработка алгоритмов, основанных на уязвимостях механизма взаимодействия средств сетевой безопасности с операционной системой
- •4.6 Разработка алгоритмов установления соединения с компьютером, защищенным межсетевым экраном, персональным сетевым экраном и несколькими сетевыми экранами
- •4.6.1 Http-тунелирование
- •4.6.2 Icmp-тунелирование
- •4.6.4 Pcap-тунелирование
- •4.7 Выводы
4.6.2 Icmp-тунелирование
В настоящее время разработано большое количество программных средств реализующих маскирование информации по протоколу ICMP. Первое описание данного метода в рамках Project Loki представлено в работе [30] в 1996 году. Loki обеспечивает маскирование информации только в поле данных пакетов ICMP_ECHO_REQUEST и ICMP_ECHO_REPLY. Loki выбирает очередные 51 байт информации из маскируемого сообщения или трафика, создает пакет ICMP_ ECHO_REQUEST и помещает маскируемые данные в поле данных ICMP пакета. При поступлении входящего ICMP_ECHO_REQUEST Loki анализирует содержимое пакета и восстанавливает исходную информацию. В случае необходимости отправки ответного сообщения или трафика формирует ICMP_ECHO_REPLY, в поле данных которого помещает информацию.
Практическая реализация Loki2 представлена в работе Loki02. Loki2 обеспечивает аналогичный метод маскирования, однако при этом реализует ряд дополнительных функций:
Передача и исполнение команд shell.
Использование методов шифрования и обмена ключами.
Diffie-Hallman.
MD5.
Blowfish режим CFB, 128 битный ключ.
XOR.
Отсутствие шифрования.
Горячая смена маскирующих протоколов:
ICMP.
DNS.
Алгоритм работы Loki2 представлен на рисунке 4.21. Система состоит из прикладной программы (или библиотеки) и демонов 4 уровней. Демон первого уровня запускается до запуска Loki2, например, при старте операционной системы.
Демон второго уровня порождается демоном первого уровня для обработки запросов от локального клиента и входящих пакетов.
При поступлении запроса от клиента sendto() клиент второго уровня создает демон третьего уровня. Этот демон реализует:
Анализ входящих данных.
Функции обработки соединения, которые не реализованы собственно протоколом ICMP.
Функции шифрования и обмена ключами.
Горячая смена маскирующих протоколов.
Демон третьего уровня порождает демон четвертого уровня, который принимает и исполняет команды shell.
Loki2 поддерживает следующие операционные системы:
Linux 2.0.x.
OpenBSD 2.1.
FreeBSD 2.1.x.
Solaris 2.5.x.
ICMP является одним из самых распространенных протоколов маскирования информации, поскольку обеспечивает универсальность и высокую пропускную способность. Однако на большинстве рабочих станций и серверов, работающих в пределах локальных сетей и датацентров провайдеров, запрещен прием входящих ICMP запросов.
Маскирование данных в протоколе ICMP реализовано в ряде других программных инструментов ICMPTunnel, Ish, ITunnel и 007Shell.
----------------
| LOKI2 CLIENT |
---------------- -----------------------------------
^ | sendto() | FIRST GENERATION LOKI2 DAEMON |
| | -----------------------------------
| | client sends | shadow() server forks
| | data v
| v |
| | -----
| | |
| | |
| | v fork()
| | -----
| | C| |P
| v | |
| | | ----> clean_exit() parent exits
| | |
| | | 2nd generation child daemon becomes leader of a new
| | | session, handles initial network requests
^ | |
| | v
| | ------------------------------
| -----------> | SECOND GENERATION DAEMON | read() blocks until
| LOKI2 ------------------------------ data arrives
| network | ^
| traffic | |
| | |
-------<---- | |
| | |
| | |
| | |
| v fork() |
| ----- |
^ C| |P |
| | | | parent continues
| | --->------
| |
| | 3rd generation daemon handles client request
| v
| -----------------------------
--<---| THIRD GENERATION DAEMON |
-----------------------------
switch(PACKET_TYPE)
L_PK_REQ: L_REQ:
STRONG_CRYPTO POPEN
key management PTY |
| pipe() <---------
| | |
-------<--------------------<------ | |
| ---- |
| | |
| v fork() |
v ----- |
Unimplemented (7.97) C| |P |
| | ^
| ----> exit() |
| |
4th generation child | ---->------->---
daemon execs commands v |
------------------------------
| FOURTH GENERATION DAEMON | exec() 4g child execs
------------------------------ command in
STDOUT of command /bin/sh
to client via pipe
Рисунок 4.21 - Алгоритм работы Loki2
4.6.3 DNS-тунелирование
В операционных системах W2k/WinXP имеется сервис DNS-клиента, который выполняет все DNS-запросы. Само собой, файрвол должен доверять этой службе (svchost.exe) по умолчанию, иначе для работы в сети пришлось бы запоминать не имена сайтов типа www.somename.ru, а их IP-адреса.
По умолчанию, системная служба DNS клиента, которым является services.exe для Win2000 или svchost.exe для WinXP, посылает запросы от своего имени для любой программы, которой это тербуется.
Программа DNS tester [31] использует эту службу, чтобы передать данные на сервер (вовсе не DNS). Недостатком этого метода является возможность отключения службы, что вынудит приложения посылать DNS запросы от своего лица. Такие запросы должны соответствовать правилам МЭ и легко блокируются.
Однако отключение службы происходит крайне редко, посколькоу администратор будет вынужден работать с N-правил вместо 1-го глобального для DNS, а при изменении адреса DNS-сервера необходимо будет изменить и эти N правил. Кроме того, существует проблема – если для svchost.exe запретить DNS-зарпосы, то возникают проблемы с sync timeserver.
