logo
ИнфСборник по ЗИ и ИБ

6. Использование недостатков идентификации tcp-пакетов для атаки на rsh-сервер.

В ОС UNIXсуществует понятие: доверенный хост. Доверенным по отношению к данному хосту называется хост, доступ на который пользователю с данного хоста возможен без его аутентификации и идентификации с помощью г-службы. Обычно, в ОС UNIXсуществует файл rhost,в котором находится список имен и IP-адресов доверенных хостов. Для получения к ним удаленного доступа пользователю необходимо воспользоваться программами, входящими в г-службу (например, rlogin, rshи.т.д.). В этом случае при использовании г-программ пользователю для получения удаленного доступа не требуется проходить стандартную процедуру идентификации и аутентификации, заключающуюся во вводе его логического имени и пароля. Аутентифицирующей информацией для г-службы является IP-адрес хоста, с которого пользователь осуществляет г-доступ. Отметим, что все программы из г-службы реализованы на базе протокола TCP.Одной из программ, входящих в г-службу, является rsh,с помощью которой возможно осуществление данной атаки. Программа rsh (remote shell)позволяет отдавать команды shellудаленному хосту. При этом, что является чрезвычайно важным в данном случае, для того, чтобы отдать команду, достаточно послать запрос, но необязательно получать на него ответ. При атаке на г-службы вся сложность для атакующего заключается в том, что ему необходимо послать пакет от имени доверенного хоста, то есть, в качестве адреса отправителя необходимо указать IP-адрес доверенного хоста. Следовательно, ответный пакет будет отправлен именно на доверенный хост, а не хост атакующего.

Схема удаленной атаки на rsh-сервер была впервые описана небезызвестным Р.Т. Моррисом в Belt Labs computer Science Technical Report #117, February 25, 1985. Она заключается в следующем:

Пусть хост А доверяет хосту В. Хост Х-это станция атакующего.

Вначале атакующий Х открывает настоящее TCP-соединение с хостом В на любой TCP-порт (mail, echoи т.д.). В результате Х получит текущее значение на данный момент времени ISSb.Далее, Х от имени А посылает на В TCP-запрос на открытие соединения:

1.X->B: SYN.ISSx

Получив этот запрос, В анализирует IP—адресотправителя и решает, что пакет пришел с хоста А. Следовательно, В в ответ посылает на А новое значение ISSb':

2.В ->А: SYN,АСК, ISSb', ACK(ISSx+1 )

Х никогда не получит это сообщение от В, но, используя предыдущее значение ISSbи схему для получения ISSb'(см. выше),может послать на В:

3.Х ->В: АСК, ISSx+1, ACK(ISSb'+1 )

Отметим, что для того, чтобы послать этот пакет потребуется перебрать некоторое количество возможных значений ACK(ISSb'+1),но не потребуется подбор ISSx+1,так как этот параметр TCP-соединения был послан с Х на В в первом пакете.

В итоге rsh-сервер на хосте В считает, что к нему подключился пользователь с доверенного хоста А, а на самом деле это атакующий с хоста X.И хотя Х никогда не увидит пакеты с хоста В, но он сможет выполнять на нем команды.