Обеспечение запуска приложений на устройствах с защитой Device Guard

В Windows 10 реализован ряд новых функций и параметров, сочетание которых называется Device Guard. Device Guard помогает защитить корпоративные устройства от случайного запуска вредоносных приложений. Это возможно благодаря обязательному подписыванию всех приложений доверенным объектом.

Чтобы использовать Device Guard в организации, у вас должна быть возможность запустить существующие бизнес-приложения и приложения, разработанные независимым поставщиком программного обеспечения, на защищенном устройстве. К сожалению, многие бизнес-приложения не подписаны, а во многих случаях даже не находятся в активной разработке. Возможно, вам также нужно запустить программное обеспечение без подписи от независимого поставщика или некоторые приложения такого поставщика, хотя вы не доверяете всем его приложениям. В Device Guard операционной системы Windows 10 входит новое средство Package Inspector. Package Inspector сканирует неподписанные приложения и создает файлы каталога установленных и работающих двоичных файлов, которые затем могут быть подписаны служебной программой Sign Tool Windows SDK и распространены с помощью групповой политики, так что ваши приложения будут работать на устройствах с защитой Device Guard.

Что требуется для запуска приложений на устройствах с защитой Device-Guard?

До получения приложений для запуска на устройствах с защитой Device Guard необходимо:

  • иметь устройство под управлением Windows 10 Корпоративная, Windows 10 Education или Windows Server 2016 Technical Preview;

  • определить, какие неподписанные приложения необходимо включить в файл каталога;

  • создать политику целостности кода для использования Device Guard;

  • иметь сертификат подписи кода, созданный с помощью внутренней инфраструктуры открытых ключей (PKI);

  • иметь SignTool. Средство, запускаемое из командной строки, которое снабжает файлы цифровой подписью, проверяет подписи в файлах и устанавливает в файлах метки времени. Средство устанавливается в папку \Bin пути установки пакета средств разработки программного обеспечения для Windows (SDK).

Создание файла каталога для неподписанных приложений

Необходимо запустить Package Inspector на устройстве c временной политикой целостности кода в режиме аудита, созданном явно для этой цели. Режим аудита позволяет этой политике перехватывать все двоичные файлы, пропущенные средством проверки, и продолжать работу всем приложениям.

Важно  Эту временную политику не следует использовать в обычных коммерческих целях.

 

Mt158214.wedge(ru-ru,VS.85).gifДля создания файла каталога существующего приложения сделайте следующее.

  1. Запустите Windows PowerShell от имени администратора и создайте файл временной политики, введя следующее:

    mkdir temp
    New-CIPolicy -l FileName -f .\tempdeny.xml -s .\temp -u
    ConvertFrom-CIPolicy .\tempdeny.xml .\tempdeny.bin
    cp .\tempdeny.bin C:\Windows\System32\CodeIntegrity\SIPolicy.p7b
    
  2. Перезагрузите устройство.

  3. Запустите PowerShell от имени администратора и начните сканирование файловой системы, введя следующее:

    PackageInspector.exe start c:
    

    Где:

    Параметр Описание

    start <drive_letter>:

    Определяет начало сканирования. Например, начать сканирование с диска C:\.

    -path

    Путь к файлу в проверяемом пакете.

     

  4. Скопируйте установочный носитель приложения на диск C:\, а затем установите и запустите программу.

    Копирование носителя на локальный диск позволяет убедиться, что программа установки и ее соответствующие файлы включены в файл каталога. Если файлы установки потеряны, политика целостности кода может доверить выполнить запуск приложения, но не его установку. После установки приложения необходимо проверить наличие обновлений. При выполнении обновления открытого приложения необходимо закрыть и перезапустить приложение, чтобы обеспечить обработку всех объектов в процессе проверки.

    Примечание  

    Поскольку Package Inspector создает запись журнала в каталоге для каждого типа двоичного файла в файловой системе, рекомендуется не запускать другие установки или обновления во время процесса сканирования.

     

  5. Дополнительно: при необходимости создания каталога с несколькими приложениями (несколько приложений, включенных в один файл каталога) выполните шаги 2–3 для каждого дополнительного приложения. После добавления всех необходимых приложений перейдите к шагу 5.

    Примечание  Для упрощения процесса рекомендуется следующий подход:

    • Активно поддерживаемые и обновленные приложения. Создайте один файл каталога для каждого приложения.

    • Приложения прежних версий, неактивные или необновленные. Создайте один файл каталога для всех приложений прежних версий.

     

  6. Остановите процесс сканирования и создайте файлы .\InspectedPackage.cat и InspectedPackage.cdf в одном приложении в указанном расположении, введя следующее:

    PackageInspector.exe stop c:
    

Вы также можете воспользоваться командой scan вместо start и stop, чтобы создать каталог файлов, которые уже есть на жестком диске. Команда scan рекурсивно сканирует указанную папку и включает все файлы, требующие подписи, в этот каталог. Чтобы просканировать указанную папку, введите следующую команду:

PackageInspector.exe scan c:\<insert directory path>

В таблице ниже приведены параметры, доступные для команд scan и stop.

Параметр Описание

stop <drive_letter>:

Указывает, что сканирование указанного расположения завершено, создается каталог или файл определения. Например, C:.

scan <path to scan>

Определяет путь к папке для сканирования. Эта команда рекурсивно сканирует указанную папку и включает все файлы, требующие подписи, в этот каталог.

-out

Определяет тип данных, который нужно создать с помощью этого средства. Вы можете использовать CAT для файла каталога, CDF для файла определения каталога или list для списка файлов с разделителями.

-listpath

Указывает расположение, в которое установщик будет выводить список файлов для -out list.

-cdfPath <file_name>

Указывает, где средство должно разместить созданный файл .cdf. Если используется этот параметр, необходимо также указать имя файла.

Рекомендуется использовать полный путь к файлу. При этом поддерживаются относительные пути.

-resdir

Этот параметр в данный момент не поддерживается.

-name

Этот параметр в данный момент не поддерживается.

-ph [true|false]

Определяет, включать ли хэши страниц в каталог. Можно использовать True для добавления хэшей или False, чтобы не добавлять хэши.

-en

Определяет тип кодировки каталога. По умолчанию — PKCS_7_ASN_ENCODING | X509_ASN_ENCODING, 0x00010001.

-ca1

Определяет CATATTR1 в файлах каталога и определениях каталога.

-ca2

Определяет CATATTR2 в файлах каталога и определениях каталога.

 

Можно добавить дополнительные параметры в каталог, кроме представленных здесь. Дополнительные сведения см. в разделе MakeCat.

Подписание файла каталога с помощью Sign Tool

Вы можете подписать файл каталога с помощью средства Sign Tool, входящего в состав пакета средств разработки программного обеспечения для Windows (Windows 7 или более поздней версии), либо с помощью портала для подписывания Device Guard. Дополнительные сведения об использовании портала для подписывания Device Guard см. в статье Подписывание Device Guard.

Эта процедура показывает, как использовать защищенный паролем файл обмена личной информацией (PFX), чтобы подписать файл каталога.

Важно  Для использования этого средства необходим внутренний сертификат подписи кода ЦС или сертификат подписи кода, выданный внешним центром сертификации стороннего разработчика.

 

Mt158214.wedge(ru-ru,VS.85).gifДля использования Sign Tool сделайте следующее.

  1. Убедитесь, что сертификаты подписи кода импортированы в хранилище сертификатов или находятся в файловой системе.

  2. Откройте SignTool.exe и подпишите файл каталога в зависимости от места хранения сертификата.

    Если вы используете PFX из расположения файловой системы:

    signtool sign /f <\\SignCertLocation> /p <\\password> /fd sha256 /v
    

    При наличии импортированного сертификата в хранилище сертификатов:

    signtool sign /n <\\CertSubjectName> /fd sha256 /v <CatalogNameAndLocation>
    

    Где:

    Параметр Описание

    signtool

    Указывает расположение полного пути к SignTool.exe.

    sign

    Файлы с цифровой подписью. Список параметров, поддерживаемых командой входа, см. в разделе Параметры SignTool.

    /n SubjectName

    Указывает имя субъекта сертификата подписи. Это значение может быть подстрокой всего имени субъекта.

    /f SignCertFileLocation

    Определяет сертификат подписи в файле.

    Если файла находится в формате PFX и защищен паролем, используйте параметр /p, чтобы указать пароль. Если файл не содержит закрытые ключи, используйте параметры /csp и /k, чтобы указать название контейнера .csp и закрытых ключей.

    /p Password

    Задает пароль для использования при открытии PFX-файла. (Используйте параметр /f, чтобы указать PFX-файл.)

    /fd Algorithm

    Определяет дайджест-алгоритм файла для создания подписей файла. Значение по умолчанию — SHA2.

    /v

    Отображает подробный вывод независимо от успешности выполнения команды, а также предупреждающие сообщения.

     

    Дополнительные сведения и примеры с использованием доступных параметров см. в разделе SignTool.exe (средство подписи).

  3. В проводнике щелкните правой кнопкой мыши файл каталога, выберите Свойства, а затем перейдите на вкладку Цифровые подписи, чтобы убедиться в точности цифровой подписи файла каталога.

  4. Скопируйте файл каталога в C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} и проверьте файл.

    Примечание  В целях тестирования можно вручную скопировать файл в указанное местоположение. Однако рекомендуется использовать групповую политику для копирования файла каталога на все устройства при широкомасштабной реализации.

     

Поиск и устранение неисправностей Package Inspector

Если при остановке Package Inspector отображается "Ошибка 1181", необходимо увеличить размер журнала USN, а затем очистить все кэшированные данные перед повторным сканированием затронутых приложений.

Необходимо убедиться в очистке кэша путем создания и установки новой временной политики. Если вы повторно используете эту же политику, Package Inspector даст сбой.

Mt158214.wedge(ru-ru,VS.85).gifДля увеличения размера журнала сделайте следующее.

  1. Откройте окно командной строки и введите следующее:

    fsutil usn createjournal m=0x8000000 a=0x800000 C:
    

    Где значение "m" подлежит увеличению. Рекомендуется изменить значение по крайней мере до 4-кратного от значения по умолчанию m=0x2000000.

  2. Заново запустите неудавшийся процесс установки приложения.

Mt158214.wedge(ru-ru,VS.85).gifДля удаления кэшированных данных и выполнения повторного сканирования приложений сделайте следующее.

  1. Удалите файл SIPolicy.p7b из папки C:\Windows\System32\CodeIntegrity\.

  2. Создайте новую временную политику целостности кода, чтобы удалить все кэшированные данные, запустив Windows PowerShell от имени администратора и введя:

    mkdir temp
    cp C:\Windows\System32\PackageInspector.exe .\temp\
    New-CIPolicy -l Hash -f .\DenyPackageInspector.xml -s .\temp -u -deny
    ConvertFrom-CIPolicy .\DenyPackageInspector.xml .\DenyPackageInspector.bin
    cp .\DenyPackageInspector.bin C:\Windows\System32\SIPolicy.p7b
    
  3. Перезапустите свое устройство и следуйте инструкциям в разделе Создание файла каталога для неподписанных приложений.

Связанные разделы

Загрузить SignTool