Чтение онлайн

на главную - закладки

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

[root@fire doxpara]# cat popup_ie.html

<HTML>

<HEAD>

<script type=“text/javascript”><!—

function popup {

window.open(“http://www.doxpara.com/x10/

webcache.html?site=https://www.x

10.com/hotnewsale/

webaccessid=xyqx1412&netlocation=241&block=121&pid=811

22&&sid=1‘,’‘,’width=725,height=340,resizable=1,menubar=1,toolbar=1,stat

usbar=0,location=1,directories=1\');

}

//—></script>

</HEAD>

<BODY BGCOLOR=“black” onLoad=“popup”>

<FONT FACE=“courier” COLOR=“white”>

<CENTER>

<IMG SRC=“doxpara_bw_rs.gif”>

<BR><BR>

Please Hold: Spoofing SSL Takes A Moment.

Activating Spam Subversion System...

</BODY>

</HTML>

Описание страницы начинается с определения функции JavaScript по имени popup. Эта функция сначала выводит новое окно, используя основные возможности JavaScript. Затем она удаляет из нового окна строку состояния, что является необходимым, поскольку планируется заменить ее своей строкой состояния. И наконец, функция определяет фиксированный размер окна и использует чисто хакерский прием для заполнения строки адреса любой правдоподобной информацией, которая маскирует злоумышленника.

После загрузки страницы эта функция будет тут же выполнена со всеми вытекающими отсюда последствиями. В следующей секции будет показано, насколько эффективна эта функция.

...

Приоткрывая завесу

Прелести монокультуры: темные стороны работы в IE WEB

Большинство из рассмотренных методов браузера Internet explorer (IE) можно реализовать в модели документов, поддерживаемой другими браузерами. Но почему не нравится, когда IE обслуживает более 90 % сети Web? Изменчивость – фактически одна из основных возможностей противостоять сетевым атакам. Идея состоит в том, что если злоумышленнику легко предсказать, что пользователь привык видеть на экране монитора, то у него появляется хорошая возможность подстроиться под ожидания пользователя. Достаточно интересно, что поддерживаемая Windows XP оболочка является фактически позитивным шагом, направленным на защиту против подобных способов атак. Если нельзя выдать удаленный запрос для определения используемой пользователем оболочки, то нельзя удаленно имитировать ее.

С другой стороны, Internet Explorer 6 обладает странной забывчивостью сохранять активную строку состояния, что сильно облегчает задачу злоумышленнику, переводя тем самым задачу фальсификации в разряд почти ненужных (хотя по-прежнему злоумышленник должен угадать, стоит ли что-нибудь фальсифицировать или нет).

На этот раз классическое возражение почти точно: «Это не ошибка, это – особенность».

Блокировка: фальсификация строки состояний в HTML. Наиболее известным признаком обеспечения безопасности при помощи протокола SSL является появление значка блокировки в виде замка в нижнем правом углу экрана. Ожидаемая последовательность действий злоумышленника, бросающего вызов системе безопасности, может быть следующей. Для того чтобы подделать ключ SSL, злоумышленник должен пройти весь внутренний процесс аутентификации браузера. Только после этого у него появится возможность выдать пользователю фальсифицированное уведомление о безопасной работе. Поскольку с точки зрения криптографии подобный ключ сгенерировать невозможно, то предполагалось, что блокировку нельзя фальсифицировать. Но злоумышленник может сделать проще: отключить строку состояния пользователя и вручную пересоздать ее, используя простой способ изменения пикселей в правом углу. Первоначально отключение строки состояния не рассматривалось как угроза безопасности, возможно потому, что Web-страницы защищены от изменения установок собственной строки состояния. Но разработчики, льстящие рекламным дизайнерам, создали очередной класс объекта – всплывающее окно с совершенно новым набором свойств. Если читатель обратил внимание, в функцию popup включена возможность задания не только адреса, но и высоты, ширины и других нечисловых свойств создаваемого окна, включая возможность установки параметра statusbar в 0 (statusbar=0). Вот эта возможность и используется для преодоления защиты протокола SSL.

Для замены содержимого строки состояния необходимо что-то поместить в ее позицию после открытия окна без строки состояния. Для этого используется фрейм, самостоятельно подсоединяющий себя к нижней границе всплывающего окна так, как это показано ниже:

[root@fire x10]# cat webcache.html

<html>

<head>

<title>You think that’s SSL you’re parsing?</title>

</head>

<frameset rows=“*,20” frameborder=“0” framespacing=“0”

topmargin=“0”

leftmargin=“0” rightmargin=“0” marginwidth=“0”

marginheight=“0”

framespacing=“0”>

<frame src=“encap.html”>

<frame src=“bottom.html” height=20 scrolling=“no”

frameborder=“0”

marginwidth=“0” marginheight=“0” noresize=“yes”>

</frameset>

<body>

</body>

</html>

Видно, что высота строки состояния равна точно 20 пикселям, а в присоединенном фрейме нет ни одной из стандартных причуд разработчика (они все отключены). Поэтому содержимое файла bottom.html будет размещено точно на место оригинальной строки состояния. Посмотрите на содержимое файла bottom.html:

[root@fire x10]# cat bottom.html

<HTML>

<body bgcolor=#3267CD topmargin=“0” leftmargin=“0”>

<TABLE CELLSPACING=“0” CELLPADDING=“0” VALIGN=“bottom”>

<TR ALIGN=center>

<TD><IMG hspace=“0” vspace=“0” ALIGN=“left”

SRC=“left.gif”></TD>

<TD WIDTH=90%><IMG hspace=“0” vspace=“0” VALIGN=“bottom”

WIDTH=500

HEIGHT=20 SRC=“midsmall.gif”></TD>

<TD><IMG hspace=“0” vspace=“0” ALIGN=“right”

SRC=“right.gif”></TD>

</TR>

</TABLE>

</BODY>

</HTML>

Если читатель хоть раз задумывался о строке состояния, по крайней мере во время работы с Internet Explorer, то он мог заметить, что она состоит из уникальной небольшой полоски слева, обычно небольшого пустого места посередине и нескольких полей справа. Поэтому для отображения строки состояния нужно скопировать подходящий шаблон пикселов в нужное место экрана. В языке разметки HTML предусмотрены стандартные средства растяжения строки состояния по левой и правой границам окна, но в данном случае в этом нет необходимости. Имитируя окружающую среду, можно обмануть пользователя, подсунув ему строку состояния из неожиданного для него источника. Пользователь думает, что пикселы строки состояний формирует система, а на самом деле это просто другая часть Web-страницы.

Совершено новый вид переполнения буфера: опасность выравнивания к правой границе. Все это ужасно. Возможно, читатель обратил внимание на слишком большое число случайных переменных в адресе URL при вызове popup_ie.html. На самом деле никто не пытается перейти по адресу http://www.doxpara.com/x10/webcache.html . Вместо этого указан адрес http://www.doxpara.com/x10/webcache.html?site=https://www.x10.com/hotnewsale/webaccessid=xyqx1412&netlocation=241&block=121&pid=81122&&sid=1 . Браузер игнорирует лишние параметры, посылая их Web-серверу как

вспомогательную информацию для регистрации в журнале. Беды в этом нет, потому что никакой вспомогательной информации для статической Web-страницы, предназначенной только для привлечения внимания, не требуется. Но клиент не знает истинного предназначения вспомогательной информации, а оно состоит в следующем. При помещении новых символов на место старых данных, которые могла содержать адресная строка, в текстовое поле с левой стороны записываются адреса потерянных символов. Размер адресной строки устанавливается косвенно при определении в файле popup_ie.html размера окна, а используемый для отображения адреса шрифт практически фиксирован (исключая странные браузеры, которые можно выделить по их способности постоянно вносить мусор в исходящие заголовки HTTP). Это позволяет вполне правильно определить точное число и стиль символов, которые следует удалить из адресной строки. В данном случаеДостаточно было разместить замаскированные под мусор переменные и удостовериться, что это выглядит как еще одна страница со слишком большим числом внешних параметров.

В отдельности каждая из этих проблем не опасность, а всего лишь небольшая неприятность. Но когда они сливаются воедино – это смертельная угроза. Рисунок 12.2 показывает то, что видит пользователь, а рис. 12.3 – то, что произошло на самом деле.

Рис. 12.3. Фальсифицированное всплывающее окно

Абсолютный контроль: фальсификация всего окна. Одной из интересных возможностей обеспечения безопасности, встроенной в ранние виртуальные машины Java отличных от Microsoft компаний, было то, что все окна, которые не получили статус доверенного окна, должны были иметь строку состояния, уведомляющую пользователя о том, что данное диалоговое окно запущено удаленным сервером и фактически не отражает локальную систему.

Отсутствие этой возможности обеспечения защиты информации было одним из наиболее значимых упущений для среды Microsoft Java.

Некоторые системы предусматривают настройку, позволяющую при переходе к безопасному сайту отображать в диалоговом окне краткое уведомление. Пример подобного уведомления показан на рис. 12.4.

Рис. 12.4. Окно уведомления о работе протокола SSL

К несчастью, это окно – всего лишь массив пикселов, которые легко фальсифицировать при использовании реализованной в браузере Internet Explorer возможности отображения бесцветных всплывающих окон (chromeless popup). Пример такого всплывающего окна представлен на рис. 12.5.

Рис. 12.5. Пример произвольного сетевого диалогового окна уведомления

На самом деле это не окно. Об этом свидетельствуют некоторые признаки, например изображение текста без зубцеобразного дефекта (antialiased) в строке заголовка с плавным изменением цвета. Этого достаточно, чтобы понять, что показано графическое изображение. HTML, Java и особенно Flash предоставляют вполне богатые инструментальные средства для фальсификации интерфейса компьютерной графики CGI, по крайней мере по одному окну за раз. Пользователь доверяет пикселам, а сеть их предоставляет. В рассмотренном случае пользователь ожидает появления дополнительных пикселов, для того чтобы отличить данные, предоставляемые сетью, от данных своей системы. Благодаря ошибке или алгоритму работы системы существуют методы удаления пикселов, что в результате позволяет сетевым средствам делать все, что они пожелают. Все, что потребовалось сделать в примере, – это установить в функции popup две противоречащие друг другу опции. Сначала переменная fullscreen была установлена в 1, увеличивая окно и удаляя его границы. А затем переменная resizable была установлена в 0 (resizable=0), что привело к отмене полноэкранного режима. Заметьте, что к этому времени границы окна были уже удалены. Из-за ошибки или из-за того, что так было предусмотрено при проектировании, но в результате бесцветное окно оказалось подготовленным к какой угодно фальсификации цвета.

Замаскированные под неустойчивые отказы атаки на протокол SSL. Иногда, когда пользователь теряет бдительность, можно внушить ему неверную мысль о нахождении его на безопасном сайте. Для этого нет необходимости делать что-то сверхъестественное. Что, если в одном случае из тысячи кто-то пытался подключиться к своему банку или биржевому маклеру через свою Web-страницу, которая в этот момент не была защищена протоколом SSL?

Было ли это ошибкой? В некотором смысле, потому что в адресной строке был пропущен символ s после названия протокола http, а значок замка внизу экрана размером 16 х 16 пикселов был удален. Но это одноразовая ошибка. Очередная перезагрузка восстановит работу протокола https.

Эту ошибку кто-нибудь когда-нибудь обрабатывал?

Возможно, что кто-нибудь когда-нибудь звонил в службу технической поддержки и спрашивал совета по поводу возникшей ситуации. Скорее всего, ему советовали перезагрузить страницу и посмотреть, не исчезла ли проблема.

Причиной проблемы является то, что нельзя зашифровать или заверить весь трафик. У страницы нет способа самостоятельно обеспечить безопасную загрузку своих данных, говоря при этом: «Если я не поддерживаю шифрование, то у меня нет возможности сообщить пользователю, чтобы он не пересылал в мой адрес секретных данных». (Даже если путем установки какого-нибудь признака у страницы была бы такая возможность, то злоумышленник мог бы легко его сбросить.) Неготовность пользователя читать незашифрованный и неудостоверенный трафик означает, что любой, у кого есть возможность перехватить его соединение и фальсифицировать содержимое ответа от банка или биржевого маклера, может любым способом помешать доставке страницы с указанием упомянутого статуса небезопасности.

...

Примечание

Вероятно, лучшее решение состоит в том, чтобы добавлять значок блокировки (замок) под знаком указателя мыши и/или справа от него при навигации по безопасной странице. Достаточно при этом соблюсти меру, чтобы не казаться чрезмерно навязчивым. Нельзя прерывать передающий важную информацию поток данных и, что более важно, нельзя заслонять поле просмотра в момент получения информации от браузера по безопасным линиям. Конечно, следовало бы подумать о вещах типа «кометы курсора», позволяющей фальсифицировать даже курсор мыши… Таким образом, гонка вооружений продолжилась бы.

Поделиться:
Популярные книги

Ученичество. Книга 2

Понарошку Евгений
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ученичество. Книга 2

Безродный

Коган Мстислав Константинович
1. Игра не для слабых
Фантастика:
боевая фантастика
альтернативная история
6.67
рейтинг книги
Безродный

Неудержимый. Книга XVII

Боярский Андрей
17. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVII

Вечная Война. Книга VII

Винокуров Юрий
7. Вечная Война
Фантастика:
юмористическая фантастика
космическая фантастика
5.75
рейтинг книги
Вечная Война. Книга VII

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

Отверженный III: Вызов

Опсокополос Алексис
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Отверженный III: Вызов

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Варлорд

Астахов Евгений Евгеньевич
3. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Варлорд

Лорд Системы 13

Токсик Саша
13. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 13

Ночь со зверем

Владимирова Анна
3. Оборотни-медведи
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Ночь со зверем

Темный Кластер

Кораблев Родион
Другая сторона
Фантастика:
боевая фантастика
5.00
рейтинг книги
Темный Кластер

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка