Прикрепление к исполняемым файлам
Прикрепление к исполняемым файлам
Иногда наиболее очевидные потайные ходы сложнее всего разглядеть. Например, можно просто разместить троянскую оболочку Windows под именем explorer.exe в корне каталога %systemdrive% целевой системы (по умолчанию право записи в этот каталог имеют все пользователи). Тогда при интерактивной регистрации пользователя эта профамма по умолчанию будет использоваться в качестве оболочки для этого пользователя. Почему это происходит?
В документации к набору средств разработки программных продуктов (SDK — Software Development Kit) компании Microsoft ясно сказано, что если имя исполняемого файла или динамической библиотеки DLL указано в реестре без задания пути к этому файлу, то операционная система Windows NT/2000 выполняет поиск этого файла в следующей последовательности.
1. В каталоге, из которого загружено приложение.
2. В текущем каталоге родительского процесса.
3. В системном каталоге %windir%\System32.
4. В системном каталоге %windir%\System.
5. В каталоге Windows %windir%.
6. В каталогах, определяемых значением переменной окружения PATH.
Потенциальная опасность такого поведения проявляется при использовании предлагаемой по умолчанию оболочки NT/2000, задаваемой ключом реестра нкъм\SOFTWARE\-Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell. По умолчанию этому ключу соответствует значение explorer.exe без явного указания пути к этому файлу. Следовательно, если некто в процессе загрузки скопирует модифицированную оболочку с именем explorer. ехе в корневой каталог системного диска (например, диска С: \), то она и будет использована для данного сеанса пользователя по умолчанию, поскольку поиск файла оболочки будет выполняться в корневом каталоге (текущим каталогом в процессе загрузки системы считается %systemdrive%).
По словам Альберто Арагонеса (Alberto Aragones) (http://www.quimeras.com/ecadv/ntpath.htm), для демонстрации этого эффекта достаточно скопировать командную оболочку NT/2000 cmd.exe в корневой каталог системного раздела, завершить сеанс, а затем зарегистрироваться снова. Тогда вместо стандартной оболочки Windows будет использоваться командная оболочка.
Рассмотрим последствия этой ситуации. Как будет описано в главе 14, существуют средства (типа eLiTeWrap), с помощью которых можно легко объединить несколько программ с целью их незаметного и асинхронного выполнения. Иными словами, программу типа Back Orifice 2000 можно связать с копией explorer.exe, поместить этот пакет в корневой каталог системного диска, и эта хакерская программа будет незаметно запускаться при каждой следующей интерактивной регистрации. При этом Explorer будет работать как ни в чем не бывало. Жуть...
Альберто на своем Web-узле приводит остроумный способ реализации такого подхода с удаленного компьютера, основанный на использовании службы telnet для NT/2000, работающей на целевом компьютере. Для этого нужно подключиться к службе telnet на целевом компьютере, затем загрузить на этот компьютер "запасной вариант" explorer. ехе (например, через службу FTP в режиме командной строки), и, наконец, из командной строки telnet переписать его в каталог %windir%, запустить настоящий explorer.exe и завершить сеанс telnet. После этого в каждом интерактивном сеансе вместо реального проводника будет использоваться "подставной вариант" explorer. ехе.
Этот же прием применим для подмены динамических библиотек. Информация об именах динамических библиотек хранится в соответствующих исполняемых файлах Windows. Поиск указанных библиотек выполняется в том же приведенном выше порядке. Такая последовательность поиска может вызвать схожие проблемы с подменой библиотек DDL.