В операційних системах Windows існують спеціальні групові політики, які допомагають адміністраторам та фахівцям з кібербезпеки контролювати доступ до операційних систем та захищати їх від несанкціонованих дій. Дуже часто саме знімні носії, зокрема USB-накопичувачі (USB Mass Storage), стають причиною проникнення шкідливого програмного забезпечення і зараження комп’ютеризованих систем. У цій статті детально розглянемо процес автоматизації блокування знімних пристроїв на рівні вбудованих інструментів Windows, із застосуванням командного рядка та спеціального програмного забезпечення.
Блокування нових знімних пристроїв
Ці політики заблокують в операційній системі автоматичне встановлення / оновлення будь-яких нових знімних пристроїв, включаючи USB. Порти фізично працюватимуть, але носії на них не будуть встановлюватися системою й позначатимуться як заборонені до використання, згідно групових політик безпеки.
Пристрої, які були встановлені і зареєстровані в системі раніше – продовжуватимуть працювати. Це добре, коли необхідно зорганізувати гнучкий контроль доступу до зовнішніх накопичувачів.
Отже, відкриваємо редактор групових політик:
gpedit.msc
Переходимо в розділ Computer Configuration -> Administrative Templates -> System -> Device Installation -> Device Installation Restrictions. Тут відобразиться ряд політик, серед яких для нас основними є:
- “Prevent installation of removable devices” – політика блокує всі пристрої, які драйвер шини позначає як знімні. Це переважно USB, а також FireWire, ExpressCard, PCMCIA, частина картрідерів і док-станцій.
- “Prevent installation of devices not described by other policy settings” – політика дещо ширша в плані безпеки, бо забороняє встановлення взагалі будь-якого нового обладнання, наприклад:
- новий монітор, принтер, веб-камера, Bluetooth-гарнітура, док-станція тощо;
- віртуальні адаптери, які створюють VPN-клієнти (TAP/Wintun), Hyper-V, VirtualBox, VMware;
- оновлення драйверів для вже встановлених пристроїв, зокрема через Windows Update;
- USB-пристрій без серійного номера, підключений в інший порт. Для системи це новий екземпляр пристрою. Пристрій з коректним унікальним серійним номером має той самий Instance ID у будь-якому порту. Після того як його один раз встановили (до ввімкнення політики), він працюватиме в усіх портах.

Для того, щоб увімкнути політики необхідно подвійним клацанням миші перейти в них й у новому вікні відзначити опцію Enabled, після чого натиснути Apply і ОК:

Решта політик розділу:
- “Allow administrators to override Device Installation Restriction policies” – дозволяє членам групи Administrators встановлювати й оновлювати драйвери в обхід обмежень. Працює тільки при ручному встановленні через майстри Add Hardware та Update Driver. Автоматичне встановлення при підключенні пристрою все одно блокується. Якщо увімкнена політика Apply layered order…, ця політика ігнорується.
- “Apply layered order of evaluation for Allow and Prevent device installation policies across all device match criteria” – без даної політики Prevent завжди перемагає Allow. З нею діє ієрархія від конкретнішого до загальнішого:
Device instance ID → Device ID → Device setup class → Removable devices. Allow на конкретнішому рівні перекриває Prevent на загальнішому. Наприклад, можна заборонити клас дисків, але дозволити одну конкретну флешку за instance ID. Без цієї політики такий білий список не працює. - “Allow installation of devices using drivers that match these device setup classes” – білий список класів пристроїв за GUID. Має сенс разом з DenyUnspecified: усе заборонено, крім вказаних класів.
- “Prevent installation of devices using drivers that match these device setup classes” – чорний список класів за GUID. Має опцію Also apply to matching devices that are already installed: вона видаляє вже встановлені пристрої цього класу, тобто діє ретроактивно.
- “Display a custom message when installation is prevented by a policy setting” – текст сповіщення, яке бачить користувач, коли встановлення заблоковано. Наприклад: «Підключення сторонніх пристроїв заборонено. Зверніться до адміністратора».
- “Display a custom message title when device installation is prevented by a policy setting” – заголовок цього сповіщення.
- “Allow installation of devices that match any of these device IDs” – білий список за Hardware ID або Compatible ID, наприклад USB\VID_046D&PID_C52B. Під правило потрапляє вся модель пристрою, тобто будь-який екземпляр цього виробника й моделі.
- “Prevent installation of devices that match any of these device IDs” – чорний список за Hardware ID або Compatible ID. Також має ретроактивну опцію Also apply to matching devices that are already installed.
- “Allow installation of devices that match any of these device instance IDs” – білий список конкретних фізичних пристроїв. Instance ID зазвичай включає серійний номер, наприклад USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER&REV_PMAP\0019E06B07F7EF6…&0. Це найточніший рівень: можна дозволити, скажімо, тільки службові флешки.
- “Prevent installation of devices that match any of these device instance IDs” – заборона конкретних екземплярів пристроїв, з ретроактивною опцією.
- “Time (in seconds) to force reboot when required for policy changes to take effect” – через скільки секунд система примусово перезавантажиться, якщо ретроактивне видалення пристроїв потребує перезавантаження. Якщо політика не задана, примусового перезавантаження не буде.

