Понятие протокола, и связанные с ним понятия

Вид материалаДокументы

Содержание


Олифер В.Г., Олифер Н.А.
Троянский конь
Подобный материал:
1   ...   12   13   14   15   16   17   18   19   20

Литература

  1. Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для ВУЗов 2-е издание, СПб.: Питер, 2004 – 864 с.
  2. Робачевский А.Н. Операционная система UNIX. СПб.: БХВ-Петербург, 2003 – 528 с.
  3. Бертсекас Д., Галлагер Р. Сети передачи данных: Пер. с англ. – М.: Мир, 1989. – 544с.
  4. Боккер П. Передача данных: Техника связи в системах телеобработки данных. В 2-х томах. Пер. с немецкого. – М.: Радио и связь, 1981г.
  5. Олифер В.Г., Олифер Н.А. Сетевые операционные системы ссылка скрыта
  6. Политика безопасности при работе в Интернете – техническое руководство ссылка скрыта
  7. RFC-791-793,826,1700,… ссылка скрыта, ditor.org
  8. Семенов Ю.А. Телекоммуникационные технологии ссылка скрыта
  9. ссылка скрыта

1 Как бы это не напоминало известный анекдот о славянском бизнесе – «украдем ящик водки, продадим по дешевке, а вырученные деньги пропьем» – в некоторых случаях такой подход вполне целесообразен. Например, протокол PPP допускает передачу сжатых и зашифрованных датаграмм. Все сжатые и все зашифрованные датаграммы имеют единый тип «сжатая» или «зашифрованная» датаграмма соответственно – это разумно, потому что все они должны обрабатываться единым образом. Но после того, как исходный вид датаграммы восстановлен, возникает проблема ее интерпретации. Для этого используется усеченный вариант того же PPP протокола. Другой пример будет рассмотрен при изучении протокола IP (инкапсуляция IP в IP).

2 В большинстве технологий территориальных (WAN) сетей (X.25, Frame Relay, ATM) используются виртуальные каналы, при этом задача маршрутизации в полном объеме решается только при установлении соединения. В IP-сетях эта задача решается для каждого пакета в каждом маршрутизаторе. Следует учесть, что потребная скорость решения этой задачи быстро растет. В течении 10 лет (1985­­–1995) роль магистрали Internet играла сеть NFSNET. В 1985 году эта сеть использовала каналы пропускной способностью 56Кбит/с (цифровой телефонный канал с «кражей бита»). В 1995 году она использовала в качестве магистральных уже каналы 43Мбит/с (T3) – за 10 лет рост пропускной способности почти в 1000 раз! Современные магистрали используют каналы пропускной способностью до 10Гбит/с (SDH, 10G Ethernet). Легко понять, что если магистрали 56Кбит/с требовали маршрутизаторов, работающих в темпе центров коммутации пакетов X.25 (23 тысячи пакетов в секунду), то современные магистрали требуют темпов коммутаторов 10G Ethernet – миллионы пакетов в секунду!

3 Причины, по которым контрольной суммой проверяется только заголовок, следующие: во первых - вычисление контрольной суммы при каждой обработке пакета создает дополнительную нагрузку на маршрутизатор, а во вторых, некоторым приложениям, возможно, лучше получить искаженный пакет, чем не получить никакого (например, они могут использовать коррекцию ошибок самостоятельно, либо может быть важен сам факт получения пакета).

4 При этом можно попасть в положение Мольеровского господина Журдена, не подозревавшего, что он всю жизнь разговаривал прозой. Допустим, мы желаем управлять некой программой посредством какого-то экзотического устройства ввода/вывода (например, пульта дистанционного управления телевизора). Программа такую экзотику не поддерживает, но допускает удаленное управление посредством какого-то протокола вроде Telnet. В таком случае драйвер, обслуживающий адаптер нашего экзотического устройства может преобразовывать управляющие коды устройства в команды протокола удаленного управления, упаковывать их в TCP-сегменты или UDP-датаграммы, эти последние в IP-пакеты, и отправлять их по адресу 127.0.0.1. Компьютер при этом может быть не подключен ни к какой сети (кроме, естественно, сети электропитания), но программа netstat покажет открытые порты и статистику обмена. Еще одна потенциальная ловушка – «тихо сам с собою я веду беседу». Компьютер, пославший широковещательный запрос, может получить на него ответ от самого себя (через интерфейс loopback), даже если он вообще не подключен ни к какой сети. То же, впрочем, относится и к обращению по своему собственному IP-адресу.

