[Windows Vista,7] Escalade de privilège via AT et bypass UAC

15
août
2013
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Yann C.  /   Category: Administration réseaux et systèmes / OS / Privilege escalation / Vulnérabilités, exploits et PoC / Windows   /   Pas de commentaire

Pour faire suite à un précédent article sur l‘escalade de privilège via la commande des tâches planifiées AT, une variante de cette méthode est pleinement fonctionnelle sous les versions de Windows plus récentes.

En effet, du temps de Windows XP les tâches planifiées se géraient exclusivement via cette commande AT. Depuis Windows Vista et 7, cette commande est tombée en désuétude au dépend de « schtasks ». Toutefois, Microsoft n’a pas éradiqué ce binaire « AT » de ses système en guise de rétro-compatibilité.

L’utilisation de cette ancienne commande nécessite d’avoir un shell privilégié, lancé en tant qu’administrateur. :

Commande AT restreinte

Commande AT restreinte

La raison de cette bride de la commande AT pour un shell simple est bien évidemment l’UAC (User Account Control). Ce mécanisme introduit depuis Windows Vista questionne l’utilisateur de la machine pour chaque action d’administration qu’il tente d’effectuer :

UAC pour cmd.exe

UAC pour cmd.exe

Diverses techniques existent et sont largement utilisées pour du pentest, afin de bypasser ces restrictions dues à l’UAC. Le projet Metasploit/Meterpreter intègre nativement des méthodes de bypass. Un des projets permettant cela se nomme « bypassuac » et est compatible avec les architectures 32 et 64 bits de Windows 7. Cet utilitaire binaire standalone permet de contourner cette protection pour exécuter des commandes « en tant qu’administrateur » :

Bypass UAC pour AT

Bypass UAC pour AT

Une autre évolution de la commande « AT » sur les nouveaux systèmes, est que le mode « interactif » qui fonctionnait pleinement sous Windows XP ne semble plus d’actualité. Ce mode permettait par exemple d’ajouter une tâche planifiée de « cmd.exe » à une heure précise en mode interactif, et que lorsque cette heure était atteinte, la commande s’ouvrait d’elle-même de manière interactive bien qu’elle était exécutée sous un utilisateur différent (SYSTEM) par rapport à la session courante.

A présent, ce mécanisme semble également bridé, et la commande n’apparaît plus. Néanmoins il est tout à fait possible de récupérer un shell SYSTEM sans interactivité. L’idée est d’utiliser le binaire « remote.exe » (ou « remotex64.exe ») disponible dans les « Windows debugger Tools« . Ces binaires, standalone, permettent de réaliser un tunnel (pipe) client/serveur sur une même machine Windows. L’avantage est que ces binaires sont propres à Microsoft et sont donc légitimes (non jugés dangereux par un quelconque antivirus, idéal pour le pentesting). Pour récupérer ces binaires, télécharger l’archive jointe à cet article ou installer les Windows Debugger Tools et récupérez les dans le répertoire d’installation.

Le fonctionnement de ces binaires « remote.exe » et « remotex64.exe » est très simple.

Partie serveur :

remote.exe /s cmd SYSCMD

Le « /s » pour activer le serveur en mettant à disposition la ressource « cmd » avec les privilèges « SYSCMD ».

Partie cliente :

remote.exe /c %COMPUTERNAME% SYSCMD

Le « /c » pour activer le mode « client » à destination de la machine du nom Netbios %COMPUTERNAME% avec des privilèges identiques.

L’obtention d’un shell NT AUTHORITY/SYSTEM sous un environnement Windows 7 avec bypass de l’UAC et via l’ancienne commande AT s’effectue donc via l’enchaînement de ces opérations dans un fichier Batch .bat :

atuac.bat content

atuac.bat content

  • Définir le chemin d’accès au binaire « bypassuac.exe » préalablement placé sur la machine.
  • Définir le chemin d’accès au binaire « remote.exe » préalablement placé sur la machine.
  • L’heure actuelle est sauvée dans une variable.
  • L’heure actuelle est changée à 13:37:57,44.
  • Une tâche planifiée via AT est ajoutée à 13:38, lançant le serveur remote.exe avec les privilèges SYSTEM.
  • Un temps d’attente de 3 secondes est réalisé via le ping.
  • L’heure sauvée en amont du script est redéfinie.
  • Enfin, « remote.exe » est utilisé en tant que client pour se connecter au serveur avec les droits SYSTEM.

Aperçu de l’exécution de ce script :

Escalade de privilège SYSTEM via AT et bypass UAC

Escalade de privilège SYSTEM via AT et bypass UAC

L’ensemble des binaires, outils et script ont été centralisés dans le package Win7_Local-Privilege-Escalation_AT_BypassUAC afin de faire gagner du temps aux pentesteurs.

Cette méthode n’est pas nouvelle et est à considérer comme une évolution de la technique du temps de Windows XP. Elle a été traitée en 2008 sur le blog TechNet de Microsoft et remis au goût du jour par Carnal0wnage dernièrement. ASafety la fait suivre ici en fournissant un script Batch automatisé et un package prêt à l’emploi.

Sources & ressources :

  • Google Plus
  • LinkedIn
  • Viadeo
Yann C.

About the Author : Yann C.

Consultant en sécurité informatique et s’exerçant dans ce domaine depuis le début des années 2000 en autodidacte par passion, plaisir et perspectives, il maintient le portail ASafety pour présenter des articles, des projets personnels, des recherches et développements, ainsi que des « advisory » de vulnérabilités décelées notamment au cours de pentest.