Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #71, НОЯБРЬ 2004 г.

Паразит для IE

Николай GorluM

Хакер, номер #071, стр. 071-110-1


(gorlum@real.xakep.ru)

Пишем свой Browser Helper Object

Написание программ, контролирующих или следящих за работой пользователя, – наверное, одна из самых необходимых отраслей программирования. Менеджеру нужно следить за тем, чтобы в офисе работники не качали порнуху и не пинали пингвинов во всяких флэшовых играх, а занимались делом. Родителям надо наблюдать приблизительно за тем же самым :), а хакеру надо просто следить за пользователем, перехватывать его пароли и личную переписку. Как вклиниться в замечательную и безумно выгодную среду spyware-программистов, я и попробую рассказать в этом материале.

Так уж вышло, что тотальную слежку за пользователем реализовать очень сложно: потребуются тонны кода, полная интеграция с операционной системой и куча времени. Следствие – геморрой у кодера, а всем прекрасно известно, что кодеры очень берегут свою пятую точку. Поэтому было решено следить не за всей системой целиком, а только за одной программой. Самой популярной программой, которая есть на каждом компьютере и которой пользуется каждый юзер, выходя с ее помощью на бескрайние просторы Интернета, – за браузером.

А если судить по статистике, большинство юзеров пользуется каким браузером? Правильно, Internet Explorer! Даже несмотря на огромное число багов и постоянно растущую популярность замечательного браузера Opera, пользователь выбирает именно эту софтину. В принципе, понятно, почему, – ничего не надо устанавливать, относительно быстро работает, да и интерфейс его прост как подошва кирзового сапога.

Microsoft, как без шуток дальновидная компания, догадалась, что программерам захочется контролировать ее детище, а потому заранее внедрила в свой браузер замечательную технологию BHO, которая предоставляет spyware-кодеру поистине неограниченные возможности.

Что такое BHO?

BHO, или Browser Object Helper – это не что иное, как plug-in для Internet Explorer. А именно маленькая программка, выполненная в виде DLL, регистрирующаяся в системе и загружающаяся при каждом запуске браузера. Эта DLL имеет возможность перехватывать любые системные события обозревателя, следить за действиями пользователя и вообще вершить правый суд. Ты уже наверняка не раз встречался с подобными программками. Например, при установке дико популярной в свое время качалки GetRight вместе с ней в систему прокрадывался BHO, который собирал данные о посещаемых пользователем ресурсах и отправлял производителю. А лично мне как-то раз попался троян, который селился в Ослике и перехватывал все мои пароли, в том числе от платежной системы e-gold. Я долго не мог от него избавиться, не знал, где он прописался, – в процесс-листе нет, в сервисах нет. Спасла меня только софтина BHO-хантер, которая ловко убила эту пакость на моей системе (см. врезку).

Смотрим внутрь

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

Содержание  Вперед на стр. 071-110-2
<<< НАЗАД ||| ГЛАВНАЯ