На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Использование недостатков при аутентификации сеанса

Некоторые серверы при аутентификации предоставляют пользователям специаль­ные идентификаторы сеанса. Этот метод может реализоваться в виде файла cookie (в HTTP-системах), встроенного идентификатора сеанса в значении HLML-атрибута HREF или как численное значение в структуре. Вместо какой-либо надежной формы аутентификации пользователь опознается по этому идентификатору. Причина приме­нения такого подхода часто заключается в невозможности обеспечить надежный меха­низм аутентификации на сетевом уровне, в необходимости подключения мобильного пользователя или в том, что атакуемая система является мощным Web-сервером, ко­торый должен распределять нагрузку на несколько серверов.
Проблема в том, что идентификатор сеанса, хранящийся в базе данных или кэше памяти, может использоваться для контроля на сервере состояния пользователя (информация о прошедших аутентификацию пользователей). По идентификатору се­анса устанавливаются полностью доверительные отношения (fully trusted). Это озна­чает, что хакер может использовать идентификатор сеанса для доступа к личным или секретным ресурсам. Если в системе проверяется только действительный идентифика­тор сеанса, то злоумышленник сможет добраться до защищенных ресурсов.
Когда в приложении используются отдельные переменные для хранения иден­тификатора сеанса и идентификатора пользователя, то такое приложение можно взломать, если аутентифицированный пользователь просто изменит идентификатор сеанса. Приложение проверит, что пользователь имеет необходимые права доступа, т.е. используется корректный ключ пользователя. После этой проверки приложение слепо доверяет идентификатору сеанса.
Однако в многопользовательской системе одновременно могут быть активны не­сколько сеансов пользователей. Хакер может просто изменить идентификатор сеан­са, используя корректный ключ пользователя. Следовательно, хакер крадет сеансы, открытые другими пользователями. Мы были свидетелями такой атаки, осуществ­ленной против мощного приложения для проведения видеоконференций в финан­совом учреждении. После подключения любой пользователь мог перехватить видео­потоки других пользователей.
Шаблон атаки: идентификаторы сеанса и ресурсов, а также доверительные отношения
При наличии доступа к простым идентификаторам сеанса и ресурсов, ими могут восполь­зоваться хакеры для проведения атак. Многие атаки настолько просты, что достаточно вста­вить нужный идентификатор в поток данных.

Один из вариантов атаки с применением идентификатора сеанса возможен тогда, когда приложение разрешает пользователям запрашивать интересующие ресурсы. Если пользователь может запросить ресурсы, принадлежащие другим пользовате­лям, то система оказывается открытой для атаки.
Ресурсами можно назвать файлы, записи в базе данных или даже порты и аппарат­ные средства. В многопользовательской системе ресурсами могут быть личные файлы и сообщения электронной почты. Основанные на Web-технологиях системы элек­тронной почты являются хорошим примером сложных многопользовательских про­граммных систем, в которых часто используются идентификаторы сеансов. В запрос ресурсов могут включаться дополнительные идентификаторы, например имя почтово­го ящика. Отличный пример — система обмена электронной почтой IPSwitch Imail, в которой используется внешний Web-интерфейс для получения электронной почты. Пользователь проходит аутентификацию и получает идентификатор сеанса. Запрос на чтение электронной почты выглядит примерно следующим образом.
http://target:8383/<uденmuфuкаmорnользоваmеля>/readmail.cgi?шd
л    =имя_пользователяшЪх=.   . /имя пользователя/Ма±п
Сразу же заметны несколько проблем. Во-первых, пользователь должен предос­тавить не только идентификатор сеанса, но и имя пользователя. На самом деле тре­буется также предоставить еще и путь к файлу. Однако эти идентификационные данные, предоставляемые не единожды, по сути являются очевидным доказательст­вом неправильной работы программы readmail. cgi. Практически, если заменить одно имя пользователя другим, то запрос все равно будет обработан. Такой запрос возвращает почту другого пользователя! Атака выголядит приблизительно так:
http://target:83 83/<идентификатор_сеанса>/readmail.cgi?uid Л> fимя_пользователя&тЪх=. ./имя_другого_пользователя/Ма!п
Подбор идентификаторов сеанса
Во избежание взлома, не следует использовать легкие для отгадывания иденти­фикаторы сеанса. Хакеры придумали сотни хитростей для проверки возможности предсказания значений идентификаторов сеансов. Один из самых интересных мето­дов называется анализом фазового пространства6.
Анализ фазового пространства
Метод отложенного добавления координат (delayed coordinate embedding) заклю­чается в создании изображения фазового пространства одномерных числовых рядов для значений функции динамической системы как распределения в каком-то про­странстве (например трехмерном). Этот метод был разработан еще в 1927 году и опи-

