Дело о неизвестном элементе автозагрузки
Пару недель назад я установил на одном из своих компьютеров обновление популярного проигрывателя мультимедиа для Internet Explorer, выполненного в виде элемента управления ActiveX. По прошлому опыту я знал, что при обновлении этого подключаемого модуля всегда создается элемент автозагрузки (исполняемый файл автоматически запускается при загрузке, входе в систему или вместе с другим процессом), который, на мой взгляд, совершенно бесполезен. Поэтому я запустил программу Sysinternals Autoruns, установил в меню настроек параметры Verify Code Signatures (Проверка подписей кода) и Hide Signed Microsoft Entries (Скрыть элементы, подписанные корпорацией Майкрософт), нажал кнопку Refresh (Обновить), нашел искомый элемент автозагрузки и удалил его. Но как только я собрался закрыть окно, на глаза попалась другая запись, и эти самые глаза наполнились ужасом.
Запись под именем IECheck по всем признакам походила на вредоносное ПО. У нее не было ни значка, ни описания, ни наименования компании-производителя, а находилась она в каталоге Windows. Более того, функция Search Online (Поиск в Интернете) программы Autoruns не смогла обнаружить никаких данных о подозрительном исполняемом файле.
Нужно было выяснить, действительно ли запись свидетельствовала о заражении вредоносным ПО, и с этой целью я обратился к служебной программе Sysinternals Strings. В файлах образов зачастую встречаются текстовые строки, помогающие сопоставить их с теми или иными приложениями. К примеру, если программа считывает параметры конфигурации из реестра, то в исполняемом файле задается путь реестра, в котором, как правило, фигурирует наименование производителя или приложения. Программа Strings проводит в файле поиск печатаемых строк (в кодировках Unicode и Ascii) и показывает их, так что я открыл командную строку и вывел на экран строки из образа IECheck.exe. Иногда строк так много, что легче сохранить их в текстовом файле и изучить его в блокноте, но на этот раз мне удалось обнаружить полезные сведения в ходе прокрутки консоли.
Естественно, в списке строк обнаружились строковые ссылки на другие исполняемые файлы, относящиеся, по всей видимости, к тому же приложению, и по их содержимому мне удалось установить название (IconEdit2) и производителя (WinAppsPlanet) приложения. И тут я вспомнил, что несколькими днями ранее загрузил программу IconEdit для редактирования значков в стиле ОС Windows Vista с высоким разрешением. Признав произошедшее ложной тревогой, я закрыл дело и восстановил обычный сердечный ритм.
Этот пример наглядно показывает, что для достижения надежности и во избежание подобных недоразумений производителям ПО следует соблюдать ряд принципов. Во-первых, от жестко заданных строк стоит отказаться в пользу переменных среды и специальных путей оболочки. Исполняемый файл IECheck (что, видимо, расшифровывается как Icon Editor Check) ссылается на каталог Program Files по имени, чем ограничивает свою работоспособность английскими версиями ОС Windows. Стоило бы мне установить программу в иноязычной системе, и файлу IECheck не удалось бы найти другие исполняемые файлы, на которые он ссылается. Вместо этого следовало бы либо найти каталог Program Files по переменной среды %PROGRAMFILES%, либо вызвать функцию ShGetFolderPath, передав ей в качестве параметра папки идентификатор CSIDL_PROGRAM_FILES.
Чтобы не нервировать пользователей, серьезно относящихся к вопросам безопасности, все исполняемые файлы следует снабжать ресурсами версий с указанием компании-производителя и назначения. Более того, производителям стоит обзаводиться сертификатами на подпись кода. В среде Windows цифровые подписи становятся все более распространенным основанием для принятия решений о доверии, и при помощи программ Process Explorer, Autoruns, Sigcheck и им подобных пользователи могут проверять, действительно ли те или иные исполняемые файлы достоверны, или на самом деле они относятся к категории вредоносного ПО. Я связался с автором программы IconEdit2, и он обещал обновить свой продукт в соответствии с этими принципами. Так же стоит поступить всем производителям ПО, и в таком случае у нас будет значительно меньше поводов для беспокойства.