dimanche, avril 25, 2010

Remote download execution avec Java

Cet article va traiter d'une attaque devenue très populaire, l'exécution d'un fichier malicieux par le biais d'une applet java.

Introduction

Comment ce genre d'attaque est-il possible ?

La plate-forme Java fut l’un des premiers systèmes à offrir le support de l’exécution du code à partir de sources distantes. Un applet peut fonctionner dans le navigateur web d’un utilisateur, exécutant du code téléchargé depuis un serveur HTTP.

Le code d’une applet fonctionne dans un espace très restrictif, ce qui protège l’utilisateur des codes erronés ou mal intentionnés. Cet espace est délimité par un objet appelé gestionnaire de sécurité. Un tel objet existe aussi pour du code local, mais il est alors par défaut inactif. Le gestionnaire de sécurité (la classe SecurityManager) permet de définir un certain nombre d’autorisations d’utilisation des ressources du système local (système de fichiers, réseau, propriétés système, …).

Les éditeurs d’applet peuvent demander un certificat pour leur permettre de signer numériquement un applet comme sûre, leur donnant ainsi potentiellement (moyennant l’autorisation adéquate) la permission de sortir de l’espace restrictif et d’accéder aux ressources du système local.

C'est en utilisant ce certificat qu'une personne mal intentionnée va pouvoir créer un applet malveillant et le diffuser.

Analyse de l'attaque

Étant donné que le Java est multi-plateforme, les applets Java peuvent être exécutées sur différents OS, dont Windows (Windows mobile inclus), UNIX, Mac OS, Linux et encore Symbian ce qui permet aux hackers de pouvoir toucher un maximum de public.

Le deuxième avantage de cette attaque est de pouvoir changer le fichier qui sera exécuté via l'applet sans avoir à modifier l'applet lui même.

Fig.1 - Vous avez surement déjà vu ce genre de pop-up sur le web

Donc si l'applet est installé sur une centaine de sites et que l'exécutable devient détecté par beaucoup d'antivirus, le hacker n'a simplement qu'à remplacer le fichier depuis le serveur sur lequel il est hébergé.

Le point faible de ce type d'attaque c'est que le navigateur a besoin du plugin Java pour pouvoir exécuter une applet.

Ce type d'attaque n'est pas nouveau, les premières utilisations datent de 2005, Christopher Boyd, de chez Vital security recherchait des paroles de chansons quand sur certains sites il lui été proposé d'installer une applet Java.

Cet applet téléchargeait un virus et l'exécutait. L'applet a été baptisé à l'époque Java.OpenStream.t
Depuis, de nombreuses variantes ont fait leur apparition...

Création d'un exécutable de test


Pour tester le fonctionnement d'une applet Java de type Download / execute nous allons d'abord créer un exécutable qui nous servira de test. Nous allons utiliser un simple Hello World en C# Télécharger le code source


Explication du code source


Cette application en java va télécharger dans le dossier temporaire du PC de la victime le fichier evil.exe depuis l'URL mise dans url = puis va l'exécuter.


Compilation de l'application


Maintenant que l'on a le Evil.java il va falloir le compiler:

> javac Evil.java

Un fichier Evil.class viens normalement d'être créé dans le répertoire \bin

Il faut maintenant compiler la class en fichier .jar avec la commande suivante:

> jar cf Evil.jar Evil.class


Création d'un certificat


Votre applet est prêt il ne reste plus qu'à le signer avec un certificat. Le certificat sera valide 6 mois. Nous allons utiliser l'outil "keytool" présent dans le dossier \bin pour signer notre applet.


Dans l'invite de commande tapez :

> keytool -genkey –keystore moncert –alias me


Répondez aux questions, retenez bien votre mot de passe pour la clé car il vous sera demandé par la suite.

• Prénom / nom,

• Unité organisationnelle,

• Nom de votre organisation,

• Ville de résidence,

• État ou Province,

• Code pays à 2 lettres.

Pour les informations requises essayez de mettre des données qui n'attire pas l'attention.


Ensuite on valide notre certificat :

> keytool -selfcert –keystore moncert -alias me


Voila notre certificat est prêt, on doit maintenant l'assigner à notre applet:

> jarsigner –keystore moncert Evil.jar me


Installation de l'applet sur une page web


La dernière étape est l'insertion du code qui exécutera notre applet sur une page web.


Vous uploadez les fichiers Evil.class et Evil.jar sur votre site puis un fichier php qui contient:

Voilà votre applet prêt à fonctionner. Une fois le bouton « Exécuter » cliqué, evil.exe se télécharge dans le répertoire TEMP de votre ordinateur et s'exécute.


Prévention contre ce type d'infection


Comme on peut le voir, n'importe quel site peut-être utilisé à des fins de transmission de malware via une simple applet Java. Il convient donc d'être très prudent lorsqu'on nous propose l'installation d'un plugin java, même si vous faîtes confiance au site, car il a peut être été modifié par une personne malveillante. Pour sécuriser votre navigation vous pouvez désactiver les plugin Java ou encore les filtrer.


Conclusion


Si vous ne désactivez pas les scripts Java, à vous de faire attention à ne pas autoriser les scripts de sites douteux ou signés par des entreprises méconnues. Ces applets Java peuvent-être partout donc soyez vigilants.


Source: Hakin9.org

Aucun commentaire: