Сетевые протоколы

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

Что же такое протокол? Я приведу цитату из Википедии, чтобы разобраться окончательно: "Сетево?й протоко?л в компьютерных сетях — набор правил для специфического типа связи". Вот так. Протокол является набором правил, которые используются при передаче информации. Как я уже говорил, используются они, протоколы, для оптимизации этого самого процесса передачи. Однако протоколы несут в себе и бреши, которыми частенько пользуются злоумышленники для атак компьютеров через сеть. Давайте же разберемся в самых популярных протоколах и поймем, как они действуют и какие уязвимые места имеют. Различают два вида протоколов. Первый из них — протоколы без установления соединения. Они чем-то напоминают обычные телеграммы: машина пользователя отправляет в сеть одиночный поток данных, при этом по пути он может быть продублирован, изменен, утерян. Второй вид — это протоколы, ориентированные на соединение. Эти же действуют по следующей схеме: между отправителем и получателем устанавливается соединение и происходит обмен стандартными данными, только потом в ход идут фактические, после подтверждения первой и второй стороной получения данных соединение разрывается. Теперь пройдемся по некоторым протоколам.

IP

Протокол IP (Internet Protocol) не предусматривает соединения и относится к первому виду. Заголовок IP состоит из нескольких полей, каждое из которых несет отдельную информацию.
. Общая длина. Это информация о длине всего пакета в байтах.
. Время жизни (Time to live — TTL). Протокол не подразумевает обязательную активность компьютерной системы получателя. Если пакет был отправлен, а система, которой он предназначался, неактивна, то пакет будет циркулировать по сети, пока система не сможет его принять. Чтобы этого не происходило (ведь возможен перехват важной информации) при формировании пакета задается такой параметр, как время жизни. При прохождении пакетом промежуточного пункта (маршрутизатора и т.п.) этот параметр уменьшается, при достижении значения, равного нулю, пакет уничтожается.
. Версия. Информация о номере версии протокола, который использовался при создании пакета.
. Длина заголовка. Тут указывается длина заголовка в 32-разрядных единицах.
. Тип службы. Этот параметр определяет важность пакета, а также тип пути, по которому пакет будет передаваться (защищенный маршрут и т.д.).
. Идентификатор. Во время передачи пакет может быть для удобства разбит на фрагменты. Именно с помощью идентификатора он собирается в единое целое на месте.
. Флаги. Под флаги отводится по одному биту. Первый флаг определяет возможность фрагментации. Второй участвует при зборке пакета на месте — он точным образом определяет, откуда был послан пакет.
. Смещение фрагмента. После разбиения пакета на части им присваиваются последовательные номера. Однако пакеты могут рассылаться разными путями через сеть, поэтому порядок их прихода нестабилен. Пакет может быть сформирован из фрагментов только при наличии всех фрагментов. . Протокол. В этом параметре указывается описание стороннего протокола, который используется в IP-пакете.
. Контрольная сума заголовка. Этот параметр необходим для обеспечения целостности заголовка. При формировании пакета на системе-отправителе высчитывается значение и сохраняется в этом поле. После прихода система-получатель также высчитывает значение и сравнивает с сохраненным — таким образом делается вывод о целостности заголовка пакета.
. Адрес отправителя. Адрес системы отправителя.
. Адрес получателя. Адрес системы получателя. Тут, как и в адресе отправителя, указывается IP-адрес.
. Опции IP-протокола. В этом поле в основном хранится информация о сети прохождения, о маршрутизации и т.д.
Структура пакета IP-протокола показана на рис. 1.

ICMP

Так как протокол IP не может устанавливать соединение, то ему необходим тот инструмент, который будет делать это за него. Например, уведомить систему-получателя, что время существования пакета истекло. Для выполнения этих задач в протокол IP был встроен ICMP (Internet Control Message Protocol) протокол. Наиболее уязвимым местом этого протокола является то, что злоумышленник, изменяя информацию ICMP-протокола, может заставить систему-получателя реагировать таким образом, как ему будет удобно, для последующего получения контроля над ней. На рис. 2 показана структура заголовка ICMP пакета данных. ICMP-пакет содержит информацию об ошибках, диагностическую и т.д. Инициируется она внутренним образом и обрабатывается на уровне IP-протокола. Различают несколько типов сообщения ICMP-протокола. Они характеризуются номером в заголовке и содержат разные данные.

. Echo Reply (0). Это сообщение рассылается при приеме сообщения Echo Request с другой компьютерной системы. В поле данных заносятся тестовые данные, данные о времени функционирования и т.п.
. Destination Unreachable (3). Это сообщение отсылается отправителю в том случае, когда отправленный им пакет данных не может быть доставлен системе-получателю вследствие недоступности последнего. Сообщения такого типа могут быть использованы злоумышленником для разрыва соединения.
. Source Quench (4). Сообщение такого рода отправляется системе-отправителю, если маршрутизатор не может справиться с потоком данных. В таком случае отправитель должен снизить поток.
. Redirect (5). Сообщение такого рода отсылается отправителю пакета в том случае, если маршрутизатор заметит, что путь пакета не оптимален.
. Echo Request (8). Это сообщение отправляется для того, чтобы определить, достижим ли получатель.
. Time Excceded (11). Это сообщение отправитель получает в результате отвержения пакета системой получателем из-за истечения времени жизни.
. Parameter Problem (12). Если же пакет отвергся из-за ошибок в заголовке и т.п., то отправитель получает сообщение этого типа.
Ярким примером сообщения ICMP-протокола является команда ping, использующаяся в большинстве систем для проверки их работоспособности.

UDP

Протокол передачи дейтаграмм пользователя (User Datagram Protocol) является протоколом транспортного уровня, не требующим соединения. Для передачи данных используется IP-протокол. Дополняя его, он позволяет различать службы на системе получателя. UDP-протокол дает очень маленькую нагрузку на систему, что делает его очень удобным и позволяет проще организовывать повторную передачу пакета в случае сбоя. Заголовок UDP-пакета показан на рис. 3. Он не предусматривает отсылку сообщения/уведомления о правильности доставки пакета, его точности и т.д. Это делает его не совсем безопасным, поскольку злоумышленник может без проблем перехватить данные и внести изменения или уничтожить.

Протокол HTTP

Для того, чтобы попасть в сеть и просматривать там страницы, пользователь обычно пользуется браузером. Сейчас их великое множество, и пользователям есть из чего выбирать. Это и стандартный Internet Explorer, и Opera, и Avant, и FireFox. Какой же протокол используют эти браузеры? А используют они протокол http. Он в основном применяется для работы с документами формата html (HyperTexet Markup Language) — это язык разметки, который определяет структуру документа. Но кроме этого протокол может работать со следующими элементами:

. Текст.
. Графика.
. Звук.
. Анимация.
. Видео.

Кроме того, уже довольно продолжительное время язык html практически не используется. На его место пришли php и perl. Именно для передачи этого и был разработан протокол передачи гипертекстовых данных (HyperText Transfer Protocol, HTTP). Этот протокол работает в сеансовом режиме. Это означает, что связь разрывается сразу же после получения необходимой информации. Действует это следующим образом: вы вводите адрес необходимой страницы в адресной строке браузера, дальше ваш компьютер устанавливает соединение с сервером, на котором располагается эта страница. Браузер посредством протокола загружает html-код и отображает его на мониторе с учетом всей информации. Если вдруг в коде имеются сноски на другое содержимое (графика, звук), то браузер опять устанавливает соединение с сервером, на котором лежат данные объекты, и загружает их на компьютер, после чего соединение разрывается, и на монитор все выводится непосредственно с компьютера пользователя (рис. 4). При этом каждый из документов отображается независимо от другого. Именно поэтому в браузерах имеется возможность отключения изображений и т.д. При включении этой функции браузер просто не догружает дополнительные объекты (изображения).

Активные элементы

Активными элементами являются программы небольшого размера, использующие http-протокол и работающие автоматически. Среди таковых можно выделить Java-апплеты, управляющие элементы ActiveX и команды javascript. Именно эти элементы и являются наиболее уязвимыми местами в протоколе, так как наличие того или иного элемента на загружаемой странице сразу же вызывает его запуск, и, если у вас не стоит антивирус с возможностью постоянного сканирования сетевых протоколов, то этот активный элемент может загрузить на ваш компьютер вредоносное ПО, при этом не подав никаких признаков. Если же компьютер оснащен необходимыми средствами безопасности, то он сразу же среагирует на попытку загрузки вируса.

Файлы Cookies

Менее опасными являются файлы cookies, которые загружаются сервером на компьютер пользователи и хранятся на нем некоторое время для последующего использования. Механизм использования этих файлов был разработан корпорацией Netscape Corporation, так как протокол http не оставляет никаких меток, и каждое последующее обращение к одному и тому же серверу расценивается как новое действие. Файлы cookies могут быт использованы только для хранения информации, но и это несет в себе определенный риск. Они хранят такую информацию о пользователе, как Иям компьютера, IP-адрес и т.д. Эта информация может быть использована злоумышленником для проникновения на компьютер пользователя. Естественно, при разработке структуры и параметров работы файлов компанией Netscape были допущены и ошибки. Дело в том, что файлы cookies обычно отсылаются не только на сервер, с которого поступили, но и на другие компьютеры, принадлежащие этому домену. Например, сервер dxm.domen.by принадлежит к тому же домену, что и сервер rey.domen.by, т.к. имена после первой точки у них одинаковы.

