Publicações sobre SOC, TI e IR

Lumma Stealer – Rastreamento de canais de distribuição

Introdução

A evolução do Malware-as-a-Service (MaaS) reduziu significativamente as barreiras de entrada para criminosos cibernéticos, e os stealers de informações se tornaram uma das categorias de maior sucesso comercial na economia do submundo. Entre essas ameaças, o Lumma Stealer surgiu como um protagonista particularmente sofisticado desde sua introdução em 2022 pelo agente de ameaças conhecido como Lumma. Inicialmente comercializado como LummaC2, o malware de roubo de informações rapidamente ganhou força em fóruns clandestinos, com preços a partir de USD 250. Em março de 2025, sua presença nos mercados da dark web e canais do Telegram continuava a crescer, com mais de mil assinantes ativos.

Site oficial do vendedor do LummaC2

Site oficial do vendedor do LummaC2

A infecção com o Lumma geralmente envolve interação humana, como clicar em um link, executar comandos maliciosos etc. Recentemente, ao investigar um incidente como parte de nossos serviços de resposta a incidentes, nossa Equipe Global de Resposta a Emergências (Emergency Response Team, GERT) encontrou o Lumma no sistema de um cliente. A análise revelou que o incidente foi desencadeado por interação humana, ou seja, o usuário foi induzido a executar um comando malicioso por uma página falsa de CAPTCHA. Neste artigo, analisaremos em detalhes como a campanha de CAPTCHA falso funciona e compartilharemos uma lista de IoCs descobertos durante nossa análise e investigação da campanha. Embora já tenhamos descrito esse método de distribuição em um artigo anterior, mais detalhes sobre essa campanha foram descobertos desde então.

Vetores de distribuição do Lumma Stealer

Os métodos de distribuição do Lumma Stealer são diversos e usam técnicas comuns, normalmente vistas em campanhas de malware para roubo de informações. Os principais vetores de infecção incluem e-mails de phishing com anexos ou links maliciosos, além de aplicativos legítimos com trojans. Essas táticas enganosas induzem os usuários a executar o malware, executado silenciosamente em segundo plano, para coletar dados valiosos. O Lumma também foi observado usando exploit kits, engenharia social e sites comprometidos para estender o alcance e evitar a detecção por soluções de segurança. Neste artigo, vamos nos concentrar principalmente no vetor de distribuição de CAPTCHA falso.

Esse vetor envolve páginas de verificação falsas que se assemelham aos serviços legítimos, geralmente hospedados em plataformas que usam redes de entrega de conteúdo (Content Delivery Networks, CDNs). Geralmente, essas páginas se disfarçam como CAPTCHAs usados com frequência, como Google reCAPTCHA ou Cloudflare CAPTCHA, para enganar os usuários e fazer com que eles acreditem que estão interagindo com um serviço confiável.

Vetores de distribuição de CAPTCHA falsos

Esquema de distribuição de CAPTCHA falso

Esquema de distribuição de CAPTCHA falso

Há dois tipos de recursos usados para promover páginas de CAPTCHA falsas:

  • Mídia pirateada, conteúdo adulto e sites de software crackeados. Os invasores clonam esses sites e injetam anúncios maliciosos na página clonada para redirecionar os usuários a um CAPTCHA malicioso.
  • Canais falsos do Telegram para conteúdo pirateado e criptomoedas. Os invasores criam canais no Telegram com nomes contendo palavras-chave relacionadas a criptomoedas ou conteúdo pirateado, como software, filmes etc. Quando um usuário pesquisa por esse tipo de conteúdo, os canais fraudulentos aparecem no topo da pesquisa. Os invasores também usam postagens em mídias sociais para atrair as vítimas para esses canais. Quando um usuário entra em um canal desse tipo, recebe uma solicitação para concluir uma verificação de identidade por meio de um bot fraudulento “Safeguard Captcha”.
Bot Safeguard Captcha

Bot Safeguard Captcha

Quando o usuário clica no botão Verificar, o bot abre uma página pop-up com um CAPTCHA falso.

Página falsa de CAPTCHA

