• A Inlearn
    • Quem Somos
    • Inlearn US
    • Nossos Parceiros
    • Instalações
    • Clientes
  • Serviços Educacionais
    • Cursos Disponíveis
    • Treinamentos Customizados
    • Projetos Educacionais
    • Modalidades de Entrega
  • Certificações
  • Calendários
    • Fortinet
    • F5
    • Juniper
    • InLearn
    • Turmas Confirmadas
  • Eventos
  • Informações
    • Guia de Facilidades
    • Trabalhe Conosco
    • Termos e Condições Gerais
    • Política de Privacidade
  • Contato
  • Blog

Trojan Emotet: Arquivos do MS Office envolvidos novamente na recente campanha

trojan Emotet
  • Autor: Inlearn
  • Postado: 24/03/2022

O FortiGuard Labs da Fortinet capturou recentemente mais de 500 arquivos do Microsoft Excel envolvidos em uma campanha para entregar um novo trojan Emotet no dispositivo da vítima.

O Emotet, conhecido como Trojan modular, foi descoberto pela primeira vez em meados de 2014. Desde então, tornou-se muito ativo, atualizando-se continuamente. Também tem sido destaque nas notícias de segurança cibernética de tempos em tempos. O trojan Emotet usa engenharia social, como e-mail, para atrair destinatários para abrir arquivos de documentos anexados (incluindo Word, Excel, PDF etc.) isto.

Na Parte I deste post, foi explicado como essa variante do trojan Emotet é espalhada por código VBA malicioso em documentos do Excel, como o malware Emotet baixado é executado em um programa Rundll32, que tipo de técnicas de anti-análise essa variante usa., como ela criptografa e envia os dados de sua vítima para seu servidor C2., o que o trojan Emotet faz quando recebe dados de resposta do servidor C2 e o que o Emotet faz para habilitar a persistência no dispositivo da vítima.

Neste post, você aprenderá como são os dados nos pacotes de resposta com módulos maliciosos, quais módulos foram recebidos do servidor C2 para a campanha atual do trojan Emotet e como eles são implantados no dispositivo da vítima. Você também descobrirá quais dados confidenciais esses módulos roubam do dispositivo da vítima.

Quando o X.dll recebe uma resposta com um módulo

Uma vez que o servidor C2 tenha processado e detectado o primeiro pacote enviado que inclui dados críticos – como a versão do sistema do dispositivo da vítima, arquitetura do Windows, etc. – ele responde com módulos maliciosos para que o trojan Emotet seja executado no dispositivo da vítima. Todos os módulos recebidos são sem arquivo. Ou seja, eles só existem na memória e são processados ​​pelo X.dll (o núcleo do Emotet) executado no Rundll32.exe.

Captura de tela de um módulo descriptografado no pacote
Figura 1.1 – Um módulo descriptografado no pacote

A Figura 1.1 é uma captura de tela do código e da memória do X.dll. A parte inferior é um pacote de resposta de C2, apenas descriptografado na memória chamando uma função de 10012371. Consultar a Figura 5.3 na parte I desta série ajudará você a entender a estrutura do pacote.

A caixa marcada em vermelho são os dados de verificação (99 DE … DD A5), um hash assinado dos dados restantes do pacote. O dword a seguir, 0x00000000, marcado em amarelo, é um sinalizador que informa ao Emotet como executar o módulo respondido. 0x00 diz para executar o módulo em um thread recém-criado. O bloco binário em azul é o módulo. Começa com o tamanho do módulo, 0x79400 neste exemplo, e o resto são os dados binários do módulo (4D 5A 90 00 …).

O Emotet deve verificar os dados descriptografados, conforme mostrado na Figura 1.1, usando os dados de verificação de 40H.

Em seguida, ele implanta o módulo recebido na memória e se prepara para executá-lo. Em seguida, ele chama seu ponto de entrada em um thread recém-criado. Esta postagem se referirá a este módulo como um “módulo de thread”. Seus principais objetivos são extrair e executar o módulo funcional final que rouba dados confidenciais do dispositivo da vítima e enviar os dados roubados ao seu servidor C2, que será discutido mais adiante nesta análise. A Figura 1.2 mostra onde o código ASM da função de thread chama o ponto de entrada do módulo de thread implantado.

Captura de tela da função de thread Emotet para chamar o ponto de entrada do módulo de thread
Figura 1.2 – Função de emotet thread para chamar o ponto de entrada do módulo thread

Thread-Module – Executa o processo de esvaziamento

