D статье «Chml заполняет пробел», опубликованной в Windows IT Pro/RE № 7 за 2007 г., я рассказывал об утилите Chml, которую создал для того, чтобы с применением уровней целостности в Windows Vista повысить защиту компьютеров от потенциальных угроз. В статье, в частности, говорилось, что уровни целостности сходны с разрешениями на доступ к файлу, но доминируют над ними. Иначе говоря, если уровень целостности запрещает доступ к объекту, вам будет отказано в доступе, даже если по отношению к данному объекту вы обладаете разрешениями Full Control.
Уровни целостности предусматривают полезную, хотя и скупо описанную в документации, категорию доступа no read up с запретом чтения объекта с уровнем целостности более высоким, чем у процесса (например, Microsoft Internet Explorer — IE, Word), предпринимающего попытку чтения. На этот раз я возвращаюсь к более подробно документированной категории доступа no write up, блокирующей для любого процесса с более низким уровнем целостности возможность изменения объекта с более высоким уровнем целостности. Прежде всего, рассмотрим, как выйти на уровень целостности System.
Vista предусматривает пять уровней целостности — Untrusted, Low, Medium, High и System. Еще один, самый высокий уровень целостности, называемый Protected Process, недоступен или не используется, насколько я понимаю. Обычные пользователи, как правило, работают на уровне Medium, а администраторы — на уровне High. Заметим, однако, что Windows различает более высокий уровень целостности, чем тот, что используется администраторами, а именно уровень System.
Узнав, что в Vista включен уровень целостности выше административного, я был ошарашен: «Microsoft поместила в мой ноутбук с системой Vista элементы, которые я не могу удалить?!» Действительно, в ранних версиях Vista системным файлам назначался уровень целостности System, чтобы исключить возможность их случайного удаления администраторами. Но когда бета-тестировщики Vista стали жаловаться на неспособность удалять элементы с собственных компьютеров, Microsoft лишила файлы в папке Windows уровня целостности System.
Тем не менее уровень целостности System продолжает меня беспокоить. А вдруг злоумышленник найдет способ установить вредоносную программу в моей системе и назначит ей уровень целостности System? Я не смогу удалить вредоносный файл, даже несмотря на то, что группа Administrators обладает разрешениями Full Control по отношению к любой папке конкретного компьютера. Неужели единственной возможностью станет очистка жесткого диска, чтобы начать все с нуля?
Три способа
Я предусмотрел три способа запуска Chml на уровне целостности System. Во-первых, можно просто загрузить систему с компакт-диска Windows Preinstallation Environment (PE). При запуске Windows PE вы действуете в рамках учетной записи System, которая (что неудивительно) функционирует с уровнем целостности System.
Таким образом, если вам придется иметь дело с какой-либо вредоносной программой, установленной с уровнем целостности System, достаточно лишь загрузить пораженный компьютер с компакт-диска Windows PE и воспользоваться утилитой Chml для понижения уровня целостности непрошеного файла или папки, как было показано ранее:
chml
-i:m
Понизив уровень целостности вредоносного файла или папки до Medium, его можно удалить. Конечно, сначала придется добавить Chml на диск Windows PE, поскольку этот инструмент не встроен в Windows PE. В качестве альтернативы можно запустить Chml с флэш-накопителя.
Второй способ запуска Chml с уровнем целостности System — выйти на сайт Sysinternals (http://www.sysinternals.com), загрузить последнюю версию Psexec (psexec.exe) и воспользоваться новым Vista-совместимым переключателем -s, позволяющим выполнять любую команду в рамках учетной записи ‘System’. Так, например, если Chml находится в папке C:stuff, чтобы понизить уровень целостности папки C:malware, следует ввести команду
psexec -s C:mystuffchml.exe C:malware -i:m
Третий способ запуска Chml с уровнем целостности System предполагает использование новой функции Task Scheduler, чей интерфейс с командной строкой позволяет запускать любое приложение в рамках учетной записи ‘System’. Например, можно ввести следующую команду (в одной строке):
schtasks /create /tn dochml /ru «nt authoritysystem»
/sc once /st 09:28 /tr «C:mystuffchml.exe
C:malware -i:m -b»
Здесь ключ /create создает новое задание. Ключ /tn dochml именует это задание dochml. Ключ /ru «nt authoritysystem» предписывает Task Scheduler выполнить команду в рамках учетной записи System. Комбинация /sc once /st 09:28 обеспечивает однократный запуск задания в 9:28. К сожалению, Schtasks не поддерживает режим do it now (выполнить сейчас), как графический интерфейс Task Scheduler.
Излишняя предосторожность?
Возможно, беспокойство по поводу возможной вредоносной программы с уровнем целостности System покажется излишним. Однако теперь в нашем распоряжении есть средство противостояния этой угрозе, если она возникнет.
Марк Минаси - Редактор Windows IT Pro, MCSE и автор книги Mastering Windows Server 2003 (издательство Sybex). mark@minasi.com