Os usuários se deparam com uma página pop-up que se parece com uma verificação CAPTCHA padrão, solicitando que eles cliquem em Não sou um robô/Verificar/Copiar ou algum botão semelhante. É neste ponto que a fraude começa.

Exemplos de páginas falsas de CAPTCHA

Exemplos de páginas falsas de CAPTCHA

Conteúdo malicioso de página falsa

Quando o botão Não sou um robô/Verificar/Copiar é clicado, o usuário recebe uma instrução para executar uma sequência incomum:

  • Abrir a caixa de diálogo Executar (Win+R)
  • Pressionar Ctrl+V
  • Pressionar Enter

Sem o conhecimento do usuário, ao clicar no botão, um comando é copiado automaticamente do PowerShell para a área de transferência. Depois que o usuário cola o comando na caixa de diálogo Executar e pressiona Enter, o sistema executa o comando.

Exemplos de scripts copiados na área de transferência e executados por meio da caixa de diálogo Executar

Exemplos de scripts copiados na área de transferência e executados por meio da caixa de diálogo Executar

O comando pode variar um pouco de site para site e muda a cada poucos dias, mas, normalmente, ele é usado para baixar o Lumma Stealer de um servidor remoto, geralmente um CDN conhecido com um período de teste gratuito ou uma plataforma legítima de hospedagem e colaboração de código, como o GitHub, para iniciar o processo de instalação do malware. Vamos examinar com mais detalhes essa cadeia de infecção usando como exemplo o seguinte comando, executado durante o incidente de um de nossos clientes:

Comando que aciona a cadeia de infecção do Lumma

Comando que aciona a cadeia de infecção do Lumma

O comando é relativamente simples. Ele decodifica e executa o conteúdo do arquivo remoto win15.txt hospedado em https[:]//win15.b-cdn[.]net/win15.txt. O arquivo win15.txt contém um script PowerShell codificado em Base64 que, então, baixa e executa o Lumma Stealer. Quando decodificado, o script malicioso do PowerShell tem o seguinte aspecto:

Conteúdo do win15.txt

Conteúdo do win15.txt

O script executa as seguintes ações:

  1. Baixa o malware. Ele baixa o arquivo win15.zip de https[:]//win15.b-cdn[.]net/win15.zip para [User Profile]\AppData\Roaming\bFylC6zX.zip.
  2. Extrai o malware. O arquivo ZIP baixado é extraído para C:\Users\[User]\AppData\Roaming\7oCDTWYu, uma pasta oculta no diretório AppData do usuário.
  3. Executa o malware. O script executa o arquivo Set-up.exe do arquivo descompactado, que agora está localizado em C:\Users\[User]\AppData\Roaming\7oCDTWYu\Set-up.exe.
  4. Estabelece um mecanismo de persistência. O script cria uma entrada no Registro do Windows para garantir que o malware seja executado sempre que o sistema for iniciado. A chave de registro é adicionada em HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. O nome da chave é 5TQjtTuo, com o valor apontando para Set-up.exe.

Entretanto, em alguns casos, o mecanismo de infecção do malware pode ser mais complexo. No exemplo seguinte, o script de entrega é um código JavaScript oculto no que parece ser um arquivo .mp3 (outros formatos de arquivo, como .mp4 e .png também foram usados). Na verdade, além do JavaScript, o contêiner pode conter um arquivo .mp3/.mp4 corrompido, código de software legítimo ou apenas dados aleatórios.

O script é executado usando o mecanismo de aplicativo HTML mshta.exe da Microsoft e solicita que o usuário cole o seguinte comando na caixa de diálogo Executar:

Comando que aciona a cadeia de infecção baseada em JS

Comando que aciona a cadeia de infecção baseada em JS

O comando mshta analisa o arquivo como um arquivo HTA (Microsoft HTML Aplicativo) e executa qualquer código JavaScript na tag <script>, acionando a seguinte cadeia de infecção:

Camada (1)

O script JS dentro do arquivo .mp3 é executado pelo comando mshta.

Script JS dentro do arquivo never.mp3

Script JS dentro do arquivo never.mp3

Camada (2)

Após calcular o valor de Kwb, o seguinte script é obtido, que é executado pela função eval.

Script JS da camada (2)

Script JS da camada (2)

Camada (3)

Depois de calcular os valores de kXN e zzI, o comando ActiveX final é criado e executado. Ele contém um script PowerShell codificado na variável $PBwR.

Script JS de camada desofuscada (2)

Script JS de camada desofuscada (2)

Camada (4)

Após decodificar o script do PowerShell, descobrimos que o objetivo principal é baixar e executar outro arquivo do PowerShell do caminho C2 hXXps://conect[.]klipfuzj[.]shop/firefire[.]png.

Script PowerShell da camada descriptografada (3)

Script PowerShell da camada descriptografada (3)

Análise do arquivo firefire.png

O arquivo firefire.png é um arquivo enorme do PowerShell (~31 MB) com várias camadas de ofuscação e antidepuração. Após desofuscar e remover código desnecessário, podemos ver que o objetivo geral do arquivo é gerar e executar um script criptografado do PowerShell da seguinte maneira:

firefire.png

firefire.png

A chave de descriptografia é a saída do comando Invoke-Metasploit, que fica bloqueado se o AMSI estiver ativado. Como resultado, uma mensagem de erro é gerada pelo AMSI: AMSI_RESULT_NOT_DETECTED, usada como chave. Se o AMSI estiver desativado, o malware não conseguirá descriptografar o script.

O script do PowerShell descriptografado tem aproximadamente 1,5 MB de tamanho e seu objetivo principal é criar e executar um arquivo executável malicioso.

Script do PowerShell descriptografado

Script do PowerShell descriptografado

Métodos e técnicas de infecção

O Lumma Stealer foi observado no ambiente usando uma variedade de métodos de infecção, com duas técnicas principais se destacando em suas campanhas de distribuição: DLL sideloading e injeção de um código malicioso na seção de overlay de software livre legítimo. Essas técnicas são particularmente eficazes para evitar a detecção porque exploram a confiança que os usuários depositam em aplicativos e processos de sistema amplamente usados.

  • DLL sideloading

A técnica de DLL sideloading é bem conhecida, na qual bibliotecas de vínculo dinâmico (DLLs) maliciosas são carregadas por um aplicativo legítimo. Essa técnica explora vulnerabilidades ou configurações incorretas em softwares que carregam inadvertidamente arquivos DLL de diretórios não confiáveis. Os invasores podem colocar a DLL do Lumma Stealer no mesmo diretório de um aplicativo confiável, fazendo com que ele seja carregado quando o aplicativo for executado. Como a DLL maliciosa é carregada no contexto de um processo confiável, é muito mais difícil para medidas de segurança tradicionais detectarem a intrusão.

  • Injeção de código malicioso na seção de overlay do software

Outro método comumente usado pelo Lumma Stealer é injetar um código malicioso na seção de overlay de determinado software. A seção de overlay normalmente é usada para exercer funcionalidades legítimas de software, como exibir interfaces gráficas ou manipular determinados eventos de entrada. Ao modificar essa seção do software, o adversário pode injetar código malicioso sem interromper a operação normal do aplicativo. Esse método é particularmente enganoso porque o software continua parecendo legítimo enquanto o código malicioso é executado silenciosamente em segundo plano. Ele também ajuda o malware a evitar a detecção por ferramentas de segurança que se concentram no monitoramento em nível de sistema.

Ambos os métodos dependem da exploração de aplicativos confiáveis, o que aumenta significativamente as chances de infecção bem-sucedida. Essas técnicas podem ser usadas em combinação com outras, como phishing ou pacotes de software com trojans, para maximizar a disseminação do Lumma Stealer para vários alvos.

Análise de amostra

Para demonstrar como os instaladores do Lumma Stealer funcionam e o impacto nos sistemas e na segurança dos dados, analisaremos a amostra do stealer que encontramos no incidente em nosso cliente. Esta amostra utiliza a técnica de injeção de código no overlay. Abaixo está uma análise detalhada da cadeia de infecção e das várias técnicas usadas para implementar e executar o Lumma Stealer.

Execução inicial e RAR autoextraível (SFX)

O payload inicial nesta amostra é entregue como ProjectorNebraska.exe que consiste em um arquivo legítimo corrompido e o malware na seção de overlay. Ele é executado pela vítima. Após a execução, o arquivo extrai e executa um arquivo RAR autoextraível (SFX). Este arquivo contém o próximo estágio da infecção: um instalador do Nullsoft Scriptable Install System (NSIS). O NSIS é uma ferramenta amplamente usada para criar instaladores do Windows.

Componentes do instalador NSIS

O instalador NSIS remove vários componentes essenciais para a execução do malware:

Componentes do instalador NSIS

Componentes do instalador NSIS

Isso inclui componentes AutoIt e um loader de batch script ofuscado chamado Hose.cmd. Os seguintes componentes do AutoIt são descartados:

  • Fragmentos de um executável legítimo do AutoIt: são pedaços de um executável genuíno do AutoIt colocados no sistema da vítima e depois remontados durante o processo de infecção.
  • Script AutoIt compilado: o script compilado carrega a funcionalidade principal do Lumma Stealer, inclusive as operações como roubo de credenciais e exfiltração de dados.

Esses componentes são posteriormente remontados no payload executável final com o uso do loader de batch script que concatena e executa os vários fragmentos.

Hose.cmd orquestra as etapas finais da execução do malware. Abaixo está uma análise de seus principais componentes (após desofuscação):

Código de batch script desofuscado

Código de batch script desofuscado

Árvore de processos após a execução do batch script

Árvore de processos após a execução do batch script

O batch script executa as seguintes ações:

  • Evasão de produtos de segurança.
    • O script verifica a presença de software de segurança (SecureAnywhere e Quick Heal AntiVirus) usando lista de tarefas. Se algum deles for detectado, ele atrasa a execução por meio do comando ping -n 198 que executa ping no host local 198 vezes. Esse truque é usado para evitar a detecção do sandbox, uma vez que o sandbox normalmente sai antes que o script conclua a tarefa de ping.
    • O script verifica a presença de qualquer um dos seguintes aplicativos: Avast, AVG, McAfee, Bitdefender, Sophos usando a lista de tarefas. Se um deles for detectado, mantém o nome do executável para AutoIt como AutoIt3.exe; caso contrário, ele o renomeia para Suggests.pif.
  • Configuração do ambiente e preparação do payload. Define variáveis de ambiente para o executável AutoIt e para o payload final. Também cria um diretório de trabalho chamado 195402 no diretório Temp para armazenar componentes maliciosos.
  • Ofuscação e extração. O script filtra e limpa um arquivo chamado Sitting do instalador NSIS ao remover a string OptimumSlipProfessionalsPerspective e armazenar o resultado como Suggests.pif. Em seguida, ele usa o comando copy /b para mesclar Suggests.pif com um componente adicional do instalador NSIS chamado Oclc no executável AutoIt para salvá-lo novamente como Suggests.pif.
  • Montagem do payload. Ele concatena vários arquivos do instalador NSIS: Italy, Holmes, True, etc. para gerar o executável final com o nome h.a3x que é um script AutoIt.
  • Execução do Lumma Stealer. Por fim, o script executa Suggests.pif, que por sua vez executa h.a3x para acionar a execução do Lumma Stealer baseada em AutoIt.

Análise de script AutoIt

Durante a análise, o utilitário AutoIt Extractor foi usado para descompilar e extrair o script do arquivo h.a3x. O script estava muito ofuscado e exigiu desofuscação adicional para obter um script .au3 limpo e analisável. Segue abaixo a análise do comportamento do carregador AutoIt.

Extração de script AutoIt

Extração de script AutoIt

Verificações antianálise

O script começa com a validação do ambiente para detecção de ferramentas de análise ou ambientes de sandbox. Ele verifica nomes de computadores e nomes de usuários específicos, geralmente associados a ambientes de teste.

Validação de ambiente

Validação de ambiente

Em seguida, ele verifica processos de ferramentas antivírus populares, como Avast (avastui.exe), Bitdefender (bdagent.exe) e Kaspersky (avp.exe).

Verificações contra AV

Verificações contra AV

Se qualquer uma dessas condições for atendida, o script interromperá a execução para evitar a detecção.

Execução do shellcode do carregador