5 При этом узел, подключенный к 2 и более сетям, может играть роль шлюза между этими сетями, а может и нет, в зависимости от того, как он сконфигурирован.

6 На первый взгляд, довольно бессмысленный вариант, однако он востребован! Например, имеется корпоративная сеть, использующая свой набор адресов, отличный от Internet (см. далее). Пока эта сеть полностью связна, проблем не возникает, но что делать, если физической связности нет (подразделения компании размещены в разных городах, или даже странах), и оптимально объединить их как раз через Internet? В этом случае как раз и используется «IP–туннель» – пограничный (между фрагментом корпоративной сети и Internet) маршрутизатор фрагмента сети помещает пакет в другой пакет, с адресом пограничного маршрутизатора сети назначения, и отправляет в Internet. Пограничный маршрутизатор сети назначения получает пакет, извлекает из него вложенный пакет, видит, что пакет адресован не ему, и отправляет его по назначению.

7 Вообще-то такой вырожденной сети можно было бы и не присваивать адреса, но, к сожалению, во многих случаях программное обеспечение предполагает, что каждый интерфейс маршрутизатора должен иметь IP-адрес.

8 Реч идет именно об ICMP-сообщениях об ошибках. Разумеется, ICMP-запросы порождают ответы! Более того, ICMP-сообщение об ошибке может быть сгенерировано в ответ на ICMP-запрос!

9 Вообще-то спецификация протокола ICMP утверждает «по крайней мере 64 бита». Так что этот параметр является настраиваемым. Но большинство реализаций возвращают ровно 64 бита(8 байт), по крайней мере, при установках по умолчанию.

10 Это частный случай модели машины конечных состояний (FSM - Finite State Machine) – базовой концепции построения многих современных протоколов. При этом подходе протокол характеризуется машиной, которая в любой момент времени находится в каком-то конкретном состоянии. Из любого состояния может быть нуль или более возможных переходов в другое состояние.

Машина переходит с одного состояния на другое в ответ на события. В случае TCP событие – это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени. Машина состояний протокола может быть охарактеризована с помощью ориентированного графа, в котором число узлы соответствуют конечным состояниям системы, а ребра – совокупности возможных переходов из одного состояния в другое. Одно из состояний выбирается в качестве исходного (в нашем случае CLOSED). Из этого состояния система может попасть в некоторые (все) другие состояния с помощью последовательности переходов.

Эту модель удобно использовать для анализа корректности протокола. Если в результате анализа графа машины конечных состояний выясняется, что в случае наступления некоторого события, не определено, в какое состояние должна перейти машина, это свидетельствует о наличии ошибки в протоколе. Если обнаруживается одно или несколько состояний, из которых нет перехода куда-либо во вне (тупик), такое положение также свидетельствует об ошибке.

11 В принципе, примитивный аналог такого алгоритма можно было бы организовать на основе ICMP сообщений Router Advertisement. Если каждый маршрутизатор, объявляя маршруты, полученные посредством этих сообщений, вычитал из приоритета маршрута определенную метрику, наибольшим приоритетом обладал бы маршрут, полученный по кратчайшему пути.

