Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Jellyfish : un malware Linux qui utilise le GPU pour dissimuler son activité
Les développeurs à son origine ont aussi créé une variante pour Windows

Le , par Olivier Famien

21PARTAGES

8  0 
Les recherches en matière de protection étant assez avancées dans le domaine de la sécurité informatique, les personnes malveillantes ne manquent pas d’inventivité pour mettre sur pied des malwares de plus en plus sophistiqués afin de parvenir à leurs fins.

Pour alerter les acteurs du domaine, un groupe de développeurs vient de mettre sur pied une preuve de concept d’un malware capable d’infecter un PC sous Linux en exploitant une faille de la carte graphique. Le malware baptisé Jellyfish est en fait un rootkit conçu pour surveiller le noyau du système à partir du processeur graphique en passant par l’accès direct à la mémoire. Ce qui signifie qu’aucun recours au CPU n’a lieu pendant l’exécution du code malicieux.

Pour que Jellyfish puisse s’exécuter sur Linux, il faut que l’API OpenCL soit installé sur le système. En ce qui concerne les GPU, les deux grandes plateformes sont supportées de fait (AMD et NVidia). Le SDK de AMD étant compatible avec les processeurs graphiques Intel, il faut donc ajouter ce dernier à la liste des GPU susceptibles d’être infectés.

La complexité de cette technique d’infection réside dans le fait que le GPU n’étant pas accessible par les moyens usuels de contrôle des infections, le code malveillant peut s’exécuter de manière furtive sans que l’utilisateur s’en aperçoive.

Pour aller plus loin dans cette expérience, l’équipe de développeurs a également créé un enregistreur de frappes (keylogger) dénommé Demon à partir de code malicieux.

Les tests ont été effectués avec un PC Linux 32 bits équipé d’une carte graphique NVidia. Pour parvenir à détecter les saisies au clavier, les développeurs ont suivi plusieurs étapes. L’objectif fixé était d’accéder à la mémoire tampon du clavier, plusieurs contraintes se posaient.

De prime abord, l’espace mémoire dédié aux structures de données n’est pas fixe à chaque démarrage. De même, les fonctionnalités du système d’exploitation ne permettent pas non plus de parcourir les pages des régions de la mémoire que si ces dernières sont mappées à un processus. Or il se trouve que la solution envisagée dans ce cas de figure se soustrait de toute utilisation de code ou la manipulation des structures de données. La dernière option viable était donc de balayer l’ensemble des régions de la mémoire afin de détecter l’adresse mémoire de la mémoire tampon du clavier.

Pour ce faire, les développeurs ont mis au point un module afin de donner à l’enregistreur de frappes les privilèges administrateur pour qu’il puisse analyser l’ensemble des régions de la mémoire contenant le noyau du système d’exploitation et les structures de données. Ce code qui s’exécute à partir du noyau du système permet de détecter l’adresse physique de la mémoire tampon du clavier.

L’enregistreur de frappes situé dans la mémoire du GPU entre maintenant en action en instruisant le processeur graphique pour qu’il surveille de manière prudente tous les évènements issus du clavier en passant l’accès direct à la mémoire (DMA). Les frappes surveillées pourront être enregistrées dans la mémoire de cette dernière.

Comme difficulté de détection qu’on peut également citer en utilisant cette méthode, il se trouve que le kernel n’étant pas modifié pour enregistrer les frappes du clavier, les outils de vérification de l’intégrité du noyau ne seront pas utiles pour détecter une éventuelle infection. De même, vu que les tests ont démontré une utilisation du GPU à hauteur de 0,1 %, cela rend encore plus difficile la détection de l’infection par la surveillance des performances du GPU ou CPU.

Bien qu’aucune solution éprouvée ne soit encore disponible, les développeurs préconisent en guise d’alternative d’effectuer un profilage de l’utilisation du GPU ou encore une surveillance de ses modèles d’accès.

Ayant réussi à démontrer qu’une faille dans le GPU peut être utilisée pour infecter Linux, ils ont promis de porter ce même prototype sur Windows pour aller encore plus loin dans les possibilités offertes.

Pendant que nous achevons cet article, l’équipe de Jellyfish vient de publier la version Windows de ce malware qui s’exécute en utilisant des pilotes CUDA et des API Windows.

Source : GitHub

Et vous ?

Que pensez-vous de cette démonstration d’infection ?

Avez-vous des solutions efficaces ou proactives à présenter ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de guzudotnet
Nouveau Candidat au Club https://www.developpez.com
Le 12/05/2015 à 8:23
Rien de très neuf sous le soleil, sauf qu'ils ont réussi avec une carte graphique. Le seul truc intéressant c'est la possible persistance après reboot, parce que sinon le rootkit devrait être arrêté par l'activation de l'IOMMU (VT-d chez Intel).
0  0