Підказка: Дізнатися класи і ідентифікатори пристроїв в системі можна командами:
Get-PnpDevice -PresentOnly | Select-Object FriendlyName, Class, ClassGuid, InstanceIdpnputil /enum-devices /idspnputil /enum-devices /class USB
Тепер необхідно примусово оновити задані політики, щоб вони вступили в дію негайно:
gpupdate /force

Якщо переглянути статус заблокованого USB-пристрою в Device Manager (devmgmt.msc), то він буде показаний зі знаком оклику, а в його властивостях з’явиться повідомлення: “…The installation of this device is forbidden by system policy. Contact your system administrator”.
Блокування усіх USB-пристроїв
В менеджері локальних групових політик, у розділі Computer Configuration -> Administrative Templates -> System -> Device Installation -> Removable Storage Access існує політика під назвою “All Removable Storage classes: Deny all access”. Вона блокує будь-які зовнішні USB-накопичувачі, які під’єднуються до комп’ютера.
На відміну від політик з попереднього розділу, у цій політиці відомі системі USB-накопичувачі також будуть заблоковані. При доступі до них система виведе на екрані попередження “Acess denied”.
Дана політика жорстка і її зручно застосовувати в цілях ізоляції комп’ютера, аби унеможливити компрометацію ПК та витік даних.
В розділі Removable Storage Access є також точкові налаштуванння. До прикладу, можна застосувати політику лише блокування запису або виконання на USB-накопичувачах – “Removable Disks: Deny write access”. Користувач не зможе скопіювати, зберегти або запустити файл на накопичувачі, але читання, доступ до флешки при цьому буде відбуватися без проблем. Таким чином реалізується захист від несанкціонованих дій при різних сценаріях.


Перевірка політик безпеки Windows
Ці команди виведуть у командний рядок існуючі групові політики:
gpresult /scope computer /vgpresult /scope user /vgpresult /scope computer /v | findstr /i "DeviceInstall"
Перевірити наявність існуючих політик в системі можна і через реєстр:
reg query HKLM\SOFTWARE\Policies /sreg query HKCU\SOFTWARE\Policies /sreg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies /sreg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions"
З допомогою утиліти rsop.msc – Resultant Set of Policy (RSoP) зручно переглядати вже активні політики в системі у вигляді дерева каталогів:

Згенерувати детальний звіт по груповим політикам Windows у читабельному HTML-форматі можна командою:
gpresult /scope computer /h C:\gp.html

