Як заблокувати підключення USB-пристроїв в ОС Windows з допомогою групових політик?

В операційних системах 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” – через скільки секунд система примусово перезавантажиться, якщо ретроактивне видалення пристроїв потребує перезавантаження. Якщо політика не задана, примусового перезавантаження не буде.
ЧИТАЙТЕ ТАКОЖ:  Повний гайд по VPN: історія, архітектура, протоколи
Блок-схема політик блокування знімних пристроїв. Джерело: довідка Windows

Підказка: Дізнатися класи і ідентифікатори пристроїв в системі можна командами:

  • Get-PnpDevice -PresentOnly | Select-Object FriendlyName, Class, ClassGuid, InstanceId
  • pnputil /enum-devices /ids
  • pnputil /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”. Користувач не зможе скопіювати, зберегти або запустити файл на накопичувачі, але читання, доступ до флешки при цьому буде відбуватися без проблем. Таким чином реалізується захист від несанкціонованих дій при різних сценаріях.

Пам’ятка як заблокувати USB на Windows ПК
Пам’ятка захисту ПК від шкідливих знімних пристроїв, типу Bad USB.

Перевірка політик безпеки Windows

Ці команди виведуть у командний рядок існуючі групові політики:

  • gpresult /scope computer /v
  • gpresult /scope user /v
  • gpresult /scope computer /v | findstr /i "DeviceInstall"

Перевірити наявність існуючих політик в системі можна і через реєстр:

  • reg query HKLM\SOFTWARE\Policies /s
  • reg query HKCU\SOFTWARE\Policies /s
  • reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies /s
  • reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions"

З допомогою утиліти rsop.msc – Resultant Set of Policy (RSoP) зручно переглядати вже активні політики в системі у вигляді дерева каталогів:

ЧИТАЙТЕ ТАКОЖ:  Як швидко додавати нових користувачів в ОС Linux?
Робота з утилітою Resultant Set of Policy (RSoP)

Згенерувати детальний звіт по груповим політикам Windows у читабельному HTML-форматі можна командою:

  • gpresult /scope computer /h C:\gp.html
Звіт групових політик Windows

Перевірка 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
Виведення серійників та ідентифікаторів під’єднаних USB-пристроїв у консолі PowerShell

Безкоштовні утиліти USBDriveLog та USBDeview від Nirsoft покажуть детальні відомості по USB-пристроям, зокрема історію під’єднання USB-носіїв до комп’ютера, усі технічні деталі і метадані (серійник, виробник, ідентифікатор). Інформацію можна експортувати в HTML-звіт.

Підключені до системи USB-пристрої можна переглянути і в системному реєстрі:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
  • HKEY_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 – примусово оновити політики.
ЧИТАЙТЕ ТАКОЖ:  Встановлення і налаштування аналізатора логів Goaccess на VPS
Створення резервної копії політик безпеки з допомогою LGPO.
Імпорт політик безпеки з допомогою LGPO

Імпортувати можна й окремі розділи політик, наприклад:

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.pol
  • copy 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.

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

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

Konrad Ravenstone// про автора

Хакер, аналітик, дослідник в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
Продовжуємо цикл статей на тему Red Team. Цього разу розглянемо…