Voltar
Malware Intelligence
Tabela de conteúdo

O blister é um malware assinado por código que lança um arquivo DLL malicioso no sistema da vítima, que é então executado pelo carregador via rundll32.exe, resultando na implantação de um beacon RAT/C2, permitindo assim o acesso não autorizado ao sistema alvo pela Internet. As campanhas do Blister Malware estão ativas desde 15 de setembro de 2021.

Parte I da análise do CloudSEK fornece uma compreensão detalhada de como o carregador funciona. A parte 2 abordará os detalhes da segunda etapa desta campanha, que é a carga útil.dll e seu funcionamento interno.

Dissecando a DLL maliciosa — Blister Malware

Conforme discutido na Parte 1, o Blister dropper elimina o malicioso .dll arquivo no Diretório temporário do usuário, dentro de uma pasta recém-criada. Isso é malicioso .dll em seguida, realiza a segunda etapa da campanha, na qual um RAT/agente é implantado no sistema para obter acesso não autorizado e roubar dados.

  • O conta-gotas Blister chama a função Inicie o ColorCPL, que é uma das funções exportadas pelo .dll, via rundll32.exe.
Functions exported by the malicious DLL of Blister Malware
Funções exportadas pela DLL maliciosa

Encenação

  • A função exportada Inicie o ColorCPL recupera o código de teste da seção de recursos do arquivo PE. Esse código de teste é protegido por um esquema simples de codificação XOR.
Code responsible for decoding the staging code
Código responsável pela decodificação do código de teste
Encoded staging code in the resource section of the PE file
Código de teste codificado na seção de recursos do arquivo PE
  • Após a decodificação iterativa do código de teste, o controle é transferido para o código decodificado na memória.
  • O fluxo de controle é transferido para o código de teste chamando o endereço no registro EAX.
Calling the address in the EAX register
Ligando para o endereço no registro EAX

Anti-análise

  • O código de teste é altamente ofuscado e tem uma lógica semelhante a um código de spaghetti, para dificultar a análise. Todas as chamadas para APIs do Windows são obscurecidas e resolvidas dinamicamente.
  • A primeira coisa que o código de teste faz é fazer com que o malware adormeça chamando a API Sleep Windows. Essa é uma estratégia típica usada pela maioria dos códigos maliciosos para contornar sandboxes de segurança e testes dinâmicos de produtos de segurança.
Stackframe before the malware calls the Sleep Windows API
Stackframe antes do malware chamar a API Sleep Windows
  • O valor hexadecimal “927C0” é passado para Kernel 32.759f9010 ou seja, o Função de sono. Esse valor (927C0) se traduz em “600000” em decimal. Como a API Sleep aceita argumentos em milissegundos (ms), os 600.000 ms são convertidos em 10 minutos.
  • Quando o malware volta do modo de suspensão, ele obtém a carga útil final na seção de recursos do arquivo PE.
Snippet of the protected payload stored in the memory
Trecho da carga protegida armazenada na memória

  • Na memória, a carga protegida é decodificada. A presença de um cabeçalho DOS, nos bytes da carga útil, confirma que a carga está no formato PE e não em um código de shell.
Decrypted payload stored in the memory
Carga útil descriptografada armazenada na memória
  • Uma observação interessante dessa análise é a adição do byte MZ após o processo de descriptografia. Na imagem acima, o byte inicial não é MZ, mas o byte MZ é adicionado posteriormente no início da carga separadamente. Esse comportamento é principalmente para segurança operacional.
Addition of the MZ byte after the decryption process
Adição do byte MZ após o processo de descriptografia

Processo de esvaziamento

Em geral, o esvaziamento do processo permite que um invasor altere o conteúdo de um processo legítimo de código genuíno para código malicioso antes de ser executado, criando a lógica do código dentro do processo de destino.

  • Depois de descriptografar a carga final, o malware se prepara para a execução.
  • Isso é feito criando um novo processo para implantar o código extraído e, em seguida, executando o esvaziamento do processo para executar a carga no processo remoto. O código de teste recupera o Rundll32.exe localização do sistema comprometido.
Retrieval of the location of rundll32.exe
Recuperação da localização do rundll32.exe
  • Um novo processo de Rundll32.exe é criado por meio do Criar processo interno W API no estado suspenso.
