Device Guard Windows 10. Політика цілісності коду

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



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

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



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

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



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

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

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

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

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

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

Зауважу, Device Guard з механізмами Integrity Code і Virtualization Based Security (VBS) доступний тільки в редакції Windows 10 Enterprise.

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

#Create a ShadowCopy to avoid locks
$s1 = (gwmi -List Win32_ShadowCopy).Create("C:\","ClientAccessible")
$s2 = gwmi Win32_ShadowCopy | ? { $_.ID -eq $s1.ShadowID }
$d = $s2.DeviceObject + "\"
cmd /c mklink /d C:\scpy "$d"

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

New-CIPolicy -Level PcaCertificate -Fallback Hash -FilePath C:\BasePolicy.xml -ScanPath C:\scpy -UserPEs


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

<Rule><Option>Enabled:Audit Mode</Option></Rule>

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

<Signer Name="Microsoft Code Signing PCA" ID="ID_SIGNER_S_231"><CertRoot Value=" 4E80BE107C860DE896384B3EFF50504DC2D76AC7151DF3102A4450637A032146" Type="TBS"/></Signer>

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

<Allow Hash=" 88A87238099A3B4BB392C82589CA099DC70629D6EA32CF79F9071011C5994CA2" FriendlyName="\\?\GLOBALROOT\Device\HarddiskVolume4\Distr\npp.6.8.3.Installer.exe Hash Page Sha256" ID="ID_ALLOW_A_8_1"/>

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

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

ConvertFrom-CIPolicy C:\BasePolicy.xml C:\SIPolicy.bin 
cp C:\SIPolicy.bin c:\Windows\System32\CodeIntegrity\SIPolicy.p7b 

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

New-CIPolicy -Level PcaCertificate -Fallback Hash C:\AuditPolicy.xml -Audit

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

Merge-CIPolicy –OutputFilePath C:\Final.xml –PolicyPaths C:\ BasePolicy.xml,C:\AuditPolicy.xml

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

Set-RuleOption -Option 3 -FilePath C:\Final.xml -Delete

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

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

ConvertFrom-CIPolicy C:\Final.xml C:\SIPolicy.bin

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



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

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

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

.\PackageInspector.exe start C: -path c:\Distr\7z1508-x64.exe


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

.\PackageInspector.exe stop c: -name C:\Distr\7zip.cat -cdfpath c:\Distr\7zip.cdf


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

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

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

Get-ChildItem cert:\CurrentUser\My -codesign
Set-AuthenticodeSignature -HashAlgorithm SHA256 7zip-osnova.cat @(Get-ChildItem cert:\CurrentUser\My -codesign)[0] 

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

Далі потрібно помістити згенерований і підписаний файл каталогу на потрібні комп'ютери, скопіювавши в сховище каталогів по шляху
C:\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}

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

Більш детальна документація знаходиться на порталі TechNet:
https://technet.microsoft.com/ru-ru/library/mt463091(v=vs.85).aspx

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.