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

Le , par LittleWhite

0PARTAGES

3  0 
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-le nous !

Avatar de Bestel74
Membre confirmé https://www.developpez.com
Le 06/08/2014 à 12:19
Citation Envoyé par LittleWhite Voir le message
Si vraiment vous scannez le dossier de la base de registre (je ne sais plus sous quelle forme elle est réellement stockée) et que l'antivirus repère un virus, il fait quoi ? Il supprime le fichier de la base de registre ?
La suppression de cette clé n'est pas censé affecter le système, si ?

EDIT: je parle bien de supprimer la clé, et non pas le fichier qui l'a contient
2  0 
Avatar de forthx
Membre éclairé https://www.developpez.com
Le 07/08/2014 à 9:59
Je ne sais pas ce qu'il en est actuellement, ca fait un certain temps que je ne me suis pas intéressé aux fonctionnement des antivirus, mais a l'époque de win95 ce genre d'outils scannaient la base de registre. Plus récemment je crois me rappeler que les "anti maleware" se chargent du scan, les clefs run, run_once, ... étant particulièrement ciblées. Du temps de xp j'utilisai HijackThis de temps en temps, je ne sais pas si ca existe toujours, et si il gère les symbole non ascii.

Tout ca pour dire que ... je ne pense pas que ce virus soit a l'abri des anti virus .
2  0 
Avatar de the Hound
Membre éprouvé https://www.developpez.com
Le 07/08/2014 à 10:28
Citation Envoyé par LittleWhite Voir le message
Pire, dans le sens, il n'est vraiment pas possible d'accéder à la base de registre par le fichier, même si vous le lisiez directement avec votre logiciel (tel un fichier comme un autre).
La base de registre étant indispensable au système, seul celui-ci peut y accéder (du moins par défaut). Si un programme/driver/autre a accès en lecture aux fichiers de cette base, il a probablement assez de privilèges pour y accéder en mémoire.

forthx, il me semblait aussi qu'à une époque les antivirus scannaient la base de registre, mais ça a peut-être été abandonné depuis (pour des raisons de performance ?). Si quelqu'un a une info je suis preneur.

Sinon je sais que certains antivirus posent des "hooks" et interceptent tous les appels de fonction en rapport avec la base de registre. Ils peuvent donc tracer les lectures/écritures et détecter les virus à l'enregistrement. (C'est bien pour ça que je ne comprends pas pourquoi il y a un débat sur les fichiers, l'antivirus ne fait pas que scanner des fichiers ... il scanne les processus et modules chargés, le réseau, etc.)

Une hypothèse est une hypothèse. Moi, je n'ai pas vérifié si elle est juste ou fausse (j'ai un peu décroché Windows). Du coup, j'attends vos arguments pour la discréditer, mais, il n'y en a pas réellement
En réalité je ne pense pas que cette hypothèse soit totalement fausse, à mon avis c'est à peu près le comportement que tu proposes avec quelques mécanismes de synchronisation pour pas tout perdre en cas de coupure. ( Ou pas, c'est un Windows )
2  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 06/08/2014 à 12:13
Si vraiment vous scannez le dossier de la base de registre (je ne sais plus sous quelle forme elle est réellement stockée) et que l'antivirus repère un virus, il fait quoi ? Il supprime le fichier de la base de registre ?
1  0 
Avatar de Bestel74
Membre confirmé https://www.developpez.com
Le 06/08/2014 à 12:53
Citation Envoyé par LittleWhite Voir le message
L'antivirus ne traite que les fichiers, en tant que fichier (il n'est pas capable d'analyser le contenu afin d'en extraire la partie infectée). S'il voit un fichier dans une DLL du système, il vous demande de supprimer/mettre en quarantaine la DLL. Il n'est pas capable de virer les parties infectés. Il en sera de même pour la base de registre, certes, il se pourrait que cela corresponde à la définition d'un virus, mais ... s'il supprime le fichier, le système est mort.
J'imagine que c'est peut être même pire, car même si on supprime le fichier de la base de registre, durant l'exécution de Windows, Windows à la fermeture va dumper la base de registre qu'il a en mémoire pour la remettre dans un fichier (afin que les données soient sauvegardés). Mais sur cette dernière hypothèse, je ne sais pas si c'est ce qui est fait.
Je ne vois pas ce qui empêcherait l'antivirus :

- soit de réparer la base de registre
- soit de localiser la clé, et de la supprimer