HTTPS

Для осуществления работы с финансами, заключения договоров через web-интерфейс необходимо что-то надежнее, чем http. Именно для этой цели и используется разновидность протокола http — https. Это тот же http, но только данные перед отправкой пакуются с шифрованием посредством протокола ssl (обычно). Это позволяет намного повысить безопасность и работать с важными документами, используя web-интерфейс. В отличие от стандартного http, для обмена информацией используется порт 443.

FTP-протокол

Это протокол, который позволяет обмениваться файлами в режиме менеджера файлов. Как он работает? Сначала клиент (пользовательский компьютер) с любого порта устанавливает соединение с портом 21 сервера. После сервер устанавливает канал обмена данными через порт 20. Именно это и является уязвимым местом данного протокола. Вместо сервера может выступить злоумышленник и отправить на компьютер жертвы вредоносное ПО, которое будет воспринято системой как файл, запрашиваемый пользователем. Одним из методов противостояния такого рода атакам является так называемый пассивный метод, когда компьютер пользователя сам дает команду на установку соединения (рис. 5). Пассивный FTP был добавлен к основному большей частью не из-за волнений о безопасности пользователей, а из-за того, что пользователи стали беспокоится о своей безопасности. Применение брандмауэр-систем привело к тому, что серверы не могли установить соединение с клиентом. Поэтому они перешли на пассивный режим, чтобы клиент сам мог инициировать подключение командой port.

TCP

Протокол управления передачей является наиболее важным после IP-протокола. Для его функционирования необходимо соединение. Соединение работает в обе стороны. Данные передаются в виде пакетов фиксированной длины. Структуру заголовка TCP-пакета данных вы сможете увидеть на рис. 6. В заголовке пакета, кроме прочих данных, присутствуют два 16-битовых номера конечных портов как отправителя, так и получателя. При установке соединения системы генерируют порядковые номера, которые при обмене подтверждаются. При каждой отсылке фрагмента пакета также генерируется порядковый номер. Это позволяет точно собирать фрагменты в пакет независимо от времени их получения.

Протокол SMTP

Многие пользуются такими программами, как the Bat! или MS Outlook. Эти софтдевайсы для работы с сервером почты используют протокол SMTP (Simple Mail Transport Protocol). Он содержит две составляющие:
. агент передачи сообщений (Message Transfer Agent — MTA);
. агент пользователя (Mail User Agent — UA).

MTA-агент устанавливается на стороне провайдера на сервере и хранит почту клиента до момента передачи. UA-агент — программный компонент, который как раз и выступает в качестве программы-почтовика, поэтому у каждого пользователя он разный (рис.7). С помощью протокола SMTP почта рассылается без какой-либо шифровки и не прикрепляется к конкретному адресу, что делает очень простым ее перехват, изменение и замену адреса/имени отправителя. Еще одним уязвимым местом этого протокола является утилита Sendmail, которая используется большинством почтовых сервисов. Ее недостаток заключен в сложности, что делает ее подверженной ошибкам/сбоям, а также очень непростой в настройке. В результате бреши в системе безопасности позволяют злоумышленникам делать с пользовательской информацией все что угодно вплоть до удаления.

POP

Протокол, который используется для поиска почты на серверах и обмена с ними, по сути, является почтовым протоколом, который работает совместно с SMTP. POP (Post Office Protocol) работает через TCP-порт 110. Главнейшим недостатком является то, что он работает в текстовом формате, и логин/пароль передаются без шифровки.

IMAP

Аналог протоколу POP, но превосходит его с точки зрения поддержки каталогов, которые находятся на сервере. После широкого внедрения его на серверах почтовых служб была обнаружена его слабая защищенность, в результате чего тысячи пользовательских компьютеров были под угрозой взлома. Практически все компании вернулись к использованию протокола POP, а IMAP (Internet Mail Access Protocol) был отвергнут. Сейчас им пользуются редкие сервисы. Для работы он использовал TCP-порт 143.
Вот таким образом осуществляется обмен информацией через сеть. Как видите, безопасного протокола нет — всегда найдется критерий, в котором имеется уязвимое место. А поэтому используйте сетевые экраны — именно они и призваны прикрыть дырки протоколов и тем самым сделать работу безопаснее. Статья подошла к концу. Надеюсь, вы почерпнули из нее что-то полезное.

Евгений Кучук, http://sa-sec.org


Компьютерная газета. Статья была опубликована в номере 21 за 2007 год в рубрике сети

©1997-2024 Компьютерная газета