O módulo de encadeamento prossegue para descriptografar um arquivo PE, o módulo funcional final, de sua seção .text na memória. Para executar este módulo, ele realiza o esvaziamento do processo. Ele faz isso copiando um arquivo do Windows, “certutil.exe”, de “%Windir%\SysWOW64\certutil.exe” ou “%Windir%\system32\certutil.exe” para a pasta “%temp%”. Em seguida, ele o renomeia para um nome de arquivo aleatório, como “uvbubqj.exe”. Em seguida, o módulo de thread cria um processo suspenso com este arquivo.

Captura de tela de Call API CreateProcessW() para criar um processo suspenso
Figura 2.1 – Chamar a API CreateProcessW() para criar um processo suspenso

Como você pode ver na linha de comando na Figura 2.1, “uvbubqj.exe” é o “certutil.exe” copiado, “/scomma” e o arquivo temporário subsequente — “C:\Users\Bobs\AppData\Local\Temp \60B2.tmp” — são os parâmetros para o processo. O nome do arquivo temporário é gerado chamando a API GetTempFileNameW(). O caminho do arquivo temporário “60B2.tmp” é lido pelo módulo funcional e usado para salvar as informações roubadas. O sexto argumento para CreateProcessW() é 0x00000004, que é um sinalizador de criação que indica “CREATE_SUSPENDED” com o qual CreateProcessW() cria um processo e insere o status suspenso.

Em seguida, ele chama um grupo de APIs, como GetThreadContext(), VirtualAllocEx(), ReadProcessMemory(), WriteProcessMemory() e assim por diante, para injetar o módulo funcional final na memória do novo processo. A API SetThreadContext() é chamada posteriormente para definir o novo registro EIP do processo apontando para o ponto de entrada do módulo funcional, que é invocado após chamar a API ResumeThread().

Depois, o módulo de thread começa a monitorar o arquivo temporário em um loop até que ele seja criado com as informações roubadas do dispositivo da vítima.

Olhando para os módulos funcionais

Na análise acima, expliquei como um módulo C2 é carregado e executado no dispositivo da vítima.

O servidor C2 pode retornar muitos módulos, cada um passando pelo mesmo processo descrito acima. Eles terão um módulo de thread, executarão em seu thread e executarão seu próprio processo de esvaziamento.

Recebi três módulos C2. Vou detalhar como eles funcionam no dispositivo da vítima nas seções a seguir.

Module1 – Roubando credenciais dos navegadores de uma vítima

Um packer autoextraível protege este módulo. Ele descriptografa um arquivo PE quando é executado, substitui o código existente de “certutil.exe” e o executa.

O arquivo PE descompactado é um freeware chamado “WebBrowserPassView” desenvolvido pela NirSoft. Ele foi projetado como uma ferramenta de recuperação de senha, mas foi abusado por agentes mal-intencionados para roubar as credenciais da vítima. Uma interface de usuário exibe as credenciais salvas armazenadas em vários navegadores da web.

Captura de tela de Abrir o módulo WebBrowserPassView
Figura 3.1 – Abra o módulo WebBrowserPassView

A Figura 3.1 mostra a aparência deste módulo quando eu o abro em meu ambiente de teste. Esta variante do Emotet usa WebBrowserPassView v2.06.

Seu módulo de thread passa parâmetros de linha de comando como “/scomma C:\Users\Bobs\AppData\Local\Temp\7B3C.tmp” para o processo, que pode alternar WebBrowserPassView para um modo No-Window e salvar as credenciais recuperadas em um dado arquivo temporário.

A partir de seu código, aprendi que ele poderia coletar as credenciais de vários navegadores da web:

Microsoft IE, Microsoft Edge, Google Chrome, Mozilla Firefox, Opera, Apple Safari, SeaMonkey, Yandex, Vivaldi, Waterfox e todos os outros navegadores baseados no Chromium.

As credenciais roubadas contêm as seguintes informações:

• URL: os URLs para os quais as credenciais são salvas
• Navegador da Web: o nome do navegador que contém as credenciais
• Nome de usuário, senha: as credenciais
• Força da senha: forte ou fraca
• Campo de nome de usuário: o tipo de nome de controle no campo de nome de usuário
• Campo de senha: a string inserida no campo de senha
• Hora de criação: quando foi salva
• Hora de modificação: hora em que as credenciais foram atualizadas
• Nome do arquivo: de qual arquivo as credenciais foram roubadas

Todas as credenciais são salvas em um arquivo temporário.

Módulo 2 – Roubando informações de contato de e-mail

Este módulo rouba os contatos de e-mail da vítima de suas pastas de e-mail dentro do Microsoft Outlook, analisando os e-mails da vítima um por um. Ele mantém as informações de contato coletadas em uma estrutura de cadeia duplamente ligada.

