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

 

 

Преобразование символов

Подходящими целями для атак можно также назвать программы, в которых данные преобразуются в одной части программы перед тем, как они передаются в другую ее часть. При этом символы могут преобразовываться по несколько раз. Например, если пользователь добавляет символ + к стандартному имени запрашиваемого Web-сервера, этот символ будет преобразован в символ пробела еще до его использования в файловой системе.
Шаблон атаки: кодирование Unicode
Unicode является 16-битовым стандартом кодирования символов, который позволяет представлять алфавиты всех существующих в мире языков. Для кодирования каждого символа используется 2 байта, вместо одного для символов ASCII. Если машинный код системы или используемые API предопределяют применение обычных символов, то в системе может осуществляться преобразование символов Unicode.
У хакера появляются возможности для атаки, когда некоторые из компонентов системы не способны работать с символами Unicode. В этом случает хакер отправит строку символов Unicode, надеясь на то, что механизм фильтрации или механизм классификации не сможет правильно распознать запрос. В результате данные успешно пройдут через фильтр содержимого пакетов и, вероятно, заставят приложение обработать некорректный запрос.
Кодирование Unicode в IIS-сервере
При атаках с помощью символов Unicode часто используется переход по дереву каталогов в поисках интересных файлов. Например:
http://target.server/some_directory/../../../winnt
В данном случае хакер пытается перейти в каталог, который, по всей вероятности, не служит для хранения файлов Web-служб. Атака очевидна, поэтому многие Web-серверы и сценарии защиты успешно блокируют эту атаку. Однако с помощью альтернативного кодирования хакер может обойти плохо спроектированные фильтры запросов.
В октябре 2000 года хакеры публично заявили об уязвимости Web-сервера IIS от компании Microsoft относительно одного из вариантов этой атаки. Все, что требовалось для взлома сервера IIS, — это использовать альтернативные варианты написания символов точек и косой черты, применяемых в классической атаке. В кодировке Unicode эти символы будут выглядеть следующим образом.
СОАЕ
/ C0AF \ С19С

При использовании этой кодировки приведенный выше запрос будет иметь следующий вид.
http://target.server/some_directory/%COAE/%COAE/%COAE%COAE л /%C0AE%C0AE/winnt
Шаблон атаки: кодировка UTF-8
UTF-8 представляет собой систему кодирования символов. При этом для кодирования разных символов может использоваться разное количество байтов. Вместо того чтобы использовать по 2 байт для каждого символа, как в Unicode, в UTF-8 символ может быть закоди­рован с помощью 1, 2 и даже 3 байт. Вот как будут выглядеть описанные выше символы в кодировке UTF-8:
. F0 80AE \ E0 80AF / F0 819С
Кодировка UTF-8 определена в RFC-2044. Атаки с помощью UTF-8 имеют успех по тем же причинам, что и атаки с помощью Unicode.
Шаблон атаки: URL-кодирование
Во многих случаях в URL-адресе символ может быть представлен в шестнадцатеричном формате. Это приводит к различным проблемам при фильтрации входных данных.
URL-кодирование в МРЗ-сервере IceCast
Следующая строка закодированных в шестнадцатеричном формате символов позволяет путешествовать по каталогам на системе с установленным МРЗ-сервером IceCast6.
Ошибка! Недопустимый объект гиперссылки.
Также можно вместо "/.. . /" воспользоваться строкой "/%25%25/".
URL-кодирование в сервере приложений Titan
При работе сервера приложений Titan присутствует ошибка в процессе декодирования шестнадцатеричн^гх символов и URL-строк. Например, отсутствует фильтрация строки %2Е.
Существует множество других примеров использования в атаках альтернативного кодирования символов. Можно использовать кодирование Unicode ucs-2, управляющие коды HTML и даже такие простые проблемы, которые касаются регистра символов и преобразования символов пробела в символы табуляции.
Шаблон атаки: альтернативные IP-адреса
Есть несколько методов для альтернативного указания диапазона IP-адресов. Ниже приведено несколько примеров.
192.160.0.0/24
192.168.0.0/255.255.255.0
192.168.0.*
Классические атаки с помощью альтернативного кодирования, могут быть использованы и относительно IP-адресов.
Применение IP-адресов без символов точки для Internet Explorer
Альтернативное кодирование IP-адресов выявляет серьезные недостатки в фильтрах и других механизмах безопасности, в которых необходима точная интерпретация таких значений, как номера портов и IP-адреса. Фильтрация URL-адресов обычно связана со множеством проблем. В программном пакете Microsoft Internet Explorer позволяется задавать IP-адреса в различных форматах7. Ниже представлено несколько эквивалентных способов запроса одного и того же Web-сайта.
http://msdn.microsoft.com
http://207.46.239.122
http://3475959674
Скомбинированные атаки
Очевидно, что все рассмотренные в этой главе хитрости можно применить комплексно при проведении различных атак.
Шаблон атаки: сочетание хитростей с символами косой черты и URL-кодированием
В одной атаке можно объединить два или более методов альтернативного кодирования символов.
Комбинация методов кодирования для CesarFTP
Александр Цезари (Alexandre Cesari) создал бесплатный FTP-сервер для Windows-систем, в котором проявляется проблема фильтрации содержимого при многократном кодировании. В FTP-сервер CesarFTP добавлен компонент Web-сервера, на который можно провести успешную атаку с помощью трех символов точки и URL-кодирования.
Для проведения атаки хакер может в URL-адрес добавить строку, подобную приведенной ниже.
Это весьма интересная атака, поскольку она является комбинацией нескольких хакерских приемов: символа начала управляющей последовательности (/), URL-кодирования и трех символов точки.
Искажение данных в файлах журналов
До этого момента в основном обсуждались атаки на фильтры и рассматривались ошибки серверов при классификации входных данных. Еще одна область, в которой может пригодиться использование альтернативно закодированных символов, — это манипуляции с файлами журналов. Можно назвать множество примеров, когда хакеры искажали данные журналов с целью избежать обнаружения. Это прекрасный способ уничтожить "следы преступления", которые потом могли быть использованы при судебном разбирательстве.
Шаблон атаки: искажение по Web-информации журналов
Символы начала управляющей последовательности часто преобразуются до того, как они сохраняются в файле журнала. Например, при использовании сервера HS строка /Index%2Easp записывается в файл журнала как /index.asp. Для создания подложных записей в журнале можно воспользоваться более сложной строкой, например:
/index.asp?oFF200%FFHTTP/l.l%0A00:51:ll%FF[192.168.10.10] Ь %FFGET%FF/cgi-bin/phf
Эта строка заставляет осуществить в файле журнала возврат каретки, что позволяет создать подложную запись, которая уведомляет о том, что с адреса 192 .168 .10 .10 был запрошен cgi-bin/phf.
Проблемы подобного рода известны уже достаточно давно. В самом худшем случае при просмотре файла журнала с помощью утилиты grep или другого сценария анализа, запускалась специально подготовленная программа атаки. В данном случае атака непосредственно направлена на механизм обеспечения безопасности. Очевидно, что здесь могут быть задействованы многие уровни кодирования и интерпретации. Сотрудникам тех организаций, в которых осуществляется простой метод анализа файлов журналов, можно задать следующий вопрос: доверяете ли вы символам, сохраненным в ваших файлах журналов?
Обратите внимание, что таким атакам будут подвергаться только средства анализа журналов, которые способны работать с активным содержимым. Простые утилиты наподобие grep чаще всего неуязвимы для подобных проблем. Безусловно, даже в простых средствах могут быть ошибки или просчеты, которыми можно воспользоваться при атаке (самое интересное, что такие программки чаще всего запускаются от имени корневого пользователя или администратора).
Резюме
В начале этой главы мы рассказали о сложностях, связанных с проблемами открытых динамических систем и с тем, что входные данные влияют на состояние программного обеспечения. На конкретных примерах было продемонстрировано, как специально подготовленные входные данные обходят механизм фильтрации и оборудование систем обнаружения вторжений.
Проблемы безопасности, обусловленные изменением состояния с течением времени (динамика системы), становятся все более и более сложными, в то время как известные и легкие для обнаружения ошибки (например ошибки переполнения буфера) постепенно исчезают из программного кода. Поскольку системы становятся все более распределенными, в атаках все чаще используются состояния "гонки на выживание" и десинхронизации между удаленными частями. Для решения этих сложных проблем потребуется создание программ нового поколения, с большими интеллектуальными возможностями и немалым творческим потенциалом.

 

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