Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #58, СЕНТЯБРЬ 2005 г.

Безопасность сетевых протоколов

ЗАРАЗА

Спецвыпуск: Хакер, номер #058, стр. 058-084-1


Взгляд со стороны клиента

Кажется, что о безопасности сетевых протоколов и их уязвимостях уже написано все. Но такое чувство возникает только если взглянуть на проблему с привычной точки зрения - атаки на серверные системы. Сейчас же ведущие эксперты ставят на первое место проблему безопасности клиентских систем.

1. Ошибки уровня стандарта – дырки в RFC

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

История протокола FTP

Говоря о безопасности сетевых протоколов, нельзя не рассказать о протоколе FTP (File Transfer Protocol - протокол передачи файлов). Последний стандарт, описывающий протокол FTP, RFC 959, относится аж к 1985 году, то есть за три года до червя Морриса – первого события, привлекшего общественное внимание к вопросам компьютерной безопасности. Червь Морриса был хорошим пинком Сети и поменял направление ее развития. Его польза многократно превосходит нанесенные им же убытки. Но тогда протокол FTP был создан исключительно для удобной передачи файлов между системами, но без малейшей попытки сделать эту передачу безопасной. Поражает тот факт, что этот протокол до сих пор используется, причем практически в первозданной форме, в тех приложениях, для которых он совершенно не подходит.

Протокол FTP вообще очень неудобен в реализации, так как не создавался для реализации в какой-либо клиентской программе. Например, FTP не определяет формат, в котором должен выдаваться список файлов. Протокол FTP создавался как расширение обычного протокола telnet, то есть все команды пользователь должен был отдавать FTP из командной строки и подразумевалось наличие у пользователя shell-доступа на FTP-сервер. FTP-клиенты, которые предоставляли бы пользователю удобный интерфейс, появились значительно позже.

Протокол FTP поддерживает два режима: пассивный и активный. Используется для передачи файлов (получения или хранения), а также получения оглавлений каталогов. В обоих режимах FTP использует контрольное соединение, которое устанавливается клиентом на 21-й (по умолчанию) порт FTP-сервера. По контрольному соединению никакие данные, ни файлы, ни оглавления каталогов не передаются. Для передачи любого файла или оглавления устанавливается отдельное соединение.

В активном режиме клиент открывает со своей стороны порт, сообщает IP-адрес и номер порта серверу в команде PORT, сервер устанавливает соединение на порт, выбранный клиентом (в качестве порта источника обычно используется 20).

В пассивном режиме клиент дает команду PASV, на что сервер открывает TCP-порт, сообщает ее клиенту, после чего клиент устанавливает соединение на него. После установки второго соединения (DATA connection) клиент может дать команду на получение или отправку данных, которые и будут переданы без какой-либо модификации через это дополнительное соединение, после чего оно немедленно будет разорвано.

Изначально эти два режима предназначались для того, чтобы клиент мог переписать файл с одного сервера на другой, не закачивая файл к себе. Для этого клиент мог установить контрольное соединение на сервер A, дать ему команду PASV, установить соединение на сервер B и дать ему команду PORT с данными, переданными сервером A в ответ на команду PASV. Таким образом, DATA connection устанавливалось между серверами A и B, после чего клиент может дать команду на хранение файла одному серверу и передачу файла второму серверу.

Содержание  Вперед на стр. 058-084-2