Creation of the new rendll32.exe
Criação do novo rendll32.exe
  • O malware usa as seguintes APIs Win32 para esvaziar o processo:
    • Visualização do mapa Zwun da seção
    • Memória virtual ZWREAD
    • Memória virtual ZW Write
    • Tópico de contexto do ZW GetContext
    • Tópico de contexto do ZWSET
    • Tópico de currículo do NT
  • Memória virtual ZW Write é usado para escrever código malicioso no processo de destino.
  • Para fazer com que o thread do novo processo aponte para o código recém-escrito, o atacante altera o ponto de entrada do thread atual via Tópico de contexto do ZW GetContext e Tópico de contexto do ZWSET.
  • Essas funções são usadas para realizar atividades de manutenção do processador na estrutura de dados que armazena o contexto atual do thread em execução. O esvaziamento de processos aproveita esses recursos para fazer com que o thread do processo execute o código do invasor.

Funcionamento passo a passo da DLL

  • O código de teste aloca uma nova memória via ZW Alocate Virtual Memory para transferir a carga final previamente descriptografada.
Alocação de nova memória via ZWALlocateVirtualMemory
  • A carga útil é então copiada para um buffer recém-criado. Com base nos testes do CloudSEK na carga útil extraída, uma das amostras analisadas continha o Ladrão de guaxinins como carga útil do estágio final. No entanto, outras amostras usadas Farol Cobalt Strike e BitRAT para comprometer o alvo e obter acesso não autorizado.
Movendo a carga para um buffer recém-criado
  • O código de teste então injeta o código no processo remoto recém-criado, ou seja, Rundll32.exe.
Code injections into the newly created rendll32.exe
Code injeções no recém-criado rendll32.exe
  • Posteriormente, as proteções de memória são alteradas para as apropriadas para a execução do código residente via Memória virtual NTProtect.
Alteration of the memory protections 
Alteração das proteções de memória
  • O contexto do tópico é recuperado via API ZWGetContextThread para alterar o ponto de entrada do thread para executar a carga injetada no processo remoto.
Adição do byte MZ após o processo de descriptografia
  • O Tópico de contexto do ZWSET é usado para modificar o ponto de entrada do thread para o do arquivo PE recém-copiado.
Modification of the thread entry point to the copied PE file
MModificação do ponto de entrada do thread para o arquivo PE copiado
  • Na fase final do processo de esvaziamento, a rosca suspensa do Rundll32.exe é retomado via Tópico de currículo do NT. Em seguida, o Rundll32.exe O processo começa a executar o código malicioso inserido nele pelo malware.
Retomando a rosca suspensa
  • No processo de limpeza, o código de teste usa Memória virtual NT Free para liberar a memória alocada, que contém a montagem da carga útil, uma por uma.
Processo de limpeza liberando a memória alocada
  • O processo atual usado para preparação é encerrado por meio do Processo de encerramento do NT.
Encerramento do processo atual

Blister Malware — Mantendo a persistência

  • O malware Blister atinge a persistência no sistema de destino criando um arquivo “lnk” chamado Jogos Proamings na C:\Users\<username>\ AppData\ Roaming\ Microsft\ Windows\ Menu Iniciar\ Inicialização diretório.
  • Sempre que o usuário fizer login, explorer.exe executa qualquer arquivo no Inicialização pasta. Como resultado, quando o usuário faz login na conta, após o processo de inicialização, o malware é executado como um processo secundário do explorer.exe.
Ink file produced in the Startup directory
Arquivo de tinta produzido no diretório de inicialização
  • O destino do arquivo lnk é definido como C:\ProgramData\proamingsGames\proamingsGames.dll, LaunchColorCPL . Aqui, o malware copia o Rundll32.exe como proamingsGames.exe e o .dll malicioso (inicialmente em diretório C:\ProgramData\proamingsGames) é colocado no Temperatura pasta.
Conteúdo do arquivo proamingsGames.dll
  • Toda vez que o sistema é ligado e o usuário faz login, o arquivo lnk executa um código malicioso .dll por meio de uma instância renomeada de Rundll32.exe.

Conclusão

Como os agentes de ameaças estão usando ativamente certificados de assinatura de código válidos em sistemas Windows, para evitar a detecção por software antivírus, é essencial que os produtos de segurança de rede e de terminais sejam atualizados com os indicadores de comprometimento (IOCs) mais recentes do malware. Os IOCs mais recentes do Blister Malware estão enumerados em Parte 1 da análise técnica.

Nenhum item encontrado.

Blogs relacionados