Коллектив авторов - Защита от хакеров корпоративных сетей
Злоумышленник, используя уязвимость одного из слабых мест системы, добивается того, что пользователи стекаются к провайдеру, который с их точки зрения менее уязвим и более стабилен. В этом заключается суть обмана. Заставьте людей думать, что они что-либо делают только потому, что они хотят это делать. Автор уже говорил ранее, что реклама – это социальная инженерия. Простой пропуск каждого сообщения выбранного вида привел бы к предсказуемости и очевидности. Однако понижение надежности, особенно в Интернете, предоставляющем максимум возможностей с одновременным освобождением от всякой ответственности, гарантирует сетевым администраторам замаскированные и недоказуемые ошибки в работе сети и подталкивает пользователей к использованию более стабильного с их точки зрения (но тайно скомпрометированного) сервера / сервиса провайдера.
...Примечание
RProcess завершил реинжиниринг Traffic Analysis Capabilities правительственных организаций. Результаты реинжиниринга расположены по адресу http://cryptome.org/tac-rp.htm. Было выяснено, что Traffic Analysis Capabilities основан на предположении, что чем сложнее для организаций было взломать сервис, тем менее вероятно, что они разрешат ему остаться. Этот результат следует воспринять с некоторой долей скепсиса, но, как и большинство других материалов Cryptome, с ним стоит ознакомиться.
Приманка и переключатель: фальсификация использования SSL
Если читателю интересно, то пусть он попытается выяснить, на чем основана уверенность пользователя в том, что он подключился к Web-сайту при помощи протокола SSL? Это не праздный вопрос. Большинство передаваемых по протоколу HTTP данных в любом случае передаются в открытом виде. По каким признакам пользователь сможет определить, поддерживает или не поддерживает шифрование и удостоверение данных при помощи протокола SSL один Web-сайт из сотни других?
Обычно браузер сообщает пользователю об использовании протокола SSL при помощи нескольких драгоценных пикселов на экране монитора:
• значка «блокировки» в строке состояний;
• адресной строки, в которой содержится ссылка на запрашиваемый сайт и буква s после названия протокола http;
• иногда всплывающего диалогового окна, информирующего пользователя о входе в безопасную зону или выходе из нее.
Проблема заключается в том, что делается попытка установить подлинность массива пикселов по совпадению с тем, что описано в протоколе HTML, формате JPEG и других протоколах уровня представления, использующих протокол SSL. Но в действительности пользователь не знает, что было послано по сети. Вместо этого он доверяет браузеру оповестить его об использовании криптографии. Но как браузер сможет это сделать? При помощи массива пикселей.
Подтверждение подлинности одного набора образов с другим происходит в предположении, что один из них никогда не содержится в другом. Это неверно, и об этом свидетельствует рис. 12.2, расположенный по адресу www.doxpara.com/popup_ie.html.
Рис. 12.2. Заверена ли подлинность всплывающего объявления по протоколу SSL?
X10, позорно известный спаммер псевдопорнографических окон, на самом деле не имеет никакого отношения к этому окну, не говоря уже об использовании протокола SSL для подтверждения его подлинности. Но насколько известно, эта экранная форма не только прибыла с X10.com, но и была еще заверена как страница, прибывшая оттуда. Как была создана эта страница? Давайте начнем с рассмотрения ее описания на языке разметки HTML:
[[email protected] 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.
Для замены содержимого строки состояния необходимо что-то поместить в ее позицию после открытия окна без строки состояния. Для этого используется фрейм, самостоятельно подсоединяющий себя к нижней границе всплывающего окна так, как это показано ниже:
[[email protected] 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:
[[email protected] 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). Это позволяет вполне правильно определить точное число и стиль символов, которые следует удалить из адресной строки. В данном случае http://www.doxpara.com/x10?. Достаточно было разместить замаскированные под мусор переменные и удостовериться, что это выглядит как еще одна страница со слишком большим числом внешних параметров.