12 Заметим, что как в сообщениях протокола RIP, так и в сообщениях OSPF Hello полей, аналогичных “номер сообщения по порядку” и “возраст канала” не было. В этом не было нужды – такие сообщения рассылаются непосредственно связанным соседям. В то же время сообщения, описывающие топологию сети, рассылаются всем маршрутизаторам автономной системы. Вследствие датаграмной природы протокола IP может случиться, что более позднее сообщение обгонит более раннее. Например, некий маршрутизатор завис, потом перезагрузился, в результате молчал дольше установленного времени отключения. Его сосед посчитал его вышедшим из строя, о чем и сообщил остальным. Затем сосед получил от него Hello, и снова сообщил остальным маршрутизаторам, на этот раз, что маршрутизатор снова работоспособен. При распространении по сети может случиться, что, следуя по другому маршруту, второе сообщение в каком-то сегменте сети обгонит первое. Без номеров и временных меток в этом сегменте более новым считалось бы сообщение, пришедшее позже, и маршрутизаторы этого сегмента в своих топологических базах отметили бы наш маршрутизатор как неисправный, хотя это уже не так. Проблема здесь не в том, что информация распространяется со случайными задержками (с этим, увы, ничего не поделаешь, это нужно просто учитывать). Проблема в том, что устаревшая информация ошибочно может считаться новой.

13 Еще в начале-середине 90-х годов такой магистралью, объединяющей автономные системы в единую глобальную сеть, была NFS Net – сеть, управляемая специальной администрацией, назначенной правительством США. Украина, в свое время подключаясь к Internet, подключалась именно к NFS Net. С 1995 года эта сеть не финансируется и не существует.

14 Это общее для всех технологий глобальных сетей свойство – поскольку постоянные виртуальные каналы создаются администратором, они не предусматривают никакого протокола сигнализации, который позволял бы что-то менять или согласовывать. Это касается не только вложения вышестоящих протоколов, но и таких параметров, как максимальная длина пакета, параметры окон, если выполняется доставка с подтверждением и т.д. Как был сконфигурирован постоянный канал администратором, так он и будет работать впредь.

15 остроумно в данном случае решается вопрос с отсутствием в протоколе SLIP поля «тип вложения». Роль этого поля отводится первой тетраде пакета. В IP–протоколе это поле версия , и его значение всегда 4. В сжатом по Ван Джакобсону заголовке не используется старший бит первого байта, поэтому его выставляют в единицу. Еще один тип пакета, используемый при сжатии по Ван Джакобсону – Uncompressed TCP, представляет собой минимально измененный TCP-сегмент, и служит для синхронизации. При передаче такого пакета в нем выставляют в 1 два младших бита поля типа, в результате в этом поле оказывается значение 7.

16 Хорошая иллюстрация условности уровней модели OSI. PPP–канальный протокол, но включает настройку параметров сетевого уровня (NCP), а функция авторизации традиционно относится к сеансовому уровню!

17 Речь в обоих случаях о сжатии заголовка PPP. Идея такого сжатия заключается в следующем. Поскольку 2 первых байта PPP кадра всегда FF 03, то их можно и не передавать. В этом случае после флага сразу следует поле протокола. Поле протокола, в свою очередь, следует соглашению – первый (старший) байт всегда четный, второй (младший) – всегда нечетный. Поэтому если опустить нулевой старший байт, система распознает это по значению младшего, и интерпретирует его правильно. Таким образом экономятся 2-3 байта заголовка, а с учетом стафинга – даже 5 (несжатый заголовок IP – 7E FF 7D 23 7D 20 21 сжатый 7E 21). Заголовки кадров, переносящих данные протокола LCP, никогда не сжимаются.

18 Сжатие заголовков верхних уровней (например, TCP/IP) согласовывается соответствующим NCP протоколом (IPCP для TCP/IP). Помимо сжатия Ван-Джекобсона, используемого для IP+TCP, используются и другие протоколы сжатия заголовков. Часто к ним прибегают системы IP-телефонии, где заголовок пакета также достигает 40 байт (20 байт IP+8 байт UDP+12 байт RTP), между тем переносимый ими фрагмент голоса составляет единицы милисекунд (обычно 56, не более 10мс из соображений задержки пакетизации) так что даже при использовании кодека G.711 (1 байт на замер, 8 замеров в милисекунду) объем передаваемой речи – несколько десятков байт. В этом случае сжатие заголовка (некоторые такие алгоритмы сжимают 40 байт до 2-х) безусловно, очень полезно. Желающих ознакомится с такими алгоритмами отсылаем к RFC-2507, 2508, 3544.

