О чем идет речь? Темой данной заметки является описание способа
загрузки и исполнения произвольных приложений на клиентском компьютере.
Естественно, что пользователь обязан сделать - посетить некий узел.
Чтобы добиться результатов следует прибегнуть к приемам НЛП.
Согласитесь, вероятнее всего человек быстрее нажмет на ссылку ведущую к
web страничке, нежели на файл. Наша с вами задача придумать способ
загрузить и исполнить приложение на его компьютере. Что, оказывается,
весьма несложно сделать...
Многие не имеют опыта такого
проникновения на целевой компьютер. Хотя он является, пожалуй, одним из
лучших. Это связано с тем, что пользователю не нужно будет подтверждать
никакой загрузки файла, а потом еще и вручную его запускать. За него
все сделает Internet Explorer.
Как это работает? Пример действует по достаточно интересной схеме:
загружается как HTML файл загружает себя как MHTML
Сам HTML файл состоит из двух блоков: первый указывает на наличие
некого файла согласно стандартам MHTML и MIME, а второй блок - это
HTML. Первый блок для второго является простым текстом, хотя в
действительности это файл, зашифрованный в base64. Поэтому при открытии
файла срабатывает блок HTML:
Немного поясню, что именно происходит. При обработке данного документа
исполняется скрипт, устанавливающий новый компонент с CLSID(ClassID)
66666666-6666-6666-6666. Исполняемый код для компоненты берется из
этого же файла и именно поэтому происходит определение его
местоположения (переменная path). Вся разница в том, что открывается он
уже как MHTML. Поэтому мы можем обращаться к любому ресурсу,
хранящемуся в нем (в данном случае это приложение). Его указание
происходит согласно следующей форме записи:
mhtml:имя_html_файла!имя_ресурса
Что касается первого блока, то его заголовок должен выглядеть примерно следующим образом:
В качестве значения Content-Location желательно указать что-нибуть
приличное. Эта переменная потом появится в строке состояния Internet
Explorer как окончание к тексту "Установка компонента...". Тем более,
что именно ее необходимо указывать как имя желаемого ресурса. Далее
должен идти бинарный код приложения в формате base64.
Как можно автоматизировать процесс?
Для построения полнофункциональной универсальной утилиты необходимо создать следующую систему:
1 HTML файл, посылающий запрос на сервер с формой хранящей такие данные как: - атакуемая почта - содержание письма - исполняемый файл (используйте ) - содержание HTML файла хранящего исполняемый
2 PERL скрипт, создающий на сервере специально сформированный HTML
файл, хранящий исполняемое ПО в base64 и то, что пользователь увидит в
броузере. В base64 обычный EXE файл можно конвертировать использовав
модуль MIME::Base64:
После чего отсылается письмо пользователю на компьютере которого
необходимо запустить приложение. Согласитесь, весьма проста и в тоже
время интересная технология.
Что это нам дает?
Такая
уязвимость позволяет незаметно установить удаленному пользователю
практически любое приложение. Среди таких приложений могут также быть
вирусы и троянские кони. И как всегда решением является банальное
запрещение загрузки ActiveX.
Вдобавок хочу написать, что
человеческая фантазия не имееет границ. Так, совсем недавно мне
попалось сообщение о том, что направив пользователя по ссылке
hcp://system/DFS/uplddrvinfo.htm?file://c:main.txt можно удалить у него
файл c:main.txt, если такой действительно существует. Это значит, что
всегда необходимо искать что-то новое, поверьте оно найдется :)