Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4,6 Firewalls Общая информация и применение пер...doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
4.61 Mб
Скачать

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 обеспечивает аналогичный метод маскирования, однако при этом реализует ряд дополнительных функций:

  1. Передача и исполнение команд shell.

  2. Использование методов шифрования и обмена ключами.

  1. Diffie-Hallman.

  2. MD5.

  3. Blowfish режим CFB, 128 битный ключ.

  4. XOR.

  5. Отсутствие шифрования.

  1. Горячая смена маскирующих протоколов:

  1. ICMP.

  2. DNS.

Алгоритм работы Loki2 представлен на рисунке 4.21. Система состоит из прикладной программы (или библиотеки) и демонов 4 уровней. Демон первого уровня запускается до запуска Loki2, например, при старте операционной системы.

Демон второго уровня порождается демоном первого уровня для обработки запросов от локального клиента и входящих пакетов.

При поступлении запроса от клиента sendto() клиент второго уровня создает демон третьего уровня. Этот демон реализует:

  1. Анализ входящих данных.

  2. Функции обработки соединения, которые не реализованы собственно протоколом ICMP.

  3. Функции шифрования и обмена ключами.

  4. Горячая смена маскирующих протоколов.

Демон третьего уровня порождает демон четвертого уровня, который принимает и исполняет команды shell.

Loki2 поддерживает следующие операционные системы:

  1. Linux 2.0.x.

  2. OpenBSD 2.1.

  3. FreeBSD 2.1.x.

  4. 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.