сан во многих материалах по исследованиям динамических систем. При этом замеряют значения одной переменной в динамической системе в различные моменты времени. После получения набора значений этот набор вычерчивается во многомерном про­странстве. Это позволяет выявить взаимосвязь между данными. Основным преиму­ществом метода является возможность выявления закономерностей в наборах чисел. В трехмерном пространстве становится очевидной предсказуемая последовательность чисел. Если данные случайны, то они отображаются как распределенный шум.
Ниже приведено уравнение, используемое для построения следующих графиков:
X[n] = s[n-2] - s[n-3] Y[n] - s[n-l] - s[n-2] Z [n]   = s [n]   - s [n-1]
Вновь призывая читателя к образному мышлению, рассмотрим это уравнение как гребенку, которую "протягивают" через наборы чисел (11). Расстояние между зубцами называют "задержкой", которая в данном случае равна единице. Количество зубцов — это количество измерений, равное в данном случае трем. Решение уравне­ний для гребенки дает одну точку. При "протягивании" гребенки через наборы дан­ных мы получаем набор точек.
На 12 показано несколько тысяч точек, полученных при исследовании X-сервера операционной системы MAC OS. Исследовалось значение начального номе­ра последовательности (Initial Sequence Number — ISN) TCP-стека. Очень важно, чтобы значение этого номера нельзя было предсказать. График был создан с помо­щью простой Windows-программы, которая отображает точки, используя OpenGL.
Распределение точек позволит увидеть шаблон назначения номеров. Скопления точек — это зоны, в которых чаще всего происходит выбор значения ISN. Если бы зна­чения начального номера последовательности выбирались случайно, то этих скопле-
ний не было бы. На 13 приведен результат исследования действительно случайных наборов чисел. Разница очевидна. Случайные последова­тельности чисел дают равномерное распределение точек на изображении фазового пространства. Как видим, нет никаких четких скоплений.
Осуществить чтение набора данных в нашей программе отображения на основе OpenGL дос­таточно просто, как показано ниже.
Мы также можем вычислить среднеквадратическое отклонение (standart deviation) значений для набора данных, что дает нам средство оценки случайности значений данных в наборе. Для набора действительно случайных данных мы должны полу­чить среднее значение (mean average), очень близкое к средней величине (midpoint) диапазона данных. Среднеквадратическое отклонение должно приближаться к од­ной четвертой средней величины диапазона данных.
Альтернативные варианты аутентификации
Уже достаточно давно специалисты убедились в необходимости быть крайне ос­торожными при подключении Windows-систем к сети. Очень трудно найти бранд­мауэр, который позволяет прохождение пакетов для работы Windows-системы в ло­кальной сети. Открытые ТСР-порты 139 и 445 означают, что Windows-система не защищена брандмауэром. Существуют средства для прямолинейных атак, которые способны предоставлять на вход таких систем сотни и даже тысячи пар значений
имя пользователя/пароль (подобранных по словарю) в секунду. Атака может про­должаться несколько часов или даже дней, пока не будет взломана учетная запись.
Администраторы могут подумать, что блокирование портов для работы в сети Windows-систем способно защитить их от этой атаки. И здесь они могут ошибиться. При наличии в системе нескольких вариантов аутентификации ситуация усложняется. Также усложняется и защита точки аутентификации с помощью простого брандмауэра, хотя это "решение" широко используется в современном мире. Многие Web-серверы, например, позволяют проводить отгадывание пароля и имени пользователя. Для Windows-систем это означает, что удаленный пользователь может пытаться пройти аутентификацию со­гласно информации стандартного файла паролей. Если этот Web-сервер работает в до­мене, то аутентификация хакера будет осуществляться с помощью данных, хранящихся на первичном контроллере домена. Таким образом, хакер способен проводить атаку "грубой силой" против домена, даже если порт 445 заблокирован.
Вызов ошибки для проверки надежности кода обработки ошибки
В большинстве программ используются службы и библиотеки вызовов функций API, но во многих программах не проверяется код возврата ошибки. Это может при­вести к любопытным проблемам, когда при вызове функции происходит ошибка, но программа предполагает, что вызов прошел успешно. При этом программой могут ис­пользоваться инициализированные переменные и "замусоренные" буферы. Если хаке­ру удается заполнить память до обработки ошибки при вызове функции, то в выделен­ной области памяти могут оказаться предоставленные хакером данные. Более того, ошибка вызова функции API может привести к аварийному завершению программы. Найти места в программном обеспечении сервера, в которых не проверяются возвра­щаемые значения, достаточно просто с помощью дизассемблера наподобие IDA Pro.
Резюме
Серверные приложения являются излюбленными целями атак хакеров. Удален­ные атаки на серверные программы применяются настолько широко, что большое количество простейших кодов атак было интегрировано в удобные для использова­ния программные средства.
Основной проблемой для серверных приложений является доверие к входным данным. Крайне важно, чтобы при создании серверных приложений прежде всего учитывались интересы защиты, однако в реальности это далеко не так. Вместо этого оказывается доверие входным данным, предполагается, что эти данные будут в пра­вильном формате и уж тем более будут предназначены для мирных целей. Хакеры умело используют доверительные отношения для расширения привилегий и изме­нения существующих настроек, что позволяет им в конечном итоге успешно реали­зовать свои атаки на серверные приложения.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика