Analise ao Emotet
(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.
A única coisa que a "autoopen" realiza é executar a função "synergisticjd".
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.
Agora que temos os valores, podemos prosseguir para a função e ver o que ela faz.
Parece que recebe esses valores e usa a função "Replace" para trocar os "91" na string por espaços em branco.
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.
Á 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)".
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”.
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.
Ao limpar o código no Notepad ++, obtemos o seguinte:
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.
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.
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.