Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #70, СЕНТЯБРЬ 2006 г.

Тотальный контроль браузера

Кочубей Павел aka zOrd

Спецвыпуск: Хакер, номер #070, стр. 070-052-1


(ICQ: 291637112, www.offbit.1gb.ru)

Пишем spyware на основе BHO

IE – самый популярный браузер. А что любят делать состоятельные пользователи? Как ни странно, это оплата счетов, покупка различных товаров — и все это осуществляется через Интернет. А что мешает хакеру подсмотреть за пользователем (не считая УК РФ)? Посмотрим, как легко взломщик может проследить за всем, что пользователь делает в своем браузере.

[что такое Browser Helper Object]

В первую очередь, Browser Helper Object - это DLL, которая регистрируется в операционной системе Windows как дополнение ко всем известному Microsoft Internet Explorer (такое дополнение имеется у Get Right, Flyswats, Quiver, Blink, iHarvest и Godzilla). Идея «помощников» (helper – помощник), без сомнения, хороша (особенно для нас), потому что эта DLL может следить за действием пользователя, когда он находится в браузере или другом приложение, в котором установлен наш BHO. Технологию BHO применяют многие приложения, и именно поэтому Browser Helper Objects является интереснейшей темой для разработчиков spyware.

[BHO в разрезе]

Технология BHO реализуется с помощью COM, поэтому DLL нашего хелпера это не что иное, как внутризадачный COM-сервер, работающий в контексте процесса, подгрузившего его и получающий полный доступ к объектам программы. С помощью IObjectWithSite мы перехватим указатель на интерфейс IWebBrowser2, который является родителем класса и отвечает за всю работу браузера! После того как мы сделаем все необходимые манипуляции, нам необходимо записать его в любую из переменных-членов объекта, после чего можем получить доступ к любому объекту браузера.

[функция функции рознь]

Описывать все функции, которые теоретически могут войти в BHO, просто нереально в пределах этого журнала, поэтому определимся с конкретной задачей. Что обычно желает зло-программист? Он хочет получать данные, которые вводит пользователь, особенно относящиеся к системам платежей и e-mail адресам.

Для того чтобы получить доступ к данным страницы, нам необходимо использовать метод get_Document, а параметром ему будет объект интерфейса IDispatch. Далее необходимо создать указатель на IHTMLDocument2. В общем, все основное будет ясно в процессе кодинга.

[строим BHO]

Надеюсь, студия уже запущена? Значит – в бой. Создаем проект Win32 Application, выбираем ALT COM, а визарде оставляем все по умолчанию, чтобы получить ALT COM-сервер. После создания проекта заходим в меню на Add ALT Objects и добавляем Internet Explorer Object. Как ни крути, а этими действиями мы новый мир не открыли, поэтому лезем в хидер и готовимся к программингу.

В первую очередь, найдем описание класса BHO. Если ты сделал проект, как описано выше, то получилось нечто вроде:

class ATL_NO_VTABLE CBHO:

public CComObjectRootEx<CComSingleThreadModel>,

public CComCoClass<CBHO, &CLSID_BHO>,

public IObjectWithSiteImpl<CBHO>,

public IDispatchImpl<IBHO, &IID_IBHO, &LIBID_IEPLUGINLib>

Чтобы наши задумки в будущем осуществились, необходимо добавить декларации нескольких переменных:

Содержание  Вперед на стр. 070-052-2