19 Особенно неприятными могли бы быть последствия потери пакета с установленным битом C. В этом случае осталась бы нераспознанной смена контекста, и произошла бы «склейка» разных потоков данных.

20 Поскольку маршрутизаторы обычно анализируют только адрес назначения, но не отправителя, не исключено, что пакет из корпоративной сети все-таки достигнет адресата в глобальной сети. Но вот ответ узла Internet, поскольку в нем корпоративный адрес будет стоять в поле адреса назначения, будет отброшен первым же маршрутизатором Internet.

21 Причем не всегда очевидно, когда это «одновременно» заканчивается. Единственным прозрачным для пользователя подходом является оценка таймаута неактивности. Но в этом случае как быть, если запрос клиента требует длительной обработки на сервере? С точки зрения NAT, адрес не используется, а на самом деле идет обработка запроса. Если сервер NAT отдаст такой «неактивный» адрес другому узлу, первый узел не получит ответа на свой запрос, зато второй получит то, что ему не предназначалось. В лучшем случае эти данные будут просто отброшены, в худьшем – второй узел может интерпретировать их как ответ на СВОЙ запрос, и эффекты могут быть разнообразны, но всегда неприятны.

22 Если ответа нет, и повторные передачи запроса не помогают, мы, вероятнее всего, имеем дело с фаерволом, блокирующим UDP трафик. Тут уж ничего не поделаешь…

23 В случае, если адрес и номер порта в 1-м ответе не изменились, подобный тест позволит обнаружить фаервол, ограничивающий пропуск UDP-пакетов извне ответами на запросы локальных узлов (как ограниченный NAT, но без трансляции адресов).

24 В то же время почтовые протоколы других стеков могут использовать совсем другой синтаксис, например, протокол X.400 стека OSI использует абстрактный синтаксис нотаций ASN.1 (Abstract Syntax Notation), типичный для прикладных протоколов этого стека.

25 Троянский конь. К этой категории относят программы, выполняющие некую полезную функцию, но параллельно–некую деструктивную. Например, программа, которая осуществляет перехват всего ввод с терминала, записывает эти данные в файл и позднее пересылает этот файл «хозяину» этого «коня». А есть и такие, что просто форматируют жесткий диск.

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

Черви. Программы, напоминающие “кроликов”, но способные перемещаться по сети Internet от одного узла к другому (узлы должны иметь идентичную операционную среду).

Вирусы. Программы, способные присоединятся к другим программам и распространяться таким образом. Особое распространение сейчас имеют макро вирусы – вирусы, базирующие на макросах таких систем, как excel или winword. Но вообще вирусы возможны почти для любой сколько-нибудь развитой среды исполнения. По информации лаборатории Касперского, им даже известны два BAT-вируса! Опасность вирусов заключается в том, что они могут разноситься электронной почтой, когда соответствующие файлы подсоединены к почтовому сообщению. Попытка просмотра текста excel или winword приводит к заражению ЭВМ этим вирусом. После чего такая машина может стать сама разносчиком вируса. Из-за простоты заражения этот тип вируса в настоящее время наиболее опасен. Естественно, вирус может иметь все деструктивные свойства "троянского коня", что усугубляет опасность.

26 AntiSniff выполняет три вида тестов узлов сегмента Ethernet.

Первый тест основан на особенностях обработки разными операционными системами кадров Ethernet, содержащих IP-датаграммы, направленные в адрес тестируемого узла. Некоторые ОС, находясь в режиме прослушивания, передают пакет уровню IP, независимо от адреса назначения кадра Ethernet (в то время как в обычном режиме кадры, не направленные на MAC-адрес узла, системой вообще не рассматриваются). Другие системы имеют особенность при обработке кадров с широковещательным адресом. Послав сообщение ICMP Echo внутри «неверного» кадра, который при нормальных обстоятельствах должен быть проигнорирован, и получив на него ответ, AntiSniff заключает, что интерфейс тестируемого узла находится в режиме прослушивания.

