Les applications client lourd, souvent utilisées dans des environnements métiers critiques comme les ERP, sont des outils incontournables pour de nombreuses entreprises. Contrairement aux applications web ou mobiles, elles s’exécutent directement sur le système de l’utilisateur, ce qui leur confère des performances optimales et des fonctionnalités avancées. Toutefois, cette architecture particulière engendre des risques de sécurité uniques, notamment des failles dans les binaires ou des vulnérabilités liées aux protocoles de communication.
Dans ce contexte, les tests d’intrusion sur les applications client lourd revêtent une importance capitale. Ils permettent non seulement de révéler des vulnérabilités exploitables, mais aussi de simuler des attaques réalistes afin de mieux comprendre les implications potentielles sur la sécurité globale d’un environnement. Cet article propose une exploration des étapes essentielles pour mener à bien un test d’intrusion sur ce type d’application, en détaillant les architectures typiques, les vulnérabilités les plus fréquentes et présenter certains moyens concrets de les exploiter efficacement.
Architectures courantes des applications client lourd
Les applications client lourd reposent généralement sur des modèles client-serveur qui diffèrent selon leur niveau de complexité. Parmi les plus courants figurent les architectures dites Tier 2 et Tier 3.
Dans une architecture Tier 2, le client interagit directement avec la base de données. Ce modèle est simple à mettre en œuvre, mais il expose des points faibles significatifs. L’accès direct du client à la base rend les échanges réseau particulièrement vulnérables aux interceptions, permettant à un attaquant de manipuler les requêtes ou d’introduire des injections SQL.

Figure 1 – Schéma simplifié d’une architecture tier 2
En revanche, l’architecture Tier 3 ajoute une couche intermédiaire, le serveur applicatif, qui gère la logique métier et sert d’intermédiaire entre le client et la base de données. Cette segmentation réduit les accès directs aux données sensibles, mais elle reste vulnérable à des attaques ciblant la couche applicative, comme l’interception de données mal sécurisées en transit.

Figure 2 – Schéma simplifié d’une architecture tier 3
Vulnérabilités communes aux applications client lourd
Les tests d’intrusion sur les applications client lourd révèlent souvent des vulnérabilités exploitables à plusieurs niveaux, que ce soit côté serveur ou côté client.
Vulnérabilités côté serveur
Dans un modèle Tier 2, où le client se connecte directement à la base de données, les attaques par injection SQL sont courantes. Ces injections permettent non seulement de manipuler les requêtes existantes, mais aussi d’exécuter du code malveillant si certaines fonctions, comme xp_cmdshell sous Microsoft SQL Server, sont activées. Ces vulnérabilités proviennent souvent de l’utilisation de comptes de service trop privilégiés ou de requêtes SQL non sécurisées intégrées directement dans le client.
Les communications réseau non chiffrées constituent une autre faiblesse majeure. Elles permettent à un attaquant d’intercepter des données sensibles, telles que des identifiants, des mots de passe ou des informations métier, via des attaques de type Man-in-the-Middle.
Les mises à jour logicielles non sécurisées représentent également une source de vulnérabilités. Si une application télécharge des mises à jour via des connexions non chiffrées ou sans signature numérique, un attaquant peut injecter des fichiers malveillants en interceptant ou redirigeant le flux réseau.
Vulnérabilités côté client
L’analyse côté client s’articule autour de plusieurs axes. Tout d’abord, les fichiers de configuration contiennent fréquemment des informations critiques telles que des adresses de serveurs, des identifiants ou même des secrets en clair. Ces informations peuvent être utilisées pour pénétrer plus profondément dans l’environnement cible ou pour lancer des attaques ciblées.
Ensuite, la mémoire vive de l’application peut receler des données sensibles. En générant un vidage mémoire, il est possible de récupérer des chaînes de caractères utilisées par l’application, comme des mots de passe ou des clés d’authentification. Ce type d’analyse est particulièrement utile lorsque les fichiers de configuration ne révèlent pas suffisamment d’informations.
Enfin, l’analyse des binaires permet d’identifier des vulnérabilités au niveau du code exécuté par l’application. Le DLL Hijacking, par exemple, exploite le processus de chargement des librairies dynamiques. Dans le cas du Phantom DLL Hijacking, l’attaquant insère une DLL malveillante à la place d’une DLL manquante recherchée par l’application, permettant ainsi l’exécution de code arbitraire.
Par ailleurs, la désérialisation non sécurisée est une vulnérabilité souvent négligée. Certaines applications traitent des données sérialisées sans validation, ouvrant la voie à des injections d’objets malveillants qui peuvent exécuter du code arbitraire.
Des vulnérabilités spécifiques peuvent aussi découler des formats de fichiers utilisés par l’application. Les fichiers mal validés ou mal analysés peuvent déclencher des débordements de mémoire ou exécuter du code inséré de manière malveillante.
Enfin, certaines applications laissent des traces d’informations sensibles dans leurs fichiers journaux ou leurs caches locaux, rendant ces données accessibles à un attaquant ayant un accès physique ou distant au poste de l’utilisateur.
Exploitation des vulnérabilités – Processus, Injection
L’exploitation d’une application client lourd nécessite une combinaison d’outils et de techniques adaptés à son architecture. L’analyse des processus et des échanges réseau joue un rôle central dans la compréhension du comportement de l’application. À l’aide d’outils comme Process Monitor ou Process Explorer, il est possible d’identifier les processus et les requêtes générées par le client vers le serveur. Ces informations peuvent ensuite être utilisées pour rediriger les flux réseau via un proxy tel que Burp Suite, Echo Mirage ou Hallucinate.
Les outils de décompilation, tels que Ghidra ou DNSpy, permettent quant à eux d’étudier le fonctionnement interne de l’application, notamment pour localiser les fonctions critiques comme l’authentification ou la gestion des permissions. Une fois les failles identifiées, des scripts ou des exploits personnalisés peuvent être développés pour exploiter les vulnérabilités.
Conclusion
Les tests d’intrusion sur les applications client lourd permettent d’exposer des vulnérabilités spécifiques liées à leur architecture et à leur fonctionnement. En combinant une analyse approfondie des fichiers, de la mémoire et des binaires, il est possible de révéler des vulnérabilités exploitables qui, si elles sont laissées sans correction, pourraient compromettre la sécurité globale d’une organisation.
Des articles à venir approfondiront des aspects techniques spécifiques, tels que le DLL Hijacking ou l’utilisation avancée des outils de proxy et de décompilation dans des environnements client lourd.