Перевірка USB-пристроїв
З допомогою цих команд PowerShell можна здійснити наступні перевірки:
Get-PnpDevice -PresentOnly | Where-Object { $_.deviceId -match '^USBSTOR' }– вивести список USB-пристроїв, які зараз підключені до системи, тобто активні;Get-ItemProperty –Path HKLM:\SYSTEM\CurrentControlSet\Enum\USBSTOR\*\*| select FriendlyName– вивести список усіх USB-пристроїв, які коли-небудь під’єднувались до системи;
Ось PowerShell скрипт, який швидко покаже серійні номери та ідентифікатори під’єднаних до системи USB-пристроїв:
Get-PnpDevice -PresentOnly |
Where-Object { $_.InstanceId -match '^USB\\VID_[0-9A-F]{4}&PID_[0-9A-F]{4}\\' } |
ForEach-Object {
$tail = $_.InstanceId.Split('\')[-1]
if ($tail -match '&') { $sn = '- (за портом)' } else { $sn = $tail }
[pscustomobject]@{ Name = $_.FriendlyName; Serial = $sn; InstanceId = $_.InstanceId }
} | Format-Table -AutoSize 
Безкоштовні утиліти USBDriveLog та USBDeview від Nirsoft покажуть детальні відомості по USB-пристроям, зокрема історію під’єднання USB-носіїв до комп’ютера, усі технічні деталі і метадані (серійник, виробник, ідентифікатор). Інформацію можна експортувати в HTML-звіт.
Підключені до системи USB-пристрої можна переглянути і в системному реєстрі:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTORHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
Скидання групових політик
Ці команди скидають локальні групові політики Windows (те, що налаштовано через gpedit.msc) до стану «Not configured»:
RD /S /Q "%WinDir%\System32\GroupPolicy"RD /S /Q "%WinDir%\System32\GroupPolicyUsers"gpupdate /force
Експорт та імпорт групових політик
В Windows для автоматизації роботи з груповими політиками існує службова утиліта командного рядка LGPO.exe, яка входить в комплект Windows Security Compliance Toolkit. Архів можна завантажити з офіційного сайту Microsoft.
Принцип роботи LGPO простий:
LGPO.exe /b D:\Winsecpol /n "USB restrictions"– експортує існуючі політики в резервну копію у задану папку із наступною структурою:- D:\Winsecpol\{GUID}\DomainSysvol\GPO\Machine\registry.pol
- D:\Winsecpol\{GUID}\DomainSysvol\GPO\User\registry.pol
- D:\Winsecpol\{GUID}\DomainSysvol\GPO\Machine\microsoft\windows nt\SecEdit\GptTmpl.inf
- D:\Winsecpol\{GUID}\DomainSysvol\GPO\Machine\microsoft\windows nt\Audit\audit.csv
LGPO.exe /g D:\Winsecpol– імпортує політики з резервної копії.gpupdate /force– примусово оновити політики.


Імпортувати можна й окремі розділи політик, наприклад:
set B=D:\Winsecpol\{GUID}\DomainSysvol\GPO
:: Administrative Templates — Computer
LGPO.exe /m "%B%\Machine\registry.pol"
:: Administrative Templates — User
LGPO.exe /u "%B%\User\registry.pol"
:: Security Settings
LGPO.exe /s "%B%\Machine\microsoft\windows nt\SecEdit\GptTmpl.inf"
:: Advanced Audit Policy
LGPO.exe /a "%B%\Machine\microsoft\windows nt\Audit\audit.csv"
gpupdate /force Альтернативно, можна зробити експорт існуючих політик у текстовий файл:
LGPO.exe /parse /m C:\Windows\System32\GroupPolicy\Machine\Registry.pol > usb-policy.txt
У форматі plain тексту будуть перелічені лише активні політики:
Застосувати їх в системі можна командою:
LGPO.exe /t usb-policy.txt && gpupdate /force
В окремих випадках можна скопіювати файли політик вручну, до прикладу:
copy C:\Windows\System32\GroupPolicy\Machine\Registry.pol C:\backup\Registry.polcopy C:\Windows\System32\GroupPolicy\User\Registry.pol C:\backup\User.pol
З допомогою ще однієї утиліти з Windows Security Compliance Toolkit – Policy Analyzer можна провести аудит групових політик за їх резервними копіями. Для цього треба запустити програму, натиснути Add і вказати теку з GPO-бекапами, після чого натиснути Import – додаток запропонує зберегти новий XML-файл, після чого на лістингу з’явиться імпортований сет політик.
Натиснувши на кнопку View / Compare відкриється вікно аудиту, де політики можна переглянути окремо або порівняти між собою. Кнопка Compare to Effective State зробить свіжий знімок існуючих політик та проведе порівняння. Результати можна скопіювати у буфер обміну (plain text) або експортувати в таблицю MS Excel.


Автор: © Konrad Ravenstone, KR. Laboratories Research













