Developpez.com

Le Club des Développeurs et IT Pro

Un malware développé en Java exploite une faille de la plateforme

Pour infecter des appareils Windows, Linux et Mac OS

Le 2014-01-29 20:54:05, par Francis Walter, Expert éminent sénior
Un malware développé en Java exploite une faille de la plateforme
pour infecter des appareils Windows, Linux et Mac OS

Des chercheurs ont décelé un malware capable d’infecter les ordinateurs fonctionnant sous Windows, Mac OS ou Linux. Les systèmes ayant installé la machine virtuelle Java d’Oracle sont concernés. Les chercheurs ont publié les informations concernant le malware dans un billet de blog de Kaspersky Lab.

Le malware est entièrement développé en Java. Il exploite une faille de la plateforme Java 7 Update 21 et toutes les versions antérieures. Bien que la vulnérabilité ait été corrigée par la mise à jour de Java publiée en juin par Oracle, le nombre d'utilisateurs encore sur les versions antérieures reste assez important pour tirer la sonnette d'alarme.

Les chercheurs expliquent que, pour rendre « l’analyse et la détection du malware plus difficile, ses développeurs ont utilisé l’obfuscateur Zelix Klassmater ». Les développeurs du malware ont utilisé différentes clés pour chaque classe utilisée, ce qui rend l’analyse beaucoup plus fastidieuse, d’autant plus qu’il faut « analyser toutes les classes dans l’ordre pour trouver les clés de décryptage ». De même, les constantes de type chaîne de caractères sont chiffrées. Un algorithme de déchiffrement des chaînes se présente comme suit :
  • prendre l'indice courant d'un caractère dans la chaîne cryptée ;
  • calculer le reste de sa division par 5 ;
  • choisir la clé courante en fonction du résultat ;
  • identifier le caractère décrypté en effectuant un module d’addition de 2 bits avec la clé sélectionnée.


L’algorithme de déchiffrement des cas particuliers se présente comme suit :


Le malware se copie dans le répertoire personnel de l’utilisateur, puis s’enregistre en tant que service système pour s’exécuter au démarrage du système. Pour l’exécution automatique au démarrage, les commandes suivantes sont utilisées en fonction de chaque OS :
  • Windows : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • Mac OS : le service standard launchd est utilisé
  • Linux : /etc/init.d/

Après s'être enregistré en tant que service système, le malware envoie un signal à ses propriétaires avec un identifiant enregistré dans le fichier jsuid.dat dans le répertoire personnel de l’utilisateur. Le malware utilise ensuite la plateforme PircBot pour établir une communication via le protocole IRC en attente d’instructions de ses propriétaires.

Source : blog Kaspersky Lab

Et vous ?

Qu’en pensez-vous ?
Avez-vous déjà rencontré ce malware ?
  Discussion forum
9 commentaires
  • Pilru
    Membre éclairé
    Sauf si le malware provoque une élévation de privilège (ce qui n'est pas mentionné), l'infection de système Linux me parait douteuse.

    Si l'utilisateur n'est pas root, il est impossible d'aller placer un fichier dans /etc/init.d et de lui donner les droits d'exécution;

    Et copier un fichier dans /etc/init.d n'est pas suffisant pour qu'il soit éxécuté au boot...
  • Traroth2
    Membre émérite
    "Il exploite une faille de la plateforme Java 7 Update 21"

    Il y a donc une solution toute trouvée : mettre à jour à la dernière version, qui est l'update 51.
  • Shuty
    Membre éprouvé
    L'obfuscation ... Moi qui ne connaissait absolument pas ce type de procédé, je suis plutot bien surpris !

    Pour ceux qui ne comprennent pas vraiment le fonctionnement, j'ai trouvé des lien biens sympa, dont un de dvlp:
    http://www.the-playground.dk/index.p...ing-encryption

    http://cyberzoide.developpez.com/sec...e/obfuscation/
  • Mr_Exal
    Membre expert
    Envoyé par Pilru
    Sauf si le malware provoque une élévation de privilège (ce qui n'est pas mentionné), l'infection de système Linux me parait douteuse.

    Si l'utilisateur n'est pas root, il est impossible d'aller placer un fichier dans /etc/init.d et de lui donner les droits d'exécution;

    Et copier un fichier dans /etc/init.d n'est pas suffisant pour qu'il soit éxécuté au boot...
    bash + cron mais bon si il est pas root ...

    Question qui n'a rien à voir : Tu fais de l'ASP .Net sous Debian ?
  • Bestel74
    Membre confirmé
    [Troll]
    Write once, run anywhere
    [/Troll]

    Effectivement je comprends pas l'infection sous Linux... si un expert passe par là, on est 2
  • Dominik94
    Membre habitué
    sur windows seven, pareil, il faut autoriser l'installation de l'appli en tant qu'admin.
    donc en clair, il faut avoir oublié de faire la màj java depuis des mois et ensuite autoriser l'appli à s'exécuter avec un niveau d'autorisation admin.
    Et après, si tu as un firewall, il faut que t'autorises les appels sortants de cette appli
    Ca fait beaucoup de si, non ?
  • steel-finger
    Membre confirmé
    Je pense qu'il faut ce posé la bonne question avant de dire que sous linux, c'est impossible qu'on sois infecté par ce malware, dans cette article il manque quelque chose de primordiale comment ce malware s'installe t'il ?
  • Hervé Autret
    Nouveau membre du Club
    Bonjour,

    D'après cet article :
    pour rendre l’analyse et la détection du malware plus difficile, ses développeurs ont utilisé l’obfuscateur Zelix Klassmater
    Nul doute que ce cryptage complique son analyse, mais sa détection ? je ne vois pas en quoi ça la complique, si ce codage est indépendant de la plate-forme où il est réalisé : une fois la chaîne à chercher connue, l'antispyware devrait être en mesure de la trouver ? Mais bon, ce sont peut-être juste mes lacunes en cryptographie qui s'expriment là.
    Par ailleurs beaucoup de lignes sont consacrées à décrire cet aspect du malware, alors qu'il n'est qu'anecdotique par rapport à comment s'en protéger, ou comment l'éliminer, par exemple.

    Après s'être enregistré en tant que service système, le malware envoie un signal à ses propriétaires avec un identifiant enregistré dans le fichier jsuid.dat dans le répertoire personnel de l’utilisateur.
    Autre bizarrerie : pourquoi enregistrer l'ID dans « le répertoire personnel de l’utilisateur » si le process s'exécute avec des privilèges ? Quel utilisateur ? celui qui a installé le bot ? Alors il doit exister un autre fichier de conf' quelque part ? Ou bien c'est ce chemin qui est crypté dans le code ? Alors autant y coder la clef directement... Bref, tout ça n'est pas très clair mais encore une fois je suis assez ignare en crypto.
  • Matthieu Vergne
    Expert éminent
    Envoyé par Francis Walter
    identifier le caractère décrypté en effectuant un module d’addition de 2 bits avec la clé sélectionnée.
    Hum, je sais que je suis pas un expert en sécurité, mais un module d'addition de 2 bits... même si je m'imagine le module d'un nombre imaginaire j'ai du mal à faire le lien... Parlerait-on d'une addition modulo 2 avec les bits de la clé ?