CPL et OCX : comment ces DLL Windows sont détournées via rundll32 et regsvr32
Un CPL et un OCX sont tous deux, structurellement, de simples DLL Windows. Les mécanismes système qui les chargent normalement (control.exe/rundll32, regsvr32) sont aussi des techniques documentées d'exécution de code malveillant.
Un fichier CPL et un fichier OCX sont tous deux, structurellement, de simples DLL Windows au format Portable Executable, avec la même signature d’en-tête “MZ” qu’un EXE ou une DLL classique. Ce qui les distingue n’est pas leur conteneur mais une fonction spécifique exportée (CPlApplet pour un CPL) ou leur enregistrement dans le registre via un utilitaire système dédié (regsvr32.exe pour un OCX). Ce sont précisément ces deux mécanismes de chargement indirect qui constituent aujourd’hui des techniques documentées d’exécution de code malveillant.
CPL : chargement via control.exe et rundll32
Au double-clic, Windows ne charge pas un CPL directement : il lance control.exe, qui appelle Control_RunDLL de shell32.dll en lui passant le fichier CPL en argument, laquelle charge alors la DLL et invoque CPlApplet. Un fichier CPL peut cependant être exécuté directement via la commande rundll32.exe Shell32.dll,Control_RunDLL <chemin>, sans passer par control.exe, une méthode répertoriée par MITRE ATT&CK sous l’identifiant T1218.002, exploitée pour contourner des outils de sécurité qui surveillent le lancement de control.exe sans couvrir cet appel indirect via rundll32.
OCX : chargement via regsvr32
Un OCX ne s’exécute jamais par simple double-clic : il doit d’abord être enregistré dans le registre Windows via regsvr32.exe, qui inscrit ses identifiants COM à un emplacement que les applications hôtes (anciennes pages Internet Explorer, formulaires Visual Basic 6, logiciels métier) savent interroger. Cette étape d’enregistrement obligatoire est elle-même un vecteur d’attaque documenté (MITRE ATT&CK T1218.010) : regsvr32.exe étant un binaire signé Microsoft présent nativement sur tout Windows, son détournement pour charger un OCX malveillant permet d’exécuter du code arbitraire en s’appuyant sur la confiance accordée par défaut à un binaire signé du système, plutôt qu’à l’origine réelle du fichier chargé.
Pourquoi ces deux extensions restent des vecteurs d’ingénierie sociale
De nombreux utilisateurs ne reconnaissent ni .cpl ni .ocx comme des extensions potentiellement exécutables, contrairement à .exe dont le risque est plus intuitif, un point exploité par des campagnes qui distribuent une DLL malveillante déguisée en élément de Panneau de configuration ou en contrôle ActiveX légitime. Ce déficit de reconnaissance, combiné à l’exécution indirecte via des binaires signés Microsoft, explique pourquoi les deux techniques figurent dans le référentiel MITRE ATT&CK plutôt que d’être de simples curiosités historiques.
Ce qu’il faut vérifier avant d’exécuter un CPL ou un OCX d’origine incertaine
Ni le CPL ni l’OCX ne peuvent être qualifiés de sûrs ou dangereux à partir de leur seule signature binaire, identique à celle de n’importe quelle DLL. La prudence porte plutôt sur l’origine du fichier et, pour un contexte de sécurité opérationnelle, sur la surveillance des invocations de rundll32.exe Shell32.dll,Control_RunDLL et de regsvr32.exe avec un chemin de fichier inhabituel, deux commandes légitimes en elles-mêmes, mais qui méritent d’être corrélées avec la provenance du fichier qu’elles chargent.
Vérifier le vrai contenu d'un fichier avant de l'exécuter →
Formats concernés
Catégories concernées
Voir aussi
- Extension vs signature binaire : pourquoi renommer un fichier ne change pas ce qu'il est
- Fichier .reg : pourquoi vérifier son contenu avant de double-cliquer dessus
Questions fréquentes
Pourquoi un antivirus ou un SOC surveille-t-il les appels à rundll32.exe et regsvr32.exe ?
Les deux sont des binaires signés Microsoft présents nativement sur tout Windows, ce qui en fait des cibles privilégiées de « system binary proxy execution » : charger un CPL malveillant via rundll32 (MITRE ATT&CK T1218.002) ou enregistrer un OCX malveillant via regsvr32 (T1218.010) permet d'exécuter du code arbitraire tout en contournant des règles de sécurité qui font confiance par défaut aux binaires signés du système, plutôt qu'en surveillant control.exe ou l'origine du fichier chargé.
Un fichier .cpl ou .ocx peut-il être identifié comme dangereux par sa seule signature binaire ?
Non : les deux sont des DLL Windows ordinaires au format Portable Executable, avec la même signature d'en-tête MZ qu'une DLL, un EXE ou un SYS. Rien dans les premiers octets ne distingue un CPL ou un OCX légitime d'une DLL malveillante renommée avec cette extension ; seule une inspection plus poussée (fonctions exportées, éditeur de la signature numérique) permet de se prononcer.
Sources
- Wikipedia : Portable Executable
- MITRE ATT&CK, T1218.002: System Binary Proxy Execution: Control Panel
- MITRE ATT&CK, T1218.010: System Binary Proxy Execution: Regsvr32
- Microsoft : How to register an ActiveX control (.ocx) manually
Dernière mise à jour :