[TECH] Détourner à son avantage les langages de script

ѠOOT

[TECH] Détourner à son avantage les langages de script

par ѠOOT »

Malekal Entertainment présente : l'imprononçable Tristes surprises sur scripts. Il y en a qui se réveillent en imaginant quel temps il fera... d'autres s'interrogent sur le cybermachin et ceux qui louchent sur leur chocapics en se demandant comment automatiser des traitements sur un volume illimité de fichiers scripts malveillants de type VBS. C'est ainsi que Malekal m'a laissé un message du genre, t'aurais pas une idée pour... puis m'a donné quelques échantillons avant de me taper virtuellement sur l'épaule - the force will be with you, always..

AVERTISSEMENT: Ce sujet s'adresse aux curieux souhaitant aller plus loin dans l'étude de codes malveillants : si ce n'est pas votre cas, peut être devriez vous dès à présent passer votre chemin. L'ensemble de nos âneries sont réalisées dans un environnement adapté à l'étude des codes malveillants sous VM, ne reproduisez jamais ces manipulations sur votre propre système d'exploitation.

Que ce soit des scripts vbs, js, php ... les vilains tentent généralement de cacher la misère, ils utilisent différentes méthodes, certains compressent, encodent, chiffrent, d'autres ajoutent pleins de choses superflues,.. ou encore baragouinent en leet speak.

Image

Que faire lorsque vous devez brasser ces contenus exotiques ? L'objectif est toujours à peu près le même à chaque fois : on s'adapte au langage de script afin de ré-écrire et prendre le contrôle. On laisse le "truc" travailler et au lieu d'exécuter, on lui indique d'afficher à l'écran.

Ci-dessous, deux exemples concrets:

Image

Image

Modifier Execute() ou ExecuteGlobal() avec MsgBox() bof, pas pratique...
Alors qu'avec un Wscript.Echo(), c'est déjà un peu mieux.

Image

Pour rediriger la sortie dans un fichier:
cscript Elena.vbs > Elena.vb

Ci-dessous, le rendu avec Notepad++

Image

Si on veux enchainer plusieurs traitements, rien de plus simple : un fichier "batch" ou bien si votre Windows est plus récent, un script PowerShell. Autre exemple, sans trop d'intérêt mais pour vous donner des idées : on pourrait tout aussi bien ré-écrire avec du FSO ( FileSystemObject ) pour s'auto-décoder. Si je remplace ExecuteGlobal(M) par:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\"+Wscript.ScriptName+".vb")
objFile.WriteLine M
objFile.Close


nb: Avec M après objFile.WriteLine comme étant la variable repiquée sur ExecuteGlobal(M)

Finalement, il n'y a pas de limites... n'oubliez pas cependant que c'est aussi bien pour vous que pour eux.
Pour ma part, je suis allé plus loin encore puisque j'ai modifié la base de registre à cet endroit.

Code : Tout sélectionner

[HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32]
@="C:\\monscript.dll"
"ThreadingModel"="Both"
Ainsi à chaque fois que la machine virtuelle sera lancée, Windows Script Host ( "cscript.exe" ) ira charger la librairie "monscript.dll" qui n'est autre que "vbscript.dll" un tantinet modifiée pour répondre à mes besoins. Pour automatiser les traitements, j'utilise Cuckoo. Il n'y a pas de packages d'analyses par défaut pour vbs alors j'ai adapté le squelette d'un package pour analyser des vbs. De toute façon partir de zéro n'est pas bien compliqué car créer ses packages d'analyse est facile, à condition d'avoir quelques notions de Python.

Avant d'être chargé depuis Cuckoo chaque script est épuré/modifié de ses fonctions "nuisibles" comme expliqué précédemment. Lorsque toutes les tâches à réaliser sont terminées, j'obtiens des scripts "lisibles" ( + des traces, grâce à ma librairie patchée ) exploitables en terme de collecte d'informations.

Comme je vous le disais plus tôt, cette approche est souvent la même, quel que soit le type de script. Souvenez-vous, dans le sujet Au pays des malvertising, sur les traces de la redirection perdue, il était question d'un JavaScript et je vous expliquais comment le décoder et l'embellir en ligne à l'aide de JsBeautifier.

Image

Il n'est pas rare d'avoir des méthodes d'obfuscations non standards ou dans le jargon : exotiques. Dans ces cas là, il m'arrive d'utiliser Ardoise. Sous Mozilla Firefox, je parcours le menu "Outils" → "Developpeur Web" → "Ardoise Javascript"

Prenons un exemple sans danger eval(5*5); si je fais un CTRL+R pour Exécuter depuis l'Ardoise, rien.
En revanche, si je remplace eval() par console.log() alors j'obtiens 25

Ci-dessous, en image... la deuxième ligne démontre que ça fonctionne aussi bien sur le packer Dean Edwards.

Image

En ce qui concerne les scripts php malveillants, les enjeux n'étant pas les mêmes, les attaquants sont encore plus créatifs / inventifs. Pour vous en rendre compte, je vous invite à parcourir l'excellent blog de sucuri.

A vous d'être le plus malin. Retrouvez d'autres sujets classés [TECH], le précédent...
Les rogues font de la résistance - Rétroingénierie & Anti-Virtualization
Malekal_morte
Messages : 112120
Inscription : 10 sept. 2005 13:57

Re: [TECH] Détourner à son avantage les langages de script

par Malekal_morte »

Pour info, le malware évoqué sont des VBS Autoruns qui tapent dur depuis quelques semaines.
J'en parlais il y a quelques temps sur ce billet (qui sera surement mis à jour prochainement) : https://www.malekal.com/2013/07/09/rat-par-vbs/
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
  • Sujets similaires
    Réponses
    Vues
    Dernier message

Revenir à « Tech, Tips & Tricks »