Второй тест основан на предположении, что программа прослушивания на хосте злоумышленника выполняет обратные DNS-преобразования для IP-адресов подслушанных пакетов (поскольку часто по доменному имени можно определить назначение и важность того или иного узла). AntiSniff фабрикует пакеты с фиктивными IP-адресами, после чего прослушивает сеть на предмет DNS-запросов о доменных именах для этих фиктивных адресов.

Тесты третьей группы, наиболее универсальные, с одной стороны, так как не зависят ни от типа операционной системы, ни от предполагаемого поведения прослушивающих программ. С другой стороны, эти тесты требуют определенного анализа от оператора, то есть — не выдают однозначный результат, как в двух предыдущих случаях кроме того, они сильно загружают сеть. Тесты основаны на том, что интерфейс, находящийся в обычном режиме, отфильтровывает кадры, направленные не на его адрес, с помощью программно-аппаратного обеспечения сетевой карты, и не задействует при этом ресурсы операционной системы. Однако в режиме прослушивания обработка всех кадров ложится на программное обеспечение злоумышленника, то есть, в конечном счете, на операционную систему. AntiSniff производит пробное тестирование узлов сети на предмет времени отклика на сообщения ICMP Echo, после чего порождает в сегменте шквал кадров, направленных на несуществующие MAC-адреса, при этом продолжая измерение времени отклика. У систем, находящихся в обычном режиме, это время растет, но незначительно, в то время как узлы, переведенные в режим прослушивания, демонстрируют многократный (до 4 раз) рост задержки отклика.

27 Третий способ — сканирование с помощью FIN-сегментов. В этом случае на сканируемый порт посылается сегмент с установленным битом FIN. Хост должен ответить RST-сегментом, если FIN-сегмент адресован закрытому порту. FIN-сегменты, направленные на порт, находящийся в состоянии LISTEN, многими реализациями TCP/IP игнорируются (стандарт требует в состоянии LISTEN посылать RST-сегменты в ответ на сегменты, имеющие неприемлемый ACK SN; про сегменты, имеющие только флаг FIN, ничего не говорится). Таким образом, отсутствие отклика говорит о том, что порт открыт. Варианты этого способа сканирования — посылка сегментов с флагами FIN, PSH, URG («Xmas scan») или вообще без всяких флагов («Null scan»).

Программа tcplogd может зарегистрировать попытки сканирования в различных режимах.

28 Для формирования сообщений можно использовать библиотеку libnet. Так как ARP — протокол без сохранения состояния, то узлы А и В примут ARP-ответы, даже если они не посылали запросов. Далее злоумышленник периодически (достаточно это делать раз в 20–40 секунд) повторяет посылку сфальсифицированных ARP-ответов для обновления сфабрикованных записей в ARP-таблицах узлов А и В, чтобы удерживать эти узлы в неведении относительно истинных адресов и не дать им сформировать соответствующие ARP-запросы.

29 Возможна ситуация, когда значение вектора, объявляемого, например, маршрутизатором В: Q=1. В этом случае Х не может немедленно предложить лучшего маршрута, но он может применить следующий прием. Сначала, выбрав паузу в рассылке RIP-сообщений маршрутизатором В, Х от имени В отправляет в А вектор Q=16, что заставит маршрутизатор А удалить из своей таблицы маршрут в сеть Q, так как до этого А отправлял пакеты в Q через В. Сразу же вслед за этим Х отправляет вектор Q=1 от своего имени, и А устанавливает маршрут в сеть Q через Х. Последующие векторы Q=1 от В будут проигнорированы, поскольку они не предлагают лучшего маршрута.

30 Злоумышленник может вообще игнорировать сегменты, посылаемые узлом А и отправлять в В только свои данные, получая ответы прослушиванием сети и соответственно реагируя на них, но в этом случае узел А заметит, что В не отвечает на его команды, и может забеспокоиться.