Ce n’est pas nouveau mais ça revient à l’actualité. L’escalade de privilège permet d’acquérir les droits NT AUTHORITY\SYSTEM au sein d’un système Windows, sans pour autant disposer d’un moyen légitime d’y accéder.
De tels droits sont extrêmement convoités par les intrus/pirates/pentesteurs d’un système pour étendre leur contrôle et notamment placer des backdoors/rootkits en profondeur.
Dans le cas présent, c’est une technique très simple qui exploite les tâches planifiées sous Windows XP. Windows XP uniquement puisque sous les versions plus récentes, l’attribut d’interactivité n’est plus fonctionnel. Sous Windows Vista et 7 il est d’ailleurs conseillé d’utiliser “schtasks” plutôt que “at”.
Attention toutefois, la commande “at” nécessite un minimum de droits. Elle ne peut pas être exécutée par un compte “invité” par exemple. Il faudra donc passer par une première escalade de privilège de l’utilisateur invité (LPEception…).
La commande de base pour exécuter un processus en NT AUTHORITY\SYSTEM avec interactivité (visibilité à l’écran) est la suivante :
[shell]at hh:mm /interactive "cmd.exe"[/shell]
Il est bien évident que l’heure indiquée est future, par exemple 2 minutes plus tard. Il suffit par la suite de patienter 2 minutes pour voir un jolie shell apparaître sous l’utilisateur NT AUTHORITY\SYSTEM, donc avec les droits absolus. N’importe quel autre processus peut être lancé. Il est même possible de lancer une session sous l’utilisateur NT AUTHORITY\SYSTEM ! Pour cela, une fois votre shell obtenu les 2 minutes écoulées, terminez le processus “explorer.exe” via le gestionnaire de tâches, et relancez le à partir de votre console. La session s’ouvre sous le compte “suprême” ! A noter que le fait d’ouvrir une telle session ne serait-ce qu’une fois, peut générer un léger problème d’affichage au démarrage de la machine, où les collines verdoyantes de Windows apparaissent en fond d’écran bien que ce ne soit pas le vôtre…
Pour automatiser un peu ce LPE (comprendre Local Privilege Escalation), voici un petit script Batch (lpe.bat) à exécuter. Celui-ci sauvegarde l’heure courante, ajoute la tâche planifiée à exécuter sous le compte SYSTEM, attend l’exécution de la tâche via un retardement de 2 secondes (réalisé à partir de la commande “ping”) et remet l’heure initiale :
[shell]set tmptime=%TIME%<br />
time 13:37:59,44<br />
at 13:38 /interactive &quot;cmd.exe&quot;<br />
ping 127.0.0.1 -n 2<br />
time %tmptime%[/shell]
Ce LPE provient du fait que le démon Windows (svchost.exe) qui vérifie régulièrement si des tâches sont à exécuter a les droits SYSTEM. Ainsi, bien que vous soyez un utilisateur restreint, l’ajout d’une tâche planifiée force ce démon SYSTEM à exécuter votre processus, qui hérite automatiquement des privilèges de son créateur, soit des droits NT AUTHORITY\SYSTEM.