Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 33000
Скачиваний: 742

Сообщения об ошибках
Глава 16 393
Он запустил Procmon, снова вызвал программу установки и в момент
появления сообщения об ошибке остановил трассировку Procmon. Аарон
отфильтровал, перетащив значок в виде перекрестия с панели управления
Procmon на сообщение об ошибке, только события, связанные с процессом-
владельцом окна Setup.exe (рис. 16-18).
Рис. 16-18. Procmon после установки фильтра «Include Process From Window»
Поскольку в заголовке сообщения об ошибке присутствовала цифра
«0», Аарон подумал, что проблема возникает из-за того, что программа не
может что-то найти, поэтому он щелкнул правой кнопкой столбец Result
и исключил события, не представляющие интереса: SUCCESS, FAST I0
DISALLOWED, FILE LOCKED WITH ONLY READERS, REPARSE, BUF-
FER OVERFLOW, и END OF FILE (обычно Аарон исключает стандартные
результаты, а не включает потенциально тревожные, иначе легко выкинуть
нужную информацию).
Когда он посмотрел на оставшиеся записи, то увидел один явно выделяю-
щийся элемент — «DoesNotExist» среди путей в конце перечня результатов.
Он применил функцию подсветки Procmon, чтобы выделить их в контексте
окружающих событий (см. рис. 16-19).
Рис. 16-19. Подсветка строки «DoesNotExist» в отфильтрованных результатах
SIN_ch_16.indd 393
27.12.2011 14:52:43

394 Часть
III
Поиск и устранение сбоев: загадочные случаи
Поскольку из контекста было неясно, что произошло непосредственно
перед неудачным поиском, он удалил из фильтра Procmon правило, исклю-
чающее результаты SUCCESS. Как видно из рис. 16-20, перед обращением
к разделу реестра HKLM\Software\DoesNotExist\lnfo выполнялось множе-
ство обращений к D:\setup.ini, а затем несколько к D:\autorun.inf.
Рис. 16-20. Вывод результатов типа SUCCESS перед неудачным обращением к реестру
Аарон открыл меню Properties первого события RegOpenKey и посмо-
трел на стек вызовов (рис. 16-21), чтобы понять, как и зачем процесс Setup.
exe пытался открыть этот раздел. Строка 12 стека показывала, что компо-
нент программы установки вызывал GetPrivateProfileStringA, что и привело
(в строке 7) к попытке открыть этот раздел реестра.
Рис. 16-21. Стек вызовов неудачной попытки открытия HKLM\Software\DoesNotExist\lnfo
SIN_ch_16.indd 394
27.12.2011 14:52:44

Сообщения об ошибках
Глава 16 395
GetPrivateProfileString — это API-функция, которой Windows-разработчики
могут пользоваться для чтения старых INI-файлов 16-разрядных версий
Windows. Согласно документации, эти вызовы перенаправляются в реестр с
помощью раздела IniFileMapping. Аарон обнаружил в IniFileMapping стро-
ку, направляющую запрос autorun.inf в «DoesNotExist» (рис. 16-22), удалил
его и перезагрузил компьютер, после чего установка прошла успешно.
Рис. 16-22. Элемент IniFileMapping перенаправляет запрос Autorun.inf в несуществующий
раздел реестра
Анализ проблемы
Аарон обнаружил конкретную причину неудачной установки, однако
ему нужна была ее первопричина и объяснение неверной конфигурации
IniFileMapping.
IniFileMapping
Раздел IniFileMapping появился в Windows NT 3.1. Когда программы исполь-
зуют API-интерфейсы ini-файлов для обращения к файлам, IniFileMapping
может перенаправлять обращения к кустам MACHINE или USER (HKLM
или HKCU). Раздел IniFileMapping разработан для поддержания совмести-
мости с устаревшими приложениями, использовавшим INI-файлы вместо
реестра, что препятствовало масштабированию и не давало возможности
разным пользователям иметь собственные настройки.
Autorun.inf
При вставке съемного носителя, такого как компакт-диск или флеш-
накопитель USB Windows обнаруживает новый диск и Проводник прове-
ряет наличие файла Autorun.inf в корневой папке носителя. Autorun.inf —
это текстовый файл в формате INI-файла (то есть, с именами разделов в
квадратных скобках, содержащих пары «имя=параметр»). Файл может со-
держать записи, сообщающие Проводнику, какой значок следует назначить
диску и какое действие по умолчанию следует предлагать пользователю, а
в некоторых случаях просто запускает нужную программу. Этот механизм
позволяет запускать программу установки автоматически после встав-
ки компакт-диска. Существуют настройки реестра и групповой политики,
управляющие автозапуском и автоматическим воспроизведением (см. ста-
тью 967715 базы знаний Microsoft Knowledge Base по адресу http://support.
microsoft.com/kb/967715).
Проблема с автозапуском заключается в том, что по умолчанию он дей-
ствует и для перезаписываемых дисков, включая флеш-накопители. Черви,
SIN_ch_16.indd 395
27.12.2011 14:52:44

