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

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

ЗАРАЗА

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


Классические атаки на FTP

На первый взгляд, все гениально. Недостатки протокола FTP впервые были подробно описаны экспертом лаборатории NAI Дэвидом Сейсердотом (David Sacerdote) только в 1996. В чем они заключаются? Что если после того как сервер открыл порт по команде PASV, к нему подключится кто-то посторонний? Это значит, что когда клиент даст команду на получение или хранение файла, сервер отдаст файл постороннему или получит файл, любезно предоставленный посторонним, а клиент останется ни с чем. Такая ситуация называется перехватом соединения данных (DATA connection hijack). Как посторонний может узнать порт, назначенный сервером, если он не видел ответа на команду PASV в контрольном соединении? Для этого ему может быть достаточно установить свое контрольное соединение и дать команду PASV. В большинстве случаев, если он сделает это непосредственно перед соединением клиента, он получит порт на единичку ниже и может попытаться атаковать следующий порт.

Другая классическая атака с использованием особенностей протокола FTP связана с командой PORT. Что если попросить FTP-сервер подключиться к интересующему нас порту постороннего компьютера? Если порт закрыт, то мы сразу получим сообщение об ошибке. А если порт открыт? Мы можем заслать туда любой файл, хранящийся на FTP-сервере, дав команду на получения файла. Таким образом, мы можем использовать FTP-сервер для атак на чужой компьютер, оставаясь при этом в тени. Причем если FTP-сервер стоит на пограничном компьютере, мы можем атаковать компьютер, находящийся во внутренней сети. Такая техника называется FTP bounce attack (звучит как атака рикошетом от FTP).

Но больше всего матерных слов в адрес протокола FTP было сказано, разумеется, разработчиками различных средств защиты, которые должны были обеспечить работу этого FTP. Как, например, обеспечить работу FTP-клиента с его обратными соединениями в активном режиме через NAT? Или работу FTP-сервера в пассивном режиме с его соединениями на случайные непривилегированные порты за брандмауэром? Открывать все порты? Единственное решение, которое и используют разработчики, – это следить за командами, передаваемыми в контрольном соединении или ответами сервера. Например, следить за ответом сервера на команду PASV и разрешать соединение на указанный им порт. Однако если файрвол работает на сетевом уровне и анализирует данные только одного IP-пакета, его можно обмануть, "заставив" FTP-сервер сгенерировать пакет с нужными данными. Например, выдав длинную, заведомо неправильную команду, содержащую в конце нужные нам данные. При ответе сервера сообщением об ошибке, в котором сервер повторит команду, будет сформировано несколько IP-пакетов. Можно угадать размер команды так, чтобы нужные нам данные пришлись на начало второго пакета, и таким образом заставить файрвол открыть нужный нам порт.

Назад на стр. 058-084-1  Содержание  Вперед на стр. 058-084-3