Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys. Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ. Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре) |
Информационная схема CIM. Объектная модель WMI
Безопасность при работе с WMI
В силу своей мощности технология WMI позволяет с помощью специальных утилит или сценариев производить различные потенциально опасные действия (например, остановку служб или перезагрузку компьютера). Причем на удаленной машине это выполнить (или, вернее сказать, попытаться выполнить) так же просто, как и на локальной — достаточно написать имя нужной машины в пути к объекту WMI. Поэтому вопросы безопасности при работе с WMI имеют очень большое значение.
В основном, конечно, технология WMI предназначена для администраторов операционной системы и вся система безопасности в WMI построена таким образом, чтобы по умолчанию с помощью утилит или сценариев WMI пользователь мог на определенной машине выполнить только те действия, на которые ему даны разрешения на этой машине (таким образом реализуется безопасность WMI на уровне операционной системы). То есть, если пользователю на уровне операционной системы не дано право перезагружать компьютер, он и с помощью WMI не сможет этого сделать.
Дополнительная политика безопасности в WMI реализована на уровне пространств имен и на уровне протокола DCOM (Distributed COM). Перед тем, как более подробно рассмотреть эти типы безопасности WMI, напомним основные общие понятия, связанные с безопасностью в Windows.
Безопасность в Windows NT/2000/XP основана на именах пользователей и их паролях. Когда в этих версиях Windows заводится пользователь, то его учетной записи присваивается уникальный идентификатор безопасности (Security IDentifier, SID). На основе SID для пользователя формируется маркер доступа (Access Token), в который также добавляется список групп, членом которых является пользователь, и список привилегий, которыми он обладает (например, остановка служб или выключение компьютера). Этот маркер доступа присваивается и всем процессам, которые запускает пользователь. Далее каждый объект операционной системы, доступ к которому определяет система безопасности (это может быть файл, процесс, служба и т. д.) имеет дескриптор безопасности (Security Descriptor, SD), в котором хранится таблица контроля доступа (Access Control List, ACL) для этого объекта. При обращении пользователя или процесса, запущенного пользователем, к объекту происходит сравнение маркера доступа этого пользователя с таблицей контроля доступа и в зависимости от результатов выдается или отклоняется разрешение на выполнение запрашиваемых действий над объектом.
Механизм безопасности WMI на уровне пространств имен соответствует общей модели безопасности Windows NT/2000/XP. Каждое пространство имен может иметь собственный дескриптор безопасности, в котором хранится таблица контроля доступа (ACL). Каждая запись таблицы контроля доступа (Access Control Entry, ACE) содержит информацию о том, какие права (разрешения) имеет определенный пользователь при выполнении различных операций в этом пространстве имен (список разрешений, используемых при работе с пространством имен, приведен в табл. 10.3).
Все записи таблицы контроля доступа сохраняются в репозитории WMI. Разрешения WMI, определенные для конкретного пространства имен, также применяются (наследуются) ко всем подпространствам имен и классам, которые определены в этом пространстве. Собственные разрешения безопасности для отдельного класса WMI определить нельзя.
В Windows NT/2000/XP по умолчанию группа администраторов обладает всеми разрешениями из табл. 10.3, а для остальных пользователей включена учетная запись (Enable Account), разрешено вызывать методы (Execute Methods) и записывать в CIM экземпляры классов провайдеров (Provider Write).
Администратор может изменить разрешения для определенных пользователей с помощью утилиты для настройки параметров WMI (оснастка wmimgmt.msc консоли управления MMC).
Для доступа к инфраструктуре WMI на удаленном компьютере используется коммуникационный протокол DCOM (Distributed COM). При этом пользователь, который запускает сценарий или подключается к WMI с помощью специальных утилит, выступает в качестве клиента, а объект WMI, к которому идет обращение, является сервером. Для того чтобы определить, какой маркер доступа будет применяться при работе с WMI на удаленном компьютере, используются стандартные уровни олицетворения протокола DCOM (DCOM Impersonation Levels), которые описаны в табл. 10.4.
Уровень | Описание |
---|---|
Анонимный доступ (Anonymous) | Объект-сервер не имеет права получить информацию о пользователе или процессе, который обращается к данному объекту (иными словами, объект не может олицетворить клиента). Этот уровень олицетворения в WMI не используется |
Идентификация (Identify) | Объект-сервер может запросить маркер доступа, связанный с клиентом, но не может произвести олицетворение. В сценариях WMI этот уровень олицетворения используется редко, т. к. в этом случае нельзя запускать сценарии WMI на удаленных машинах |
Олицетворение (Impersonate) | Объект-сервер может пользоваться всеми правами и привилегиями, которыми обладает клиент. В сценариях WMI рекомендуется использовать именно этот уровень олицетворения, при этом сценарий WMI на удаленной машине сможет выполнять все действия, которые разрешено осуществлять пользователю, запустившему этот сценарий |
Делегирование (Delegate) | Объект-сервер, к которому обращается клиент, может обратиться от имени клиента к другому объекту-серверу. Делегирование позволяет сценарию использовать на удаленной машине маркер доступа запустившего его пользователя, а также использовать этот маркер для доступа к объектам WMI на других рабочих станциях. Применение данного уровня олицетворения связано с потенциальным риском, поэтому делегирование в сценариях WMI следует применять только в случае особой необходимости |
Выбираемый по умолчанию уровень олицетворения зависит от версии WMI на целевом компьютере. В версиях WMI ниже 1.5 по умолчанию используется уровень Идентификация ( Identify ), в версии WMI 1.5 и выше — уровень Олицетворение (Impersonate). При необходимости можно изменить уровень олицетворения по умолчанию — для этого необходимо записать наименование нужного уровня (например, Impersonate или Delegate ) в следующий ключ реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Wbem\ Scripting\Default Impersonation Level
Протокол DCOM также предоставляет возможность запросить для соединения WMI определенный уровень аутентификации (проверки подлинности) и конфиденциальности (табл. 10.5).
Уровень | Описание |
---|---|
Отсутствует (None) | Проверка подлинности отсутствует |
По умолчанию (Default) | Для выбора уровня проверки подлинности используются стандартные настройки безопасности. Рекомендуется использовать именно этот уровень, т. к. здесь к клиенту будет применен уровень проверки подлинности, который задается сервером |
Подключений (Connect) | Клиент проходит проверку подлинности только во время подключения к серверу. После того как соединение установлено, никаких дополнительных проверок не производится |
Вызовов (Call) | Клиент проходит проверку подлинности в начале каждого вызова во время приема запросов сервером. При этом заголовки пакетов подписываются, однако сами данные (содержимое пакетов), передаваемые между клиентом и сервером, не подписываются и не шифруются |
Пакетов (Pkt) | Проверке подлинности подвергаются все пакеты данных, которые поступают серверу от клиентов. Так же, как и при проверке подлинности на уровне вызовов, заголовки пакетов подписываются, но не шифруются. Сами пакеты не подписываются и не шифруются |
Целостности пакетов (PktIntegrity) | Все пакеты данных проходят проверку подлинности и целостности, т. е. проверяется, что содержимое пакета не было изменено во время передачи от клиента серверу. При этом данные подписываются, но не шифруются |
Секретности пакетов (PktPrivacy) | Все пакеты данных проходят проверку подлинности и целостности, при этом данные подписываются и шифруются, что обеспечивает конфиденциальность передаваемых данных |
Отметим, что DCOM может и не установить запрашиваемый уровень проверки подлинности. Например, при локальной работе с WMI всегда используется уровень секретности пакетов (PktPrivacy). Нужные уровни олицетворения и проверки подлинности можно указать в явном виде в момент соединения с WMI (этот процесс описан в "Сценарии WSH для работы с объектной моделью WMI" ).