Развертывание файлов каталога для поддержки функции управления приложениями в Защитнике Windows

Примечание.

Некоторые возможности управления приложениями в Защитнике Windows доступны только в определенных версиях для Windows. Дополнительные сведения см. в разделе доступность функций управления приложениями Защитник Windows.

Файлы каталога могут иметь важное значение при развертывании Защитник Windows управления приложениями (WDAC), если у вас есть бизнес-приложения без знака, для которых процесс подписывания является трудным. Файлы каталога также можно использовать для добавления собственной подписи в приложения, которые вы получаете от независимых поставщиков программного обеспечения (ISV), если вы не хотите доверять всему коду, подписанному этим независимым поставщиком программного обеспечения. Таким образом, файлы каталога предоставляют удобный способ "благословить" приложения для использования в среде, управляемой WDAC. Кроме того, вы можете создавать файлы каталога для существующих приложений, не требуя доступа к исходному исходному коду или не требуя дорогостоящей переупаковки.

Необходимо получить сертификат подписи кода для собственного использования и использовать его для подписи файла каталога. Затем распространите подписанный файл каталога с помощью предпочтительного механизма развертывания содержимого.

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

Создание файлов каталога с помощью инспектора пакетов

Чтобы создать файл каталога для существующего приложения, можно использовать средство с именем Инспектор пакетов , которое поставляется вместе с Windows.

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

    Примечание.

    Вы не сможете завершить этот процесс, если он выполняется в системе с принудительной политикой, если только эта политика не разрешает запуск приложения.

    Этот пример PowerShell можно использовать для создания копии шаблона DefaultWindows_Audit.xml:

    Copy-Item -Path $env:windir\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Audit.xml -Destination $env:USERPROFILE\Desktop\
    $PolicyId = Set-CIPolicyIdInfo -FilePath $env:USERPROFILE\Desktop\DefaultWindows_Audit.xml -PolicyName "Package Inspector Audit Policy" -ResetPolicyID
    $PolicyBinary = $env:USERPROFILE+"\Desktop\"+$PolicyId.substring(11)+".cip"
    

    Затем примените политику, как описано в статье Развертывание Защитник Windows политик управления приложениями с помощью скрипта.

  2. Запустите инспектор пакетов, чтобы отслеживать создание файлов на локальном диске , где устанавливается приложение, например диск C:

    PackageInspector.exe Start C:
    

    Важно.

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

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

  4. Установите приложение.

  5. Запустите приложение, чтобы убедиться, что файлы, созданные при первоначальном запуске, включены в файл каталога.

  6. Используйте приложение, как обычно, чтобы файлы, созданные во время обычного использования, включались в файл каталога. Например, некоторые приложения могут загружать дополнительные файлы при первом использовании функции в приложении. Не забудьте также проверка обновлений приложений, если приложение имеет такую возможность.

  7. Закройте и снова откройте приложение, чтобы убедиться, что проверка захватила все двоичные файлы.

  8. При необходимости, когда инспектор пакетов по-прежнему запущен, повторите предыдущие шаги для всех других приложений, которые вы хотите включить в каталог.

  9. Убедись, что предыдущие шаги завершены, используйте следующие команды, чтобы остановить инспектор пакетов. Он создает файл каталога и файл определения каталога в указанном расположении. Используйте соглашение об именовании файлов каталога, чтобы упростить управление развернутыми файлами каталога с течением времени. В этом примере используются имена файлов LOBApp-Contoso.cat (файл каталога) и LOBApp.cdf (файл определения).

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

    $ExamplePath=$env:userprofile+"\Desktop"
    $CatFileName=$ExamplePath+"\LOBApp-Contoso.cat"
    $CatDefName=$ExamplePath+"\LOBApp.cdf"
    PackageInspector.exe Stop C: -Name $CatFileName -cdfpath $CatDefName
    

Примечание.

Инспектор пакетов каталогизирует хэш-значения для каждого обнаруженного файла. Если отсканированные приложения обновляются, снова завершите этот процесс, чтобы доверять значениям хэша новых двоичных файлов.

По завершении средство сохранит файлы на рабочем столе. Вы можете просмотреть *.cdf файл с помощью текстового редактора и узнать, какие файлы включены в инспектор пакетов. Вы также можете дважды щелкнуть файл, *.cat чтобы просмотреть его содержимое и проверка для определенного хэша файла.

