Тотальный контроль браузера Кочубей Павел 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> Чтобы наши задумки в будущем осуществились, необходимо добавить декларации нескольких переменных: |