В один прекрасный момент ты понял, что в твоей системе
завелся троян. И эта мысль мучает тебя днем и ночью. Твой любимый антивирус
вместо рьяных поисков гаденыша весело объявляет, что все чисто, деньги уплачены
не зря. И начинаешь ты чахнуть от безысходности, появляется депрессия, пропадает
потенция, сосед набивает тебе морду, пиво становится невкусным, рейтузы не
налезают, появляется перхоть, месячные, кариес, целюлит. В конце концов ты
решаешь покончить жизнь самоубийством и вешаешься на открытом приводе CD-ROM'а.
Печальная картина, согласись. Мне такое развитие событий совсем не нравится,
поэтому будем проблему решать и находить, где же поселился твой компьютерный
зверек. Начнем с самых простых мест, так сказать, <официальных>.
Главное меню / Программы / Автозагрузка
Место, предназначенное непосредственно для автозагрузки
программ. Так как большинство программ в последнее время предпочитает
пользоваться реестром, то многие пользователи уже привыкли, что <Автозагрузка> у
них девственно чиста, и практически не заглядывают в эту папку. Поэтому шансы
остаться незамеченным есть, но все-таки обнаружить постороннего тут слишком
легко. Хотя существует и более интересный вариант: если установлен Microsoft
Office, то велика вероятность, что в этой папке находится ярлык <Быстрый запуск
Microsoft Office> (речь идет о русскоязычной версии), изменив путь этого ярлыка
на свою программу, можно значительно увеличить шансы на успех. А вот на
функционировании самого Офиса это не скажется. Работает на всех версиях Windows.
win.ini
В секцию [windows] этого файла можно добавлять строчки вида .
Где path - полный путь и название исполняемого файла (например, ,
только без кавычек), который будет запускаться при загрузке операционной
системы. Этот метод тоже не отличается изобретательностью, поэтому легко
обнаруживается. Работает только на Windows 95/98.
Реестр
Раздел реестра самый юзаемый различными троянами, а также
всякими ICQ-шными, AVP-шными и прочими детекторами, которые так и лезут в
автоматическую загрузку, чтобы посильнее загадить тебе систему. Именно из-за
этого я крайне не рекомендую пользоваться этим способом. Работает на всех
версиях Windows.
Все эти способы хорошо известны, и посторонняя программа,
использующая их для автозагрузки, быстро обнаруживается. Тем более, что сейчас
появилось много утилит, отслеживающих изменения в критических участках системных
файлов и реестра.
Замена файла
Замена другого автозагружаемого файла - еще один часто
применяемый метод, являющийся дальнейшим развитием предыдущих трех. Суть его
состоит в том, чтобы заменить один из файлов, которые уже автоматически
выполняются операционной системой при загрузке. Для сохранения работоспособности
системы оригинальный файл переименовывается и запускается из внедренной
программы. Описанный выше пример с ярлыком <Быстрый запуск Microsoft Office>
является частным вариантом этого способа, т.к. оригинальный файл можно и не
запускать.
Можно развить эту идею дальше: не заменять другой файл, а
склеивать его вместе с трояном во время инсталляции шпиона. Естественно, при
запуске такого двойника должны активизироваться обе программы.
Но это все - цветочки, так сказать. При разработке первых
версий шпиона Donald Dick были найдены более интересные места, куда можно
поселить паразитов.
VXD
А именно для Windows 95/98 было решено грузить шпиона через
свой драйвер VXD. Список загружаемых драйверов находится в реестре в разделе . Кроме загрузки основного модуля
серверной части шпиона, этот драйвер предоставлял и некоторые другие функции,
которые проще реализовывались в VXD.
В Windows NT/2000, как известно, другая система драйверов, и
VXD там отсутствуют. Но тот способ загрузки, который удалось найти для этих
операционок, превзошел все ожидания. В разделе реестра в параметре
можно прописать программу, которая будет запускаться во время инициализации
операционной системы (еще до загрузки графической оболочки и сервисов), однако
полноценный PE-EXE файл работать тут не будет. Поэтому сюда при инсталляции
шпиона прописывается маленький загрузчик. Все что он делает - это добавляет
сервис Donald Dick в реестр. А сам сервис после запуска первым делом убирает
себя из реестра. И так при каждой перезагрузке. Таким образом, при работе
никаких подозрительных сервисов в реестре не обнаруживается. Пользователь, если
и замечает посторонний работающий процесс, понять не может, откуда же он
берется.
Как показал опыт, методы оказались действительно очень эффективными. Особенно
для NT/2000.
Однако использование VXD для загрузки шпиона в Windows 95/98
нам показалось все-таки не самым лучшим способом. Поэтому при разработке Donald
Dick 2 было решено исследовать другие малоизвестные или недокументированные
места, куда можно приживить шпиона. Поиск увенчался успехом. В Microsoft Windows
95/98 была найдена скрытая возможность автозагрузки динамических библиотек при
старте операционной системы.
Но сначала о том, как происходили поиски. Мы просмотрели
список всех загруженных модулей и отметили для себя те, которые отсутствовали в
стандартных местах автозагрузки. Среди них оказалась программа mprexe.exe. Эта
информация конечно мало полезна. Ведь исполняемый модуль может быть запущен
другим автозагружаемым модулем или драйвером. Но при изучении самого mprexe.exe
мы обнаружили интересную ссылку на несуществующий раздел реестра . А также упоминание весьма
интересных параметров: , и . Мы проделали
следующий эксперимент. Для начала создали этот раздел в реестре. Затем в нем
создали подключ . Параметрам этого подключа присвоили нужные
значения: в строковые и поместили название своего DLL
файла и название экспортируемой из него процедуры, соответственно, а числовому
параметру присвоили ноль.
При загрузке операционной системы процесс mprexe.exe создал в
своем контексте новый поток для вызова указанной процедуры из нашей DLL, после
чего процедура выполнила свои действия. Т.е. если осуществлять запуск шпионской
программы через собственную DLL, то проблема незаметной автозагрузки Трояна
будет решена. Но я рекомендую сделать несколько иначе. Гораздо лучше реализовать
всю работу шпионской программы непосредственно в DLL. Дело в том, что в этом
случае автоматически решается еще одна важная задача - обеспечение невидимости.
Так как сервер шпиона в этом случае является отдельным потоком процесса
mprexe.exe, то никаких посторонних подозрительных процессов в системе просто не
появляется. Это уже другая тема, но если тебе будет интересна проблема
обеспечения невидимости, я расскажу об этом в ближайших номерах Х.
Естественно, после обнаружения такого места, вероятно
специально предназначенного для поселения шпионов и троянов, оставалось найти
нечто подобное в Windows NT/2000. Были сомнения, что это удастся. Но оно
действительно нашлось. Полностью идентичное вышеописанному, только загрузкой
библиотек занимается сервис Winlogon. В разделе реестра
добавляется произвольный подключ с очень похожими параметрами. Радует, что эта
возможность оказалась вполне документированной. Подробное описание есть в MSDN.
Таким образом, метод оказался универсальным. Оформить шпиона
в виде динамической библиотеки можно и для Windows 95/98, и для Windows NT/2000.
Можно найти и более хитрые способы автозагрузки. Все
ограничивается лишь твоей фантазией и интересом к поиску скрытых возможностей
Windows. А их всегда было предостаточно.