Подпись файла каталога

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

Подписывание каталога с помощью SignTool.exe

Если вы приобрели сертификат подписи кода или выдали его из собственной инфраструктуры открытых ключей (PKI), вы можете использовать SignTool.exe для подписи файлов каталога.

Тебе нужно:

  • SignTool.exe, который находится в пакете sdk для Windows.
  • Файл каталога, созданный ранее.
  • Сертификат подписи кода, выданный внутренним центром сертификации (ЦС) или приобретенный сертификат подписи кода.

Для сертификата подписи кода, который используется для подписи файла каталога, импортируйте его в личное хранилище пользователя подписывания. Затем подпишите существующий файл каталога, скопировав каждую из следующих команд в сеанс с повышенными привилегиями Windows PowerShell.

  1. Инициализация используемых переменных. Замените $ExamplePath переменные и $CatFileName при необходимости:

     $ExamplePath=$env:userprofile+"\Desktop"
     $CatFileName=$ExamplePath+"\LOBApp-Contoso.cat"
    
  2. Подпишите файл каталога с помощью Signtool.exe:

     <path to signtool.exe> sign /n "ContosoSigningCert" /fd sha256 /v $CatFileName
    

    Примечание.

    Переменная <Path to signtool.exe> должна быть полным путем к служебной программе Signtool.exe. ContosoSigningCert представляет имя субъекта сертификата, используемого для подписи файла каталога. Этот сертификат необходимо импортировать в ваше личное хранилище сертификатов на компьютере, с помощью которого вы пытаетесь подписать файл каталога.

    Дополнительные сведения о Signtool.exe и всех дополнительных параметрах см. в разделе Средство подписи.

  3. Проверьте цифровую подпись файла каталога. Щелкните правой кнопкой мыши файл каталога и выберите Свойства. Убедитесь, что на вкладке Цифровые подписи отображается ваш сертификат с алгоритмом sha256, как показано на рисунке 1.

    Список цифровых подписей в свойствах файла.

    Рисунок 1. Убедитесь, что сертификат подписи существует.

Развертывание файла каталога в управляемых конечных точках

Файлы каталога в Windows хранятся в .%windir%\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}

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

Развертывание файлов каталога с помощью групповой политики

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

В следующем процессе описывается развертывание подписанного файла каталога с именем LOBApp-Contoso.cat в тестовом подразделении с поддержкой WDAC с помощью объекта групповой политики Contoso Catalog File GPO Test.

  1. На контроллере домена или на клиентском компьютере с установленными средствами удаленного администрирования сервера откройте консоль управления групповая политика, запустив GPMC.MSC или выполнив поиск по запросу управление групповая политика.

  2. Создайте новый объект групповой политики: щелкните правой кнопкой мыши подразделение, например подразделение WDAC с поддержкой пк, а затем выберите Создать объект групповой политики в этом домене и связать его здесь, как показано на рис. 2.

    Примечание.

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

    групповая политика Управление создайте объект групповой политики.

    Рисунок 2. Создайте новый объект групповой политики.

  3. Присвойте новому объекту групповой политики имя, например Contoso Catalog File GPO Test, или любое другое имя.

  4. Откройте Редактор управления групповая политика: щелкните правой кнопкой мыши новый объект групповой политики и выберите изменить.

  5. В выбранном объекте групповой политики перейдите в раздел Конфигурация компьютера\Настройки\Параметры Windows\Файлы. Щелкните правой кнопкой мыши файл, наведите указатель мыши на пункт Создать, а затем выберите Файл, как показано на рис. 3.

    групповая политика управление Редактор, Новый файл.

    Рисунок 3. Создайте новый файл.

  6. Настройте общую папку для файлов каталога.

    Чтобы с помощью этого параметра можно было обеспечить согласованное развертывание файла каталога (в этом примере — LOBApp-Contoso.cat), исходный файл должен находиться в общей папке, доступной с учетной записи каждого компьютера в развертывании. В этом примере используется общая папка на компьютере под управлением Windows 10 с именем \\Contoso-Win10\Share. Развертываемый файл каталога копируется в эту общую папку.

  7. Чтобы обеспечить согласованность версий, в диалоговом окне Новые свойства файла , как показано на рис. 4, выберите Заменить в списке Действий , чтобы всегда использовалась последняя версия.

    Свойства файла, параметр Заменить.

    Рисунок 4. Задайте новые свойства файла.

  8. В поле Исходные файлы введите имя общей папки со специальными возможностями, включив в него имя файла каталога. Например, \\Contoso-Win10\share\LOBApp-Contoso.cat.

  9. В поле Конечный файл введите путь и имя файла, например:

    C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\LOBApp-Contoso.cat

    В поле имя файла каталога используйте имя развертываемого каталога.

  10. На вкладке Общие диалогового окна Свойства нового файла выберите Удалить этот элемент, если он больше не применяется. Включение этого параметра гарантирует, что файл каталога будет удален из каждой системы на случай, если вам когда-либо потребуется перестать доверять этому приложению.

  11. Нажмите кнопку ОК , чтобы завершить создание файла.

  12. Закройте Редактор управления групповая политика, а затем обновите политику на тестовом компьютере с Windows 10 или Windows 11, запустив GPUpdate.exe. После обновления политики убедитесь, что файл каталога существует на C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} компьютере, на котором выполняется Windows 10.

Развертывание файлов каталога с помощью Microsoft Configuration Manager

В качестве альтернативы групповой политике можно использовать Configuration Manager для развертывания файлов каталога на управляемых компьютерах в вашей среде. Такой подход позволяет упростить развертывание и управление несколькими файлами каталога и предоставить отчеты о том, какой каталог был развернут каждым клиентом или коллекцией. Помимо развертывания этих файлов, Configuration Manager также можно использовать для инвентаризации развернутых в настоящее время файлов каталога для отчетности и соответствия требованиям.

Чтобы создать пакет для развертывания файлов каталога, выполните указанные ниже действия.

Примечание.

В следующем примере используется сетевая папка с именем \\Shares\CatalogShare в качестве источника для файлов каталога. Если у вас есть файлы каталога, относящиеся к коллекции, или вы предпочитаете развертывать их по отдельности, используйте любую структуру папок, которая лучше всего подходит для вашей организации.

  1. Откройте консоль Configuration Manager и выберите рабочее пространство библиотеки программного обеспечения.

  2. Перейдите в раздел Обзор\Управление приложениями, щелкните правой кнопкой мыши пункт Пакеты, а затем выберите Создать пакет.

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

    Мастер создания пакетов и программ.

    Рисунок 5. Укажите сведения о новом пакете.

  4. Нажмите кнопку Далее, а затем выберите Стандартная программа в качестве типа программы.

  5. На странице Стандартная программа выберите имя, а затем задайте для свойства Командной строки следующую команду:

    XCopy \\Shares\CatalogShare C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} /H /K /E /Y
    
  6. На странице Стандартная программа выберите следующие параметры, как показано на рис. 6:

    • в поле Имявведите имя, например Программа для копирования файлов каталога Contoso;
    • в области Командная строкаперейдите к расположению программы;
    • В папке Startup введите C:\Windows\System32.
    • в списке Запуск выберите пункт Скрытый;
    • в списке Требования для запуска выберите В любом случае;
    • в списке Режим диска выберите Работа с UNC-именем.

    Страница мастера

    Рисунок 6. Укажите сведения о стандартной программе.

  7. Примите значения по умолчанию, предложенные мастером, и закройте его.

После создания пакета развертывания разверните его в коллекции, чтобы клиенты получили файлы каталога. В этом примере вы развертываете созданный пакет в тестовой коллекции:

  1. В рабочей области Библиотека программного обеспечения перейдите в раздел Обзор\Управление приложениями\Пакеты, щелкните правой кнопкой мыши пакет файла каталога и выберите развернуть.

  2. На странице Общие выберите тестовую коллекцию и нажмите кнопку Далее.

  3. На странице Содержимое нажмите кнопку Добавить , чтобы выбрать точку распространения для передачи содержимого в выбранную коллекцию, а затем нажмите кнопку Далее.

  4. На странице Параметры развертывания в окне Цель выберите Обязательно.

  5. На странице Планирование выберите Создать.

  6. В диалоговом окне Расписание назначения выберите Назначить сразу после этого события, задайте для параметра значение Как можно скорее, а затем нажмите кнопку ОК.

  7. На странице Планирование нажмите кнопку Далее.

  8. На странице Взаимодействие с пользователем , как показано на рисунке 7, задайте следующие параметры и нажмите кнопку Далее:

    • установите флажок Установка программного обеспечения ;

    • установите флажок Применить изменения при наступлении крайнего срока или во время периода обслуживания (требуется перезагрузка).

    Мастер развертывания программного обеспечения, страница взаимодействия с пользователем.

    Рисунок 7. Укажите пользовательский интерфейс.

  9. На странице Точки распространения в поле Параметры развертывания выберите Запуск программы из точки распространения, а затем нажмите кнопку Далее.

  10. На странице Сводка просмотрите выбранные параметры и нажмите кнопку Далее.

  11. Закройте мастер.

Файлы каталога инвентаризации с Microsoft Configuration Manager

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

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

Примечание.

Стандартное соглашение об именовании файлов каталога значительно упростит процесс инвентаризации программного обеспечения каталога. В этом примере ко всем именам файлов каталога добавлено -Contoso.

  1. Откройте консоль Configuration Manager и выберите рабочую область "Администрирование".

  2. Перейдите в раздел Обзор\Параметры клиента, щелкните правой кнопкой мыши Параметры клиента и выберите Создать пользовательские параметры клиентского устройства.

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

    Создайте настраиваемые параметры клиентского устройства.

    Рисунок 8. Выберите настраиваемые параметры.

  4. В области навигации выберите Инвентаризация программного обеспечения, а затем — Задать типы, как показано на рисунке 9.

    Параметры инвентаризации программного обеспечения для устройств.

    Рисунок 9. Настройте инвентаризацию программного обеспечения.

  5. В диалоговом окне Настройка параметра клиента нажмите кнопку Пуск , чтобы открыть диалоговое окно Свойства файла инвентаризации .

  6. В поле Имя введите имя, например *Contoso.cat, и нажмите кнопку Задать.

    Примечание.

    При вводе имени следуйте соглашению об именовании файлов каталога.

  7. В диалоговом окне Свойства пути выберите Переменная или имя пути, а затем введите C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} в поле, как показано на рисунке 10.

    Свойства пути, указывающие путь.

    Рисунок 10. Задайте свойства пути.

  8. Нажмите ОК.

  9. Теперь, когда вы создали политику параметров клиента, щелкните правой кнопкой мыши новую политику, выберите Развернуть, а затем выберите коллекцию, в которой вы хотите выполнить инвентаризацию файлов каталога.

Во время следующего цикла инвентаризации программного обеспечения, когда целевые клиенты получат новую политику параметров клиента, вы сможете просматривать инвентарные файлы во встроенных отчетах Configuration Manager или Обозреватель ресурсов. Для просмотра инвентаризованных файлов на клиентском компьютере в обозревателе ресурсов необходимо выполнить указанные ниже действия.

  1. Откройте консоль Configuration Manager и выберите рабочее пространство "Активы и соответствие".

  2. Перейдите в раздел Обзор\Устройства и найдите устройство, на котором вы хотите просмотреть инвентарные файлы.

  3. Щелкните компьютер правой кнопкой мыши, наведите указатель мыши на пункт Пуск и выберите пункт Ресурс Обозреватель.

  4. В Обозреватель ресурсов перейдите в раздел Программное обеспечение\Сведения о файлах, чтобы просмотреть инвентарные файлы каталога.

Примечание.

Если в этом представлении ничего не отображается, перейдите к разделу Software\Last Software Scan in Resource Обозреватель, чтобы убедиться, что клиент недавно завершил проверку инвентаризации программного обеспечения.

Разрешить приложениям, подписанным сертификатом подписи каталога, в политике WDAC

Теперь, когда у вас есть подписанный файл каталога, в политику можно добавить правило подписывания, которое разрешает все, что подписано с помощью этого сертификата. Если вы еще не создали политику WDAC, см. руководство по проектированию Защитник Windows управления приложениями.

На компьютере, где развернут подписанный файл каталога, можно использовать New-CiPolicyRule для создания правила подписи из любого файла, включенного в этот каталог. Затем используйте Merge-CiPolicy , чтобы добавить правило в XML-код политики. Обязательно замените значения пути в следующем примере:

$Rules = New-CIPolicyRule -DriverFilePath <path to the file covered by the signed catalog> -Level Publisher
Merge-CIPolicy -OutputFilePath <path to your policy XML> -PolicyPaths <path to your policy XML> -Rules $Rules

Кроме того, можно использовать Add-SignerRule , чтобы добавить правило подписыватель в политику из файла сертификата (.cer). Вы можете легко сохранить файл .cer из подписанного файла каталога.

  1. Щелкните правой кнопкой мыши файл каталога и выберите Свойства.
  2. На вкладке Цифровые подписи выберите подпись из списка и выберите Сведения.
  3. Выберите Просмотреть сертификат , чтобы просмотреть свойства конечного сертификата.
  4. Перейдите на вкладку Сведения и выберите Копировать в файл. Это действие запускает мастер экспорта сертификатов.
  5. Завершите работу мастера, используя параметр по умолчанию экспорт формата файла и указав расположение и имя файла для сохранения .cer файла.

Примечание.

Эти действия выбирают самый низкий уровень цепочки сертификатов, также называемый "конечным" сертификатом. Вместо этого можно использовать промежуточный или корневой сертификат издателя сертификата. Чтобы использовать другой сертификат в цепочке, перейдите на вкладку Путь сертификации после шага 3 выше, а затем выберите нужный уровень сертификата и выберите Просмотреть сертификат. Затем выполните оставшиеся действия.

В следующем примере файл .cer используется для добавления правила подписи в сценарии подписывания пользователя и режима ядра. Обязательно замените значения пути в следующем примере:

Add-SignerRule -FilePath <path to your policy XML> -CertificatePath <path to your certificate .cer file> -User -Kernel

Известные проблемы с использованием инспектора пакетов

Ниже приведены некоторые известные проблемы с использованием инспектора пакетов для создания файла каталога.

  • Размер журнала USN слишком мал для отслеживания всех файлов, созданных установщиком

    • Чтобы определить, является ли размер журнала USN, после выполнения через инспектор пакетов, выполните следующие действия:
      • Получите значение ключа reg в HKEY_CURRENT_USER/PackageInspectorRegistryKey/c: (это имя USN было последним при запуске PackageInspector start). Затем используйте fsutil.exe для чтения этого начального расположения. Замените regKeyValue в следующей команде значением из ключа reg:
        fsutil usn readjournal C: startusn=RegKeyValue > inspectedusn.txt
      • Приведенная выше команда должна возвращать ошибку, если старые usN больше не существуют из-за переполнения.
      • Вы можете развернуть usn Журнал размер с помощью: fsutil usn createjournal с новым размером и разностным распределением. Fsutil usn queryjournal показывает текущий размер и разницу выделения, поэтому использование кратного значения может помочь.
  • CodeIntegrity — журнал операционных событий слишком мал для отслеживания всех файлов, созданных установщиком

    • Чтобы определить, связана ли проблема с размером журнала событий, после выполнения через инспектор пакетов:
      • Откройте Просмотр событий и разверните приложение и службы//Microsoft//Windows//CodeIntegrity//Operational. Проверьте наличие события блока аудита 3076 для первоначального запуска установщика.
      • Чтобы увеличить размер журнала событий, в Просмотр событий щелкните журнал правой кнопкой мыши, выберите Свойства, а затем задайте новые значения.
  • Файлы установщика или приложения, которые изменяют хэш при каждом установке или запуске приложения

    • Некоторые приложения создают файлы во время выполнения, хэш-значение которых каждый раз отличается. Эту проблему можно диагностировать, просмотрев хэш-значения в созданных событиях блока аудита 3076 (или 3077 событий принудительного применения). Если при каждой попытке запуска файла вы видите новое событие блока с другим хэшом, пакет не работает с инспектором пакетов.
  • Файлы с недопустимым BLOB-объектом сигнатуры или иным образом "unhashable" файлы

    • Эта проблема возникает, когда подписанный файл был изменен таким образом, что делает недействительным заголовок PE файла. Файл, измененный таким образом, не может быть хэширован в соответствии со спецификацией Authenticode.
    • Хотя эти "нехашируемые" файлы не могут быть включены в файл каталога, созданный PackageInspector, вы должны иметь возможность разрешить их, добавив правило hash ALLOW в политику, которая использует хэш неструктурированного файла.
    • Эта проблема затрагивает некоторые версии пакетов InstallShield, которые используют подписанные DLL-файлы в пользовательских действиях. InstallShield добавляет маркеры отслеживания в файл (редактирование его после подписи), в результате чего файл остается в состоянии unhashable.