A Figura 4.1 mostra um contato de e-mail obtido de um e-mail na minha conta de teste do Outlook que foi então adicionado à cadeia duplamente vinculada, conforme mostrado na parte inferior. Os dados coletados mostram o nome da pessoa e o endereço de e-mail do remetente do e-mail. Neste exemplo, ele coletou “Outlook” e “outlook@email2.office.com” da mensagem de e-mail exibida.

Captura de tela de Um contato roubado em uma cadeia duplamente ligada
Figura 4.1 – Um contato roubado em uma cadeia duplamente ligada

Este módulo enumera todos os e-mails coletados e coloca as informações de contato de e-mail exclusivas na cadeia duplamente vinculada. Para coletar os dados do Outlook, ele precisa chamar várias APIs, incluindo MAPIInitialize(), MAPILogonEx() e MAPIFreeBuffer(), além de criar alguns objetos COM chamando a API CoCreateInstance(), como OlkAccountManager e OlkMail.

Finalmente, ele recupera esses contatos de e-mail da cadeia vinculada um por um e os salva no arquivo temporário que vem do parâmetro da linha de comando. A Figura 4.2 mostra uma captura de tela do arquivo temporário, “%temp%\6827.tmp” neste exemplo, junto com os contatos de e-mail coletados.

Captura de tela do arquivo temporário com informações de contato de e-mail roubadas
Figura 4.2 – O arquivo temporário com informações de contato de e-mail roubadas

Módulo 3 – Roubando as configurações da conta dos clientes de e-mail da vítima

Este módulo funcional se concentra em roubar as configurações da conta de e-mail da vítima e as credenciais de seus clientes de e-mail. Também é um módulo protegido pelo empacotador, portanto, faz a mesma coisa que Module1 quando seu ponto de entrada é chamado.

De acordo com minha análise, o arquivo PE descompactado é um arquivo EXE que é outro freeware da NirSoft chamado “ Mail PassView ”. Ele foi originalmente projetado como uma pequena ferramenta de recuperação de senha para clientes de e-mail. O trojan Emotet está usando a versão mais recente—v1.92. A Figura 5.1 é uma captura de tela deste software em execução no meu ambiente de teste.

Captura de tela do Open Mail PassView no meu ambiente de testeFigura 5.1 – Abra o Mail PassView no meu ambiente de teste

Examinando seu código e strings constantes, descobrimos que ele poderia obter configurações e credenciais de conta de e-mail dos seguintes clientes de e-mail ou outros clientes que poderiam salvar credenciais de e-mail:

Mozilla Thunderbird, Eudora, Microsoft Outlook, Microsoft Outlook Express, Windows Mail, MSNMessenger, Windows Live Mail, Group Mail, IncrediMail, Yahoo! Correio, Yahoo! Messenger, Hotmail, Google Desktop e Google Talk.

Ele coleta as configurações e credenciais do registro do sistema e dos arquivos de configuração local desses clientes de e-mail. A Figura 5.2 é um segmento do código ASM de uma função comum que tem vários nomes de valores predefinidos.

O software lê repetidamente o nome de usuário, endereço do servidor, porta do servidor e informações semelhantes do registro do sistema por meio desses nomes de valor sob as subchaves ” HKCU\Software\Microsoft\Internet Account Manager\Accounts ” e ” HKCU\Software\Microsoft\Office \Outlook\OMI Account Manager\Accounts “, que são os locais para salvar as configurações e credenciais do Microsoft Outlook e do Microsoft Outlook Express.

Captura de tela de nomes de valores definidos para leitura do registro do sistemaFigura 5.2 – Nomes de valores definidos para leitura do registro do sistema

Desta vez, a string do parâmetro de linha de comando para este software é “/scomma C:\Users\Bobs\AppData\Local\Temp\8042.tmp”, onde “/scomma” permite que o processo seja executado sem uma janela e salve o arquivo recuperado informações para o arquivo temporário seguido.

Thread-Module – Enviar dados roubados

Com os módulos funcionais trabalhando para roubar dados confidenciais, o módulo de thread continua monitorando o arquivo temporário até que ele seja criado com as informações roubadas.

Em seguida, ele carrega os dados roubados do arquivo temporário para a memória e exclui o arquivo. Antes de enviar os dados roubados ao servidor C2, ele compacta os dados e os criptografa.

Captura de tela de Call BCryptEncrypt() para criptografar os dados roubadosFigura 6.1 – Chame BCryptEncrypt() para criptografar os dados roubados

Este exemplo, mostrado na Figura 6.1, é onde ele estava prestes a chamar a API BCryptEncrypt() para criptografar o pacote, que começa em 4790E0. A seção destacada em vermelho é como o cabeçalho do pacote. Ele contém o tipo de pacote (0x3EA) que informa ao servidor C2 que tipo de dados está no pacote, um código hash sha256 (69 35 … 3C 4A) dos dados, um ID do módulo (0x14), bem como o ID da vítima . Os dados subsequentes, marcados em azul, começam com um tamanho de dados (0x398) dos seguintes dados (de 10 55 52 4C … até o final), que são as credenciais compactadas do navegador da Web.

Este módulo de thread usa onze servidores C2 para receber dados roubados do dispositivo da vítima. O IP e as portas desses servidores C2 são criptografados na memória e descriptografados antes de enviar os dados roubados. Os três módulos baixados possuem a mesma lista de servidores C2, que pode ser encontrada na seção “IOC” ao final desta análise.

Captura de tela da exibição de um pacote capturado para o servidor C2 com dados criptografadosFigura 6.2 – Exibição de um pacote capturado para o servidor C2 com dados criptografados

A Figura 6.2 é uma captura de tela de uma ferramenta de proxy mostrando como o pacote com os dados confidenciais da vítima roubada é enviado para seu servidor C2.

Ele usa o método HTTP Post com uma URL aleatória para enviar os dados roubados no corpo, que consiste em uma chave exportada de 40 horas no início com os dados criptografados a seguir, conforme mostrado na Figura 6.2. O servidor C2 pode descriptografar os dados enviados usando a chave exportada 40H.

Conclusão

Na Parte II desta análise, comecei com um pacote de módulo recebido de um servidor C2 e expliquei a estrutura do pacote. Em seguida, mostrei como o módulo (thread-module) é executado em um thread recém-criado. Em seguida, explicamos como o módulo de thread executa o processo de esvaziamento para executar os módulos funcionais.

Ao discutir os três módulos recebidos, elaborei sobre que tipo de dados o Emotet pode roubar do dispositivo da vítima, como informações de contato de e-mail da conta de e-mail da vítima, configurações da conta de e-mail, credenciais do cliente de e-mail da vítima e credenciais salvas em um ampla variedade de navegadores da web.

Finalmente, voltando ao módulo de thread, o Emotet lê as informações roubadas dos arquivos temporários fornecidos. Em seguida, ele compacta e criptografa os dados, que são enviados usando o método HTTP Post para o servidor C2.

Proteções Fortinet

Os clientes da Fortinet já estão protegidos contra esse malware pelos serviços Web Filtering, AntiVirus, FortiMail, FortiClient, FortiEDR e CDR (desarmamento e reconstrução de conteúdo) do FortiGuard, como segue:

A macro maliciosa dentro da amostra do Excel mencionada na Parte I do post pode ser desarmada pelo serviço FortiGuard CDR (desarme e reconstrução de conteúdo).

Todos os URLs relevantes foram classificados como ” Sites maliciosos ” pelo serviço FortiGuard Web Filtering.

A amostra do Excel capturada e o arquivo dll Emotet baixado são detectados como ” VBA/Emotet.2826!tr.dldr ” e ” W32/Emotet.B185!tr ” e são bloqueados pelo serviço FortiGuard AntiVirus.

O FortiEDR detecta o arquivo Excel e o arquivo dll Emotet como maliciosos com base em seu comportamento.

Além dessas proteções, a Fortinet também fornece várias soluções projetadas para ajudar a treinar os usuários na detecção e compreensão de ameaças de phishing:

Incentivamos as organizações, em parceria com a Fortinet, a fazer com que seus usuários finais participem do nossos Treinamentos. Saiba mais com um de nossos consultores.

 

Fonte: Fortinet

Pesquisar

Newsletter

Posts Recentes

  • Cibersegurança em 2025: Por que CEOs e CISOs Devem Investir em Treinamentos Oficiais de TI Hoje 30 de maio de 2025
  • teste pag Inlearn 6 de maio de 2025
  • A InLearn Educação tem a honra de ser reconhecida pelo Fortinet Training Institute com os prêmios de Parceiro do Ano LATAM e Destaque em Crescimento e Expansão de Negócios. 11 de abril de 2025

Categorias

AV IPANEMA, 165 SALA 515 EDIF MONTE CARLO 18 D
CEP.: 06472-002 | Bairro: DEZOITO DO FORTE EMPRESARIAL/ALPHAVILLE – BARUERI/SP.

(11) 4064-0200

Siga-nos nas redes sociais

    X

    Nome

    Telefone

    E-mail

    Mensagem


    */ ?>