IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Comment les créateurs de maliciels échappent à la détection en utilisant des langages moins populaires


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2023
    Messages
    1 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2023
    Messages : 1 217
    Par défaut Comment les créateurs de maliciels échappent à la détection en utilisant des langages moins populaires
    Les logiciels malveillants sont plus difficiles à détecter lorsqu'ils sont écrits dans des langages obscurs ou moins populaires comme Delphi et Haskell
    ils échappent plus facilement à l'analyse statique

    Une étude illustre comment les développeurs de maliciels s'appuient sur des langages moins populaires comme Delphi ou Haskell pour échapper à la détection. Les auteurs ont examiné des logiciels malveillants récents pour mieux comprendre pourquoi certains d'entre eux échappent à l'analyse statique, une technique d'essai des logiciels qui permet de comprendre le code sans l'exécuter. Ils ont découvert que les créateurs de maliciels s'efforcent d'obscurcir leur code ou d'appliquer des techniques anti-sandboxing. Les maliciels écrits en C restent les plus rependus, mais les acteurs de la menace incluent de plus en plus de langages atypiques.

    Comment les développeurs de logiciels malveillants échappent à la détection

    Les logiciels malveillants sont nombreux. Selon l'évaluateur d'antivirus AV-TEST, 27 millions de nouvelles instances de codes malveillants ont déjà été découvertes rien qu'en 2025. L'analyse statique est l'un des principaux moyens utilisés pour identifier les codes malveillants. Les créateurs de maliciels le savent et nombre d'entre eux s'efforcent d'obscurcir leur code ou d'appliquer des techniques anti-sandboxing ou anti-débogage pour échapper à la détection.

    Selon l'étude mentionnée ci-dessus, l'un des moyens utilisés par les acteurs de la menace pour échapper à la détection consiste simplement à utiliser un langage de programmation qui n'est pas largement utilisé pour les logiciels malveillants, qui ont tendance à être écrits en langage C ou en langage C++.

    Nom : Capture d'écran 2025-03-31 224317.png
Affichages : 4636
Taille : 50,9 Ko
    Figure 1 : Répartition des 5 premiers langages de programmation par année

    L'étude a été menée par des informaticiens affiliés à l'université du Pirée et au centre de recherche Athena, en Grèce, ainsi qu'à l'université technologique de Delft, aux Pays-Bas. Les auteurs ont partagé leurs conclusions dans un document préimprimé intitulé « Coding Malware in Fancy Programming Languages for Fun and Profit ». Ils rapportent que les acteurs de la menace se tournent vers Delphi, Haskell et d'autres langages similaires pour échapper à la détection.

    « Depuis des années, les groupes de ransomwares adoptent des langages plus récents et non conventionnels pour rendre la rétro-ingénierie et la détection plus difficiles. En outre, divers acteurs de la menace ont utilisé cette approche, en employant un large éventail de langages de programmation et de techniques pour obscurcir leur code malveillant », expliquent les auteurs de l'étude. L'équipe a cité plusieurs exemples de ce phénomène dans son rapport.

    Ils ont rappelé notamment la frustration des chercheurs en cybersécurité face aux binaires Visual Basic 6, la présence d'une couche d'obscurcissement Lua dans le logiciel malveillant Flame de 2012 et le virus Grip, qui contenait un interpréteur Brainfuck codé en Assembleur pour générer ses codes clés.

    La réécriture des maliciels dans un nouveau langage complique la détection

    Selon le rapport de l'étude, même si les logiciels malveillants écrits en C restent les plus répandus, les opérateurs de logiciels malveillants, principalement les groupes de pirates informatiques connus tels qu'APT29, incluent de plus en plus de langages de programmation de logiciels malveillants atypiques dans leur arsenal. Par exemple, l'acteur de la menace APT29 a récemment utilisé Python dans son logiciel malveillant Masepie pour attaquer l'Ukraine.

    Nom : Capture d'écran 2025-03-31 224659.png
