Манипуляции в процессе запуска системы

Как упоминалось в главе 5, излюбленный прием хакеров — оставить в системе свои исполняемые файлы, которые будут автоматически запускаться при загрузке системы. Такие возможности по-прежнему имеются в системе Win 2000. Поэтому необходимо проверять соответствующие папки взломанной системы на наличие неизвестных или странных команд.
Параметры запуска системы задаются в системном реестре в следующих подразделах раздела HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion:

  •  ...\Run
  •  ...\RunOnce
  •  ...\RunOnceEx
  •  ...\RunServices
В Win 2000 отличается лишь местоположение папки автозагрузки Startup для каждого пользователя. Теперь эта папка находится в папке Documents and Settings (%systemdrive%\ Documents and Settings\%user%\Start Menu\Programs\Startup).

Прикрепление к исполняемым файлам


Иногда наиболее очевидные потайные ходы сложнее всего разглядеть. Например, можно просто разместить троянскую оболочку 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.

Выявление всех относительных путей в реестре


Эта проблема была устранена в модуле обновления MS00-052, не включенном в состав сервисного пакета SP1, поэтому этот модуль необходимо применять независимо от установки сервисного пакета. И хотя в разделе часто задаваемых вопросов компания Microsoft заявляет об отсутствии этой угрозы (http://www.microsoft.com/technet/ security/bulletin/fq00-052.asp), Альберто Арагонес (Alberto Aragones) приводит примеры других исполняемых файлов (например, rundll32.exe), для которых пути в реестре явно не указаны. Действительно, имя этого файла многократно встречается в реестре без указания абсолютного пути.
Один из способов решения проблемы состоит в выявлении всех переменных в реестре, для которых не заданы абсолютные пути, и добавлении таких путей вручную. Однако эта процедура может оказаться слишком длительной.
Возможно более эффективным решением яштяется ограничение возможности интерактивной регистрации на сервере (правда, это несколько осложняется появлением терминального сервера). И, конечно же, необходимо установить указанный выше модуль обновления. Этот модуль устраняет угрозу за счет добавления префикса %systemroot% к имени оболочки.

Возникает вопрос, как вернуть систему в нормальное состояние, если с ней уже сыграли злую шутку, описанную Альберто? На этот случай Альберто советует запустить программу %windir%\explorer.exe из командной оболочки, а затем удалить "поддельный" проводник, или просто ввести команду геп\ explorer.exe harmless.txt, а затем перезагрузить компьютер с помощью комбинации клавиш <Alt+Ctrl+Del>.