NOVABLIGHT em resumo
NOVABLIGHT é um ladrão de informações de malware como serviço (MaaS) baseado em NodeJS, desenvolvido e vendido por um grupo de ameaças que demonstra proficiência na língua francesa. Isso fica evidente nas discussões e comunicações operacionais em suas principais plataformas de vendas e suporte, Telegram e Discord.
Com base em nossa análise da última versão lançada do NOVABLIGHT, o seguinte trecho de código sugere que o Sordeal Group, o grupo por trás do Nova Sentinel e do MALICORD, também é responsável pelo NOVABLIGHT.
Principais conclusões
- NOVABLIGHT é um infostealer descrito como uma ferramenta educacional, embora as mensagens do canal do Telegram revelem informações confidenciais e capturas de tela não editadas.
- As licenças NOVABLIGHT são válidas por até um ano, e os binários podem ser gerados via Telegram ou Discord.
- Código altamente ofuscado com muitos recursos.
Descoberta
O Elastic Security Labs identificou diversas campanhas que utilizam downloads falsos de instaladores de videogame como uma isca de acesso inicial para infecções de MaaS de usuários da internet. Em um exemplo, a URL http://gonefishe[.]com solicitou que o usuário baixasse um binário e instalasse uma versão em francês de um jogo com nome e descrição comparáveis a um lançado recentemente no Steam.
Distribuição, monetização e comunidade
O grupo anunciou e vendeu seu produto em várias plataformas online, anteriormente Sellix e Sellpass e atualmente Billgang.
O grupo vende uma chave de API, que expira entre 1 e 12 meses. Essa chave pode então ser usada para criar uma instância do NOVABLIGHT por meio de um bot do Telegram ou do Discord.
O grupo promove um programa de indicação em seu canal do Discord com chaves de API como recompensas.
Os usuários têm acesso a um painel hospedado pelo grupo que apresenta as informações coletadas das vítimas. Os seguintes domínios foram identificados, embora outros possam existir:
api.nova-blight[.]topshadow.nova-blight[.]topnova-blight[.]sitenova-blight[.]xyzbamboulacity.nova-blight[.]xyz
Algumas das imagens usadas no painel estão hospedadas em repositórios do GitHub associados a diferentes contas, o que ajudou a expor mais detalhes sobre o grupo.
A conta do GitHub KSCHcuck1 é um pseudônimo semelhante ao do autor anterior do MALICORD, uma versão gratuita da versão mais antiga do ladrão que foi hospedada no GitHub na conta KSCH-58 (LINK DO ARQUIVO DA WEB). A conta X @KSCH_dsc também possuía semelhanças e estava anunciando ativamente seu "melhor ladrão já lançado" até 2023.
As seguintes contas do GitHub foram identificadas em relação ao grupo:
- https://github.com/KSCHcuck1
- https://github.com/CrackedProgramer412/caca
- https://github.com/MYnva
- https://github.com/404log (morto)
O canal público deles no Telegram hospeda tutoriais e uma comunidade de usuários. Na captura de imagem a seguir, os usuários estão compartilhando capturas de tela do processo de construção.
Usuários do infostealer estão compartilhando abertamente imagens de itens de luxo e transferências de dinheiro, o que é notável porque o NOVABLIGHT é descrito como sendo exclusivamente para fins educacionais.
Análise NOVABLIGHT
NOVABLIGHT é um ladrão de informações modular e rico em recursos criado no NodeJS com o framework Electron. Seus recursos vão além do simples roubo de credenciais, incorporando métodos de coleta e exfiltração de dados, detecção de sandbox e ofuscação pesada.
Um aspecto notável do processo de construção do malware é sua configuração modular. Embora um cliente possa optar por desabilitar recursos específicos, o código subjacente para essas funções permanece na carga final; ele fica inativo e não será executado com base nos sinalizadores de configuração da compilação.
Os trechos de código neste relatório são de um exemplo não ofuscado da versão 2.0, quando os detalhes de implementação correspondem aos exemplos da versão 2.2, ou do nosso código manualmente desofuscado de um exemplo da versão 2.2, quando eles são diferentes.
Estrutura do código
Da configuração inicial ao roubo de dados, o infostealer é organizado em um pipeline claro e multiestágio, gerenciado por controladores de "fluxo" de alto nível. Os estágios principais são:
- flow/init: verificações pré-voo (instâncias em execução, privilégios de administrador, conectividade com a internet), verificações antianálise, enumeração de informações do sistema, estabelecimento de persistência, etc.
- fluxo/injeção: injeção e aplicação de patches (Atomic, Mullvad, Discord, …)
- fluxo/grabb: Coleta de dados
- fluxo/Área de transferência: sequestro da área de transferência
- fluxo/envio: Exfiltração de dados
- fluxo/desativar: sabotagem do sistema (desativar o Windows Defender, anti-reinicialização do sistema, conectividade de Internet interrompida, …)
- fluxo/limpeza: Limpeza pós-exfiltração
Para mais informações sobre a estrutura do código, confira este GitHub Gist, que lista as dependências diretas para cada um dos principais módulos e fluxos de execução do NOVABLIGHT.
Detecção anti-depuração e sandbox
O NOVABLIGHT incorpora diversas técnicas para detectar e escapar de ambientes de análise, combinando impressões digitais do ambiente com contramedidas ativas. Essas verificações incluem:
- Detectando nomes de GPU relacionados à VM (vmware, virtualbox, qemu)
- Verificando nomes de usuários na lista negra (sandbox, teste, malware)
- Identificação de arquivos de driver específicos da VM (balloon.sys, qemu-ga)
- Verificando baixa resolução de tela e falta de dispositivos USB
- Consultando o GitHub para listas negras de IPs, HWIDs, nomes de usuários, programas, organizações, nomes de GPU, nomes de PC e sistemas operacionais
- Eliminando ativamente ferramentas de análise e depuração conhecidas encontradas em uma lista remota
As listas negras estão hospedadas no GitHub:
- https://raw.githubusercontent.com/Mynva/sub/main/json/blocked_ips.json
- https://raw.githubusercontent.com/Mynva/sub/main/json/blocked_progr.json
- https://raw.githubusercontent.com/Mynva/sub/refs/heads/main/json/blockedorg.json
- https://raw.githubusercontent.com/Mynva/sub/main/json/blocked_GPUTYPE.json
- https://raw.githubusercontent.com/Mynva/sub/main/json/nope.json
- https://raw.githubusercontent.com/Mynva/sub/main/json/blocked_hwid.json
- https://raw.githubusercontent.com/Mynva/sub/main/json/blockedpcname.json
- https://raw.githubusercontent.com/MYnva/sub/refs/heads/main/json/blockedOS.json
Desabilitar o Defender e tentar desabilitar o Gerenciador de Tarefas
O NOVABLIGHT tenta desabilitar o Windows Defender e os recursos de segurança relacionados ao Windows baixando e executando um script em lote, DisableWD.bat, de um repositório público do GitHub.
O malware afirma ser capaz de desabilitar o Gerenciador de Tarefas, dificultando que um usuário não técnico identifique e elimine o programa malicioso. Ele usa setValues do pacote regedit-rs para definir o valor DisableTaskMgr como 1 em HKCU\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Policies\\\\System.
Entretanto, olhando o repositório regedit-rs (v1.0.3 para corresponder), não há funções exportadas chamadas setValues, apenas putValue. Esta funcionalidade pode não funcionar conforme o esperado.
Desativar acesso à Internet
Para interromper a conexão de internet da vítima, o malware emprega dois métodos distintos. O primeiro envolve desabilitar persistentemente o adaptador Wi-Fi, reiniciando-o repetidamente em um loop rápido, utilizando o pacote npm externo wifi-control e sua função resetWiFi .
O segundo método desabilita o adaptador de rede “Ethernet” primário usando o comando netsh , executando-o a cada 5 segundos para desabilitar tentativas de reativação.
Recuperação do sistema de derrota
O malware pode sabotar a recuperação do sistema desabilitando o Ambiente de Recuperação do Windows (reagentc /disable) e excluindo todas as Cópias de Sombra de Volume (vssadmin delete shadows /all) quando o sinalizador antireset estiver habilitado na configuração.
Bloqueando a exclusão de arquivos
Outra função de sabotagem do sistema que pode ser aparente para a vítima envolve tornar o próprio arquivo executável do malware não excluível, modificando suas permissões de segurança por meio de icacls “${filePath}” /deny ${currentUser}:(DE,DC) , onde o DE nega direitos de exclusão e o DC impede a exclusão por meio da pasta pai e, opcionalmente, criando uma caixa de mensagem pop-up contendo uma mensagem de "troll".
Antes de se bloquear, ele também executa um comando do PowerShell para remover a conta da vítima dos seguintes grupos do sistema: Administrators, Power Users, Remote Desktop Users, Administrateurs.
Substituição de endereço da área de transferência
O malware implementa um módulo "clipper" que monitora ativamente a área de transferência da máquina em busca de endereços de criptomoedas ou PayPal e os substitui por endereços definidos na configuração. Se o usuário que criou o payload não forneceu seus próprios endereços, o malware usa como padrão um conjunto codificado, presumivelmente controlado pelos desenvolvedores para capturar fundos de seus usuários menos experientes.
Injeções de aplicação de elétrons
O NOVABLIGHT pode injetar código malicioso em vários aplicativos populares baseados em Electron. As cargas úteis são obtidas dinamicamente do ponto de extremidade https://api.nova-blight[.]top/injections/*targeted_application*/*some_key*, visando aplicativos como:
- Cliente Discord
- Carteira Exodus
- Cliente VPN Mullvad
- Carteira atômica
- Cliente de e-mail Mailspring
Conseguimos recuperar todos os módulos de um repositório público do GitHub.
A implementação da injeção é um exemplo clássico de reempacotamento do Electron App: descompactar o arquivo ASAR, reescrever quaisquer arquivos de origem de destino e, em seguida, reempacotá-los. Observando um exemplo envolvendo o cliente Mullvad, ele primeiro descompacta Program Files\\Mullvad VPN\\resources\\app.asar em um diretório temporário, busca uma versão backdoor de account.js de https://api.nova-blight[.]top/injections/mullvad/dVukBEtL8rW2PDgkwdwfbNSdG3imwU8bZhYUygzthir66sXXUuyURunOin9s, substitui o arquivo de origem account.js e, finalmente, o recompacta. Embora ainda possa funcionar para versões mais antigas do Mullvad, como 2025.4, isso não parece funcionar na versão mais recente do Mullvad.
Em um caso semelhante para o cliente Exodus, os desenvolvedores do NOVABLIGHT modificaram a função setPassphrase no módulo principal do aplicativo Exodus, com funcionalidades adicionais de roubo de credenciais.
É assim que main/index.js se parece em uma versão legítima do Exodus 25.28.4:
No index.js trojanizado, as senhas inseridas pelo usuário são exfiltradas por meio de webhooks configuráveis do Discord e do Telegram - usando a API oficial do Telegram ou um proxy personalizado da API do Telegram.
Extração de dados sensíveis do Chrome
Para atingir navegadores baseados em Chromium (Brave, Chrome, Edge) executados na versão 137, o malware baixa um arquivo zip contendo uma ferramenta de descriptografia de dados do Chrome de https://github.com/Hyutop/pandakmc-auto-vote/blob/main/bin.zip.
O repositório do GitHub tenta se disfarçar como uma ferramenta de gerenciamento de votação do Minecraft.
Entretanto, o arquivo zip bin.zip contém o código compilado (decrypt.exe e chrome_decrypt.dll) da versão 0.11.0 do projeto PoC do descriptografador vinculado ao aplicativo Chrome por xaitax.
Enumeração do sistema
Uma vez ativo, o NOVABLIGHT executa um conjunto abrangente de funções de enumeração do sistema projetadas para criar um perfil completo da máquina da vítima e da atividade do usuário. Cada módulo tem como alvo uma informação específica, que é então salva em um diretório local antes de ser carregada no servidor de comando e controle. Os engenheiros de detecção devem observar as implementações específicas de cada técnica e quais fontes de dados fornecem visibilidade suficiente.
captureSystemInfo(): Reúne especificações abrangentes de hardware e software para identificar o dispositivo. Isso inclui o ID do hardware (HWID), modelos de CPU e GPU, tamanho da RAM, informações do disco, versão do sistema operacional Windows e uma lista de todos os dispositivos USB conectados.- Saída:
*configured_path*/System Info.txt
captureScreen(): Captura uma imagem completa da área de trabalho da vítima, fornecendo uma visão imediata da atividade atual do usuário.- Método: Utiliza a biblioteca screenshot-desktop .
- Saída: Um arquivo de imagem com registro de data e hora (por exemplo, configured_path/hostname_2025-10-26_14-30-00.png`).
captureTaskList(): Obtém uma lista de todos os processos em execução para conscientização situacional, permitindo que o invasor veja quais aplicativos e ferramentas de segurança estão ativos.- Método: Executa o comando
tasklist /FO CSV /NH. - Saída:
*configured_path*/TaskManagerInfo.txt
- Método: Executa o comando
captureAVDetails(): Identifica o antivírus ou produto de proteção de endpoint instalado consultando o Centro de Segurança do Windows.- Método: Executa o comando do PowerShell
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Format-List - Saída:
*configured_path*/Avdetails.txt
- Método: Executa o comando do PowerShell
captureClipboardContent(): Exibe o conteúdo atual da área de transferência do usuário, que pode conter informações confidenciais e transitórias, como senhas ou mensagens copiadas.- Método: Executa o comando do PowerShell
Get-Clipboard. - Saída:
*configured_path*/Clipboard.txt
- Método: Executa o comando do PowerShell
captureWebcamVideo(): Grava secretamente um vídeo usando a webcam principal do sistema, fornecendo inteligência visual sobre a vítima e seu ambiente.- Método: Aproveita a biblioteca
direct-synch-showpara captura de vídeo. - Saída:
*configured_path*/Bighead.avi
- Método: Aproveita a biblioteca
captureWifiPasswords(): Exfiltra as senhas de todas as redes Wi-Fi salvas no dispositivo, permitindo possível movimentação lateral ou acesso a outras redes usadas pela vítima.- Método: Executa o comando
netsh wlan show profile *wifi_ssid* key=clearpara cada perfil. - Saída:
*configured_path*/WifiPasswords.txt
- Método: Executa o comando
getFilesUrgents: Esta funcionalidade exfiltra arquivos no disco de acordo com um conjunto de palavras-chave como segue: backup, default, code, discord, token, passw, mdp, motdepasse, mot_de_passe, login, secret, account, acount, apacht, banque, bank, matamask, wallet, crypto, exdous, 2fa, a1f, memo, compone, finance, seecret, credit, cni, esses arquivos são arquivados comofiles.zipe então enviados para o C2.
Exfiltração de dados
Existem 3 canais para os dados roubados: o painel oficial da web de propriedade do grupo NOVABLIGHT, a API do webhook do Discord e a API do Telegram. O status desses canais é incerto, pois a API de proxy principal e o painel da web estão inativos no momento, o que pode interromper a funcionalidade dos canais do Discord e do Telegram se eles dependerem da mesma infraestrutura de proxy.
O painel da web já foi o canal oficial de exfiltração, pois era anunciado como sua principal plataforma de gerenciamento de dados.
A implementação do Telegram primeiro tenta enviar os dados para uma URL de proxy configurada, o código verifica se a URL contém a string req neste caso https://bamboulacity.nova-blight[.]xyz/req/dVukBEtL8rW2PDgkwdwfbNSdG3imwU8bZhYUygzthir66sXXUuyURunOin9s.
Se a URL do proxy não estiver configurada ou não atender à condição, o módulo volta a se comunicar diretamente com a API oficial do Telegram (em https://api.telegram[.]org/bot*token*/sendMessage) usando um userId, chatId e botToken configurados para enviar os dados roubados.
Ao contrário do módulo do Telegram, a implementação do webhook do Discord é muito mais simples. Ele utiliza uma única URL para exfiltração sem mecanismo de fallback. As amostras analisadas usaram consistentemente o URL do proxy personalizado para essa finalidade.
O NOVABLIGHT emprega uma infraestrutura redundante e multicamadas. Em vez de depender de um único host de upload, o que criaria um único ponto de falha, o malware utiliza uma combinação de serviços legítimos de hospedagem de arquivos de terceiros e seu próprio backend dedicado. A seguir está a lista extraída de domínios e endpoints:
https://bashupload[.]comhttps://litterbox.catbox[.]moe/resources/internals/api.phphttps://tmpfiles[.]org/api/v1/uploadhttps://oshi[.]at/http://sendfile[.]su/https://wsend[.]nethttps://api.gofile[.]io/servershttps://gofile[.]io/uploadFileshttps://rdmfile[.]eu/api/uploadhttps://bamboulacity.nova-blight[.]xyz/file/
Dados direcionados
O NOVABLIGHT executa rotinas direcionadas projetadas para roubar credenciais e arquivos de sessão de uma lista específica de softwares instalados. A lista selecionada está disponível neste GitHub Gist.
Técnicas de ofuscação
Mapeamento de matriz
A primeira técnica a ser abordada é o uso do mapeamento de matrizes pelo malware. O script inicializa uma única matriz global grande __p_6Aeb_dlrArray com valores de diferentes tipos e codificações, o que representa quase todos os valores literais usados no script.
Após substituir referências de índice de matriz, muitos pequenos pedaços de string que compõem uma string completa são divididos e concatenados em tempo de execução, mas, neste estágio, o número de versão do NOVABLIGHT pode ser identificado facilmente.
Codificação de string
A segunda técnica usada para ocultar strings é o uso da codificação base91. O wrapper de função __p_xIFu_MAIN_STR é chamado com um argumento inteiro.
O inteiro é um índice de um mapeamento de matriz secundária __p_9sMm_array que contém strings codificadas. Ele recupera a string codificada e a passa para a rotina de decodificação __p_xIFu_MAIN_STR_decode.
__p_xIFu_MAIN_STR_decode irá então decodificá-lo usando um alfabeto personalizado:
vFAjbQox\>5?4K$m=83GYu.nBIh\<drPaN\^@%Hk:D_sSyz"ER9/p,(*JwtfO)iUl&C\[~\}\{|Z+gX1MqL;60!e]T#2cVW7 e retornar a string decodificada.
Ofuscação de padrões de acesso
Em vez de acessar objetos e funções diretamente, o código usa objetos “proxy” intermediários achatados com chaves mutiladas, envolvendo objetos em outra camada de objetos para ocultar os padrões de acesso originais.
Por exemplo, a função __p_LQ1f_flat_… recebe um objeto plano __p_w3Th_flat_object. Este objeto contém 3 acessadores get para propriedades, um dos quais retorna o sinalizador disableNetwork recuperado da configuração e um wrapper para uma chamada do despachante (__p_jGTR_dispatcher_26). Em todo o código, há um padrão em que os nomes das propriedades começam com empretecerian.js, que também é o nome do arquivo de script. A função chamada pode então acessar os objetos e funções reais por meio desse objeto simples preenchido pelo chamador.
Ofuscação de fluxo de controle
Parte do caminho de execução do código é roteado por meio de um despachante central, __p_jGTR_dispatcher_26, no qual o primeiro nome do argumento recebe uma sequência de ID curta.
Cada ID é mapeado para uma função distinta. Por exemplo, o ID jgqatJ é referenciado pelo módulo modules/init/Troll.js e é responsável por uma caixa de mensagem pop-up “troll”.
Variáveis proxy
Primeiro, a ofuscação transforma a sintaxe da função em “sintaxe de parâmetros restantes”, que substitui os parâmetros por uma matriz que armazena valores de variáveis em vez de variáveis diretas. O código então referencia a matriz com valores numéricos. Por exemplo, a função __p_xIFu_MAIN_STR_decode não é chamada com parâmetros diretos. Em vez disso, seus argumentos são primeiro colocados no array __p_A5wG_varMask (linha 22), e a função é programada para recuperá-los de índices predefinidos. Por exemplo, na linha 25, o índice -36 do array armazena o índice do caractere "c" em uma string armazenada em __p_A5wG_varMask[171].
NOVABLIGHT e MITRE ATT&CK
A Elastic usa a estrutura MITRE ATT&CK para documentar táticas, técnicas e procedimentos comuns que ameaças persistentes avançadas usam contra redes corporativas.
Táticas
- Execução
- Persistência
- Defense Evasion
- Acesso a credenciais
- Descoberta
- Coleta
- Command and Control (Comando e controle)
- Exfiltração
Técnicas
- Arquivos ou informações ofuscadas
- Descoberta de Processos
- Interpretador de comando e script: PowerShell
- Interpretador de Comando e Script: JavaScript
- Dados preparados: preparação de dados locais
- Descoberta de informações do sistema
- Descoberta de arquivos e diretórios
- Captura de tela
- Dados da área de transferência
- Captura de vídeo
- Evasão de Virtualização/Sandbox: Verificações do Sistema
- Remoção de acesso a conta
- Credenciais de armazenamentos de senhas: Credenciais de navegadores da Web
- Impair Defenses: Desabilitar ou modificar ferramentas
- Exfiltração por serviço da Web: Exfiltração para armazenamento em nuvem
Conclusão
NOVABLIGHT mostra como até mesmo malwares menos conhecidos podem causar impacto. Ao oferecer uma ferramenta refinada e fácil de usar por meio de plataformas como Telegram e Discord, seus criadores tornaram mais fácil para qualquer pessoa se envolver em crimes cibernéticos.
Além disso, essa ameaça não é estática. Nossa análise confirma que o NOVABLIGHT está em desenvolvimento contínuo e ativo. Essa evolução contínua garante que o NOVABLIGHT continuará sendo uma ameaça persistente e relevante no futuro próximo.
Detectando NOVABLIGHT
YARA
O Elastic Security criou regras YARA para identificar essa atividade.
rule Windows_Infostealer_NovaBlight {
meta:
author = "Elastic Security"
creation_date = "2025-07-18"
last_modified = "2025-07-28"
os = "Windows"
arch = "x86"
category_type = "Infostealer"
family = "NovaBlight"
threat_name = "Windows.Infostealer.NovaBlight"
reference_sample = "d806d6b5811965e745fd444b8e57f2648780cc23db9aa2c1675bc9d18530ab73"
strings:
$a1 = "C:\\Users\\Administrateur\\Desktop\\Nova\\"
$a2 = "[+] Recording..." fullword
$a3 = "[+] Capture start" fullword
condition:
all of them
}
Observações
Os seguintes observáveis foram discutidos nesta pesquisa.
| Observável | Tipo | Nome | Referência |
|---|---|---|---|
ed164ee2eacad0eea9dc4fbe271ee2b2387b59929d73c843281a8d5e94c05d64 | SHA-256 | NOVABLIGHT VERSÃO 2.2 | |
39f09771d70e96c7b760b3b6a30a015ec5fb6a9dd5bc1e2e609ddf073c2c853d | SHA-256 | NOVABLIGHT VERSÃO 2.1 | |
97393c27195c58f8e4acc9312a4c36818fe78f2ddce7ccba47f77a5ca42eab65 | SHA-256 | NOVABLIGHT VERSÃO 2.0 | |
api.nova-blight[.]top | Domínio | Painel NOVABLIGHT | |
shadow.nova-blight[.]top | Domínio | Painel NOVABLIGHT | |
nova-blight[.]site | Domínio | Painel NOVABLIGHT | |
nova-blight[.]xyz | Domínio | Painel NOVABLIGHT | |
bamboulacity.nova-blight[.]xyz | Domínio | Painel NOVABLIGHT |
Referências
Os seguintes itens foram referenciados ao longo da pesquisa acima:
