Dans le cadre de test d’intrusion internes en environnement Active Directory, il est fréquent d’avoir besoin d’exècuter des commandes à distance sur des machines Windows. Plusieurs outils permettent de le faire, mais l’un des plus utilisés est wmiexec

Le principe général de wmiexec

wmiexec permet d’exécuter des commandes à distance sans copier de fichier ni créer du service sur la machine cible. Il s’appuie pour cela sur WMI (Windows Management Instrumentation), une technologie native de Windows permettant de piloter un système local ou distant.

Lorsqu’il est utilisé à distance, WMI ne fonctionne pas directement sur le réseau. Il repose en réalité sur une autre couche technique appelée DCOM (Distributed Component Object Model)

Comprendre DCOM et RPC

DCOM, c’est quoi ?

DCOM est une extension du modèle COM de Microsoft. Alors que COM permet aux logiciels d’échanger des données et des fonctions sur une meme machine, DCOM permet cette communication entre différentes machines sur un réseau.

Concrètement, DCOM permet à une application sur une machine de demander l'exécution d'une fonction sur un serveur distant, sans avoir à gérer les détails de la communication réseau. L’application agit comme si la fonction distante était local. DCOM encapsule l’appel de la méthode distante et prend en charge la gestion du transport et des échanges nécessaires.

Et RPC alors ?

Sous le capot, DCOM utilise RPC (Remote Procedure Call pour transporter les messages sur le réseau. RPC fournit le mécanisme de bas niveau permettant de faire passer les appels de fonction à travers le réseau, d’ouvrir les connexions nécessaires, de gérer les ports et de transmettre les données.

Ainsi, pour résumer lorsque l’on communique avec wmiexec voici ce qui se passe :

  • Au niveau le plus bas, RPC s’occupe du transport réseau. C’est lui qui ouvre la connexion initiale sur le port TCP 135.
  • Par dessus RPC, DCOM gère les appels distants d’objets; c’est à dire l’appels des méthodes sur la machine distante
  • Enfin, au niveau applicatif, WMI fournit l’interface d’administration qui permet par exemple de créer un processus distant.

Limitations de wmiexec

  • Souvent détecté par les EDR
  • Nécessite des privilèges administrateur sur la cible
  • Les firewalls doivent laisser passer les flux DCOM/RPC