Le Windows Print Spooler s'exécute par défaut sur les postes de travail et les serveurs, y compris les contrôleurs de domaine, et expose des interfaces RPC distantes (MS-RPRN, MS-PAR) à tout utilisateur authentifié. C'est depuis des années l'un des services Windows les plus régulièrement abusés, de deux manières distinctes : on peut l'amener à s'authentifier auprès d'un attaquant (coercition), et on peut l'amener à charger la DLL de pilote d'un attaquant en tant que SYSTEM (exécution de code).
Un long historique d'abus#
La valeur offensive du spooler s'est accumulée au fil de plusieurs vagues, et chacune reste utile là où le patching ou le durcissement ont pris du retard :
- 2018, PrinterBug / SpoolSample : Lee Christensen a montré que
RpcRemoteFindFirstPrinterChangeNotificationExforce une cible à s'authentifier en retour via SMB, une primitive de coercition fiable encore utilisée pour alimenter les attaques de relais et de délégation. - 2021, PrintNightmare : une faille dans
RpcAddPrinterDriverExet Point and Print a permis à un utilisateur non privilégié de charger une DLL de pilote et d'exécuter en tant que SYSTEM, à la fois à distance et localement, traitée sous Point and Print. - 2022, SpoolFool et des bugs d'élévation de privilèges du spooler ultérieurs ont poursuivi le schéma du SYSTEM local via le même service.
Pages#
- Coercition : forcer une machine à s'authentifier avec le PrinterBug, pour alimenter le relais et la délégation.
- Point and Print : charger un pilote pour exécuter en tant que SYSTEM, à distance et localement.