Le code malveillant s’infiltre partout…
C’est un peu comme un gaz, qui remplit toujours l’espace dans lequel il se trouve : il passera toujours par les » trous » (vulnérabilités) d’un système informatique. Notre travail (enfin, l’une de nos tâches) consiste donc à trouver ces trous et à les boucher. Notre objectif est de faire cela de manière proactive ; c’est-à-dire, avant que le malware ne les retrouve. Et s’il en détecte, nous sommes là, prêts à le repousser.
En fait, c’est la protection proactive et la capacité à prévoir les actions des attaquants et à créer une barrière à l’avance qui distinguent une cybersécurité de haute technologie vraiment excellente du simple marketing.
Aujourd’hui, je voudrais vous parler d’une autre façon dont notre action proactive protège contre un autre type de malware, particulièrement rusé. Oui, je veux vous parler de ce qu’on appelle le code malveillant sans fichier (et donc sans » corps « ) : une dangereuse race de malwares fantômes qui ont appris à utiliser les inconvénients architecturaux de Windows pour infecter les ordinateurs. Et aussi de notre technologie brevetée qui lutte contre cette cyber-maladie bien particulière. Et je le ferai comme vous l’aimez : des choses complexes expliquées simplement, de manière légère et captivante comme dans un cyber-thriller avec des éléments de suspense ;).
Tout d’abord, que veut dire sans fichier ?
Eh bien, le code sans fichier, une fois introduit dans un système informatique, ne crée pas de copies de lui-même sous forme de fichiers sur le disque, évitant ainsi la détection par les méthodes traditionnelles, par exemple avec un moniteur antivirus.
Alors, comment un tel » malware fantôme » existe-t-il à l’intérieur d’un système ? Eh bien, il réside dans la mémoire de processus fiable ! Eh oui ! Beurk !
Dans Windows (et pas seulement dans Windows, en fait), il y a toujours eu la possibilité d’exécuter du code dynamique, notamment utilisé pour la Compilation juste à temps. Cela consiste en la transformation d’un code de programme en code machine non pas immédiatement, mais au fur et à mesure des besoins. Cette approche améliore la vitesse d’exécution de certaines applications. Et pour prendre en charge cette fonctionnalité, Windows permet aux applications de placer du code dans la mémoire de processus (ou même dans une autre mémoire de processus fiable) et de l’exécuter.
Ce n’est pas vraiment une bonne idée du point de vue de la sécurité, mais bon… C’est comme ça que des millions d’applications écrites dans Java, .NET, PHP, Python et autres langages et pour d’autres plateformes fonctionnent depuis des décennies.
Comme on pouvait s’y attendre, les criminels du web ont profité de la possibilité d’utiliser du code dynamique, en inventant diverses méthodes pour en abuser. Et l’une des méthodes les plus pratiques et donc les plus répandues qu’ils utilisent est ce qu’on appelle l’injection de PE par réflexion. La quoi ? Laissez-moi expliquer (c’est plutôt intéressant, restez avec moi !)
Lancer une demande en cliquant sur son icône est assez simple et direct, non ? En fait, cela semble simple, mais sous le capot, il y a toutes sortes de choses qui se passent : un chargeur système est appelé, qui prend le fichier respectif sur le disque, le charge dans la mémoire et l’exécute. Et ce processus standard est contrôlé par des moniteurs antivirus, qui vérifient la sécurité de l’application à la volée.
Lorsqu’il y a une » réflexion « , cependant, le code est chargé en contournant le chargeur du système (et donc en contournant également le moniteur antivirus). Le code est placé directement dans la mémoire d’un processus fiable, créant ainsi une » réflexion » du module exécutable original. Cette réflexion peut être exécutée comme un véritable module chargé par une méthode standard, mais elle n’est pas enregistrée dans la liste des modules et, comme mentionné ci-dessus, elle n’a pas de fichier sur le disque.
De plus, contrairement aux autres techniques d’injection de code (par exemple, via le shellcode), l’injection par réflexion permet de créer du code fonctionnellement avancé dans des langages de programmation de haut niveau et des cadres de développement standard, sans aucune limitation ou presque. Le résultat : (i) pas de fichiers, (ii) une dissimulation derrière un processus fiable, (iii) l’invisibilité face aux technologies de protection traditionnelles, et (iv) le champ libre pour faire des ravages.
Alors, bien entendu les injections par réflexion ont eu un succès fou auprès des développeurs de code malveillant : Ils sont d’abord apparus dans des packs d’exploitation. Ensuite, des cyber-espions ont fait leur apparition (par exemple, Lazarus etTurla), puis des cybercriminels avancés (comme c’est une façon utile et légitime d’exécuter un code complexe !), puis de petits cybercriminels.
Maintenant, du côté des antivirus, trouver une telle infection sans fichier, c’est comme chercher une aiguille dans une cyber-botte de foin. Pas étonnant que la plupart des marques de cybersécurité ne s’en sortent pas trop bien. Certaines touchent à peine à ce type de problèmes.
En lire plus :Jouer à cache-cache avec des malwares sans fichiers