IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Кто хозяйничает в моем компьютере?

День за днем кто-то таинственный тихо и незаметно "подгрызает" процессорное время или оперативную память наших компьютеров... Тема этой статьи - обнаружение и устранение рекламно-шпионских "движков" в различном ПО.

Александр Захарченко

Просматривая одну из рассылок, посвященных Windows, я натолкнулся на вопрос о том, что какая-то программа принудительно изменяет адрес "Домашней страницы" в Internet Explorer, создавая пользователю определенные неудобства. Предложенный читателем ответ (запускать IE с параметром about:blank), конечно, проблему не решает, а только загоняет ее под коврик. При этом проблема-то обозначена правильно: в системе происходит процесс (резидентный или нерезидентный) выполнения несанкционированных действий. Но вот описываемые методы по обнаружению источника зла показывают, что Microsoft успешно справилась с задачей создания "кота в мешке". Владельцы Win9x/Me даже не подозревают, что эта операционная система, в отличие от MS DOS, на самом деле знает все и вся о любой выполняемой задаче (исключение составят DOS приложения).

Но Microsoft твердо уверена, что, в соответствии с библейской истиной, юзерам Win9x/Me "многие знания умножают скорбь". В самом деле, если они целый день doom'ают, quak'ают или складывают шарики (а эта линейка Windows позиционируется в первую очередь как системы "для дома и развлечений"), то какая им разница, кто ест процессорное время или оперативную память? Если не хватает - пусть покупают железо покруче. Так что тем, кого это волнует, придется выкручиваться собственным умом.

Начнем с того, что поиск причин странного поведения системы нужно начинать с антивирусного сканирования. Свежесть антивирусных баз (1-2 недели) - обязательна, иначе впустую можно потратить массу сил и времени, да еще и потерять информацию на диске. При благоприятном исходе этой проверки (то бишь отсутствии вирусов) потребуется провести дополнительный анализ. В этом может помочь программа msconfig. Устанавливается она автоматически, без уведомления, а найти ее можно в каталоге \WINDOWS\SYSTEM. Нас интересуют ее возможности по анализу содержания конфигурационных файлов config.sys, autoexec.bat, system.ini и win.ini. Последние два удобно разбиты по секциям. Кроме того, на отдельной вкладке собраны все автоматически запускаемые программы - как из папки Автозагрузка (учтите, что их может быть две: \WINDOWS\Главное меню\Программы\Автозагрузка и \WINDOWS\All Users\Главное меню\Программы\Автозагрузка), так и через Registry (ключи HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run и HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Run). Любой модуль можно запретить для загрузки, сняв птичку напротив его названия, и столь же легко вернуть обратно.

В списке автозагрузки обычно присутствует несколько системных программ: монитор задач, отслеживающий запуск приложений для оптимизации их расположения при дефрагментации диска - TaskMonitor (taskmon.exe), утилита диагностики Registry - ScanRegistry (scanregw.exe), и переключатель клавиатуры - internat. Это хозяйство отключать не рекомендуется. SystemTray (SysTray.exe) - индикатор разряда батарей, маскирующийся под приложение панели задач. Настоящее предназначение SystemTray можно определить по списку скрытых окон, там ее присутствие отмечено названием "Индикатор батарей". В настольном компьютере SysTray можно отключить. Есть еще загрузка профиля энергосбережения, причем применяется она аж два раза - сначала до ввода имени и пароля пользователя, а затем - после окончательной загрузки. Все остальное - прикладные программы. В любом случае, не дожидаясь чрезвычайных ситуаций, очень желательно потратить некоторое время и выяснить, что это за программы и насколько они необходимы на данном компьютере.

В некоторых случаях обнаруживаются "неизвестно" откуда взявшиеся софтины, которые могут быть рекламными движками (не самый худший вариант), троянцами или вирусами. Обратите внимание на имена стандартных утилит (notepad, calc, outlook, и т.п.), под которые могут маскироваться непрошеные гости.

Авторы бесплатных программ частенько используют для поддержки своих продуктов т.н. рекламные движки, которые в одном из окошек программы крутят рекламу, качая ее из интернета. Производители игрушек (и не только) применяют модули для скрытого сбора информации о пользователях своих программ. При этом информация о подобных "особенностях" программ не указывается вовсе, либо задвинута в малочитаемое место и описывается столь витиеватыми фразами, что сразу и не поймешь, чего они там хотят (подробности на Privacy.net). Иногда эти модули функционируют автономно, и их загрузка обеспечивается через Registry (чаще), папку Автозагрузка или ключи run или load раздела windows файла win.ini. Тогда их видно с помощью msconfig. Но все чаще хитрые производители запускают рекламно-шпионские модули на каком-то определенном этапе выполнения основной программы, и та отказывается работать, не обнаружив свои скрытые части.

В арсенале Win9x есть Task Manager, показывающий куцый список выполняемых задач, которые не возражают против этого. Из системных программ в этом списке присутствуют Explorer (Проводник) и уже упоминавшиеся SysTray и internat. Активировать окно менеджера задач можно нажатием Ctrl+Alt+Del (жмите осторожно, а то вылетите в перезагрузку). Толку от него немного, но (закрыв все окна на рабочем столе для упрощения анализа) иногда все же можно обнаружить задачу, отсутствующую в строках автозапуска. Эх, знать бы кто ее запустил! Но процесс может зарегистрироваться как скрытый и в окне Task Manager не появится.

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

Исчерпав набор системных утилит, обратимся к независимым авторам. В каталогах ListSoft или FreeSoft можно найти приличные инструменты для подробного анализа системных процессов и событий. Я коротко опишу то, чем пользуюсь сам, не претендуя на полное раскрытие темы.

