...
...

Уязвимости сетевых протоколов

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

Через интернет сейчас делается все: от общения до интернет-банкинга и заключения сделок на миллионы долларов. Поэтому согласитесь, что от того, насколько безопасным будет канал, зависит многое. Давайте попробуем понять, как вообще работает эта самая сеть. Сеть, естественно, является некоторым количеством компьютеров, которые соединены между собой. Используется она для передачи данных. Вот возникает встречный вопрос: а как эти данные передаются? Ответ: посредством проколов. А что же такое протокол? Протоколом является набор правил, по которым и осуществляется этот самый обмен информацией. Мы рассмотрим несколько протоколов, изучим их слабые места и уязвимости, чтобы потом надежно защититься. Итак, приступим.

Протокол HTTP

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

. текст;
. графика;
. звук;
. анимация;
. видео.

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

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

Активными элементами являются программы небольшого размера, использующие 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. Именно это и является уязвимым местом этого протокола. Вместо сервера может выступить злоумышленник и отправить на компьютер жертвы вредоносное программное обеспечение, которое будет воспринято системой как файл, запрашиваемый пользователем. Одним из методов противостояния такого рода атакам является так называемый пассивный метод, когда компьютер пользователя сам дает команду на установку соединения (рис. 2). Пассивный FTP был добавлен к основному большей частью не из-за волнений о безопасности пользователей, а из-за того, что пользователи стали беспокоится о своей безопасности. Применение брандмауэр-систем привело к тому, что серверы не могли установить соединение с клиентом. Поэтому они перешли на пассивный режим, чтобы клиент сам мог инициировать подключение командой port.

Протокол SMTP

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

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

POP

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

IMAP

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

TCP

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

UDP

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

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

ICMP

Так как протокол IP не может устанавливать соединение, ему необходим тот инструмент, который будет делать это за него. Например, уведомить систему получателя, что время существования пакета истекло. Для выполнения этих задач в протокол IP был встроен ICMP (Internet Control Message Protocol) протокол. Наиболее уязвимым местом этого протокола является то, что злоумышленник, изменяя информацию ICMP-протокола, может заставить систему получателя реагировать таким образом, как ему будет удобно, для последующего получения контроля над ней. На рис. 4 показана структура заголовка 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, использующаяся в большинстве систем для проверки их работоспособности.

Протоколы обмена мгновенными сообщениями

Под этот подзаголовок подходят все агенты обменов быстрыми сообщениями. Работают они как электронная почта, только нет архивов сообщений. А значит, получать информацию из этих сообщений можно так же, как и из почты — например, атакой "человек-посередине". Это делает сообщения небезопасными. Именно по этой причине и возможен брут номера icq с последующей его кражей. Разные клиенты используют разные порты. ICQ использует динамический TCP-порт и UDP-порт 4000; AOL Instant Messenger использует TCP-порт 5190; Yahoo Messenger — TCP-порт 5050; MSN Messenger пользуется TCP-портом 1863.

Игровые протоколы

Сейчас трудно встретить игры, в которых нет поддержки сетевого режима. Это тоже уязвимое место. Если отправить на порт, используемый определенный игрой, специально сформированный пакет во время активности игры, то можно вызвать определенную реакцию системы — например, открытие стороннего порта.

На этом закончу. Теперь, думаю, у вас сложилось более точное представление о том, какую опасность представляет собой тот или иной протокол.

Евгений Кучук, q@sa-sec.org, SASecurity gr.

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

полезные ссылки
Обзор банков Кипра