Se as verificações antianálise forem aprovadas, o script selecionará dinamicamente o shellcode de 32 ou 64 bits de acordo com a arquitetura do sistema, localizado na variável $vinylcigaretteau dentro do script. Para fazer isso, ele aloca memória executável para injetar o shellcode nela. Então, o shellcode inicializa o ambiente de execução e se prepara para executar o payload do segundo estágio.

Parte do carregador AutoIt responsável pela execução do shellcode

Parte do carregador AutoIt responsável pela execução do shellcode

Processamento do payload $dayjoy

Após executar o shellcode do loader, o script processa o payload do segundo estágio localizado na variável $dayjoy. O payload é descriptografado com o uso de RC4 com uma chave hardcoded 1246403907690944.

O payload criptografado

O payload criptografado

Para descriptografar o payload de forma independente, escrevemos um script Python personalizado que pode ser visualizado na captura de tela abaixo.

Script Python para descriptografia do payload

Script Python para descriptografia do payload

O payload descriptografado é descompactado com o uso do algoritmo LZNT1.

Descompressão do payload

Descompressão do payload

Execução final do payload

Após a descriptografia e a descompressão, o payload $dayjoy é executado na memória. O script usa DllCallAddress para invocar o payload diretamente na memória alocada. Isso garante que o payload seja executado furtivamente, sem ser gravado no disco.

Execução final do payload

Execução final do payload

O payload final é o próprio Lumma stealer. Os recursos abrangentes de roubo de dados do malware têm como alvo uma grande variedade de informações confidenciais, incluindo:

  • Credenciais de carteira de criptomoeda (por exemplo, Binance, Ethereum) e extensões de navegador associadas (por exemplo, MetaMask)
  • Dados de autenticação em dois fatores (2FA) e extensões de autenticador
  • Credenciais e cookies armazenados no navegador
  • Credenciais armazenadas de ferramentas de acesso remoto, como AnyDesk
  • Credenciais armazenadas de gerenciadores de senhas como KeePass
  • Dados do sistema e do aplicativo
  • Informações financeiras, como números de cartão de crédito

Comunicação C2

Depois que o Lumma Stealer é executado, ele estabelece comunicação com seus servidores de comando e controle (C2) para exfiltrar os dados roubados. O malware envia as informações coletadas para posterior exploração na infraestrutura do invasor. Essa comunicação normalmente é realizada por HTTP ou HTTPS, muitas vezes disfarçada como tráfego legítimo para evitar a detecção por ferramentas de monitoramento de segurança de rede.

Servidores C2 identificados

Os seguintes domínios C2 usados pelo Lumma Stealer para se comunicar com os invasores foram identificados na amostra analisada:

Esses domínios são usados para receber dados roubados de sistemas infectados. A comunicação com esses servidores normalmente ocorre por meio de solicitações HTTP POST criptografadas.

Conclusões

Como um programa malicioso distribuído em massa, o Lumma Stealer emprega uma cadeia de infecção complexa que inclui uma série de técnicas de antianálise e evasão de detecção para se infiltrar furtivamente no dispositivo da vítima. Embora a infecção inicial por meio de software pirateado duvidoso e sites relacionados a criptomoedas e canais do Telegram sugira que indivíduos são os principais alvos desses ataques, observamos o Lumma em um incidente em um de nossos clientes, o que ilustra que as organizações também podem ser vítimas dessa ameaça. As informações roubadas por meio desse malware podem acabar nas mãos de criminosos cibernéticos mais famosos, como operadores de ransomware. É por isso que é importante prevenir infecções por stealer nos estágios iniciais. Ao entender as técnicas de infecção, os profissionais de segurança podem se defender melhor contra essa ameaça crescente e desenvolver estratégias de detecção e prevenção mais eficazes.

IoCs

A lista a seguir contém as URLs detectadas durante nossa pesquisa. Observe que os invasores alteram as URLs maliciosas e os canais do Telegram praticamente todos os dias, e os IoCs fornecidos nesta seção já estavam inativos no momento da redação deste texto. No entanto, eles podem ser úteis para detecção retrospectiva de ameaças.

Páginas falsas e maliciosas de CAPTCHA

Canais do Telegram que distribuem o Lumma

Lumma Stealer – Rastreamento de canais de distribuição

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

 

Relatórios