Device Guard у Windows 10

Device Guard – набір програмно-апаратних технологій захисту, доступний для пристроїв з Windows 10. Стаття присвячена однією з компонентів Device Guard – політики Code Integrity (CI). З деталями налаштування та застосування CI можна познайомитись тут.

Призначення Device Guard

У сучасному світі кіберзагрози розвиваються дуже швидко. Технології захисту вже не встигають за розвитком шкідливих програм, як за їх кількістю, так і спектром атак, що розширюється.

Віруси із гри для одинаків переросли в організовану кіберзлочинність. Автоматизація та низька вартість складних атак не залишає шансу навіть невеликим компаніям залишатися непоміченими.

guard

Класичне рішення ґрунтується на трьох основних умовах: встановлені оновлення, оновлений антивірус та відсутність адміністративних привілеїв. Це вже давно сформований підхід. Однак, цілком легальна з погляду антивірусу програма може виконувати небажані дії і не використовувати уразливості ПЗ. Такий погляд на безпеку ставить під підозру будь-яку програму. Вже не можна покладатися на список сигнатур антивірусу, а аналізувати всі програми досить важко.

Нові загрози вимагають нових рішень безпеки, і Windows 10 вони вже є. Одне з рішень – запускати лише схвалене програмне забезпечення. Такий підхід успішно випробуваний на мобільних платформах Windows та Apple. Вони абсолютно все ПО проходить перевірку і має цифровий підпис, виходячи з якої пристрій дозволяє його запуск. У Windows ця функція забезпечує механізм перевірки цілісності коду – Code Integrity (CI).

Windows

Вже на стадії запуску комп'ютера можна контролювати запускпрограмне забезпечення, підписане довіреними сертифікатами. Далі, маючи список свого програмного забезпечення, можна заборонити запуск чогось іншого, і завдання безпеки вирішене. Список довірених сертифікатів, які використовуються для підпису виконуваних файлів, є файл-політикою, яким і керується операційна система.

Але світ ПЗ на Windows дуже різноманітний, і далеко не всі програми мають цифрові підписи, а багато хто не отримає їх ніколи. Для цього механізм Code Integrity може використовувати підписані сертифікатом каталоги – списки файлів програми та їх хеш-коди.

У результаті, для використання нового механізму потрібно створити політику, що містить список довірених сертифікатів і хеш-коди не підписаних файлів і, при необхідності, доповнити її файлами-каталогами дозволеного програмного забезпечення.

Найпростішим використання Device Guard буде для нових або вже наявних робочих місць з фіксованим списком ПЗ. Достатньо сформувати політику цілісності коду та активувати функціонал, після чого ніщо стороннє не зможе запуститися на цих комп'ютерах.

Існує також можливість створення політик на основі кількох можливих варіантів робочих місць та злиття їх у єдину політику, яку призначають у подальшому всім робочим місцям.

Для просунутих користувачів, які самі вибирають та встановлюють програми, достатньо режиму аудиту. Журнал програм, що запускаються, стане в нагоді для визначення потрібних і непотрібних програм.

Налаштування політики Code Integrity

Налаштування Device Guard в режимі користувача (User Mode Code Integrity) найбільш близьке до звичайних завдань обмеження запуску програмного забезпечення.

Для того, щоб створити політикуCode Integrity на еталонному комп'ютері, потрібно створити тіньову копію диска та запустити командлет сканування файлів. У цьому випадку тіньова копія дозволяє отримати процесу сканування доступ до всіх, зокрема відкритих на момент сканування, файлів.

Отриманий знімок диска, підмонтований у папкуC:\scpy, можна просканувати наступним командлетом:

Ця команда створить список підписів (сертифікатів), виявлених на еталонному комп'ютері, і вважатиме хеш-коди виконуваних файлів, які мають підпису. Результатом буде XML-файл, що містить наступні параметри:

Опція, що включає роботу модуля Code Integrity в режимі аудиту, при якому всі файли, що не підпадають під сформовану політику, записуються в журнал аудиту.

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

Приклад виявленого файлу без цифрового підпису. При збігу хеш-коду цей файл буде запущений.

Отриманий XML-файл необхідно скомпілювати в бінарний формат і помістити в системну папкуC:\Windows\System32\CodeIntegrity\.

Після перезавантаження комп'ютера Code Integrity почне роботу в режимі аудиту. Перевіривши запуск та роботу всіх необхідних програм, можна доповнити політику даними, зібраними аудитом, виконавши таку команду.

Ключ -Audit вказує, що необхідно створити політику на основі записів у журналі аудиту.

ФайлAuditPolicy.xml аналогічний структурі файлуBasePolicy.xml, сформованому раніше.

Для об'єднання результатів первинного сканування та зібраної у режимі аудиту інформації існує команда об'єднання політик.

Щоб увімкнути примусове застосування політики, в отриманому файлівідключаємо режим аудиту.

В результаті видаляється запис Enabled: Audit Mode з XML-файлу, і така політика блокуватиме все невраховане в ньому програмне забезпечення.

Далі компілюємо XML-файл у бінарний формат, знову виконавши команду

Поширити політику на цільові комп'ютери можна як скопіювавши зручним способом файл SIPolicy.bin, так і скориставшись груповою політикою Windows 10 у розділіComputer Configuration\Administrative Templates\System\Device Guard.

guard

Створення файлу-каталогу

Політика Code Integrity є монолітним списком дозволеного програмного забезпечення, що не завжди зручно. Для використання нових або оновлених програм, якщо їх не вдається завірити електронним підписом, можна створити файл-каталог.

Для прикладу візьмемо програму7zip, для якої створимо файл каталогу, що містить як дані про дистрибутив, так і про всі файли, що виконуються після установки дистрибутива.

Для цього на станції без активного Device Guard запустимо утиліту моніторингуPackageInspector (входить до складу Windows 10 Enterprise), вказавши в якості параметрів букву диска для спостереження та файл дистрибутива програми, що запускається.

Після закінчення установки 7zip перевіряємо його запуск та роботу та зупиняємо моніторинг командою.

Файл7zip.cdf покаже всі виконувані файли, що зазнали моніторингу. Файл7zip.cat містить скомпільовану інформацію для Device Guard.

Щоб створений файл каталогу став довіреним для Device Guard, підпишемо його своїм цифровим підписом.

Якщо у адміністратора вже є імпортований сертифікат із призначенням Code Sign, його можна використовувати для підпису прямо з PowerShell, вказавши алгоритм хешування SHA256, необхіднийдля Device Guard.

Сертифікат має бути виданий довіреним центром сертифікації, кореневий сертифікат якого було імпортовано на еталонний комп'ютер перед створенням політики.

Далі потрібно помістити згенерований і підписаний файл каталогу на потрібні комп'ютери, скопіювавши в сховище каталогів поC:\Windows\System32\CatRoot\

На відміну від політики, файли каталогів використовуються відразу і без перезавантаження. Тепер установка та робота 7zip на комп'ютері дозволена.

Автор статті: Андрій Каптелін