L'antivirus ne traite que les fichiers => je crois que certains anti-virus "vérifie" déjà les clés non ? En tout cas ça doit être faisable, les anti-adware le font
1  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 06/08/2014 à 13:00
Je ne comprends pas le terme "sans fichier" de l'annonce, il est bien stocké quelque part non ?
Qu'est-ce qui empêche un anti-virus de scanner le répertoire "%SystemRoot%\System32\Config", et ainsi le détecter ?
J'ai testé, les fichiers de ce répertoire sont intouchable (que ce soit pour les supprimer ou pour les ouvrir en lecture).

Oui, j'imagine que l'antivirus pourrait scanner la base de registre (pas les fichiers de la base de registre), mais je n'en suis pas sur qu'il soit vraiment capable de trouver le virus pour autant. Ce n'est pas le seul contenu encodé de la base.

Sinon, je suis perdu par votre raisonnement.
1  0 
Avatar de brnf1
Membre régulier https://www.developpez.com
Le 06/08/2014 à 13:10
En terme de sécurité informatique, la base devrait être de fonctionner sur un compte Utilisateur et non Administrateur.
Si je ne me trompe pas, ce virus ne pourrait donc pas écrire dans la base de registre sans autorisation du compte administrateur.
Mais je me trompe peut être...
1  0 
Avatar de T3hty
Membre à l'essai https://www.developpez.com
Le 06/08/2014 à 14:03
Apparement la clef se trouve dans HKCU, soit HKEY_CURENT_USER, donc à moins qu'une politique AD soit mise en place pour éviter la modification du registre, il me semble qu'un utilisateur non privilégié peut toujours modifier la ruche associé à son compte, dont la CURENT_USER.
1  0 
Avatar de the Hound
Membre éprouvé https://www.developpez.com
Le 06/08/2014 à 14:09
Citation Envoyé par LittleWhite Voir le message
J'ai testé, les fichiers de ce répertoire sont intouchable (que ce soit pour les supprimer ou pour les ouvrir en lecture).
L'antivirus a probablement des privilèges supérieurs aux tiens (même en tant qu'Administrateur). Le driver/module s'exécute dans le kernel space (et peut donc contourner la gestion des droits du système de fichiers).

Dans tous les cas, comme le dit Bestel74, il n'y a rien qui empêcherait un antivirus d'accéder à la base de registre, puisque les utilisateurs peuvent le faire et des programmes le font ...

Citation Envoyé par brnf1 Voir le message
En terme de sécurité informatique, la base devrait être de fonctionner sur un compte Utilisateur et non Administrateur.
Si je ne me trompe pas, ce virus ne pourrait donc pas écrire dans la base de registre sans autorisation du compte administrateur.
Mais je me trompe peut être...
Tu ne te trompes pas, un programme non lancé sur un compte administrateur ne peut pas accéder aux racines "système" (HKLM, HKCR, ...).
1  0 
Avatar de kn_mars
Membre à l'essai https://www.developpez.com
Le 06/08/2014 à 15:34
Le fait de démarrer un virus depuis une clé de registre est assez courant. La différence est qu’ici la clé contient aussi le virus. Les antivirus sont capables de supprimer des clés de registre dangereuses. La difficulté sera d’identifier toutes les variantes du virus (car il va y en avoir…). Néanmoins, même si l’antivirus ne trouve pas le virus, il pourra détecter son exécution et le bloquer (moteur heuristique de l’antivirus). Le virus se relancera mais il ne sera pas vraiment fonctionnel.

Comment pensez-vous vous protéger de Poweliks ?
Comme d'habitude :
Mesures préventives :
  • Tenir à jour son système et ses logiciels
  • Ne pas utiliser en permanence un compte administrateur
  • Ne pas autoriser les exécutions automatiques (clé USB, macro MS Office, etc.)
  • Ne pas ouvrir n’importe quelle application ou site internet


Mesures de détections :
  • Disposer d’un firewall qui bloque les entrées et les sorties (bloquer les sorties vers le réseau tor par exemple et analyser ces sorties)
  • Utiliser un proxy (blocage d’URL dangereuses)


Mesures correctives :

  • Antivirus à jour et correctement configuré (scan des fichiers compressés, un scan complet toutes les semaines, etc.)
  • Disposer d’un autre antivirus qui démarrer idéalement sur un live USB


Que pensez-vous de ce niveau de sophistication dans les logiciels malveillants ?
Il est efficace et le concepteur du virus est malin mais on est très très loin d'un stuxnet... (mais c'est largement suffisant pour prendre le contrôle d'un ordinateur d'une entreprise ou d'une administration )
1  0 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web