Les jardiniers savent que les vers sont bons. Les professionnels de la cybersécurité savent que les vers sont mal. Très mauvais. En fait, les vers sont littéralement la force la plus dévastatrice du mal connue dans le monde informatique. La MonDoom le ver occupe la position douteuse des logiciels malveillants informatiques les plus coûteux déjà – responsable de certains 52 milliards de dollars en dégâts. En deuxième position… Tellement grosun autre ver.
Il s’avère cependant qu’il existe des exceptions à chaque règle. Certains vers biologiques sont en fait Pas les bienvenus dans la plupart des jardins. Et certains cyber-vers, semble-t-il, peuvent utiliser leurs pouvoirs pour le bien…
Rencontrez Hopper, le bon ver
Les outils de détection ne sont pas bons pour intercepter la propagation non basée sur l’exploitation, ce que les vers font le mieux. La plupart des solutions de cybersécurité sont moins résistantes aux méthodes d’attaque de vers telles que l’usurpation d’identité de jeton et d’autres qui tirent parti de configurations internes déficientes – PAM, segmentation, stockage d’informations d’identification non sécurisé, etc.
Alors, quelle meilleure façon de battre un ver furtif qu’avec… un autre ver furtif ?
Et c’est ainsi qu’est né Hopper ! Hopper est un véritable ver, avec commande et contrôle, élévation de privilèges intégrée et bien d’autres capacités parmi les plus sournoises du genre ver. Mais contrairement à la plupart des vers, Hopper a été construit pour faire le bien. Au lieu de causer du tort, Hopper raconte à ses opérateurs White Hat où et comment il a réussi à infiltrer un réseau. Il indique jusqu’où il est allé, ce qu’il a trouvé en cours de route et comment améliorer les défenses.
De près et personnel avec Hopper
L’équipe de développement de Cymulate a basé Hopper sur un programmeur de logiciels malveillants courant – un petit exécutable qui sert de charge utile initiale, son objectif principal étant de préparer une charge utile plus importante. Notre stager sert également de packer PE, un programme qui charge et exécute des programmes indirectement, généralement à partir d’un package.
Le stager de Hopper a été écrit de manière à ce que la charge utile initiale n’ait pas à être modifiée si nous effectuons une mise à jour de Hopper. Cela signifie que l’exclusion des hachages sur chaque mise à jour s’est transformée en historique, et les utilisateurs de Hopper n’ont besoin d’exclure qu’une seule fois le hachage du stager. L’écriture du stager de cette manière a également ouvert la voie à l’exécution d’autres outils dont Hopper a besoin.
Pour maximiser la flexibilité de Hopper, notre équipe a ajouté différentes méthodes d’exécution initiales, des méthodes de communication supplémentaires, diverses façons de récupérer la charge utile de la première étape, différentes méthodes d’injection, etc. Et, pour créer un ver très furtif, nous devons permettre une personnalisation maximale des fonctionnalités furtives, nous avons donc fait des configurations presque entièrement contrôlées par l’opérateur :
- Configuration initiale de la charge utile – méthodes d’exécution entièrement configurables, y compris les exécutables, les bibliothèques, les scripts python, les shellcodes, les scripts PowerShell, etc.
- Configuration de la charge utile de la première étape – méthodes de récupération de package personnalisables et méthodes d’injection de package (par exemple, injection réfléchissante)
- Configuration de la balise de deuxième étage – canaux de communication sur mesure, maintien du timing et du délai d’attente, et gigue
- API – ajout en direct de nouvelles capacités pour permettre une expansion future plus facile des capacités, y compris les méthodes de communication, les méthodes de diffusion et les exploits
Exécution, gestion des informations d’identification et diffusion
L’exécution initiale de Hopper est en mémoire et par étapes. La première étape est un petit stub avec une capacité limitée. Ce stub sait comment exécuter un morceau de code plus important au lieu de contenir le code en lui-même, ce qui rend plus difficile de le signaler comme fichier malveillant. Pour l’élévation des privilèges, nous avons choisi différentes méthodes de contournement UAC, exploitant des services vulnérables tels que Spooler et utilisant des services ou des exécutions automatiques mal configurés pour obtenir une élévation ou une persistance des privilèges. L’idée ici est que Hopper utilise les privilèges minimaux nécessaires pour atteindre ses objectifs. Par exemple, si une machine fournit un accès utilisateur à notre machine cible, Hopper n’a peut-être pas besoin d’élever les privilèges pour se propager à cette machine cible.
Hopper propose une gestion centralisée des informations d’identification, ce qui lui permet de distribuer les informations d’identification entre les instances de Hopper par nécessité, ce qui signifie que tous les Hoppers ont accès aux informations d’identification collectées, éliminant ainsi le besoin de dupliquer la base de données d’informations d’identification sensibles sur d’autres machines.
Pour se propager, Hopper préfère les erreurs de configuration aux exploits. La raison? Les exploits peuvent potentiellement faire planter les systèmes, ils se démarquent davantage et sont facilement identifiés par les produits de surveillance IPS/réseau et les produits EDR. Les erreurs de configuration, en revanche, ne sont pas facilement détectées comme des activités malveillantes. Par exemple, des erreurs de configuration d’Active Directory peuvent conduire un utilisateur à accéder à une ressource à laquelle il n’aurait pas dû avoir accès, et donc conduire à une propagation. De même, des erreurs de configuration logicielle peuvent permettre à un utilisateur d’exécuter du code à distance et donc de se propager.
Communications furtives et C&C
L’équipe Cymulate a choisi l’exécution en mémoire pour Hopper, car le chiffrement du code malveillant en mémoire une fois qu’il n’est plus utilisé peut perturber la capacité des produits EDR à identifier le contenu en mémoire. De plus, l’exécution en mémoire utilise des appels système directs au lieu d’appels d’API, qui peuvent être surveillés par des produits EDR. Si Hopper a besoin d’utiliser des fonctions API, il détecte et décharge les crochets EDR avant de le faire.
Pour maintenir la discrétion, Hopper communique avec Command and Control pendant les heures de travail en masquant l’activité avec l’activité normale des heures de travail dans des schémas de synchronisation aléatoires. Il communique également uniquement avec des serveurs autorisés ou des serveurs qui ne sont pas considérés comme malveillants, comme les chaînes Slack, Google Sheets ou d’autres services publics.
L’essentiel
Pour prévenir les attaques de vers, une trémie semblable à un ver White Hat est une solution idéale. En voyant le réseau du point de vue d’un ver, pour ainsi dire, Hopper donne le plus grand avantage du ver au le plus grand avantage du défenseur.
Remarque : cet article a été écrit et contribué par Yoni Oren, chef d’équipe, chercheur principal en sécurité et développeur chez Cymuler.