396 Часть
III
Поиск и устранение сбоев: загадочные случаи
такие как Conficker, могли распространяться через такие устройства, записывая
на диск Autorun.inf и свою копию. После этого вредоносное ПО могло зара-
жать другие компьютеры после подключения к ним диска. Все это усугубля-
лось ошибкой в применении настроек, которые, как предполагалось, должны
были отключать автоматическое воспроизведение. Позднее эта ошибка была
исправлена. Более того, в новых версиях Windows автоматическое воспроиз-
ведение для перезаписываемых устройств теперь отключено по умолчанию.
Подробнее об этом написано в статье 971029 Knowledge Base (http://support.mi-
crosoft.com/kb/971029). Функции автозапуска и автоматического воспроизведе-
ния все еще работают на CD- и DVD-дисках, поскольку распространение червей
через эти устройства менее вероятно и пока удобство перевешивает риск.
Почему в разделе IniFileMapping появился параметр для Autorun.inf?
Пару лет назад один блоггер описывал хитрый трюк для отключения автома-
тического воспроизведения на всех носителях. Трюк был возможен благодаря
тому, что Autorun.inf имеет формат ini-файла, а Проводник использует API-
функции ini-файлов для его чтения. За счет создания для Autorun.inf параметра
IniFileMapping, перенаправляющего обращение к несуществующему разделу
реестра, записи автоматического воспроизведения становятся недоступными.
Автор утверждал, что при этом имеется только один недостаток: пользователи
сами должны искать исполняемые файлы. Когда вредоносные программы все
чаще стали распространяться через перезаписываемые устройства, группа ре-
агирования на компьютерные происшествия (CERT) Университета Карнеги-
Меллона и другие организации, занимающиеся вопросами информационной
безопасности, стали рекомендовать этот трюк, утверждая, что он не вызывает
побочных эффектов. С тех пор данный параметр в обязательном порядке вно-
сится в реестр во многих организациях.
Почему не удалось установить это приложение?
Оказалось, что файл Autorun.inf на установочном компакт-диске «Kodak»
содержал отнюдь не только записи для автоматического воспроизведения:
[autorun]
open=autorun.exe
[Info]
Dialog=Kodak i610/i620/i640/i660 Scanner
Model=600
ModelDir=kds_i600
Prog ramG roup=i 610,i 620,i 640,i 660
[Versions]
CD=04040000
FIRMWARE=04000300
ISISDRIVER=2.0.10711.12001
SIN_ch_16.indd 396
27.12.2011 14:52:45

Сообщения об ошибках
Глава 16 397
ISISTOOLKIT=57.0.260.2124
KDSMM=01090000
PKG=02010000
SVT=06100000
TWAIN=09250500
[Install]
[SUPPORTEDOSES]
WIN=WINVISTA WINXP WIN2K
[REQUIREDSPS]
WINXP=1
WIN2K=3
«Kodak» и другие производители используют Autorun.inf не только для
автоматического воспроизведения, но и в качестве ini-файла общего на-
значения для своих программ установки. Разумеется, программа установ-
ки использует для чтения файла стандартные API-интерфейсы, однако
IniFileMapping перенаправляет их в несуществующий раздел реестра, в ре-
зультате установка не удается. Надо сказать, что «Kodak» делает это совер-
шенно законно: нигде не запрещено помещать в Autorun.inf иные настройки,
предусмотренные приложением.
Может ли клиент решить проблему, скопировав содержимое компакт-
диска на жесткий диск и запустить его оттуда? Нет. IniFileMapping приме-
няется к любому файлу с именем «Autorun.inf», независимо от его располо-
жения.
Мораль в том, что установка провалилась из-за уверенности в «отсут-
ствии побочных эффектов», не подкрепленной тестированием. Поскольку
новые умолчания и доступные настройки политики автоматического вос-
произведения значительно снижают угрозу распространения вирусов че-
рез USB-накопители, примочки вроде IniFileMapping могут и не сработать.
Аарон посоветовал клиенту удалить этот раздел из реестра и положиться на
защитные меры, принятые в новых системах.
Отсутствие сопоставлений с папкой
Один из пользователей обнаружил, что всякая попытка открыть любую пап-
ку в Проводнике приводит к появлению сообщения об ошибке, изображен-
ного на рис. 16-23. Это происходило независимо от способа, которым пыта-
лись открыть папку: двойной щелчок папки на рабочем столе, через значок
Компьютер, Панель управления, Документы, Изображения или другие пап-
ки меню Пуск.
SIN_ch_16.indd 397
27.12.2011 14:52:45