Affichages : 554
Taille : 58,4 Ko
    Figure 2 : Répartition des principaux langages de programmation des échantillons d'APT par année

    En outre, selon le rapport de l'étude, dans son logiciel malveillant Zebrocy, l'acteur de la menace APT29 a utilisé un mélange des langages Delphi, Python, C# et Go. De même, le ransomware Akira est passé de C++ à Rust, le ransomware BlackByte est passé de C# à Go, et Hive a été porté à Rust.

    Dans une certaine mesure, les chercheurs estiment qu'il s'agit simplement d'une variante de la sécurité par l'obscurité : lorsque moins de personnes sont familiarisées avec un langage donné, on peut s'attendre à moins de détection manuelle et les outils automatisés auront moins d'échantillons.

    Les auteurs de l'étude ont également alerté sur une autre découverte. Selon le rapport, les mécanismes de détection automatique basés sur les signatures des logiciels malveillants identifiés ne fonctionneront pas lorsque les logiciels malveillants ont été réécrits dans un autre langage. Les chercheurs notent que certains langages, comme Haskell et Lisp, utilisent un modèle d'exécution différent de celui des logiciels malveillants développés en langage C.

    D'autres langages, tels que Dart et Go, peuvent ajouter un grand nombre de fonctions à l'exécutable dans le cadre de leur environnement standard, ce qui complique même les programmes les plus simples. Pour mieux comprendre pourquoi certains langages résistent mieux à l'analyse que d'autres, l'équipe a examiné un ensemble de près de 400 000 exécutables Windows provenant de MalwareBazaar, dédié au partage d'échantillons de logiciels malveillants.

    Les chercheurs ont constaté que le langage de programmation utilisé affecte non seulement le taux de détection des logiciels malveillants, mais également que le choix du compilateur fait une différence. L'équipe de recherche explique notamment :

    Citation Envoyé par Extrait du rapport de l'étude

    Alors que l'on pourrait s'attendre à ce que les langages de programmation les moins utilisés, comme Rust et Nim, aient des taux de détection plus faibles parce que la rareté des échantillons ne permettrait pas de créer des règles robustes, l'utilisation de compilateurs non largement répandus, comme Pelles C, Embarcadero Delphi et Tiny C, a un impact plus important sur le taux de détection.
    Après avoir examiné un ensemble de données plus limité, axé sur les APT (Advanced Persistent Threat - menaces persistantes avancées), l'équipe de recherche affirme qu'il est clair qu'au fil du temps, les auteurs d'APT ont diversifié leur choix de langages de programmation et de compilateurs.

    L'un des moyens utilisés par les chercheurs pour examiner les différences entre les logiciels malveillants et les langages de programmation a consisté à évaluer la capacité des binaires à résister à la recherche de motifs de shellcodes, c'est-à-dire à la recherche d'ensembles d'instructions malveillantes.

    Les maliciels sont plus faciles à trouver dans les langages les plus populaires

    Les résultats ont montré des variations significatives d'un langage à l'autre, et ont souligné pourquoi les logiciels malveillants sont plus faciles à trouver dans les langages plus populaires. « Les échantillons écrits dans des langages tels que C et C++ conservaient généralement tous les octets du shellcode dans un ordre séquentiel ou présentaient un écart fixe entre les octets, ce qui permettait une détection relativement simple », expliquent les auteurs.

    « Mais d'autres langages présentaient une fragmentation importante des octets et des variations dans la disposition de la mémoire, ce qui compliquait la détection statique », ont-ils ajouté. Ils citent Rust, Phix, Lisp et Haskell comme des langages qui distribuent les octets de shellcode de manière irrégulière ou non évidente.

    Selon l'équipe de recherche, il existe d'autres raisons pour lesquelles les langages les moins populaires peuvent rendre plus difficile la détection des logiciels malveillants, comme la complexité des fonctions exécutées, le nombre d'appels indirects et de sauts exécutés, et le nombre de threads créés.

    Citation Envoyé par Extrait du rapport de l'étude

    Les logiciels malveillants sont principalement écrits en C/C++ et compilés avec le compilateur de Microsoft. Cependant, notre travail montre pratiquement qu'en déplaçant la base de code vers un autre langage de programmation ou compilateur moins utilisé, les auteurs de logiciels malveillants peuvent réduire de manière significative le taux de détection de leurs binaires tout en augmentant l'effort de rétro-ingénierie des analystes de logiciels malveillants.
    Ainsi, selon les auteurs, le code des langages les moins populaires mérite plus d'attention de la part de la communauté de la sécurité et des outils de détection plus pertinents. L'étude a été soutenue par la Commission européenne dans le cadre du programme Horizon Europe, qui fait partie du projet SafeHorizon.

    Source : rapport de l'étude (PDF)

    Et vous ?

    Quel est votre avis sur le sujet ?

    Voir aussi

    Go et WebAssembly, une alternative prometteuse à React ? Dagger tente l'approche pour optimiser les performances de son frontend et unifier sa base de code

    Les développeurs sont de plus en plus confiants en matière de cybersécurité, mais y consacrent trop de temps, 72 % d'entre eux déclarant passer plus de 17 heures par semaine à des tâches liées à la sécurité

    Nouvelles exigences de sécurité adoptées par le secteur des certificats HTTPS, pour garantir des connexions réseau sûres et fiables

  2. #2
    Invité
    Invité(e)
    Par défaut
    Delphi n'est pas un langage, c'est un RAD.
    Le langage, c'est le Pascal orienté objet.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 604
    Par défaut
    Oui et non, Delphi c'est un RAD, donc un EDI, mais aussi un langage, parfois appelé "Delphi Langage".
    Oui en théorie c'est une sorte de "Pascal orienté objet", mais c'est une invention de (feu) Borland pas un standard, donc en fait c'est le "Delphi langage".

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mingolito Voir le message
    Oui et non, Delphi c'est un RAD, donc un EDI, mais aussi un langage, parfois appelé "Delphi Langage".
    Oui en théorie c'est une sorte de "Pascal orienté objet", mais c'est une invention de (feu) Borland pas un standard, donc en fait c'est le "Delphi langage".
    Avec tout mon respect, je me permets de vous contredire.
    Delphi est un EDI englobant un ensemble de bibliothèques écrites pour une bonne partie en Pascal Objet et en Assembleur pour les parties bas niveau, il est l'évolution naturelle de Borland Turbo Pascal et cet EDI utilise le langage Pascal Orienté Objet depuis ses premières versions, bien avant qu'Embarcadero ne rachète cet outil de Borland.
    Je tiens aussi à préciser que l'informatique est binaire, un outil ne peut pas être quelque chose et son inverse, on ne peut donc pas commencer une phrase par "Oui et non" sauf si nous parlons d'informatique quantique, mais je pense que c'est trop prématuré, vu qu'elle n'est qu'à ses balbutiements.
    Si je me permets d'insister, c'est parce que j'ai codé avec les produits Borland depuis leurs premières versions. J'ai aussi utilisé Delphi depuis ses premières versions sur certains de mes projets professionnels, jusqu'à son rachat par Embarcadero.

    PS : Pascal est un langage informatique qui existe depuis 1970, 13 ans avant l'existance de la société Borland.
    Il suffit de consulter leurs pages Wikipedia pour enrichir sa culture générale.
    Langage Pascal : https://fr.wikipedia.org/wiki/Pascal_(langage)
    Société Borland : https://fr.wikipedia.org/wiki/Borland

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 604
    Par défaut
    Oui merci je sais tout cela mais cela ne contredit en rien mon explication.

    Le langage intégré dans Delphi, le Delphi langage dérivé du Pascal est une invention de Borland uniquement pour Delphi : "Le Pascal Objet prend un nouvel essor en 1995 avec la sortie de Delphi 1, toujours à l'initiative de Borland. "
    Delphi est à la fois un langage de programmation orienté objet et un environnement de développement intégré (EDI) pour ce langage. et encore ici par exemple : "Delphi est à la fois le nom d’un environnement de développement et le nom d’un langage de programmation."


    Tu as raison d'écrire que Delphi est un RAD, ou encore un EDI, mais depuis la sortie de Delphi (et oui moi aussi j'étais la) il est possible et même d'usage de dire que Delphi est aussi un langage, c'est possible aussi d'écrire "Delphi langage" pour être plus précis, et en effet Delphi Langage c'est du Pascal orienté objet.

    Le langage Pascal a été normé à l'époque avec ISO 7185.
    Le Delphi langage n'est pas du Pascal normé ISO 7185, c'est un dérivé du Pascal ISO 7185, mais c'est un langage propriétaire, donc le Delphi langage.

    Par exemple la VCL c'est une pure invention Borland, rien à voir avec la norme ISO Pascal, je cite : "A key aim of the VCL combined with the Delphi language was to change the requirements of building a user interface"

    Avant la sortie de Delphi c'était pareil avec les Turbos, le Turbo Pascal est un EDI, et un langage, le Turbo Pascal est dérivé du Pascal ISO 7185, mais c'est en vérité aussi un langage, le Turbo Pascal, de (feu) Borland.

    Historique :

    1968 : Début du Pascal
    1974 : The ISO 7185 was stated to be a clarification of Wirth's language
    1983 : the language was standardized in the international standard IEC/ISO 7185
    1990 : ISO/IEC 10206: Extended Pascal
    1995 : Delphi 1 est édité par Borland.

    Le Delphi langage de Delphi n'a pas de norme ISO Pascal, c'est du Delphi langage, une invention de Borland, basée sur le Pascal.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mingolito Voir le message
    Oui merci je sais tout cela mais cela ne contredit en rien mon explication.

    Le langage intégré dans Delphi, le Delphi langage dérivé du Pascal est une invention de Borland uniquement pour Delphi : "Le Pascal Objet prend un nouvel essor en 1995 avec la sortie de Delphi 1, toujours à l'initiative de Borland. "
    Delphi est à la fois un langage de programmation orienté objet et un environnement de développement intégré (EDI) pour ce langage. et encore ici par exemple : "Delphi est à la fois le nom d’un environnement de développement et le nom d’un langage de programmation."


    Tu as raison d'écrire que Delphi est un RAD, ou encore un EDI, mais depuis la sortie de Delphi (et oui moi aussi j'étais la) il est possible et même d'usage de dire que Delphi est aussi un langage, c'est possible aussi d'écrire "Delphi langage" pour être plus précis, et en effet Delphi Langage c'est du Pascal orienté objet.

    Le langage Pascal a été normé à l'époque avec ISO 7185.
    Le Delphi langage n'est pas du Pascal normé ISO 7185, c'est un dérivé du Pascal ISO 7185, mais c'est un langage propriétaire, donc le Delphi langage.

    Par exemple la VCL c'est une pure invention Borland, rien à voir avec la norme ISO Pascal, je cite : "A key aim of the VCL combined with the Delphi language was to change the requirements of building a user interface"

    Avant la sortie de Delphi c'était pareil avec les Turbos, le Turbo Pascal est un EDI, et un langage, le Turbo Pascal est dérivé du Pascal ISO 7185, mais c'est en vérité aussi un langage, le Turbo Pascal, de (feu) Borland.

    Historique :

    1968 : Début du Pascal
    1974 : The ISO 7185 was stated to be a clarification of Wirth's language
    1983 : the language was standardized in the international standard IEC/ISO 7185
    1990 : ISO/IEC 10206: Extended Pascal
    1995 : Delphi 1 est édité par Borland.

    Le Delphi langage de Delphi n'a pas de norme ISO Pascal, c'est du Delphi langage, une invention de Borland, basée sur le Pascal.
    Merci d'avoir partagé tous ces détails, mais avant tout, je tiens à corriger certaines informations :
    1. Les usages ne font pas la norme et ne donnent pas de légitimité à moins de passer par la case normalisation.
    2. Pascal n'est pas un langage propriétaire, il est dans le domaine public, toute personne ayant les compétences techniques lui permettant d'écrire un interpréteur et un compilateur du langage Pascal (en se basant sur les normes et références du langage) est libre de le faire.
    3. Si mes souvenirs sont bons, la VCL est la bibliothèque graphique utilisée par Delphi et il me semble qu'elle était écrite en Pascal Objet et en Assembleur, je ne comprends pas en quoi cette dernière est pertinente pour démontrer que cet EDI basé sur le langage Pascal Objet puisse être considéré comme étant un nouveau langage informatique.
    4. Le Turbo Pascal n'est pas un langage, mais un outil de développement + compilateur pour le Pascal ou le Pascal Orienté Objet.


    En ce qui me concerne, lorsqu'on m'assure qu'une méthode ou qu'un outil de programmation est un langage de programmation informatique, je demande à ce qu'on me communique la norme et références "Specification Request" relatives à ce nouveau langage, comme c'est le cas par exemple pour les langages Pascal, C, C++, Java, C#, etc.

    Ex :
    Pascal, C, C++ : https://www.iso.org/fr/committee/452.../1/u/0/w/0/d/0
    Java : https://www.jcp.org/en/jsr/overview
    C# : https://learn.microsoft.com/fr-fr/do...tals/standards

    Ce type d'approche est considéré par les éditeurs et les clients finaux comme étant une garantie de pérennité et de sérieux de la part des initiateurs d'un projet de langage informatique et cela compte énormément dans le cadre des projets de développements informatiques.
    Maintenant, mes informations ne sont pas très à jour concernant Delphi peut-être que ce dernier a été normalisé en tant que langage informatique.
    Si vous avez cette information, je suis preneur.
    Merci.
    Dernière modification par Invité ; Aujourd'hui à 03h21.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2024, 20h14
  2. Réponses: 5
    Dernier message: 20/12/2022, 12h59
  3. Réponses: 0
    Dernier message: 15/04/2018, 10h24
  4. Réponses: 10
    Dernier message: 15/04/2008, 15h26
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo