Analise ao Emotet

  • Publicado: Sex, 27/12/2019 - 13:41

(Macros Maliciosas)

O Emotet é um Trojan que se espalha principalmente através de e-mails de spam. A infecção pode chegar através de scripts mal-intencionados, documentos Word com macros ou links mal-intencionados.

Nesta analise, exploraremos um documento do Word com uma macro maliciosa, que contém a capacidade de realizar o download e executar o malware Emotet sem você perceber.

Provavelmente já recebeu esse tipo de e-mail ou pelo menos já viu um semelhante:

 

Geralmente exigem um pagamento e vêm acompanhado por um anexo em Word, incentivando ao utilizar a abrir o anexo, imaginando o que está de errado...

Já tendo a amostra do Word, iniciaremos a análise verificando se o documento contém algum tipo de macro ou objeto flash usando a Ferramenta Oleid.

Como se vê na imagem acima, a amostra contém macros VBA.

Sendo que estamos a trabalhar com um documento do Word, podemos utilizar o Olevba Tool para extrair as macros ou desmontar o documento usando um programa de arquivos como o 7-Zip.

Depois de isolar as macros num ficheiro .txt, vou abri-lo com o Notepad ++.

Como podemos ver, há um grande número de linhas de comentário nesta macro, normalmente sao usadas em macros de emotet, com o objetivo de dificultar a análise. Vamos limpar todas as linhas de comentários e ver o que temos aqui.

Agora que está organizado e limpo das linhas de comentário, localizamos a "sub autoopen" (em VBA para executar uma ação utiliza-se "sub" e para executar uma tarefa que retorna um resultado, deve-se utilizar "function"), e agora sabemos onde a macro inicia. Podemos observar tambem mais linhas de codigo inuteis, por exemplo, a variável local chamada “Credit_Card_Accountsuj” usada no loop “While” (While Credit_Card_Accountsuj = wdXMLValidationStatusOK) nunca é executada, o que significa que podemos excluir esta parte do código e filtrar o desnecessário.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Uma imagem com captura de ecrãDescrição gerada automaticamente

A única coisa que a "autoopen" realiza é executar a função "synergisticjd".

Uma imagem com captura de ecrãDescrição gerada automaticamente

A primeira coisa que notamos é a variável "transmitoic" que parece ser uma string. Como "Bedfordshireamd" é uma variável nula, a sequência começa com a letra "p" e executa a função "executivehvd" com os valores de "Kenyan_Shillingskf.mobilejis" e "Kenyan_Shillingskf.freshthinkingjzs".

transmitoic = Bedfordshireamd + "p" + executivehvd(Kenyan_Shillingskf.mobilejis + Kenyan_Shillingskf.freshthinkingjzs)

Esses valores estão ocultos nos objetos Kenyan_Shillingskf e não no VBA. Estes valores podem ser encontrádos usando a Ferramenta Oledump / Olebrowse ou, alternativamente, indo para a pasta ObjectPool e verificando os objetos, caso tenha optado por usar o 7-Zip.

Uma imagem com captura de ecrãDescrição gerada automaticamente

 

Uma imagem com captura de ecrãDescrição gerada automaticamente

Uma imagem com captura de ecrãDescrição gerada automaticamente

Agora que temos os valores, podemos prosseguir para a função e ver o que ela faz.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Parece que recebe esses valores e usa a função "Replace" para trocar os "91" na string por espaços em branco.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Após a função "executivehvd" ser executada, terminamos com um script em PowerShell que serve para realizar o download de um ficheiro executável e começa o segundo Estado do Emotet.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Á medida que avançamos, podemos ver que a variável "Iceland_Kronajum = Producerpvz" é nula e abaixo dela existe um "Set transmitterfzh = CreateObject ()" criando um objeto. Nesse objeto, é utilizado novamente a função "executivehvd" que apaga o "91" e passa uma string, utiliza o "CStr (91)" que transforma o valor Number em uma String e a outra que contem "9191wi9191n91mg91m91ts9191: Wi9191n3912_91Proc9191ess9191". Que resulta em "set transmitterfzh = CreateObject (winmgmts: Win32_Process)".

Uma imagem com captura de ecrãDescrição gerada automaticamente

Na linha a seguir, encontramos a macro que utiliza a variável "transmitterfzh" para chamar o método "create" do Win32_Process, usando os parâmetros "transmitoic" (PowerShell) e a função "extensibletok".

Examinando o “extensoibletok”, há outra variável oculta nos objetos Kenyan_Shillingskf (Kenyan_Shillingskf.San_Marinoisn). Utilizando os mesmos meios que anteriormente utilizamos obtermos o valor “91w91i91n91m91g91m91t91s91: 91w91i91n91391291_91p91r91o91c91e91s91s91s91t91a91r91t91u91p” que traduz para “winmgmts: win32_processstartup” usando a função “executivehvd”.

Uma imagem com captura de ecrãDescrição gerada automaticamente

A figura acima mostra a macro configurando a propriedade ShowWindow do win32_processstartup para False, permitindo que ela seja executada em segundo plano despercebida, e executa o script de shell.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Ao limpar o código no Notepad ++, obtemos o seguinte:

Uma imagem com captura de ecrãDescrição gerada automaticamente

Agora podemos ver que algumas das variáveis ​​são nulas e nunca chamadas, o que significa que podemos excluí-las. Existe um nome chamado "119" usado em $ Personal_Loan_Accountsrt = $ env: userprofile + '' \ '+ $ repurposejum +' exe ';

esta variável é usada para criar o caminho do windows para o ficehiro 119.exe na pasta do utilizador, neste caso $ Personal_Loan_Accountsrt = C \ users \ myuser \ 119.exe.

Seguido por um novo objeto que utiliza o netwebclient para enviar pedidos http.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Seguido pela lista de domínios separados pelo símbolo "@" e um loop Foreach para verificar cada domínio, realizando o download do ficheiro para o local do user com o nome do executável.

Uma imagem com captura de ecrãDescrição gerada automaticamente

A última parte do script é basicamente a ultima verificação para se o objeto foi criado e se é o ficheiro certo (atravez do seu tamanho). Caso isso seja verdade, o executável é executado e o utilizador é oficialmente infectado pelo Emotet.

Infelizmente, a execução do script do PowerShell não é mais possível, pois todos os domínios da lista já não se encontram em funcionando e não podem realizar o download do executável.

Uma imagem com captura de ecrãDescrição gerada automaticamente

Uma imagem com captura de ecrãDescrição gerada automaticamente