О чем идет речь?
Темой данной заметки является описание способа загрузки и
исполнения произвольных
приложений на клиентском компьютере. Естественно, что пользователь обязан
сделать - посетить некий узел. Чтобы добиться результатов следует прибегнуть к приемам
НЛП. Согласитесь, вероятнее всего человек быстрее нажмет на
ссылку ведущую к страничке, нежели на файл. Наша с вами задача придумать способ
загрузить и исполнить приложение на его компьютере. Что, оказывается, весьма несложно сделать...
Многие не имеют опыта такого проникновения на целевой компьютер. Хотя он является, пожалуй, одним из лучших.
Это связано с тем, что пользователю не нужно будет подтверждать никакой загрузки файла, а потом еще и вручную
его запускать. За него все сделает Internet Explorer. Как это работает?
Пример действует по достаточно интересной схеме: загружается как HTML файлзагружает себя как MHTML.
Сам HTML файл состоит из двух блоков: первый указывает на
наличие некого файла согласно стандартам MHTML и MIME, а второй блок - это HTML. Первый блок для
второго является простым текстом, хотя в действительности это
файл, зашифрованный в base64. Поэтому при открытии файла
срабатывает блок HTML: <BODY> <SCRIPT> function Execute()
{
path=unescape(document.URL.substr(-0,document.URL.lastIndexOf("\\")));
document.write(
'CODEBASE="mhtml:'+path+'\\main.html!file:///InternetExplorer.exe">')
}
Execute();
Немного поясню, что именно происходит. При обработке
данного документа исполняется скрипт, устанавливающий новый компонент с CLSID(ClassID)
66666666-6666-6666-6666. Исполняемый код для компоненты берется из
этого же файла и именно поэтому происходит определение его
местоположения (переменная path). Вся разница в том, что открывается он уже как MHTML. Поэтому мы можем обращаться
к любому ресурсу, хранящемуся в нем (в данном случае это приложение). Его указание происходит согласно следующей форме записи:
mhtml:имя_html_файла!имя_ресурса
Что касается первого блока, то его заголовок должен выглядеть примерно следующим образом:
MIME-Version: 1.0
Content-Location:file:///InternetExplorer.exe
Content-Transfer-Encoding: base64
В качестве значения Content-Location желательно указать что-нибуть приличное. Эта
переменная потом появится в строке состояния Internet Explorer как окончание к тексту "Установка компонента...".
Тем более, что именно ее необходимо указывать как имя желаемого ресурса.
Далее должен идти бинарный код приложения в формате base64.
Как можно автоматизировать процесс?
Для построения полнофункциональной универсальной утилиты необходимо создать следующую систему:
1 HTML файл, посылающий запрос на сервер с формой хранящей
такие данные как:
- атакуемая почта
- содержание письма
- исполняемый файл (используйте <INPUT type=file>)
- содержание HTML файла хранящего исполняемый
2 PERL скрипт, создающий на сервере специально сформированный HTML файл, хранящий исполняемое ПО в base64 и то,
что пользователь увидит в броузере. В base64 обычный .EXE файл можно конвертировать использовав MIME::Base64:
$encoded=encode_base64($decoded);
$decoded=decode_base64($encoded);
После чего отсылается письмо пользователю на компьютере
которого необходимо запустить приложение. Согласитесь, весьма проста и в тоже время интересная
технология.
|