Для быстрого получения списка выполняемых задач подходит Killer for MS Windows Сергея Кононова. Несмотря на устрашающее название, это полезная и компактная утилита (версия 1.2 занимает всего 328 кБ). После запуска программа размещается в системной панели. Доступ к функциям происходит по нажатию правой кнопки мыши. Killer показывает списки всех выполняемых задач (включая скрытые) и всех окон (в том числе системных и скрытых). Пользователь может "убить" выбранный процесс или окно или изменить приоритет выполнения задачи.

Подробнейшие данные о состоянии ОС можно получить, используя TaskInfo2000 (Igor Arsenin). Эта программа объединяет свойства монитора задач и системного информатора. Для нас важно то, что она показывает список всех исполняемых процессов, откуда они запущены, какие файлы открыли в данный момент. Есть возможность "убить" любой процесс или изменить приоритет его выполнения. Представлена информация о том, кто и сколько занял системных ресурсов (процессорное время, оперативная память, открытые файлы, подключенные DLL и многое другое). В общем-то, для рассказа о всех возможностях TaskInfo2000 потребуется отдельная статья. Мой опыт показывает, что с ее помощью можно получить полное представление о "закулисной жизни" Win9x (впрочем, она будет очень полезной и на NT).

Ценную помощь могут оказать утилиты Mark'а Russinovich'а на Sysinternals Freeware, особенно File Monitor (регистрация обращения к файлам - кто и с какой целью), HandleEx (список открытых файлов и загруженных DLL) и Registry Monitor (отслеживание обращений к Registry).

Для обнаружения и предотвращения утечки информации с компьютера необходим персональный межсетевой экран (firewall). Я предпочитаю AtGuard. Хотя на него уже наложил лапу Symantec, найти оригинальную версию еще можно. Помимо ведения журнала подключений к интернету, AtGuard имеет режим обучения firewall, в котором пользователю немедленно сообщается о попытке неразрешенного интернет-соединения. Так можно достаточно быстро обнаружить программы, желающие пообщаться с внешним миром без согласия хозяина компьютера, и перекрыть им кислород.

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

Злоумышленник пойман. Его дальнейшая судьба зависит от вас. Троянцев "мочите в сортире", остатки ранее использовавшихся программ выбросите в Корзину (не забудьте исправить автозагрузку). Если же это фокусы ваших любимых программ, то придется выбирать между их необходимостью и некоторыми неудобствами. Лично у меня торчат два рекламных движка от используемых утилит. Ведут себя достаточно прилично, процессором не злоупотребляют (TaskInfo2000 показывает 0,02-0,04% процессорного времени, перепадающего на их долю), выход в Сеть я им заткнул с помощью AtGuard, а при острой нехватке оперативной памяти, которую они кушают с большим удовольствием, их можно удалить Killer'ом.

Ручное удаление ненужных процессов в конце концов надоедает. Хотя Microsoft не включает в Win9x готовые средства для анализа и управления выполняющимися процессами, но весьма приличный полуфабрикат находится в установочном комплекте Windows. Это библиотека TOOLHELP.DLL. Простейший способ получить доступ к ней - создать собственную программу удаления. Далее приведен текст программы, убивающей одну фиксированную задачу.

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <tlhelp32.h>

char *ac1="Здесь наберите уникальный фрагмент имени искомого файла";
 
void main(void) {
 
HANDLE hS = NULL, pH = NULL;
PROCESSENTRY32 pr;
 
printf("Waiting loading ...\n");
//Пауза требуется, чтобы скрывающийся процесс при автозагрузке 
//успел активироваться и обеспечил работу основной программы
Sleep(15000);
 
//Подготовка доступа к TOOLHELP
//и получению списка выполняющихся процессов
hS = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
if (hS == NULL) {
 printf("Error Loading ToolHelp\n");
 getch();
 return;
}
//Сканирование списка процессов с выводом на печать для наглядности
//Вывод на печать можно убрать
if (Process32First(hS,&pr)) {
 do {
 printf("%s\n",proc.szExeFile);
//Проверка имени файла выполняющегося процесса
 if (strstr(proc.szExeFile,ac1) != NULL) {
//Удаление обнаруженного ненужного процесса
 if ((pH = OpenProcess(SYNCHRONIZE, TRUE, proc.th32ProcessID)) != 
NULL) {
 TerminateProcess(pH,0);
 CloseHandle(pH);
 printf("%s terminated\n",ac1);
 break;
 }
 }
 } while (Process32Next(hS,&proc));
}
printf("Scan completed\n");
CloseHandle(hS);
return;
}

Описание всех структур и функций TOOLHELP.DLL можно найти в tlhelp32.h. Сканирование списка процессов организовано по аналогии с поиском файлов и папок через FindFirst и FindNext. Для компиляции использовался VC++ 6. Требуется подключение библиотеки th32.lib. Если возникнут проблемы при выполнении, нужно отключить оптимизацию (во всяком случае для VC++ 5 в Release режиме потребовалось).

Как видим, цель изгнания ненужных задач из оперативной памяти достигается очень просто. Для уничтожения группы задач можно воспользоваться файлом с перечнем необходимых имен или передачей аргуметов через командную строку.

В заключение снова вернусь к тому, с чего, собственно, начал эту статью: к вопросу об изменении адреса "Домашней страницы". Сравнительно недавно появился еще один класс бесплатного программного обеспечения - homepageware product. Ценой его использования становится замена домашних страниц всех(!) интернет-браузеров на http://www.homepageware.com. Вот тут уже ничего не поделаешь.

 

Источник - SoftТерра, http://www.softerra.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com