Отслеживание загрузки шпионских программ в системе Windows
Трофименко А.В.
🕛 24.05.2006, 11:30
Последнее время в Интернете часто встречаются вопросы о том, что при использовании Internet Explorer происходит смена стартовой страницы, при загрузке по ссылке открываются совершенно другие страницы. Я сам столкнулся с этим и поэтому изучал проблему на себе. Первое, что советовали, это воспользоваться спецпрограммами типа Ad-aware и Антивирус Касперского с новыми базами. Это правильно и на какое-то время решает проблему, но потом опять все повторяется. Я же решил выяснить вручную где прописывается шпион и как мне кажется выяснил это. Я не писатель и не журналист, стиль моей писанины прошу не критиковать, пишу потому что сам не нашел в одном месте подробного описания как и что происходит и решил восполнить это. Может кому будет интересно.Итак, встретившись с тем, что ваш Internet Explorer стал загружать не те ссылки, первое что можно посоветовать - это поставить Ad-aware и Антивирус Касперского с новыми базами и просканировать компьютер. Но если вы хотите сами решить эту проблему, то моя статья для Вас. Также я постараюсь описать свои действия подробно, может кому из начинающих пригодится в качестве методики поиска шпионов. Специалистам это может будет излишне. Они и без меня это знают, поэтому я адресую статью в первую очередь для начинающих.
Для наблюдений я использовал два компьютера: на работе Windows XP без сервис паков и дома сначала также Windows XP без сервис паков, потом поставил последовательно SP-1 и SP-2.
Когда я впервые столкнулся с этой проблемой, то для выяснения где же что грузиться стал проверять, во-первых, пункт «Автозагрузка». У меня в нем стоит только загрузка офиса. Во-вторых, ключи реестра ответственные за автозагрузку программ: это раздел реестра
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
а в нем подразделы Run, RunOnce, RunOnceEx, RunServices, RunServicesOnce. В этих разделах есть строковые ключи (некоторые разделы пустые), отвечающие за запуск программ. Название ключа может быть произвольным, а в качестве значения у них указывается запускаемая программа, если надо - то с параметрами. Обратите внимание на разделы, в названии которых присутствует "Once". Это разделы, в которых прописываются программы, запуск которых надо произвести всего один раз после следующей загрузки системы. Например, при установке новых программ некоторые из них прописывают туда ключи, указывающие на какие-нибудь настроечные модули, которые запускаются сразу после перезагрузки компьютера. Такие ключи после своего запуска автоматически удаляются. В параметре
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
я нашел одну программу с именем из произвольного набора букв. Программа была записана в папке Windows, дата создания оказалась свежая. Поняв что это шпион, решил потом с ним разобраться. Владельцам линейки Win98 рекомендую заглянуть еще и в файл win.ini в раздел [windows]. В нем есть два параметра load и run. Если в них записаны какие то программы, то стоит проверить какие именно и нужны ли они Вам. Кроме этого в реестре есть параметр
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppInit_DLLs
В нем можно прописать DLL которые будут грузиться при всех загрузках во все запускаемые Windows процессы, которые используют библиотеку User32.DLL. У меня этот параметр пустой.
Таким образом все проверив я нашел только одного шпиона в параметре реестра, отвечающего за автозагрузку программ. Перезагрузив компьютер я сразу вывел на экран диспетчер задач Windows и понаблюдал, как этот процесс загрузившись при старте системы отработал несколько минут и выгрузился. Решив что он загружает DLL в память и уже потом она играет роль шпиона, я этот параметр удалил из реестра и из папки Windows.
Проверил ключи реестра:
1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\DefaultPrefix
Значение параметра по умолчанию должно быть "http://"
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes
Там должны быть следующие значения параметров: "ftp"="ftp://" "gopher"="gopher://" "home"="http://" "mosaic"="http://" "www"="http://"и не должно быть никаких адресов интернет. У меня там стояли url, которые я и удалил.
Решив, что со шпионом покончено, я успокоился и некоторое время работало все нормально, но через несколько дней повторилось опять то же самое, что было сразу заметно т.к. менялась стартовая страница. Решив, что работая в Интернете я опять ловлю заразу, я также вручную убрал из автозагрузки появившийся файл, в имени которого были уже другой набор букв, но сравнение файлов с предыдущим выдавало, что они одинаковы. Удалил файл и исправил ключи реестра, т.к. там опять прописывались url. Конечно можно было сразу накатить сервис паки, но я решил наблюдать что же будет дальше. Дома поставил SP-1. Поработав я стал более внимательно следить и обратил внимание, что в один день произошли изменения страницы и url в то время, когда я не был подключен к Интернету. Заражение так же произошло и на домашнем компе при работе в Интернет. До этого он не был заражен из чего я сделал вывод что SP-1 не является защитой от используемой шпионом дыры.
Вывод: шпион так и сидел на рабочем компе; на домашнем только что произошло заражение, только вносил изменения он видимо не сразу, а через несколько дней, видимо чтобы привлекать меньше внимания. Если бы он сразу вносил изменения после меня, то я бы раньше сообразил, что шпион продолжает работать и не прекратил бы поиски. А так я потерял несколько недель, думая что ловлю шпиона из Интернета, в то время, как он сидел у меня и продолжал работать.
Проверяя компьютер, и, в первую очередь, папку Windows по дате создания файлов, я обратил внимание на файл qwe7972.ini в папке Windows\System32. Особенность его была в том, что после каждой перезагрузки у него менялась дата и время создания файла, т.е. при каждой загрузке какая-то программа пишет в файл информацию. Причем информация в файле была нечитаемая - просто набор символов в строках. По виду похож на другие ini файлы, т.е. также в файле [разделы], в разделах параметр=значение_параметра, только информация была зашифрована. Сразу вывод, что информацию пытаются от нас скрыть и, естественно, таким файлом надо заинтересоваться. Если бы это была система, то были бы обычные записи хотя бы и на английском. Отсортировав файлы в папке по имени я увидел файл qwe7972.dll. Естественно напрашивается вывод что именно эта библиотека и пишет инфу в файл, учитывая что у них одинаковые имена и дата создания DLL свежая, а систему я ставил давно и никаких обновлений не проводил, во всяком случае на рабочем компе. Поэтому файл с такой датой никак не мог попасть на компьютер в результате моих действий. Осталось разобраться как библиотека грузится. Убрав шпиона из автозагрузки (как я уже писал файл с именем из набора букв) и перезагрузившись я увидел, что время файла qwe7972.ini изменилось, следовательно библиотека продолжает грузиться и работать. Попробовал удалить библиотеку, но система выдала, что объект заблокирован, что подтвердило догадку о работе библиотеки в данный момент. Воспользовавшись программой ProcessInfo из прилагаемых к книге Рихтера «Windows для профессионалов», я посмотрел какие процессы грузят эту DLL. Это оказался EXPLORER и только он ей пользовался (есть и другие проги для просмотра инфы о процессах, но я в то время читал книгу Рихтера и для опыта использовал его проги). Я сравнил файл EXPLORER с рабочего компа с заведомо исправным файлом с дистрибутива Windows. Оказалось, что они одинаковы и на тот момент у меня не возникло версий как же грузится библиотека, т.е. изменений в заголовок файла не вносились. Перезагрузив комп в безопасном режиме я эту библиотеку удалил. Из антивирусников на то время я использовал Нортон Антивирус с новыми базами, обновляемыми раз в неделю, но Нортон на эту библиотеку не ругался. Я поставил Касперского 5 с новыми базами. В копии этой библиотеки Каспер увидел шпиона.
Около месяца все было нормально пока у меня не был решен один вопрос - как же библиотека грузилась? Через месяц на рабочем компе я опять увидел проблемы, стартовая страница уже так явно не менялась, но происходили изменения url в реестре и при работе в IE открывались совсем другие ссылки, а не те, на которые я нажимал. Идя проторенным путем я обнаружил в папке Windows\System32 библиотеку qweХХХХ.dll, где вместо "ХХХХ" уже другие цифры, а также ini файл с тем же именем. Стоящий на компе Каспер уже не видел в ней шпиона.
Перезагрузившись в безопасном режиме я эту библиотеку удалил. Все опять встало на места. Обновил базы Каспера. Но мне все не давала покоя мысль как библиотека грузилась. Я проверял все ключи ответственные за автозагрузку программ, там удалял все подозрительное, и, даже когда там оставались только необходимые программы, которым я доверяю, библиотека все равно грузилась. Читая литературу я встретил информацию, что есть и еще возможность загрузки которую я не проверял.
В Internet Explorer встроена технология Browser Object Helper. Данная технология позволяет встраивать другим программам свои плагины в IE и выполнять какие-то действия во время его работы. Так, например, поступают качалки. У меня стоит FlashGet. Данная технология может быть использована и для наблюдения за действиями пользователя в IE и вместо его действий выполнять свои, в том числе для загрузки других страниц вместо тех на которые хотим перейти по ссылке.
Объекты загружаемые через BHO хранятся в ключе:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
где перечислены значения с именем равным CLSID загружаемого объекта. В ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
находим по CLSID раздел с именем этого CLSID. В нем можно посмотреть параметры объекта, в том числе и путь до загружаемой библиотеки в параметре \InprocServer32\(По умолчанию)="путь до загружаемого объекта".
Посмотрев данные ключи я увидел, что через них грузились эти DLL, и хотя фактически сами файлы я удалил, но ключи ответственные за загрузку остались на месте. Т.е. EXPLORER не изменялся, он оставался именно тем каким и был при установке WINDOWS, другие проги не грузили библиотеки, использовалось то, что было встроено разработчиками. При загрузке EXPLORER просматривал ключи реестра и подгружал библиотеки. Если какой-то из них не было, то это просто пропускалось не выводя никаких сообщений.
Таким образом можно вручную разобрать что нам надо в данных ключах реестра, а что нет, и удалить шпиона. А можно воспользоваться спецпрограммами, например, BHO Captor или WinPatrol. Последняя мне особенно понравилась, так как кроме этого выдает много другой полезной информации по тому что запускается на компе. Но первая, что хорошо, имеет в комплекте исходные тексты на DELPHI. Во всяком случае, та версия которую я скачал. По исходникам можно посмотреть используемые ключи реестра.
Вот в принципе и все, что я хотел рассказать в своей статье. Технология загрузки BHO для меня была открытием. Если о вышеописанных ключах и методах загрузки я слышал ранее и при поиске шпиона их использовал, то BHO я открыл для себя впервые, и ранее в общедоступных местах я не встречал описания этого, поэтому решил восполнить пробел.
Конечно, если использовать более новые версии программ для наблюдения за системой и регулярно обновлять базы, то эти шпионы будут удалены (Каспер также сообщает, что объект DLL заражен и удалить его невозможно, т.к. он заблокирован. Приходилось перезагружать в безопасном режиме и удалять вручную), но для меня было интересно разобраться самому где это происходит. Кроме того хочется сказать слово в пользу установки сервис паков: хотя SP-1 позволял шпиону пролезть в систему, то SP-2, стоящий у меня дома, пока не дает этого сделать. Видимо дыру, через которую шпион лез на компьютер, он закрывает. Сейчас подумываю и на работе установить сервис паки.
Еще раз повторюсь - моя статья для начинающих, специалистов прошу меня не ругать. Возможно Вам это было уже давно известно, но ранее среди ответов на решение данной проблемы ссылку на технологию BHO я не видел.
Спасибо.
Трофименко А.В.